An installable MCP server for the Assurance API
assurance-mcp ships in this repository — four tools, each a real httpx call to a running deployment, no local simulation. With no API URL configured, every tool returns the same honest "not configured" error this whole site uses, never a faked response.

Three commands
pip install -e '.[assurance-mcp]' export ASSURANCE_API_URL=http://127.0.0.1:8000 # or a real deployment export ASSURANCE_API_KEY=... # optional — paid tools only assurance-mcp
Transport is stdio by default, which is what most MCP clients expect — including Cursor's mcp.json, shown on the Cursor connector page. For a generic MCP client, point it at the assurance-mcp command directly:
{
"mcpServers": {
"assurance": {
"command": "assurance-mcp",
"env": {
"ASSURANCE_API_URL": "http://127.0.0.1:8000",
"ASSURANCE_API_KEY": ""
}
}
}
}neuralbridge-ai-mcp: discover, read, plan, approve
A separate package with the same honesty rules — a thin httpx wrapper around the real /ai REST API (src/neuralbridge/api/routes/ai.py), not a second policy engine. ai_list_connections, ai_capabilities, and ai_read are free (rate-limited); ai_plan_write, ai_approve, ai_deny, and ai_audit need a Register or Cell key and return the API's real 402 otherwise — never a faked success.
pip install -e '.[neuralbridge-ai-mcp]' export NEURALBRIDGE_API_URL=http://127.0.0.1:8000/api/v1 # or a real deployment export NEURALBRIDGE_AI_API_KEY=... # optional — write tools only export NEURALBRIDGE_AI_ACTOR=your-agent-name # real identity for the audit trail neuralbridge-ai-mcp
{
"mcpServers": {
"neuralbridge-ai": {
"command": "neuralbridge-ai-mcp",
"env": {
"NEURALBRIDGE_API_URL": "http://127.0.0.1:8000/api/v1",
"NEURALBRIDGE_AI_API_KEY": "",
"NEURALBRIDGE_AI_ACTOR": "your-agent-name"
}
}
}
}See docs/ai-local-setup.md for standing up a local Postgres to point this at.
Four tools — two free, two paid on purpose
Deliberately small rather than one tool per route: plans and spec_validate need no key at all, and machine_verify / register_cases exist specifically to prove the fail-closed behavior — called on the wrong plan, they return the API's real structured 401/402, not an error from this server. The full route table below is what a future, larger tool set would cover; the four highlighted rows are what ships in assurance-mcp today.
| Route | Plan | MCP tool |
|---|---|---|
GET /v1/spec/fields | Validator — free | Not yet a tool |
POST /v1/spec/validate | Validator — free | Shipped |
GET /v1/plans | Validator — free | Shipped |
POST /v1/machine/separation | Validator — free | Not yet a tool |
POST /v1/machine/bundle/check | Validator — free | Not yet a tool |
POST /v1/machinery/diff | Validator — free | Not yet a tool |
POST /v1/machinery/passport/check | Validator — free | Not yet a tool |
POST /v1/fleet/advisory/check | Validator — free | Not yet a tool |
POST /v1/fleet/declaration/check | Validator — free | Not yet a tool |
POST /v1/check/machine | Validator — free | Not yet a tool |
GET /v1/ledger/attest/key | Validator — free | Not yet a tool |
POST /v1/ledger/attest/verify | Validator — free | Not yet a tool |
GET /v1/supplier/feed/{id} | Validator — free | Not yet a tool |
GET /v1/register | Register — €390/mo | Not yet a tool |
GET /v1/register/breaches | Register — €390/mo | Not yet a tool |
GET /v1/cases | Register — €390/mo | Shipped |
POST /v1/cases/{id}/triage | Register — €390/mo | Not yet a tool |
POST /v1/cases/{id}/filings | Register — €390/mo | Not yet a tool |
GET /v1/ledger/verify | Register — €390/mo | Not yet a tool |
POST /v1/machine/verify | Cell — €1,290/mo | Shipped |
POST /v1/machinery/manifest | Cell — €1,290/mo | Not yet a tool |
POST /v1/machinery/coverage | Cell — €1,290/mo | Not yet a tool |
POST /v1/machinery/passport | Cell — €1,290/mo | Not yet a tool |
GET /v1/fleet/machines | Cell — €1,290/mo | Not yet a tool |
POST /v1/fleet/advisory | Cell — €1,290/mo | Not yet a tool |
POST /v1/check/fleet-machine | Cell — €1,290/mo | Not yet a tool |
POST /v1/fleet/declare | Cell — €1,290/mo | Not yet a tool |
POST /v1/ledger/attest | Cell — €1,290/mo | Not yet a tool |
GET /v1/ledger/attest/log | Cell — €1,290/mo | Not yet a tool |
POST /v1/supplier/advisory | Supplier — contact sales | Not yet a tool |
Growing the tool set
Adding a route as a tool is mechanical — src/assurance/mcp/server.py is under 150 lines, one @mcp.tool() function per route calling the same _call() helper. The remaining free-tier routes (separation, bundle/manifest/declaration checks, attestation key/verify) are the natural next additions, since they need no key either. Read the source or open a PR.
Prefer plain HTTP for now? Read /developers or fetch /openapi.json directly — exactly what /llms.txt points agents at.
Prefer a raw HTTP client?
Same routes, same plans, curl and Python examples on the developer reference.