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.
https://freero.app/mcpThe 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
POSTis 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.
{
"mcpServers": {
"freero": { "url": "https://freero.app/mcp" }
}
}{
"servers": {
"freero": { "type": "http", "url": "https://freero.app/mcp" }
}
}npx @modelcontextprotocol/inspector --cli https://freero.app/mcp --transport http \
--method tools/list --header "Authorization: Bearer frp_…"Tools
| Tool | Needs | What it does |
|---|---|---|
list_workspaces | read | Your workspaces (personal and teams) and your role in each. |
search_boards | read | Boards you can open, newest change first, filtered by title or workspace. |
search | read | Words 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_outline | read | The board as a semantic outline (Markdown or JSON) with item ids, a token budget, a scope and paging. |
export_board | read | The whole board as a Markdown or JSON file; follows the workspace’s download policy. |
resolve_links | read | What Freero board and item links point at, and whether you can open them. |
find_backlinks | read | Items and comments that link to a board or an item. |
list_templates | read | Saved templates you can start a board from. |
open_board | read | The 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_docs | read | Docs (collaborative documents next to boards) you can open, by title. |
read_doc | read | A doc as Markdown, with embedded boards as their addresses. |
get_feedback | read | What people changed in the agent’s control-room lane since its last look: cards moved, added or removed, new comments. |
propose_changes | suggest | A structure (notes, clusters, a diagram) proposed as one group of suggestions for editors to accept or reject. |
create_board | write | A new board in a personal or team workspace, optionally from a template. |
add_stickies | write | A 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_clusters | write | Titled groups side by side; existing notes can move into them. |
add_cards | write | Task 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_tracker | write | Issues 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_notes | write | Meeting 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_diagram | write | A Mermaid flowchart or sequence diagram, a mind map or tree from an outline, or a node-and-edge graph, laid out by Freero. |
update_items | write | Several items changed in one all-or-nothing step: text, fields, colours, frames, locks, links, and moves into a frame, kanban column or cluster. |
delete_items | write | Deletes items, only with an explicit confirmation. |
create_doc | write | A new doc from Markdown, personal or in a team workspace. |
append_to_doc | write | Markdown added to the end of a doc; everyone with it open sees it arrive. |
post_status | write | The agent’s plan, status and tasks (to do, doing, done, blocked) on its lane of a control-room board; retries never duplicate. |
list_tracker_connections | read | The issue trackers the person can use on a board, with each one’s default project, and a connection’s projects or repositories. |
sync_to_tracker | write | Sends items to the board’s Jira, Linear or GitHub as one issue or one per item, kept in sync. |
add_comment | comment | A 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.
curl -H "Authorization: Bearer frp_…" https://freero.app/api/v1/meBoards and items
List, create and read boards; read the outline; create, change and delete items; insert laid-out structure; manage members.Suggestions
Propose changes withboards:suggest, list them, and accept or reject them withboards: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 needconfirm=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 oneitem.created. - Can: Private stays private: drafts and hidden frames never produce events.
- Can: Signed: HMAC-SHA256 in
Freero-Signaturewith 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.
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.The agent posts as it works
After each step it callspost_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.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.The agent picks it up
Before its next step,get_feedbackreturns 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
- MCP server: connecting clients, permissions, safety, every tool, how sign-in works.
- Board outline format: what agents read.
- REST API and its OpenAPI reference.
- Events and webhooks: the versioned event contract and delivery.
- Issue trackers: how board items and Jira, Linear or GitHub issues stay in sync.
Bring your team and your agents to one board
Free to use, open source, and yours to host. No credit card, no seat count.