docs · MCP reference

The tool surface, documented in the open.

This page is readable without an account, because the boundary it describes is the argument: a program gets a tool surface built for the circuit it is in, and the tools that are not in that surface do not exist for it.

evix-tools 2.2.0 · mcp 2026-03-26 · 24 published methods across two circuits

Every method, and the circuit it exists in.

This is the whole published surface. The circuit you connect on decides which of the two lists below your tools/list returns — and it returns that list and nothing else.

circuit 1 · own tenant · 19 methods
  • list_cases
  • get_case
  • get_coverage
  • get_claims
  • get_ownership_graph
  • list_entities
  • get_counterparties
  • get_merchant_request
  • get_sources
  • list_documents
  • get_snapshot
  • create_case
  • upload_document
  • recheck_sources
  • recheck_document
  • export_dossier
  • get_profile_options
  • get_findings
  • get_assessment
circuit 2 · counterparty · 5 methods
  • get_shared_coverage
  • get_shared_request
  • list_shared_cases
  • open_shared_case
  • open_shared_case_by_id
not in this circuit — no name for a prompt to call
  • get_findings
  • get_assessment
get_findings and get_assessment exist only in circuit 1. In circuit 2 they are absent, not refused — there is no name for a prompt to call.

What each circuit is for.

circuit 1

Own tenant

Your own program, acting on the authority of a named person in your tenant. It reads cases, requirements, coverage, documents and ownership; it opens cases, adds documents and facts, and asks the sources again. Your findings and assessments are yours: readable here, and only here. Recording and countersigning a decision are offered to no program in any circuit.

circuit 2

Counterparty

Another institution’s program, holding an access key you issued. It reads the requirements and the coverage you chose to expose, and it opens the case you shared with it. It never sees your case file. The tools that return findings and assessments are not filtered out of this surface — they are absent from it.

The same boundary, drawn rather than described, is on the agents page.

Getting a token.

Access is a personal bearer token, issued from the profile page. It carries the authority of the person who issued it and nothing more. The secret is shown once and is not stored; revoking it ends the access immediately, and the journal keeps what was done under it.

Programs do not hold an identity of their own. Every call a program makes is written to the journal under the named person’s authority, and the actor class — program — is recorded separately from the person acting.

The first call, in five minutes.

  1. 01Point your MCP client at the endpoint.https://mcp.evixlab.com/mcp
  2. 02Present the token secret.
  3. 03Call tools/list. The list you get back is your circuit — count the entries.
  4. 04Call a read method from the list. Every answer carries the version of the pack or rules that produced it.
  5. 05Now call a method that is not in your list. Read the error. That error is the product.

What “method not found” means here.

Two different refusals, kept apart — in the wire format, and on this page. Reading one as the other is the mistake this whole surface is shaped to prevent.

method not found

The method does not exist on your surface.

Nothing was withheld, because nothing was there. tools/list never named it, and no argument, scope or retry will produce it. This is the answer a counterparty’s program gets for get_findings.

right not held: <right>

The action exists and your token lacks the right.

The error names the right, so the person holding the token can go and ask for it by name. A refusal that goes quiet teaches nobody anything and survives no audit.

A filter can be misconfigured. An absent method cannot be called at all.

And when the answer is “checked, and it cannot be established”.

A third thing can come back, and it is not a refusal of the API at all. The call was allowed, the method exists, and the answer says the check reached a limit: the register does not publish beneficiaries, the client has not consented, nobody ever collected the data. That is not an error to retry — it is a finding, and it is recorded with a code from a published dictionary.

The dictionary is two levels — exactly one category above one or more reasons — and every reason names the class of absence it stands for, which is what decides whether connecting a source or asking again is an option at all. It is versioned, published under an open licence, and readable without an account.

Why the dictionary exists, and how to cite it →

Every code, with its definition →

Versioning and limits.

Versioning

The tool surface carries a version separate from the MCP protocol date. Every change — a method added, an argument changed, a method removed from a circuit — lands in the changelog under the version that shipped it. Your program reads the version at connection time and pins its expectations to it.

Limits

A limit you cannot read is a limit you discover in production.

What every call writes to the journal.

Every call lands in the append-only audit log of the tenant it touched. Your administrator can read every entry a program wrote, including those written by a counterparty’s program.

actor · role · action · subject · parent hash · own hash · timestamp (UTC) · policy version · rules version

Where the call touched an assessment, the policy and rules versions in force are stored with it. How the chain verifies →

Point your agent at a sandbox tenant.

A sandbox with the demo case, both circuits, and a token you can revoke. Call the methods that are absent and read what comes back.

Book a demoOnboarding is by hand — which is why we do the first case with you.