Two ways in: sign in, or hold a key
The fastest path is above, and it is the one the operator walks. Two steps: install the plugin, then one line carrying your key. It is listed first because this page ranks by what is known to work today, not by what is designed best.
The short path (§1, §2) never involves a key at all. You point your client at one URL, it sends you to your browser, you enter your email and click the link we send you. Your client ends up holding a scoped, expiring token it obtained itself. Nothing is displayed for you to copy, and nothing is asked of you to paste. It is the better long-term shape and it is not going anywhere — it simply is not the quickest way in right now.
Every connection failure this page documents in §9 involves a credential sitting in a config file: a malformed header, a forgotten scheme, a cached rejection. The paths above have no header to malform and no rejection to cache, which is the practical reason to prefer them.
The key path (§3 onward) is still fully supported and is the right one for scripts, CI, and anyone who would rather run the adapter after reading it. There your mend_live_… key is presented as Authorization: Bearer and the API resolves your tenant from it server-side. Create an account if you have not.
A credential pasted into a chat window is a credential you have to treat as burned. That is why the browser path exists — not because the key path is unsafe, but because most people should never need to handle one. PASTE_YOUR_KEY_HERE below is a placeholder — replace the whole word, brackets and quotes are not part of it. A real key is the letters mend_live_ followed by 64 hex characters.
Fastest path — the one the operator actually uses
Two steps. Ranked first because it is the route that has been walked end to end today.
Step 1 — install the plugin
in Claude Code/plugin marketplace add notrestai/mendmcp /plugin install mend@mend-rest
Step 2 — connect with your key
one line, run anywhereclaude mcp add -s user --transport http mend https://api.mend.rest/mcp --header "Authorization: Bearer PASTE_YOUR_KEY_HERE"
You will see two mend entries
expectedMake refereeing standing (optional)
Connecting mend makes the tools available. It does not make them get used at the right moment. These are the levers you can pull in your own harness, strongest first.
A line in your standing instructions
strongestDelegation referee — standing order. Any session that delegates work commissions the contract through mend at the moment the spec is written, and referees the result when the lane returns. The orchestrator never grades a build it orchestrated.
Splice mend into the ritual you already have
if you have onebefore: spec -> lanes build -> orchestrator gates -> ship after: spec + mend commission -> lanes build -> mend referees -> orchestrator ships
The deterministic one is already included
nothing to installJust name it in the ask
always works1 · claude.ai — add a custom connector
Paste one URL. No key, no file, no command.
https://api.mend.rest/mcp
2 · Claude Code — one command, no key
Same browser sign-in, from the CLI.
claude mcp add -s user --transport http mend https://api.mend.rest/mcp
3 · Claude Code, holding a key
For scripts, CI, or anywhere a browser round-trip is the wrong shape.
claude mcp add -s user --transport http mend https://api.mend.rest/mcp --header "Authorization: Bearer PASTE_YOUR_KEY_HERE"
4 · Any MCP client
The generic URL form. Drop it into your client's MCP server map and restart the client.
{
"mcpServers": {
"mend": {
"type": "http",
"url": "https://api.mend.rest/mcp"
}
}
}
Transport shape
what to expect5 · No MCP at all — raw JSON-RPC
The MCP server is a convenience, not a requirement. This is the same API underneath it.
Request
JSON-RPC 2.0 over HTTPS POSTcurl -sS https://api.mend.rest/rpc \
-H 'authorization: Bearer PASTE_YOUR_KEY_HERE' \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"mend.discovery","params":{}}'
Shape of the exchange
what to expect6 · The auditable alternative — run mcp_server.py yourself
A single file, on your machine, that you can read end to end before you run it. The hosted /mcp endpoint runs this same file's logic server-side; this path exists so you never have to take that on faith.
curl -sSO https://api.mend.rest/mcp_server.py curl -sS https://api.mend.rest/mcp_server.py.sha256 # compare before running claude mcp add -s user mend -e MEND_API_KEY=PASTE_YOUR_KEY_HERE -e MEND_API_ORIGIN=https://api.mend.rest -- python3 ./mcp_server.py
7 · The 14 methods
The whole surface. Names and scopes come from mend/registry.py; the authoritative, live answer is whatever mend.discovery returns from the instance you are talking to.
Opening work
commission → intake → submitcurl -sS -X PUT --data-binary @src/app.js -H "Authorization: Bearer $MEND_API_KEY" https://api.mend.rest/v1/blobs
→ {"sha256":"…","size":4210}. The inline form {path, content_b64} still works and is right for a file or two of a few lines — but a by-value payload is composed by the model token by token before any of it reaches the network, so large workspaces stall on the client, not the server. Staged blobs are pre-custody: 10 MB per file, 100 MB per account, 24 h expiry; custody begins when intake accepts them.
Reading
pure readsRepair
bounded, countedReporting and governance
each leaves a receipt8 · Prove the connection in one call
Before wiring anything into a harness, confirm the key reaches the instance.
# 1. the instance is up (no key needed)
curl -sS https://api.mend.rest/healthz
# 2. your key is accepted and the surface is what you expect
curl -sS https://api.mend.rest/rpc \
-H 'authorization: Bearer PASTE_YOUR_KEY_HERE' \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"mend.discovery","params":{}}'
9 · If the tools do not appear
In the order these actually bite. Every one is client behaviour we can name but cannot fix from here; each cost a real debugging session.
Work through these in order
first the cheap onesIf you are using a key
two header mistakes- Development instance. Held-out benchmark execution is BLOCKED pending independent steward isolation. Fixture data only, not approved for customer or external data.
- One operator, one process, no HA. All callers are multiplexed onto a single backend. Expect no availability guarantee and no rate-limit isolation between tenants.
- No TEE, no HSM, no remote attestation. Identity on this instance is local symmetric HMAC. There is no public-key signature an outsider could check without the secret, and root on the host reads the state directory at will.
- The API is versioned by contract, not by URL. /rpc is the product surface and /v1/* is the account surface. Both may change while this instance is a dev instance; nothing here is a stability promise.
- The portal's /api/* proxy is not a client path. It exists so this website's own pages can stay same-origin. Point your integration at api.mend.rest directly.
- This page is documentation. Where it and the repository disagree, the repository is right and this page is a bug.