Dossierby Mathieu Mahoudeau

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/mcp
Claude Code, in one line. Claude and ChatGPT take the same address as a custom connector.

Refused 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. 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. 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. 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

Bring the agent you already use.

Join the waitlist