← Docs

Secondary receipts

A base execution receipt records work Zambo observed through its own MCP call. A secondary receipt is different: it lets a caller submit a result produced elsewhere and attach evidence for a bounded review.

Submit the record

This is the primary example. It is intentionally the documented URL-and-description shape, with no type field. Execute this JSON-RPC body verbatim against https://zambo.dev/mcp:

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"The completed work","source_url":"https://example.com/result","evidence":[{"url":"https://example.com/result","description":"Source evidence"}]}}}

The URL shorthand is normalized to the conservative web_link evidence type. The optional source_url identifies the primary result URL and is retained on the receipt.

Supported evidence types

Every typed evidence item uses type, data, and an optional description. The examples below are complete tools/call requests and each can be executed independently. Structured payloads are JSON strings so they match the published tool schema.

TypeTierWhat it represents
web_linkweakA URL or externally hosted result. The no-type {url,description} shorthand above maps here.
api_billing_receiptstrongProvider, receipt ID, and signature.
signed_git_commitstrongCommit identifier and signature.
onchain_txstrongTransaction hash and chain.
platform_signed_logstrongPlatform, event, and signature.
reproducibility_artifactstrongMatching artifact and expected output hashes.
tool_call_logmediumTool name, call time, and result hash.
file_timestampmediumFile path and timestamp.
structured_outputmediumSchema and value fields.
screenshotweakA screenshot URL or description.
unsaved_logweakA log that has not been independently signed or persisted.
env_varsweakEnvironment details supplied by the caller.
self_reportweakA caller statement without stronger supporting evidence.

web_link

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A linked result","evidence":[{"type":"web_link","data":"https://example.com/result","description":"Linked result"}]}}}

api_billing_receipt

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A billed API result","evidence":[{"type":"api_billing_receipt","data":"{\"provider\":\"example\",\"receipt_id\":\"r-1\",\"signature\":\"sig-1\"}","description":"Provider receipt"}]}}}

signed_git_commit

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A signed commit","evidence":[{"type":"signed_git_commit","data":"{\"commit\":\"abc123\",\"signature\":\"sig-1\"}","description":"Signed commit"}]}}}

onchain_tx

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"An onchain result","evidence":[{"type":"onchain_tx","data":"{\"tx_hash\":\"0x123\",\"chain\":\"base\"}","description":"Confirmed transaction"}]}}}

platform_signed_log

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A platform event","evidence":[{"type":"platform_signed_log","data":"{\"platform\":\"example\",\"signature\":\"sig-1\",\"event\":\"completed\"}","description":"Signed platform event"}]}}}

reproducibility_artifact

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A reproducible artifact","evidence":[{"type":"reproducibility_artifact","data":"{\"artifact_hash\":\"sha256:abc\",\"expected_output_hash\":\"sha256:abc\"}","description":"Matching hashes"}]}}}

tool_call_log

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A logged tool result","evidence":[{"type":"tool_call_log","data":"{\"tool\":\"build\",\"called_at\":\"2026-09-18T00:00:00Z\",\"result_hash\":\"sha256:abc\"}","description":"Tool call log"}]}}}

file_timestamp

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A timestamped file","evidence":[{"type":"file_timestamp","data":"{\"path\":\"dist/output.txt\",\"timestamp\":\"2026-09-18T00:00:00Z\"}","description":"File timestamp"}]}}}

structured_output

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A structured result","evidence":[{"type":"structured_output","data":"{\"schema\":\"result-v1\",\"value\":\"complete\"}","description":"Structured output"}]}}}

screenshot

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A screenshot-backed result","evidence":[{"type":"screenshot","data":"https://example.com/result.png","description":"Result screenshot"}]}}}

unsaved_log

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"An unsaved log result","evidence":[{"type":"unsaved_log","data":"build completed locally","description":"Local log"}]}}}

env_vars

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"An environment-backed result","evidence":[{"type":"env_vars","data":"NODE_ENV=production","description":"Environment details"}]}}}

self_report

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"secondary_receipt","arguments":{"output":"A caller-reported result","evidence":[{"type":"self_report","data":"The caller reports completion","description":"Self report"}]}}}

Use only information the caller is authorized to publish. The system stores a hash of the submitted output, evaluates the supplied evidence with the published scoring function, and exposes the resulting receipt through the normal public receipt routes. Weak evidence is recorded but does not become independent proof.

What it does not prove

Inspect and verify

Keep the returned receipt ID. Use /run/<id> for the human-readable handoff and /api/v2/receipt/<id>/verify to fetch the saved bytes and separately inspect the SHA-256 commitment, signature, schema, and chain states. Recompute the commitment locally; signature and chain remain NOT CHECKED.

Connect Zambo → · Read workflow patterns →

For developers and agents

Zambo gives AI work a receipt you can check. For people: add Zambo to your AI app and ask for a job. These technical links are for developers and AI agents. One hosted MCP at https://zambo.dev/mcp. Check the proof for recorded tool calls (verify a receipt). Agents: 24-hour Day Pass, $0.99 USDC on Base via x402, not per call. People: Zambo Pass $29/mo or $290/yr; holder pass $19/mo for verified $ZAMBO holders.

Start here: For AI agents · Add Zambo · Check a receipt · Answers · Guides · What a receipt is · Open receipt format (draft) · All tools · Pricing · Day Pass: $0.99 · Agent Day Pass · Switch AIs without losing your work · Connect your AI · Founder · Source code
Brennan on X · Zambo on X