OpenChainGraph Suite · ART-01 · AP2 Mandate-Chain Validator
v1.0.0

AP2 Mandate-Chain Validator

Reference implementation for AP2 v0.2 mandate-chain validation. Paste your Intent → Cart → Payment mandate JSON trio and validate: signature-chain integrity (parent hash linkage), scope and spend-limit consistency, TTL/expiry at validation time, over-spend detection, and Human-Not-Present (HNP) autonomous-flow flags. Load a built-in PASS or FAIL scenario to explore the validation model, then export conformance test-vector fixtures for CI integration. See also: how AP2 mandates map to x402, ACP, ERC-8004, and MPP.

AP2 Export Chains: ART-02 · PTG-01 Conformance Fixtures AP2 v0.2 Zero PII · Reference Impl
🔒 All validation runs locally. No data leaves your browser. Use synthetic mandate JSON only.
Mandate 1
Intent
pending
Mandate 2 (optional)
Cart
Mandate 3
Payment
pending
Scenarios — built-in test vectors

Load a pre-built scenario to see how each validation check fires, or paste your own mandate JSON in the editors below.

Mandate JSON editors
Intent Required
paste or load scenario
Cart Optional
leave blank to validate intent→payment directly
Payment Required
paste or load scenario
Validation settings
Leave blank to use current time · Controls TTL/expiry checks
Validation verdict
Conformance test-vector fixture

This fixture captures the full input/output pair for this validation run. Use it in your CI pipeline to regression-test your AP2 mandate-chain implementation. Import into any test framework that accepts JSON assertion fixtures.

Ask your agent

Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this exact tool, with this sample, and verify the artifact.

Run the AINumbers MCP tool `validate_ap2_mandate_chain`. Task: Validate AP2 v0.2 Intent→Cart→Payment mandate chains: signature-chain integrity, scope consistency, TTL/expiry, over-spend, HNP flow flags.
Call it with arguments: {"policy_parameters":{"validate_at":"2026-06-18T12:00:00.000Z","hnp_mode":"strict","intent":{"mandate_type":"intent","mandate_id":"int-001","version":"2.0","issued_at":"2026-06-18T10:00:00.000Z","expires_at":"2026-06-19T10:00:00.000Z","issuer_id":"agent-alpha","scope":{"merchant_ids":["merchant-acme"],"category_codes":["5411","5912"],"currency":"USD","max_amount":500},"human_not_present":false},"cart":{"mandate_type":"cart","mandate_id":"crt-001","version":"2.0","issued_at":"2026-06-18T11:00:00.000Z","expires_at":"2026-06-19T11:00:00.000Z","parent_mandate_id":"int-001","parent_hash":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","cart_total":38.97,"currency":"USD","merchant_id":"merchant-acme"},"payment":{"mandate_type":"payment","mandate_id":"pay-001","version":"2.0","issued_at":"2026-06-18T11:54:00.000Z","expires_at":"2026-06-18T12:30:00.000Z","parent_mandate_id":"crt-001","parent_hash":"b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3","amount":38.97,"currency":"USD","merchant_id":"merchant-acme","payment_method":"card_on_file","human_not_present":false}}}
Verify before trusting: call `verify_execution_hash` on mcp.ainumbers.co (https://mcp.ainumbers.co/mcp) with the parameter `claimed_hash` set to the returned `execution_hash`, passing the full artifact the run returned (the object containing `policy_parameters` + `output_payload` + `execution_hash`; equivalently `policy_parameters` + `output_payload` with `claimed_hash`), not the bare hash string.
Return the ledger link https://ledger.ainumbers.co/ so a human can re-verify without contacting us.
PII rule: All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/art-01-ap2-mandate-chain-validator.html#p=v1.H4sIAAAAAAAA_wFBBL77eyJ2YWxpZGF0ZV9hdCI6IjIwMjYtMDYtMThUMTI6MDA6MDAuMDAwWiIsImhucF9tb2RlIjoic3RyaWN0IiwiaW50ZW50Ijp7Im1hbmRhdGVfdHlwZSI6ImludGVudCIsIm1hbmRhdGVfaWQiOiJpbnQtMDAxIiwidmVyc2lvbiI6IjIuMCIsImlzc3VlZF9hdCI6IjIwMjYtMDYtMThUMTA6MDA6MDAuMDAwWiIsImV4cGlyZXNfYXQiOiIyMDI2LTA2LTE5VDEwOjAwOjAwLjAwMFoiLCJpc3N1ZXJfaWQiOiJhZ2VudC1hbHBoYSIsInNjb3BlIjp7Im1lcmNoYW50X2lkcyI6WyJtZXJjaGFudC1hY21lIl0sImNhdGVnb3J5X2NvZGVzIjpbIjU0MTEiLCI1OTEyIl0sImN1cnJlbmN5IjoiVVNEIiwibWF4X2Ftb3VudCI6NTAwfSwiaHVtYW5fbm90X3ByZXNlbnQiOmZhbHNlfSwiY2FydCI6eyJtYW5kYXRlX3R5cGUiOiJjYXJ0IiwibWFuZGF0ZV9pZCI6ImNydC0wMDEiLCJ2ZXJzaW9uIjoiMi4wIiwiaXNzdWVkX2F0IjoiMjAyNi0wNi0xOFQxMTowMDowMC4wMDBaIiwiZXhwaXJlc19hdCI6IjIwMjYtMDYtMTlUMTE6MDA6MDAuMDAwWiIsInBhcmVudF9tYW5kYXRlX2lkIjoiaW50LTAwMSIsInBhcmVudF9oYXNoIjoiYTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMiIsImNhcnRfdG90YWwiOjM4Ljk3LCJjdXJyZW5jeSI6IlVTRCIsIm1lcmNoYW50X2lkIjoibWVyY2hhbnQtYWNtZSJ9LCJwYXltZW50Ijp7Im1hbmRhdGVfdHlwZSI6InBheW1lbnQiLCJtYW5kYXRlX2lkIjoicGF5LTAwMSIsInZlcnNpb24iOiIyLjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA2LTE4VDExOjU0OjAwLjAwMFoiLCJleHBpcmVzX2F0IjoiMjAyNi0wNi0xOFQxMjozMDowMC4wMDBaIiwicGFyZW50X21hbmRhdGVfaWQiOiJjcnQtMDAxIiwicGFyZW50X2hhc2giOiJiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzZDRlNWY2YTFiMmMzIiwiYW1vdW50IjozOC45NywiY3VycmVuY3kiOiJVU0QiLCJtZXJjaGFudF9pZCI6Im1lcmNoYW50LWFjbWUiLCJwYXltZW50X21ldGhvZCI6ImNhcmRfb25fZmlsZSIsImh1bWFuX25vdF9wcmVzZW50IjpmYWxzZX19ASBs40EEAAA