MCP server

Add Attest to Claude, ChatGPT or any MCP client, connect it with your Quorum account or an API key, and what the tools and the /attest command do.

Last updated 12 September 2026

MCP server

Attest is also an MCP server, on the same code path as the HTTP API, so an AI client can check claims against documents without any code.

Server URL: https://api.quorumtech.ch/attest/mcp

The transport is Streamable HTTP and stateless: no session id, a fresh server per request, which survives a restart where an in-memory session would strand a client.

Connect with Quorum

In Claude: open Settings, then Connectors, then Add custom connector, paste the server URL, and choose Connect. Claude sends you to the developer dashboard, which is behind the ordinary Quorum sign-in. The consent page shows which client is asking, for which services, and where you will be sent back to. Approve, and the client acts as you from then on, with your workspace's default limits.

ChatGPT uses the same flow unchanged, and passes files you attach to the tools as file objects, so a board pack attached to the conversation is uploaded and hashed by the server without being retyped.

Anything you connect appears under Connected clients on the MCP servers page, with when it was last used, and can be disconnected there by you or a workspace admin. Disconnecting deletes every token minted for the connection at once.

A workspace without credits is refused at the consent step with a message naming the Billing page, and its tool calls are refused the same way. Connecting is never a way around paying.

Use an API key instead

For a client that cannot sign in, such as a server-side agent, send an API key as the bearer token:

{
  "mcpServers": {
    "attest": {
      "url": "https://api.quorumtech.ch/attest/mcp",
      "headers": { "Authorization": "Bearer <your API key>" }
    }
  }
}

The key's own limits apply.

The tools

| Tool | What it does | | --- | --- | | attest_claim | Check one claim against evidence, inline or in a loaded batch. | | attest_upload_batch | Load documents once, then check many claims against them. | | attest_claims | Check every claim in a list, in one call. | | attest_draft | Check a whole draft, extracting the claims itself. | | attest_draft_status | Collect a draft review that is still running. | | attest_clear_batch | Drop a loaded batch from memory. | | attest_setup_help | How to finish setting up Attest. |

Every tool description prints a real upload address, because nothing in MCP tells a server its own address and an instruction reading <server>/v1/drafts cannot be followed. Upload evidence and drafts as files rather than pasting them: a model retyping a document into a tool argument is a generation step, and a generation step can drift.

The result a tool returns is a summary written for a model to act on, leading with what to do and naming the assertion that failed. The full result travels in structuredContent. INDETERMINATE comes back with isError: true, so a failure to measure is never read as a finding about the claim.

The /attest command

The server exposes the whole review as an MCP prompt, which clients surface as a slash command. /qa is an alias.

/attest              check the draft already in the conversation
/qa                  the same thing
/attest draft="..."  check text passed directly
/attest batchId=...  reuse documents already loaded

The prompt exists because the tools are individually well described and still get used wrongly in combination. The failures seen in real use were skipping claims that felt minor, checking a compound sentence whole and deleting the true half of it, and acting on a failure to measure as though it were a finding. So the prompt states the procedure: load every document, extract every assertion, split compound sentences, check them in one call, correct only what is contradicted, report what still needs outside verification, then clear the batch.

What it costs and what counts

Tool calls are charged at the same tariff as the HTTP routes: one credit for a claim with inline evidence, two against a batch, and a draft review reserves and settles the same way. The protocol's own messages (initialize, listings, pings, notifications) are free, counted on their own line on the Usage page, and never count against your request limit. See Credits and billing and Rate limits.

Still need help?

Ask Quincy in the chat bubble below, or write to support@quorumtech.ch and we will help you directly.