AINumbers.co Payment Policy API
The payment_policy API from AINumbers.co — 6 operation(s) for payment_policy.
The payment_policy API from AINumbers.co — 6 operation(s) for payment_policy.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ainumbers-co:ainumbers-co-payment-policy-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AINumbers.co Fintech Intelligence Suite Payment Policy API
version: 1.0.0
description: '**1255 fintech intelligence tools** covering ISO 20022, A2A payments, CFPB §1033, EU AI Act, DORA, MiCA, AML/KYC, BaaS, DLT/tokenization, ESG/climate finance, agentic payments (AP2, ACP, x402, Visa TAP, Mastercard Agent Pay), PQC migration, sanctions screening, and OpenChainGraph v0.4 computation chains.
## Transport
> **The live transport is MCP JSON-RPC 2.0 at `https://mcp.ainumbers.co/mcp` — not REST.**
>
> This OpenAPI file is a **descriptive data-room artifact** — a machine-readable index of all tools and their input/output schemas. The REST paths (`POST /v1/tools/{name}`) described here are a projection; they become functional only if the optional REST shim (Area 2 Path B) is deployed.
>
> To call tools today, connect via the official MCP client SDKs. TypeScript: `@modelcontextprotocol/sdk`. Python: `mcp`.
## Architecture
All tools run **entirely client-side** (browser JavaScript). Zero PII. Zero server calls after page load. Deterministic, reproducible outputs. Licensed CC BY 4.0.
OpenChainGraph v0.4 compute-binding nodes additionally run **server-side on the MCP Worker** and emit verifiable artifacts with `execution_hash` (WebCrypto SHA-256 over RFC 8785 canonical JSON).'
contact:
name: Post Oak Labs
url: https://postoaklabs.com
email: tim@postoaklabs.com
license:
name: CC BY 4.0
url: https://creativecommons.org/licenses/by/4.0/
servers:
- url: https://ainumbers.co
description: Static browser-based tool host (DreamHost). Tools run client-side — no REST gateway is active on this origin. See x-mcp for the live MCP endpoint.
tags:
- name: payment_policy
paths:
/v1/tools/build_ap2_cartmandate_hashchain:
post:
operationId: build_ap2_cartmandate_hashchain
summary: AP2 CartMandate Hash-Chain Builder
description: 'Builds an illustrative Google AP2 CartMandate Verifiable Digital Credential (VDC) skeleton whose credentialSubject carries a deterministic hash-chain over an ordered list of cart line items: link_0 = keccak256(canon({index:0,item})), link_i = keccak256(canon({index:i,item,prev:link_(i-1)})), cart_root = the final link. Reuses this repo''s existing RFC 8785/JCS canonicalization (cgCanon) and the already-vendored @noble/hashes keccak256 bundle -- no new vendoring, no hand-rolled canonicalization or hashing. Stands beside art-16 (Google AP2 Mandate Builder) as a new node -- art-16''s flat CheckoutMandate/PaymentMandate shape has no line-item array to chain over. An intact chain proves the ordered cart_items list was not altered after the chain was built; it does NOT prove human authorisation, delivery, settlement, or that item prices are correct or current. Given a prior chain''s per-item links (claimed_links) and a possibly tampered cart_items, the kernel recomputes and reports whether the chain is intact plus the earliest divergent index, never a thrown exception. Zero network calls; never a facilitator, proxy, gateway, or settlement relay.
**Tool URL:** https://ainumbers.co/chaingraph/art-595-ap2-cartmandate-hashchain-builder.html'
tags:
- payment_policy
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
agent_id:
type: string
subject:
type: string
merchant:
type: string
stage:
type: string
cart_items:
type: array
claimed_links:
type: array
responses:
'200':
description: Successful tool execution result
content:
application/json:
schema:
type: object
properties:
vdc:
type:
- object
- 'null'
vdc_type:
type: string
cart_root:
type:
- string
- 'null'
chain_length:
type: number
chain_links:
type: array
items:
type: string
cart_chain_intact:
type:
- boolean
- 'null'
first_divergent_index:
type:
- number
- 'null'
note:
type: string
reasons:
type: array
items:
type: string
x-mcp-tool-name: build_ap2_cartmandate_hashchain
x-tool-url: https://ainumbers.co/chaingraph/art-595-ap2-cartmandate-hashchain-builder.html
x-source: manifest
/v1/tools/verify_merkle_airdrop_proof:
post:
operationId: verify_merkle_airdrop_proof
summary: Merkle Airdrop-Proof Verifier
description: 'Recomputes a Merkle airdrop-claim proof from caller-declared leaf fields (address, uint256 amount, encoding_variant) and a sibling path, OpenZeppelin MerkleProof.verify shape (processProof/_hashPair) over the already-vendored @noble/hashes keccak256 bundle -- no new vendoring, no hand-rolled hashing. Leaf derivation follows OpenZeppelin StandardMerkleTree''s (address,uint256) convention: encoding_variant selects the double-hash leaf (the second-preimage-resistant default) or a single-hash variant some deployed contracts use instead, always a declared param. Sibling-pair hashing is sorted/commutative (pair_sort:true, OpenZeppelin''s default) or explicit per-step left/right position (pair_sort:false), also a declared param. Given an optional claimed_path (a prior run''s per-step running hashes), re-verifies and reports the earliest step at which the recompute diverges, instead of only a final match/no-match. This node never reads any chain: it cannot know whether claimed_root is the root actually recorded on-chain, whether the leaf''s allocation was already claimed or redeemed, or whether the underlying tree was built correctly from the full allocation list.
**Tool URL:** https://ainumbers.co/chaingraph/art-605-merkle-airdrop-proof-verifier.html'
tags:
- payment_policy
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
address:
type: string
amount:
type: string
encoding_variant:
type: string
pair_sort:
type: boolean
proof:
type: array
claimed_root:
type: string
claimed_path:
type: array
responses:
'200':
description: Successful tool execution result
content:
application/json:
schema:
type: object
properties:
leaf:
type:
- string
- 'null'
computed_root:
type:
- string
- 'null'
path:
type: array
encoding_variant_used:
type:
- string
- 'null'
pair_sort_used:
type: boolean
root_matches_claimed:
type:
- boolean
- 'null'
path_intact:
type:
- boolean
- 'null'
first_divergent_step:
type:
- number
- 'null'
note:
type: string
reasons:
type: array
items:
type: string
x-mcp-tool-name: verify_merkle_airdrop_proof
x-tool-url: https://ainumbers.co/chaingraph/art-605-merkle-airdrop-proof-verifier.html
x-source: manifest
/v1/tools/recompute_erc4626_vault_share_math:
post:
operationId: recompute_erc4626_vault_share_math
summary: ERC-4626 Vault Share Math
description: 'Recomputes ERC-4626 tokenized-vault share and asset conversions from caller-declared vault state, applying the rounding direction the standard mandates for each function and reporting which direction produced each result alongside what the opposite direction would have produced. ERC-4626 fixes those directions per function: convertToShares and convertToAssets round down towards 0, previewDeposit and previewRedeem round down, previewMint and previewWithdraw round up. Also computes a deposit-then-redeem round-trip loss bound against the post-deposit state, a signed exchange-rate drift between two declared snapshots, and a declared fee application. All arithmetic is exact uint256 integer math with no floating point. Never reads any chain: it cannot know whether the declared totals match a deployed vault, whether that vault applies these directions, or whether a rate change came from yield, loss, a donation, or an attack.
**Tool URL:** https://ainumbers.co/chaingraph/art-610-erc4626-vault-share-math.html'
tags:
- payment_policy
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
total_assets:
type: string
total_supply:
type: string
virtual_amounts:
type: boolean
decimals_offset:
type: string
operations:
type: array
round_trip_assets:
type: string
snapshot_b:
type: object
fee_bps:
type: string
fee_basis:
type: string
chain_id:
type: string
network_label:
type: string
responses:
'200':
description: Successful tool execution result
content:
application/json:
schema:
type: object
properties:
declared_context:
type: object
vault_state:
type:
- object
- 'null'
conversions:
type: array
fee:
type:
- object
- 'null'
round_trip:
type:
- object
- 'null'
rate_drift:
type:
- object
- 'null'
rounding_table:
type: array
note:
type: string
reasons:
type: array
items:
type: string
x-mcp-tool-name: recompute_erc4626_vault_share_math
x-tool-url: https://ainumbers.co/chaingraph/art-610-erc4626-vault-share-math.html
x-source: manifest
/v1/tools/recompute_erc7540_request_accounting:
post:
operationId: recompute_erc7540_request_accounting
summary: ERC-7540 Async-Vault Request Accounting
description: 'Recomputes ERC-7540 asynchronous-vault request accounting from caller-declared request state. ERC-7540 extends ERC-4626 with a three-state request lifecycle used by funds that cannot settle a deposit or redemption in the same transaction: an amount is Pending after a request, becomes Claimable when the vault fulfils it, and is Claimed when the holder calls deposit, mint, withdraw or redeem. This tool applies a sequence of claims against the claimable buckets at the pro-rata rate they were made claimable at, tracks the pending, claimable and claimed split for both legs, reports the rounding residue a sequence of partial claims strands, and checks the standard''s invariants by name. ERC-7540 mandates no rounding direction for a partial claim, so the direction is a declared parameter and the opposite direction''s result is reported beside it. Never reads any chain: it cannot know whether the declared amounts match a deployed vault, when a pending request will be fulfilled, whether the controller is authorised, or whether a claim transaction would succeed.
**Tool URL:** https://ainumbers.co/chaingraph/art-611-erc7540-async-vault-request-accounting.html'
tags:
- payment_policy
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
request_id:
type: string
deposit:
type: object
redeem:
type: object
claims:
type: array
claim_rounding:
type: string
chain_id:
type: string
network_label:
type: string
responses:
'200':
description: Successful tool execution result
content:
application/json:
schema:
type: object
properties:
declared_context:
type: object
request_id:
type:
- string
- 'null'
aggregate_by_controller:
type:
- boolean
- 'null'
claim_rounding_used:
type:
- string
- 'null'
opening:
type:
- object
- 'null'
claims:
type: array
closing:
type:
- object
- 'null'
dust:
type: object
invariants:
type: array
note:
type: string
reasons:
type: array
items:
type: string
x-mcp-tool-name: recompute_erc7540_request_accounting
x-tool-url: https://ainumbers.co/chaingraph/art-611-erc7540-async-vault-request-accounting.html
x-source: manifest
/v1/tools/recompute_erc4337_userop_math:
post:
operationId: recompute_erc4337_userop_math
summary: ERC-4337 UserOperation Math
description: 'Recomputes the ERC-4337 account-abstraction userOpHash from a caller-supplied UserOperation, computes the EntryPoint''s required prefund from caller-supplied gas limits, and reconciles a declared paymaster charge against a charge recomputed from declared inputs. The EntryPoint version is a mandatory declared parameter, never inferred: v0.6 hashes a 10-word UserOperation pack, v0.7 hashes an 8-word PackedUserOperation in which verificationGasLimit and callGasLimit pack into accountGasLimits and maxPriorityFeePerGas and maxFeePerGas pack into gasFees. The prefund formulas differ too: v0.6 multiplies verificationGasLimit by three when a paymaster is present because that limit also caps postOp, while v0.7 adds the paymaster''s own verification and postOp gas limits parsed from fixed offsets inside paymasterAndData. Both versions are supported; an unrecognised version is refused, never approximated. L1 data and blob fees are never derived, since after EIP-4844 they depend on the inclusion-time L1 basefee and blob basefee: an L1 data fee enters reconciliation only when declared, and its absence is reported as a named gap. block.basefee is never fetched either, so with differing fee caps the effective gas price is null with the reason unless a basefee is declared. keccak256 comes from the already-vendored, pinned noble-hashes bundle; the ABI encoding scheme is public-spec arithmetic on top of it, not hand-rolled crypto. Zero network calls and zero chain reads. Makes no claim that any operation was settled, accepted, included, or final, and no claim about signature validity, which the ERC-4337 spec excludes from the hashed struct.
**Tool URL:** https://ainumbers.co/chaingraph/art-613-erc4337-userop-math.html'
tags:
- payment_policy
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entryPointVersion:
type: string
entryPoint:
type: string
chainId:
type: number
sender:
type: string
nonce:
type: number
initCode:
type: string
callData:
type: string
paymasterAndData:
type: string
callGasLimit:
type: number
verificationGasLimit:
type: number
preVerificationGas:
type: number
maxFeePerGas:
type: number
maxPriorityFeePerGas:
type: number
declaredBaseFeePerGas:
type: number
declaredActualGasUsed:
type: number
declaredActualGasCostWei:
type: string
declaredL1DataFeeWei:
type: string
reconciliationToleranceWei:
type: string
responses:
'200':
description: Successful tool execution result
content:
application/json:
schema:
type: object
properties:
verdict:
type: string
reasons:
type: array
items:
type: string
entry_point:
type: object
properties:
declared_version:
type:
- string
- 'null'
address:
type:
- string
- 'null'
canonical_address_for_declared_version:
type:
- string
- 'null'
address_matches_canonical:
type:
- boolean
- 'null'
chain_id:
type:
- string
- 'null'
user_op:
type: object
properties:
sender:
type:
- string
- 'null'
nonce:
type:
- string
- 'null'
init_code:
type:
- string
- 'null'
call_data:
type:
- string
- 'null'
paymaster_and_data:
type:
- string
- 'null'
call_gas_limit:
type:
- string
- 'null'
verification_gas_limit:
type:
- string
- 'null'
pre_verification_gas:
type:
- string
- 'null'
max_fee_per_gas:
type:
- string
- 'null'
max_priority_fee_per_gas:
type:
- string
- 'null'
packed_words:
type:
- object
- 'null'
properties:
layout:
type: string
word_count:
type: number
account_gas_limits:
type:
- string
- 'null'
gas_fees:
type:
- string
- 'null'
field_hashes:
type:
- object
- 'null'
properties:
init_code_hash:
type: string
call_data_hash:
type: string
paymaster_and_data_hash:
type: string
packed_user_op_hash:
type:
- string
- 'null'
user_op_hash:
type:
- string
- 'null'
gas_accounting:
type:
- object
- 'null'
properties:
entry_point_version:
type: string
required_gas:
type: string
required_prefund_wei:
type: string
prefund_formula:
type: string
paymaster_present:
type: boolean
paymaster_address:
type:
- string
- 'null'
paymaster_multiplier_applied:
type:
- string
- 'null'
paymaster_verification_gas_limit:
type:
- string
- 'null'
paymaster_post_op_gas_limit:
type:
- string
- 'null'
paymaster_fields_note:
type:
- string
- 'null'
declared_base_fee_per_gas:
type:
- string
- 'null'
effective_gas_price_wei:
type:
- string
- 'null'
effective_gas_price_basis:
type: string
paymaster_reconciliation:
type:
- object
- 'null'
properties:
status:
type: string
missing_declared_inputs:
type: array
items:
type: string
declared_actual_gas_used:
type:
- string
- 'null'
declared_actual_gas_cost_wei:
type:
- string
- 'null'
declared_l1_data_fee_wei:
type:
- string
- 'null'
recomputed_execution_cost_wei:
type:
- string
- 'null'
recomputed_total_charge_wei:
type:
- string
- 'null'
residual_wei:
type:
- string
- 'null'
tolerance_wei:
type: string
notes:
type: array
items:
type: string
never_fetched:
type: array
items:
type: string
scope_note:
type: string
x-mcp-tool-name: recompute_erc4337_userop_math
x-tool-url: https://ainumbers.co/chaingraph/art-613-erc4337-userop-math.html
x-source: manifest
/v1/tools/draft_ap2_mandate_credential:
post:
operationId: draft_ap2_mandate_credential
summary: Google AP2 Mandate Builder
description: 'Builds an illustrative Google AP2 Checkout/Payment Mandate Verifiable Digital Credential (VDC) skeleton from a declared mandate type, stage, agent, subject, merchant, and amount. Stage 2 of the Agentic Policy Chain. This is the EXTERNAL Google AP2 payments protocol shape (ap2-protocol.org), distinct from the AINumbers Policy Mandate export. Field names are illustrative; sign with the agent key and verify against the live spec before real use. Zero PII, deterministic compute.
**Tool URL:** https://ainumbers.co/chaingraph/art-16-google-ap2-mandate-builder.html
**Wave:** A
**mandate_type:** payment_policy
**AP2/Policy Mandate export:** yes'
tags:
- payment_policy
requestBody:
required: true
content:
application/json:
schema:
type: object
description: 'See tool page for full input schema: https://ainumbers.co/chaingraph/art-16-google-ap2-mandate-builder.html'
responses:
'200':
description: Successful tool execution result
content:
application/json:
schema:
type: object
description: 'OpenChainGraph v0.4 artifact envelope. mandate_type: payment_policy. Verify execution_hash at https://ainumbers.co/chaingraph/verify.html'
x-mcp-tool-name: draft_ap2_mandate_credential
x-tool-url: https://ainumbers.co/chaingraph/art-16-google-ap2-mandate-builder.html
x-source: chaingraph
x-ap2-export: true
x-mandate-type: payment_policy
x-ocg-wave: A
x-mcp:
transport: MCP JSON-RPC 2.0 (streamable HTTP)
endpoint: https://mcp.ainumbers.co/mcp
protocol_version: '2025-11-25'
authentication: none
registry: co.ainumbers/tools (official MCP registry)
note: Connect any MCP-compatible client (Claude, ChatGPT, custom agent) directly to this endpoint. The REST paths in this file are descriptive only — they do not exist on the live server unless the REST shim is deployed.