Two real tools, verified with an actual initialize → tools/list → tools/call handshake -- not written and assumed to work.
prove"Generate a real STARK proof that a .zkasm program executes to its claimed result. Returns the base64-encoded proof and the (initial, result) public inputs."
{ "program": "<.zkasm text>" }verify"Verify a proof (from the prove tool) against the exact .zkasm program it claims to be for. Re-executes the program locally to know what to check -- it never trusts the proof's own claims."
{ "program": "<.zkasm text>", "proof_base64": "<from prove>" }rmcp's StreamableHttpService implements tower::Service, but its response body type doesn't line up with axum::Router::nest_service without an adapter layer -- and the upstream examples serve it via a raw hyper accept loop rather than mounting it on an existing router, a strong signal that isn't a supported plug-and-play path. So it runs on :4478, separate from the HTTP API's :4477, following the pattern the upstream examples actually use.
cargo build --release -p zkvm-host-server ./scripts/mcp_demo.sh
Point any MCP client at http://127.0.0.1:4478. Full setup for Claude Desktop and Cursor specifically: docs/MCP.md. Source: crates/zkvm-host-server/src/mcp.rs.
The rest of the API these tools sit alongside: HTTP API Reference.