For builders

Give your agents a board to work on.

Freero is a whiteboard with a public contract for agents: a remote MCP server, a versioned REST API and signed webhooks. Agents act for a person, with that person’s access and nothing more, and people review what they propose.

The MCP server

One endpoint for Claude, ChatGPT, Cursor, VS Code and any client that speaks MCP over Streamable HTTP.

Endpoint
https://freero.app/mcp

The quickest way in: Connect an agent in Freero gives each client its one-click install link, command or config with this address filled in, makes a personal token when you need one, and shows when the client has connected. Agents can read /llms.txt for the endpoint, sign-in and tools.

  • Can: Stateless Streamable HTTP. Each POST is authenticated afresh and answered with JSON; any instance behind a load balancer answers any request.
  • Can: OAuth 2.1 sign-in. Dynamic client registration, PKCE (S256) and tokens bound to the MCP server (RFC 8707). Or a personal access token as a bearer token.
  • Can: Read and suggest by default. Writing and commenting are scopes the person ticks on the consent screen.
  • Can: Outcome-shaped tools. Agents send structure; Freero places it in free space with connectors attached. No coordinates.
Cursor: ~/.cursor/mcp.json
{
  "mcpServers": {
    "freero": { "url": "https://freero.app/mcp" }
  }
}
VS Code: .vscode/mcp.json
{
  "servers": {
    "freero": { "type": "http", "url": "https://freero.app/mcp" }
  }
}
Try it from a terminal with the MCP Inspector
npx @modelcontextprotocol/inspector --cli https://freero.app/mcp --transport http \
  --method tools/list --header "Authorization: Bearer frp_…"

Tools

Freero MCP tools and the permission each needs
ToolNeedsWhat it does
list_workspacesreadYour workspaces (personal and teams) and your role in each.
search_boardsreadBoards you can open, newest change first, filtered by title or workspace.
searchreadWords in what your boards say: notes, text, shapes, cards, frames, tables, tags, connector labels, comments. Each hit with board, item, snippet and link.
get_board_outlinereadThe board as a semantic outline (Markdown or JSON) with item ids, a token budget, a scope and paging.
export_boardreadThe whole board as a Markdown or JSON file; follows the workspace’s download policy.
resolve_linksreadWhat Freero board and item links point at, and whether you can open them.
find_backlinksreadItems and comments that link to a board or an item.
list_templatesreadSaved templates you can start a board from.
open_boardreadThe live board in the conversation, in hosts that show MCP Apps views; elsewhere its link. The view never has more power than the connection.
search_docsreadDocs (collaborative documents next to boards) you can open, by title.
read_docreadA doc as Markdown, with embedded boards as their addresses.
get_feedbackreadWhat people changed in the agent’s control-room lane since its last look: cards moved, added or removed, new comments.
propose_changessuggestA structure (notes, clusters, a diagram) proposed as one group of suggestions for editors to accept or reject.
create_boardwriteA new board in a personal or team workspace, optionally from a template.
add_stickieswriteA titled grid of sticky notes, each with its own link if you like, in free space or into a frame, kanban column or cluster.
add_clusterswriteTitled groups side by side; existing notes can move into them.
add_cardswriteTask cards with description, status, due date and link, into a kanban column, a frame or a cluster, or a new kanban with its columns.
import_from_trackerwriteIssues from a Jira, Linear or GitHub query as cards linked to them, kept in sync both ways; proposed instead when the connection may only suggest.
import_meeting_noteswriteMeeting notes or a transcript (Markdown, text, WebVTT, SRT) as one frame: decisions as a cluster, action items as cards with owner and due date, points as notes, who spoke. Read as written, no AI.
add_diagramwriteA Mermaid flowchart or sequence diagram, a mind map or tree from an outline, or a node-and-edge graph, laid out by Freero.
update_itemswriteSeveral items changed in one all-or-nothing step: text, fields, colours, frames, locks, links, and moves into a frame, kanban column or cluster.
delete_itemswriteDeletes items, only with an explicit confirmation.
create_docwriteA new doc from Markdown, personal or in a team workspace.
append_to_docwriteMarkdown added to the end of a doc; everyone with it open sees it arrive.
post_statuswriteThe agent’s plan, status and tasks (to do, doing, done, blocked) on its lane of a control-room board; retries never duplicate.
list_tracker_connectionsreadThe issue trackers the person can use on a board, with each one’s default project, and a connection’s projects or repositories.
sync_to_trackerwriteSends items to the board’s Jira, Linear or GitHub as one issue or one per item, kept in sync.
add_commentcommentA comment on the board or an item, or a reply in a thread.

