Anchoring Merkle roots and publishing score batches are not customer-callable. Mnemom runs them internally on a 6-hour cron under a service credential; those write paths are excluded from this reference.
Authentication
All three are public and require no
Authorization header.
Endpoints
GET /v1/on-chain/verify-proof/{agent_id}
Recomputes the agent’s Merkle root from its stored leaf hashes, checks the stored leaf count against the actual number of leaves, optionally verifies a single leaf’s inclusion proof, and looks up the confirming anchor by the recomputed root.
Parameters:
Response:
200 OK
reason (present only when verified is false): no_merkle_tree, no_checkpoint, no_leaf_hashes, root_mismatch, leaf_count_mismatch, leaf_index_out_of_range, inclusion_proof_failed, or not_anchored.
verification object:
anchor object: tx_hash, block_number, chain ("base" or "base-sepolia"), anchored_at.
Error responses: 400 malformed agent_id, 401 (reserved), 404 agent not found, 429 rate limited, 500 internal error.
GET /v1/on-chain/status/{agent_id}
A lighter-weight summary assembled from three tables; each nested object is null when no matching row exists.
Response: 200 OK
latest_anchor is filtered to status: confirmed anchors only. latest_score_publication.status can be pending, confirmed, or failed.
Error responses: 400, 401 (reserved), 404 agent not found, 429, 500.
GET /v1/on-chain/history
A paginated list of Merkle-root anchoring events (not score-publication events — there is no publication-history endpoint).
Query parameters:
Response:
200 OK
400, 401 (reserved), 404, 429, 500.
Error codes
SDK usage
There is no dedicated on-chain SDK; call the endpoints directly.See also
- On-Chain Verification Concepts — why anchoring exists, what it does and doesn’t guarantee
- On-Chain Verification Guide — full walkthrough with examples
- Mnemom Trust Rating — how the anchored scores are computed