MCP server — POST /api/mcp
The node speaks the Model Context Protocol at POST /api/mcp, so any MCP-capable client —
Claude Desktop, Claude Code, Cursor, Zed — connects and becomes a Zeq agent: it provisions its
own machine, holds a real key, runs verified physics, and builds and fires
contracts and apps, every call landing on an audit chain.
This page is the complete tool reference. Every name, description and required-input list below
was read from the node's own x-mcp-tools array (GET https://zeq.me/openapi.json) and
cross-checked against a live tools/list call. The two agree exactly: 57 tools, same names, same
order. If you are looking at an older page that named zeq_call, zeq_wallet,
zeq_convert_credits or a zeq_ak_* tool, those are not MCP tools — see
what is not here.
The wire
One endpoint, JSON-RPC 2.0, no session to establish:
curl -sX POST https://zeq.me/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
The server implements exactly three methods (shared/api-core/src/routes/mcp.ts):
| Method | What it does |
|---|---|
initialize | Handshake. Returns protocolVersion 2024-11-05, serverInfo (<host>/api/mcp, version 3.1.0), and a maths primer. Runs a live pulse and a real welcome computation on connect — no auth, no quota. |
tools/list | The 57 tool definitions with name, description and inputSchema. |
tools/call | Invoke one tool: params: { name, arguments }. |
Anything else is refused rather than ignored:
{"jsonrpc":"2.0","error":{"code":-32601,
"message":"Method not found: resources/list. Supported: initialize, tools/list, tools/call"},"id":1}
So there are no resources/* or prompts/* surfaces here — the tool list is the whole API.
Other error codes you will meet: -32600 (not JSON-RPC 2.0, HTTP 400), -32602 (missing
params.name, or an unknown tool — the message lists all 57), -32003 (quota exceeded, returned
with the tool's own HTTP status), -32603 (internal error).
Connecting a client
HTTP — point the connector at the endpoint and put your key in the Authorization header:
{
"mcpServers": {
"zeq": {
"url": "https://zeq.me/api/mcp",
"headers": { "Authorization": "Bearer zeq_ak_your_key" }
}
}
}
stdio — the @zeq/mcp package is a stdio bridge to the same live tools, installed from the
framework's own registry (never npmjs):
npm config set @zeq:registry https://zeq.me/registry
npm install -g @zeq/mcp # then run: zeq-mcp
GET /api/mcp (a plain GET, no JSON-RPC) is the discovery document: node identity and machine hash,
the capability map, the quickstart, surface.economy, and the same tool list without input schemas.
Read it first if you want to know which node you are actually talking to.
Auth
One header, one format:
Authorization: Bearer zeq_ak_<your_key>
A malformed or missing header on a keyed tool comes back as a tool-level error, not a transport
error — the JSON-RPC envelope still says result, with isError: true:
{"content":[{"type":"text","text":
"Error 401: Missing or malformed Authorization header. Provide: Authorization: Bearer zeq_ak_<your_key>"}],
"isError":true}
Self-onboard in two steps
Every key belongs to an account, so onboarding is authenticated — but there is no signup form:
POST /api/demo-key/mint— free, no signup — returns azeq_ak_demo_…key.- Call
zeq_spin_upwith that demo key in the header. It provisions a fresh machine (unique ZID), seeds its audit chain, and mints an activezeq_ak_key on the free tier. The recovery equation, its salt and the API key are shown once — there is no password reset.
Put that key in your connector and every other tool runs on your machine.
Which tools need a key
Nine tools answer with no Authorization header at all — the discovery and literature surface:
zeq_pulse · zeq_field_status · zeq_api_catalog · zeq_list_operators · zeq_find_operator ·
zeq_science_domains · zeq_domain_match · zeq_paper_search · zeq_paper_fetch
zeq_spin_up needs a demo key. zeq_http forwards whatever key you send (and blocks admin
routes and /api/mcp itself). Every other tool requires a zeq_ak_ key, and the compute tools
burn credits against the ZID that owns it — see credits & metering.
zeq_api_catalog also changes what it shows by key: unauthenticated it reports
{"authed": false, "total_endpoints": 763, "owner_hidden": 89} — 763 + 89 = the 852 public
endpoints the descriptor advertises. Owner-gated paths appear once you send a key.
The 57 tools
Grouped by area. Required inputs is the tool's own inputSchema.required array, verbatim;
where a schema declares no required field the cell says no required inputs — most solvers ship a
complete set of defaults and run bare. Every tool also accepts an optional folder where its
schema lists one.
Node, discovery and your machine — 6
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_spin_up | Provision your own ZeqVM machine and mint a real account-backed key. Call it with a demo key. | no required inputs (optional displayName) |
zeq_api_catalog | The map. Search the node's full public API surface; filter by q, method, auth. | no required inputs |
zeq_http | The door. Call any public /api/* endpoint directly — GET/POST/PUT/PATCH/DELETE plus HTTP QUERY (RFC 10008). Admin routes and /api/mcp are blocked. | method, path |
zeq_pulse | Read the live ZeqPulse: Zeqond counter τ, phase φ, R(t). | no required inputs |
zeq_field_status | ZeqField security status — cipher, key source, PBKDF2 parameters, ZeqProof HMAC settings. | no required inputs |
zeq_observer | The proof-of-computation feed on the entangled-state chain. With a key it focuses on your machine. | no required inputs (optional limit) |
zeq_observer is erroring on zeq.meCalled with no key — the case its description covers, "with no key it returns the global recent
feed" — the live node answers {"code":-32603,"message":"Internal error"}. Reproduced on repeat
calls, with and without limit. The tool is advertised in tools/list; treat the keyless path as
broken on this node until it is fixed, and read the feed through
the Observer app or zeq_http in the meantime.
Core compute and verification — 5
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_compute | The static closed-form path: run catalogued operators and get a ZeqState envelope with masterSum R(t), φ, τ, an accuracy bound and a ZeqProof HMAC. KO42 always included. | domain, inputs |
zeq_solve | Integrate the geodesic in the KO42-tensioned metric; returns φ(t), the register dump, the HULYAS functional energy and a term-by-term diagnostic. | prompt |
zeq_multibody | The vector master equation — N coupled φᵢ(t) trajectories with pairwise inverse-square coupling, per-body registers and per-pair force/separation statistics. | prompt, bodies |
zeq_unified | Compose multiple operators in one call — formula-as-data, no eval; returns the composed value, the strategy used and every per-operator intermediate. | no required inputs |
zeq_verify | Verify a ZeqProof HMAC. Integrity of the response, not independent re-derivation of the physics. | proof, operatorIds, R_t, zeqond |
zeq_compute returns a verify object you can hand straight back to zeq_verify for a guaranteed
round-trip. What that check does and does not prove is in proofs.
Operator discovery — 2
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_list_operators | List operators in one domain, or list all 67 domains. | no required inputs (optional domain) |
zeq_find_operator | Search operators by name, id, equation or description in one call; returns id, domain, prefix, tier, equation and the domain's accepted input keys. | term |
Science and literature — 4
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_paper_search | Search arXiv, OpenAlex, Crossref and Europe PMC in one call; deduplicated, canonical ids. | q |
zeq_paper_fetch | Fetch one record by canonical id — arxiv:…, doi:…, pmid:…. | id |
zeq_domain_match | Which of the 67 operator domains a paper or a block of text plausibly falls in, with the vocabulary terms that fired. Deterministic term overlap — not a solvability proof. | no required inputs (give id or text) |
zeq_science_domains | The 67 domains and which literature source serves each. Scope a search before you run it. | no required inputs |
Clock series and coherence — 2
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_lattice | A multi-node coherence grid: 2–5 node specs at staggered HulyaPulse phases, per-node R_t and a coherence score. Costs N compute tokens. | nodes |
zeq_shift | A deterministic forward projection of R(t) over up to 64 Zeqond steps (0.777 s each), with per-step φ, τ, R_t and delta. Costs N tokens. | no required inputs (optional steps) |
Named solvers — 27
Each one runs a real numerical method and reports its own reality check — an exact solution, a
conserved quantity, or a stability bound — as the seal. All require a zeq_ak_ key; none require
an input.
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_evolve | Molecular dynamics: velocity-Verlet on a Lennard-Jones system (NVE), reporting energy-conservation drift. | no required inputs |
zeq_action | Least-action high-order symplectic integrator (Yoshida 4/6/8) run beside RK4 on the same system, so you see both drifts. | no required inputs |
zeq_closedform | The closed-form master-equation solver — the analytic counterpart to the RK4 path, with an independent cross-check. Refuses φ² / √ / exp shapes by name rather than approximating them. | no required inputs |
zeq_heat | 2-D heat/diffusion on a grid — explicit FTCS or unconditionally stable ADI, against the exact Fourier-mode decay. | no required inputs |
zeq_wave | 2-D membrane wave by leapfrog, checked by exact discrete-energy conservation; mode:'maxwell' gives 1-D Yee FDTD. | no required inputs |
zeq_flow | 2-D incompressible Navier–Stokes (Stam stable fluids) with pressure projection; reports divergence before and after. | no required inputs |
zeq_climate | 2-D shallow-water equations (Lax–Friedrichs); total mass conserved, CFL enforced. | no required inputs |
zeq_lorenz | The Lorenz attractor by RK4 — exact phase-volume contraction plus a measured Lyapunov exponent. | no required inputs |
zeq_fracture | 2-D bond-based peridynamic crack propagation (mode-I SENT); reports crack tip, advance, and critical strain. | no required inputs |
zeq_fea | 2-D plane-stress finite-element cantilever (Q4, matrix-free CG) against Euler–Bernoulli beam theory. | no required inputs |
zeq_buckling | Euler critical buckling load of a compressed column, from the beam-column eigenproblem, checked against the exact P_cr. | no required inputs |
zeq_acoustic | Resonant modes of a 1-D acoustic resonator, checked against the exact open/closed closed forms. | no required inputs |
zeq_schrodinger | Time-independent Schrödinger eigenvalues by Sturm bisection, against the exact analytic spectrum. | no required inputs |
zeq_device | 2-D semiconductor electrostatics by matrix-free CG against an exact sinh Fourier mode; dim:1 gives the 1-D PN junction. | no required inputs |
zeq_grid | DC power-flow on an N-bus network; Kirchhoff's current law and power balance are the check. | no required inputs |
zeq_react | Reaction–diffusion — Gray–Scott Turing morphogenesis or FitzHugh–Nagumo excitable media. | no required inputs |
zeq_tumor | Fisher–KPP growth front; boundedness in [0,1] plus the exact Ablowitz–Zeppetella front speed. | no required inputs |
zeq_lotka | Predator–prey Lotka–Volterra; the first integral is conserved on every orbit, and Euler visibly is not. | no required inputs |
zeq_epi | SIR/SEIR epidemic dynamics by RK4 — R₀, peak infected, peak day, final size, population conserved. | no required inputs |
zeq_dock | Rigid-body molecular docking — Lennard-Jones + Coulomb over the ligand's 6 DOF; binding energy and pose. | no required inputs |
zeq_quant | European option price by Monte-Carlo, verified against closed-form Black–Scholes. | no required inputs |
zeq_opt | Nonlinear optimization (Nelder–Mead or gradient descent) on standard test functions, checked against the known global minimum. | no required inputs |
zeq_kalman | Kalman filtering — covariance converging to the steady-state Riccati solution, with whiteness and positive-definiteness checks. | no required inputs |
zeq_sat | DPLL 3-SAT on a seeded random instance at ratio α; certifies assignments, reports decisions and propagations. | no required inputs |
zeq_zeta | Locate Riemann zeta zeros on the ½-line and verify the count against N(T). Verifies in range; proves nothing. | no required inputs |
zeq_gauge | 2-D compact U(1) lattice gauge theory (Metropolis); mean plaquette against the exact Bessel result. | no required inputs |
zeq_protect | ZeqPulseGuard — a sealed protection heartbeat mapping a liveness signal to OK / DEGRADED / BREACH. | no required inputs |
Frictionless and looping — 3
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_auto | Send a natural-language query plus constants; the right solver is selected, run and sealed. No operator or endpoint to pick. | query |
zeq_stream | Hosted ticking solver channels — a solver wrapped as a live endpoint with its own key. action: create / tick / get / list / close. Each seal is one credit-compute. | action |
zeq_reactor | Recursive sealed loops: the sealed output of step n plus a live environment reading become step n+1, hash-linked. action: create / step / observe / state / trajectory / telemetry / get / close. | action |
Contracts — 6
All six require your zeq_ak_ key. Every transition is ZeqProof-anchored on the entangled-state
chain — see contracts.
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_contract_templates | List the 321 built-in state-contract templates. No LLM credential needed. | no required inputs |
zeq_contract_generate | Draft a contract definition from a plain-English description. Returns the definition; you deploy it. | query |
zeq_contract_deploy | Deploy a contract — either a templateId or a full definition object (which must carry a version). | no required inputs (pass one of the two) |
zeq_contract_list | List the contracts on your machine — id, name, current state, fire count. | no required inputs |
zeq_contract_get | One contract's full state and definition. | id |
zeq_contract_fire | Fire the next transition now; returns a ZeqProof receipt. Guarded transitions report their reason instead of firing. | id |
Apps and messaging — 2
| Tool | Purpose | Required inputs |
|---|---|---|
zeq_publish_page | Publish a live HTML page or app to your machine — hosted at /s/<machine>/p/<pageSlug>/ and added to your launcher. Owner-authenticated. | title, html |
zeq_mail_html | Build an HTML email and deliver it to your own Zeq Mail inbox, to review and forward yourself. It can never send to a third party, so an agent cannot be talked into mailing strangers. Scripts, forms and iframes are stripped on arrival. | subject, html |
What is not a tool
The audit that prompted this rewrite found four names on the old page that the live list does not contain. They are gone:
| Name on the old page | Status |
|---|---|
zeq_call | Not an MCP tool. It is a WebMCP tool — see below. |
zeq_wallet | Not an MCP tool. WebMCP. |
zeq_convert_credits | Not an MCP tool. WebMCP. |
zeq_ak_* | Never a tool at all — zeq_ak_ is the API-key prefix. |
There is also no economy, identity or mesh tool group here, and saying otherwise would be
inventing one. The 57 tools cover compute, solvers, science, contracts, pages and mail; identity is
one tool (zeq_spin_up). The economy, the mesh, the vault and the rest of the 852-endpoint surface
are reached the way the node intends — discover with zeq_api_catalog, then call with zeq_http:
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"zeq_http",
"arguments":{"method":"GET","path":"/api/tally/transparency"}}}
That is the documented pattern, not a workaround: the node's own quickstart is catalog, then door. See the economy at a glance for what those endpoints return.
WebMCP — the same node, from inside the browser
POST /api/mcp is the server-side surface. Every page the node serves also exposes tools to
an in-browser agent through WebMCP — the navigator.modelContext browser standard. This is
a distinct mechanism, not a transport for the above: the page registers its own tools and a
browser-resident agent calls them in the visitor's session.
The node ships it at /zeq-webmcp.js (feature-detected, injected on every page; advertised in
the webmcp field of GET /api/mcp). It registers five tools — and these are the ones the four
removed names belong to:
| WebMCP tool | What it does |
|---|---|
zeq_pulse | Live Zeqond tick + commons-pool balance |
zeq_wallet | The signed-in ZID's compute-credit balance + conversion rate |
zeq_convert_credits | Credits → ZEQ Coin — human-confirmed via requestUserInteraction, because it moves value |
zeq_api_catalog | Discover the public endpoint surface |
zeq_call | Call any public /api/* route (GET free; writes confirmed; admin / zsc / mcp blocked) |
WebMCP tools run against the visitor's same-origin session cookie and never forward keys.
Feature-detect with "modelContext" in navigator.
Rules and instruments
The MCP server is the instruments side of the loop — the callable tools. Pair it with the kernel skill, the rules side: the system prompt that pins the clock, mandates KO42 and wires the seven-step protocol. Give an agent both and it has the contract and the tools to honour it.
Read next
- The CLI — the same surface as commands, in a shell.
- Kernel skill — the rules to pair with these tools.
- The AI harness — how AI consumes the framework.
- Execution model — what
zeq_computeactually runs, step by step. - Proofs — what
zeq_verifychecks, and what it does not.