Resource: freero://board/{boardId}, a board’s outline in the untrusted-content envelope. Prompts: control_room, run_retro, notes_to_diagram, summarize_board. Views (MCP Apps): a read-only board preview for outlines and the live board for open_board, both static HTML that fetches nothing itself. Item ids come from the outline. Full reference: MCP server guide and outline format.

The REST API

Everything the MCP server does, and more, for scripts and services: versioned under /api/v1, additive-only within a version.

Your first call
curl -H "Authorization: Bearer frp_…" https://freero.app/api/v1/me
  • Boards and items

    List, create and read boards; read the outline; create, change and delete items; insert laid-out structure; manage members.
  • Suggestions

    Propose changes with boards:suggest, list them, and accept or reject them with boards:write.
  • Search and links

    Search board content, resolve Freero links and find backlinks, always as the token’s person is allowed to see.
  • Personal tokens and OAuth apps

    Tokens with chosen scopes and expiry, paused or revoked at will; OAuth apps with authorization code and PKCE for products other people connect.
  • Rules agents can rely on

    Destructive calls need confirm=true; at most 500 items per create; a request and a write budget per token or app.
  • Attributed and audited

    What a token or app creates is labelled “<its name> for <you>”, and every call is in the audit log with the credential that made it.

The OpenAPI 3.1 reference is served by every Freero at /api/v1/openapi.json. Guide: REST API.

Webhooks

Workspace webhooks tell your systems what happened on a team’s boards, so agents can react to people instead of polling.

  • Can: Events: boards created, renamed, moved, trashed and restored; members added, changed and removed; items created, updated and deleted; comments written.
  • Can: Settled, not chatty: a two-second drag is one item.updated, a note typed into is one item.created.
  • Can: Private stays private: drafts and hidden frames never produce events.
  • Can: Signed: HMAC-SHA256 in Freero-Signature with a timestamp, plus event and delivery ids.
  • Can: Retried: up to seven attempts with backoff, a 30-day delivery log and “send again”.
  • Can: Ready for chat: JSON, or messages formatted for Slack incoming webhooks and Microsoft Teams workflows.

Owners and admins of a team workspace add endpoints in the admin console. Contract and schema: events and webhooks.

A board as your agents’ control room

Coding agents, research agents and automations work for hours. A control-room board shows people what each one is doing and lets them steer it without a new tool.

  1. Each agent gets a lane

    A lane is a Plan note, a Status note and a Tasks kanban with To do, Doing, Done and Blocked. Start from the Agent control room template, or let the agent create the board on its first post. Several agents share a board, one lane each.
  2. The agent posts as it works

    After each step it calls post_status: the plan, a one-line status and its tasks by title. A retry never duplicates a card, and a blocked task lands in Blocked with the agent’s question on it.
  3. People steer on the board

    Drag a card back to To do to have it redone, move one out of Blocked to say go ahead, add a card, or comment. That is just using the whiteboard.
  4. The agent picks it up

    Before its next step, get_feedback returns exactly what people changed since the agent last looked, never its own moves. On team boards, workspace webhooks can push the same changes to the agent instead.

The control_room prompt sets an agent up to work this way. What people write reaches the agent as untrusted board content, like every read.

Reference

Bring your team and your agents to one board

Free to use, open source, and yours to host. No credit card, no seat count.