Features · For agents
Your agent writes. You keep the last word.
Dossier is made to be written by AI: Claude, ChatGPT, Cursor, or your own scripts. They work through the same server as the editor, with the same checks and the same history, so nothing they save can break the design, and nothing is lost.
Three ways in, one set of rules
MCP
Add https://dossier.omako.dev/mcp as a connector in Claude, ChatGPT, Cursor or VS Code, and sign in. The agent gets the tools and the house rules.
Command line
dossier login, then pull a deck to a file, edit it, lint it and push it back. Made for agents that work in a terminal.
HTTP API
Every route, with its body, listed at /api. The MCP tools and the command line are thin calls to it, so all three answer the same.
$ claude mcp add --scope user --transport http dossier https://dossier.omako.dev/mcpRefused with the reason
A real exchange. The agent wants a chart; there is no chart block. Each answer says what's wrong and where, so the next try is the right one.
- 1
create_deck {"content":{"title":"Q4 review","slides":[{"title":"Missed berths","blocks":[{"type":"chart","props":{"data":[14,6]}}]}]}}Invalid, so nothing was saved or rendered. Fix these and try again: slides[0].blocks[0].type: unknown block type. Valid types: text, heading, stats, panels, bullets, steps, ladder, flow, turn, quote, table, bars, dispro, kills, qa, asks, pills, image, embed, linkCard, profiles, annotated, markdown - 2
create_deck {"content":{"title":"Q4 review","slides":[{"title":"Missed berths","blocks":[{"type":"bars","props":{"items":[{"label":"Q3","value":14,"color":"red"},{"label":"Q4","value":6}]}}]}]}}Invalid, so nothing was saved or rendered. Fix these and try again: slides[0].blocks[0].props.items[0]: Unrecognized key: "color" - 3
create_deck {"content":{"title":"Q4 review","slides":[{"title":"Missed berths","blocks":[{"type":"bars","props":{"items":[{"label":"Q3","value":14,"tone":"muted"},{"label":"Q4","value":6}]}}]}]}}{"id":"d-…","slug":"q4-review","kind":"slides","version":1,"present_url":"…","editor_url":"…"}
What keeps it honest
The rules first
The guide and the schema come before the first save: every block, what it's for, an example, and the house style.
Lint in a real browser
Each slide is drawn in Chromium before it's saved: overflow, broken images, hard-to-read text, dead links.
A picture to look at
The slides it changed, as images, so the agent checks its own work the way you would.
Small edits
Change one slide or one block without sending the whole deck back.
No overwriting
A save names the version it started from. If you saved since, it's refused, and the agent reads again.
Every save a version
Credited by name: Mathieu via Claude, Ana via the command line. Any version can be restored.
Only your workspace
An agent sees your decks, docs and themes, and nobody else's.
Asked for, scope by scope
Reading, writing, sharing and stats are separate permissions it asks you for.
Never shares on its own
A link goes to other people, so the agent shares only when you ask.
Limits it can explain
At a plan limit the answer says what, how many, and how to upgrade, for the agent to pass on.
Private beta