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 mcp add --transport http codossier https://api.codossier.com/mcp \
--header "Authorization: Bearer cdk_live_<id>_<secret>"{
"mcpServers": {
"codossier": {
"type": "http",
"url": "https://api.codossier.com/mcp",
"headers": { "Authorization": "Bearer cdk_live_<id>_<secret>" }
}
}
}The tools
| Tool | Does | Runs |
|---|---|---|
open_matter | Opens a matter from text, links, files or an intake record; or estimates it. | task · 20–30 min |
reply | Answers 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 |
search | Searches one matter's tree in loose words; hits ranked by relevance with the quote that matched. | quick · ~30 s |
inquire | The Lode CLI: asks about one lode, gets a corpus-backed answer and proposed crests, rifts or child lodes. | task · 1–3 min |
extend | Extend: 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_fact | Answers 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 |
cancel | Stops 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 |
report | Any 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 |
apply | Accepts or discards proposals. Nothing changes in the tree until a person decides. | quick |
add_node | Adds a crest, rift or child lode by hand. | quick |
supplement | Brings new material into a finished dossier: facts → search → the Lode CLI per touched lode. | task |
deliver | Renders the dossier (json, md, pdf) and PUTs it to a link on the office's delivery list. | quick / task for pdf |
import | Fetches documents from your signed links into a matter, as material. | task |
get_request list_requests get_matter list_matters get_dossier get_node list_proposals | Reads. | 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 callsget_request. - Questions come back in the conversation. A request that needs input returns its
questions; the agent asks the person and callsreply. Files the person has go through the upload link the question carries. - Annotations tell the agent what is safe. Reads are marked read-only;
applyis 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.
extendtakes 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_requestshows 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_proposalsandapplyuse — 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.
applyaccepts or discards each proposal; nothing changes until you do. Facts the matter does not yet state come back as entries with tokens: answer them withsettle_fact. Changed your mind while it runs?cancelstops 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.
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.