Skip to main content
The On-Chain API exposes three public, read-only endpoints for checking an agent’s Base L2 anchor status. See On-Chain Verification for the conceptual background and the guide for a walkthrough with examples.
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
Response fields: 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
Error responses: 400, 401 (reserved), 404, 429, 500.

Error codes

SDK usage

There is no dedicated on-chain SDK; call the endpoints directly.

See also