Skip to content
Start a Dossier
Developers

Connect an agent: MCP and Agent-to-Agent

The same nine capabilities, as tools an AI agent can call directly. No glue code: paste the server line into your agent, give it a key, and ask for a dossier.

MCP

Codossier is an MCP server at https://api.codossier.com/mcp (Streamable HTTP, protocol revision 2026-07-28, stateless). Authentication is the same key, as a bearer token. The signed-in Developers page shows the exact line for Claude Code with your key filled in.

Claude Code
claude mcp add --transport http codossier https://api.codossier.com/mcp \
  --header "Authorization: Bearer cdk_live_<id>_<secret>"
Any MCP client (configuration shape)
{
  "mcpServers": {
    "codossier": {
      "type": "http",
      "url": "https://api.codossier.com/mcp",
      "headers": { "Authorization": "Bearer cdk_live_<id>_<secret>" }
    }
  }
}

The tools

ToolDoesRuns
open_matterOpens a matter from text, links, files or an intake record; or estimates it.task · 20–30 min
replyAnswers a request's questions (a choice, an upload done, a quote accepted) — or, on a completed extend, the open facts its patch raised, by token.quick
searchSearches one matter's tree in loose words; hits ranked by relevance with the quote that matched.quick · ~30 s
inquireThe Lode CLI: asks about one lode, gets a corpus-backed answer and proposed crests, rifts or child lodes.task · 1–3 min
extendExtend: grows one lode from its corner — the best-ranking domain of a corpus (or the corpora you name), every angle judged, the open web asked when a rule is missing — and proposes additions only: crests, rifts, a dated proposition section, one child lode. Your text is guidance, not a question.task · 2–5 min
settle_factAnswers the open facts an extend raised, by their six-character tokens. The answer settles each fact in the engine's ledger too, and the proposals that rested on it stop being conditional.quick
cancelStops a request: one still queued or waiting for input, or an extend while it works (the engine stops at its next step and proposes nothing; what it already spent is not refunded). A dossier build cannot be stopped once started.quick
reportAny report on a completed matter — kind client_brief, counsel_packet or lead_scoring. The latest one kept answers at once ("bring me the latest Lead Scoring"); fresh generates a new one (asking again while it runs returns that same run). The result is the report as data (document) and the PDF's download link; email also mails the PDF to your own address.quick · fresh: task, 1–6 min
applyAccepts or discards proposals. Nothing changes in the tree until a person decides.quick
add_nodeAdds a crest, rift or child lode by hand.quick
supplementBrings new material into a finished dossier: facts → search → the Lode CLI per touched lode.task
deliverRenders the dossier (json, md, pdf) and PUTs it to a link on the office's delivery list.quick / task for pdf
importFetches documents from your signed links into a matter, as material.task
get_request list_requests get_matter list_matters get_dossier get_node list_proposalsReads.quick
  • Long work is a task. A client that supports MCP tasks gets a task id and polls tasks/get; any other client gets the request id back and calls get_request.
  • Questions come back in the conversation. A request that needs input returns its questions; the agent asks the person and calls reply. Files the person has go through the upload link the question carries.
  • Annotations tell the agent what is safe. Reads are marked read-only; apply is marked destructive so a careful client confirms before it runs.
  • Sandbox first. With a cdk_test_ key every tool simulates, so an agent can be developed against the real server for free.

Extending a lode

  • Start it. extend takes the matter, one lode (never the root or a section) and, optionally, your guidance in words and the corpora to draw on. It answers at once with a request id.
  • Follow it by that id. get_request shows the phase while it runs. The work keeps going if your agent disconnects, and the request is never lost: ask for it again whenever you come back.
  • Read the patch. The completed request carries the proposals — each the same object list_proposals and apply use — with its posture, the verdict (and any second reading beside it), how a court and the other side would receive the sharper ones, and the quotes it rests on. A rule the knowledge base lacked is looked up in public sources; a line that rests on one names the page.
  • Decide, then answer what it could not know. apply accepts or discards each proposal; nothing changes until you do. Facts the matter does not yet state come back as entries with tokens: answer them with settle_fact. Changed your mind while it runs? cancel stops it at its next step.

A client's own agent

A person without an office — a client — can connect their own agent with a personal key. It can read, search, use the Lode CLI and answer questions on the dossiers that person owns, paying from that person's credits. Opening matters, adding nodes, delivering: the same, on their own matters. There is no capability a person lacks and an office has; an office can be invoiced, which is the whole difference.

Agent-to-Agent (A2A)

For orchestrators that speak A2A, the same engine answers at https://api.codossier.com/a2a (A2A 1.0, JSON-RPC 2.0) and describes itself at https://api.codossier.com/.well-known/agent-card.json. The card lists the skills you can call today (case_file and work_case), and it is signed (ES256 over the RFC 8785 canonical card; the keys are at https://api.codossier.com/.well-known/jwks.json). Send A2A-Version: 1.0 on every call: a call without it is taken as 0.3, which is not served, and answers VersionNotSupportedError.

A message's text parts are the request's text, and one data part may carry options. metadata names skill or intent, plus matter, scope and options. A task is a request. Its state is one of TASK_STATE_SUBMITTED, TASK_STATE_WORKING, TASK_STATE_INPUT_REQUIRED (our questions are in the status message; answer with a message that names the taskId), TASK_STATE_COMPLETED, TASK_STATE_FAILED or TASK_STATE_CANCELED, and the result is a JSON data artifact.

SendMessage
POST https://api.codossier.com/a2a
Authorization: Bearer cdk_live_<id>_<secret>
A2A-Version: 1.0

{
  "jsonrpc": "2.0", "id": 1, "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "m-1", "role": "ROLE_USER",
      "parts": [{ "text": "retaliation after the complaint" }],
      "metadata": { "intent": "search", "matter": "d2d9…", "options": { "top": 5 } }
    }
  }
}

→ { "jsonrpc": "2.0", "id": 1, "result": { "task": { "id": "…", "status": { "state": "TASK_STATE_COMPLETED" }, "artifacts": [ … ] } } }

SendMessage waits for the task to settle, up to 60 seconds; set configuration.returnImmediately to get the task at once. A dossier build outlasts the wait and comes back TASK_STATE_WORKING, so follow it with GetTask. ListTasks pages through your tasks, newest change first. CancelTask stops a queued or waiting task, or an extension in progress. Streaming and push notifications are not offered yet (the card says so), and their methods answer the matching A2A error; poll GetTask or register a webhook. File parts are not accepted on A2A yet: upload with POST https://api.codossier.com/v1/uploads. The UCP profile is at /.well-known/ucp. OAuth for agent marketplaces is next; until then every door takes a key.