Agent Cred Class Matrix

One row per agent payment credential class, five columns per row: scope, expiry, replay protection, revocability, and what the agent can learn. Scope, expiry and replay cells chain to the sibling verdict that already covers the class; the two classes no sibling covers carry declared local facts from closed vocabularies; and any column no cited source settles is marked unpinned and raised for manual review instead of passing silently. Everything runs locally in your browser.

🔒 All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.
Chained cells cite sibling verdicts; this matrix never recomputes them. A chained id names the sibling whose pinned rules cover that column, and the kernel only checks that the id sits in the closed per-column set. Local facts are declared by the caller from the closed vocabularies shown below; the kernel validates vocabulary and completeness, not the truth of a declaration. The unpinned_in_cited_sources marker exists because no source in the cited pin set settles the proxy expiry column or the session-key replay column (gap check, November 2026 pin set); declaring it always raises LOCAL_FACT_UNPINNED and mirrors into the review list. Nothing here is legal advice, and no card network or protocol endorses this page.
Rail verdict (consumed from the payment rail trust crosswalk)

any_accepted is derived by the kernel as the OR of the rail acceptances; a supplied verdict that contradicts it is refused as RAIL_VERDICT_INVALID.

Credential class declarations (declare only the classes the deployment uses)
What this node computes
BehaviourRuleEvidence (pinned path, line range, registry digest)
Chained scope / expiry / replayEach cell names exactly one sibling per closed per-column set: SPT chains to the ACP shared payment token linter; network tokens chain to the Visa VIC or Mastercard agentic token builders; x402 scope chains to the scope checker, expiry to the mandate gate or the permit2 recomputer, replay to the recomputerConsumes art-385, art-699, art-703 node verdicts and the 281 / 287 / 374 builder tool pages; chain semantics per the registered clause-snapshot pin set
UNKNOWN_CHAIN_SOURCEA chained id outside the closed column set is refused, never emittedClosed sets are the kernel's only chain vocabulary (chaingraph/kernels/827-agent-cred-class-matrix.kernel.mjs, CHAIN_SOURCES)
Local facts, proxy scope and replaycontainer_scoped_token_use (token:use binds one container, not tenant-wide proxy:invoke); fail_closed_single_forward (at-most-once, fail-closed)research/clause-snapshots/agent-cred-2026-11/excerpts-823/bt-proxy-scope.txt line 1 and bt-proxy-failsafe.txt line 1 (registry sha256:5ae62b47…, sha256:5c13c0a7…; source developers.basistheory.com browser-proxy guide line 53 and line 56)
Local fact, session-key scope and expirycounterparty_and_chain_scoped_grant (PermissionRequest binds chainId, from, to); expiry_rule_unix_timestamp (ExpiryRule is a unix timestamp)excerpts-823/e7715-grant-request.txt lines 1-9 and e7715-expiry-rule.txt lines 1-4 (registry sha256:b3a1b1fb…, sha256:defb536e…; source eips.ethereum.org EIP-7715 lines 318-347 and 304-315)
LOCAL_FACT_UNPINNEDThe proxy expiry column and the session-key replay column are settled by no cited source; the honest marker always raises a review flagGap verdict: research/AGENT-CRED-CLASS-GAP-CHECK-2026-11.md (VERDICT: GAP, line 87)
Revocability columnCaller declares mechanism and time_bound from a closed set; erc-7715 exposes wallet_revokeExecutionPermission, erc-7579 exposes module uninstall with revert-if-not-installed, erc-3009 exposes optional cancelAuthorization; the SPT bearer is declared not revocableexcerpts-823/e7715-revoke-rpc.txt lines 1-4 (source EIP-7715 lines 448-482), e7579-module-configs.txt lines 1-8 (source EIP-7579 lines 443-496), e3009-cancel.txt lines 17-23 (source erc-3009.md lines 138-160), bt-acp-spt.txt lines 1-10 (source browser proxy guide lines 159-170)
Learn columnFive booleans per class: opaque credential, learns identity, learns action, publicly visible, persisted or logged; the proxy provider and its recordings can see card data, the x402 facilitator cannot modify amount or destination, the erc-7715 permissionsContext is opaque to the agent, erc-4337 UserOperations propagate on alternative mempoolsexcerpts-823/bt-recording-warning.txt line 1 (source guide line 68), x402-facilitator-cannot-modify.txt line 1 (source scheme_exact_evm.md line 17), e7715-opaque-context.txt lines 1-3 (source EIP-7715 lines 751-763), e4337-mempool-bundling.txt lines 1-4 (source EIP-4337 lines 973-988)
Rail verdict consumptionrail_acceptance_summary is emitted only for a well-formed verdict whose any_accepted equals the OR of rail acceptances; gap counts are echoed per railConsumes art-133-agent-payment-rail-trust-crosswalk output shape
Refusals never throwEvery refusal raises a flag in compliance_flags and mirrors into manual_review_required; refused cells carry the flag as reasonFlag-mirror doctrine (chaingraph/standard/AUTHORING-STANDARD.md section 2)
Chained sources
Manifest

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 `compute_agent_cred_matrix`. Task: Build the agent credential class matrix: one row per credential class across scope, expiry, replay protection, revocability and what the agent can learn, chaining to sibling verdicts and flagging every refusal or unpinned column for review.
Call it with arguments: {"policy_parameters":{"rail_verdict":{"any_accepted":true,"rails":{"mastercard_agent_pay":{"accepted":false,"gaps":["testnet-only-integration"]},"visa_tap":{"accepted":true,"gaps":[]},"web_bot_auth":{"accepted":false,"gaps":[]}}},"classes":{"shared_payment_token":{"chain_sources":{"scope":"acp-checkout-shared-payment-token-linter","expiry":"acp-checkout-shared-payment-token-linter","replay_protection":"acp-checkout-shared-payment-token-linter"}},"network_agent_token":{"chain_sources":{"scope":"visa-vic-agent-token-scope-builder","expiry":"mastercard-agentic-token-builder","replay_protection":"mastercard-agentic-token-builder"}},"x402_permit":{"chain_sources":{"scope":"art-385-agent-token-scope-checker","expiry":"art-703-mandate-authorization-gate","replay_protection":"art-699-x402-permit2-evidence-recomputer"}},"api_key_card_proxy":{"local_facts":{"scope":"container_scoped_token_use","expiry":"unpinned_in_cited_sources","replay_protection":"fail_closed_single_forward"}},"wallet_session_key":{"local_facts":{"scope":"counterparty_and_chain_scoped_grant","expiry":"expiry_rule_unix_timestamp","replay_protection":"unpinned_in_cited_sources"}}},"revocation":{"shared_payment_token":{"mechanism":"declared_not_revocable","time_bound":true},"network_agent_token":{"mechanism":"authoritative_party_revoke_call","time_bound":true},"x402_permit":{"mechanism":"authoritative_party_revoke_call","time_bound":true},"api_key_card_proxy":{"mechanism":"authoritative_party_revoke_call","time_bound":false},"wallet_session_key":{"mechanism":"authoritative_party_revoke_call","time_bound":true}},"learn":{"shared_payment_token":{"opaque_credential":false,"learns_identity":false,"learns_action":true,"publicly_visible":false,"credential_persisted_or_logged":false},"network_agent_token":{"opaque_credential":false,"learns_identity":false,"learns_action":true,"publicly_visible":false,"credential_persisted_or_logged":false},"x402_permit":{"opaque_credential":false,"learns_identity":true,"learns_action":true,"publicly_visible":true,"credential_persisted_or_logged":false},"api_key_card_proxy":{"opaque_credential":false,"learns_identity":false,"learns_action":true,"publicly_visible":true,"credential_persisted_or_logged":false},"wallet_session_key":{"opaque_credential":true,"learns_identity":false,"learns_action":true,"publicly_visible":false,"credential_persisted_or_logged":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.
Over MCP, the run happens on the AINumbers worker. No AINumbers server stores your inputs.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/827-agent-cred-class-matrix.html#p=v1.H4sIAAAAAAAA_wE-CcH2eyJyYWlsX3ZlcmRpY3QiOnsiYW55X2FjY2VwdGVkIjp0cnVlLCJyYWlscyI6eyJtYXN0ZXJjYXJkX2FnZW50X3BheSI6eyJhY2NlcHRlZCI6ZmFsc2UsImdhcHMiOlsidGVzdG5ldC1vbmx5LWludGVncmF0aW9uIl19LCJ2aXNhX3RhcCI6eyJhY2NlcHRlZCI6dHJ1ZSwiZ2FwcyI6W119LCJ3ZWJfYm90X2F1dGgiOnsiYWNjZXB0ZWQiOmZhbHNlLCJnYXBzIjpbXX19fSwiY2xhc3NlcyI6eyJzaGFyZWRfcGF5bWVudF90b2tlbiI6eyJjaGFpbl9zb3VyY2VzIjp7InNjb3BlIjoiYWNwLWNoZWNrb3V0LXNoYXJlZC1wYXltZW50LXRva2VuLWxpbnRlciIsImV4cGlyeSI6ImFjcC1jaGVja291dC1zaGFyZWQtcGF5bWVudC10b2tlbi1saW50ZXIiLCJyZXBsYXlfcHJvdGVjdGlvbiI6ImFjcC1jaGVja291dC1zaGFyZWQtcGF5bWVudC10b2tlbi1saW50ZXIifX0sIm5ldHdvcmtfYWdlbnRfdG9rZW4iOnsiY2hhaW5fc291cmNlcyI6eyJzY29wZSI6InZpc2EtdmljLWFnZW50LXRva2VuLXNjb3BlLWJ1aWxkZXIiLCJleHBpcnkiOiJtYXN0ZXJjYXJkLWFnZW50aWMtdG9rZW4tYnVpbGRlciIsInJlcGxheV9wcm90ZWN0aW9uIjoibWFzdGVyY2FyZC1hZ2VudGljLXRva2VuLWJ1aWxkZXIifX0sIng0MDJfcGVybWl0Ijp7ImNoYWluX3NvdXJjZXMiOnsic2NvcGUiOiJhcnQtMzg1LWFnZW50LXRva2VuLXNjb3BlLWNoZWNrZXIiLCJleHBpcnkiOiJhcnQtNzAzLW1hbmRhdGUtYXV0aG9yaXphdGlvbi1nYXRlIiwicmVwbGF5X3Byb3RlY3Rpb24iOiJhcnQtNjk5LXg0MDItcGVybWl0Mi1ldmlkZW5jZS1yZWNvbXB1dGVyIn19LCJhcGlfa2V5X2NhcmRfcHJveHkiOnsibG9jYWxfZmFjdHMiOnsic2NvcGUiOiJjb250YWluZXJfc2NvcGVkX3Rva2VuX3VzZSIsImV4cGlyeSI6InVucGlubmVkX2luX2NpdGVkX3NvdXJjZXMiLCJyZXBsYXlfcHJvdGVjdGlvbiI6ImZhaWxfY2xvc2VkX3NpbmdsZV9mb3J3YXJkIn19LCJ3YWxsZXRfc2Vzc2lvbl9rZXkiOnsibG9jYWxfZmFjdHMiOnsic2NvcGUiOiJjb3VudGVycGFydHlfYW5kX2NoYWluX3Njb3BlZF9ncmFudCIsImV4cGlyeSI6ImV4cGlyeV9ydWxlX3VuaXhfdGltZXN0YW1wIiwicmVwbGF5X3Byb3RlY3Rpb24iOiJ1bnBpbm5lZF9pbl9jaXRlZF9zb3VyY2VzIn19fSwicmV2b2NhdGlvbiI6eyJzaGFyZWRfcGF5bWVudF90b2tlbiI6eyJtZWNoYW5pc20iOiJkZWNsYXJlZF9ub3RfcmV2b2NhYmxlIiwidGltZV9ib3VuZCI6dHJ1ZX0sIm5ldHdvcmtfYWdlbnRfdG9rZW4iOnsibWVjaGFuaXNtIjoiYXV0aG9yaXRhdGl2ZV9wYXJ0eV9yZXZva2VfY2FsbCIsInRpbWVfYm91bmQiOnRydWV9LCJ4NDAyX3Blcm1pdCI6eyJtZWNoYW5pc20iOiJhdXRob3JpdGF0aXZlX3BhcnR5X3Jldm9rZV9jYWxsIiwidGltZV9ib3VuZCI6dHJ1ZX0sImFwaV9rZXlfY2FyZF9wcm94eSI6eyJtZWNoYW5pc20iOiJhdXRob3JpdGF0aXZlX3BhcnR5X3Jldm9rZV9jYWxsIiwidGltZV9ib3VuZCI6ZmFsc2V9LCJ3YWxsZXRfc2Vzc2lvbl9rZXkiOnsibWVjaGFuaXNtIjoiYXV0aG9yaXRhdGl2ZV9wYXJ0eV9yZXZva2VfY2FsbCIsInRpbWVfYm91bmQiOnRydWV9fSwibGVhcm4iOnsic2hhcmVkX3BheW1lbnRfdG9rZW4iOnsib3BhcXVlX2NyZWRlbnRpYWwiOmZhbHNlLCJsZWFybnNfaWRlbnRpdHkiOmZhbHNlLCJsZWFybnNfYWN0aW9uIjp0cnVlLCJwdWJsaWNseV92aXNpYmxlIjpmYWxzZSwiY3JlZGVudGlhbF9wZXJzaXN0ZWRfb3JfbG9nZ2VkIjpmYWxzZX0sIm5ldHdvcmtfYWdlbnRfdG9rZW4iOnsib3BhcXVlX2NyZWRlbnRpYWwiOmZhbHNlLCJsZWFybnNfaWRlbnRpdHkiOmZhbHNlLCJsZWFybnNfYWN0aW9uIjp0cnVlLCJwdWJsaWNseV92aXNpYmxlIjpmYWxzZSwiY3JlZGVudGlhbF9wZXJzaXN0ZWRfb3JfbG9nZ2VkIjpmYWxzZX0sIng0MDJfcGVybWl0Ijp7Im9wYXF1ZV9jcmVkZW50aWFsIjpmYWxzZSwibGVhcm5zX2lkZW50aXR5Ijp0cnVlLCJsZWFybnNfYWN0aW9uIjp0cnVlLCJwdWJsaWNseV92aXNpYmxlIjp0cnVlLCJjcmVkZW50aWFsX3BlcnNpc3RlZF9vcl9sb2dnZWQiOmZhbHNlfSwiYXBpX2tleV9jYXJkX3Byb3h5Ijp7Im9wYXF1ZV9jcmVkZW50aWFsIjpmYWxzZSwibGVhcm5zX2lkZW50aXR5IjpmYWxzZSwibGVhcm5zX2FjdGlvbiI6dHJ1ZSwicHVibGljbHlfdmlzaWJsZSI6dHJ1ZSwiY3JlZGVudGlhbF9wZXJzaXN0ZWRfb3JfbG9nZ2VkIjpmYWxzZX0sIndhbGxldF9zZXNzaW9uX2tleSI6eyJvcGFxdWVfY3JlZGVudGlhbCI6dHJ1ZSwibGVhcm5zX2lkZW50aXR5IjpmYWxzZSwibGVhcm5zX2FjdGlvbiI6dHJ1ZSwicHVibGljbHlfdmlzaWJsZSI6ZmFsc2UsImNyZWRlbnRpYWxfcGVyc2lzdGVkX29yX2xvZ2dlZCI6ZmFsc2V9fX1JJ1JbPgkAAA