AINumbers.co Payment Policy API

The payment_policy API from AINumbers.co — 6 operation(s) for payment_policy.

Operations 6

POST /v1/tools/build_ap2_cartmandate_hashchain AP2 CartMandate Hash-Chain Builder #
POST /v1/tools/verify_merkle_airdrop_proof Merkle Airdrop-Proof Verifier #
POST /v1/tools/recompute_erc4626_vault_share_math ERC-4626 Vault Share Math #
POST /v1/tools/recompute_erc7540_request_accounting ERC-7540 Async-Vault Request Accounting #
POST /v1/tools/recompute_erc4337_userop_math ERC-4337 UserOperation Math #
POST /v1/tools/draft_ap2_mandate_credential Google AP2 Mandate Builder #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ainumbers-co:ainumbers-co-payment-policy-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

ainumbers-co-payment-policy-api-openapi.yml Raw ↑
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.