AINumbers.co Solana API

The solana API from AINumbers.co — 3 operation(s) for solana.

Operations 3

POST /v1/tools/verify_solana_dvp_terms Solana DvP Pre-Funding Terms Verifier #
POST /v1/tools/verify_solana_paychan_voucher Solana Paychan Voucher Verifier #
POST /v1/tools/audit_solana_pda_ata Solana PDA Bump and ATA Audit #

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-solana-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-solana-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AINumbers.co Fintech Intelligence Suite Solana 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: solana
paths:
  /v1/tools/verify_solana_dvp_terms:
    post:
      operationId: verify_solana_dvp_terms
      summary: Solana DvP Pre-Funding Terms Verifier
      description: 'Values-only recompute of the Solana Foundation DvP pre-funding checklist over a pasted SwapDvp record, mint descriptors and the funder-supplied agreed terms. The README requires funders to verify, before depositing, that the record is owned by the pinned DvP program id, is exactly SwapDvp::LEN (458) bytes, and carries the agreed terms (amount_a/amount_b, expiry, earliest, user_a/user_b, settlement_authority, both settlement destinations) because CreateDvp is permissionless and a forged create with attacker destinations would redirect settlement proceeds. The verifier also applies the program windows (earliest <= expiry, expiry <= creation + one year as a fixed 365-day year, expiry in the future at a required caller-supplied cluster timestamp - never the system clock), the Token-2022 blocked-extension deny list (TransferFeeConfig, InterestBearingConfig, ScaledUiAmountConfig, NonTransferable) and the 32-per-leg transfer-hook extras cap, and surfaces the trusted-authority risks the program accepts as-is (PermanentDelegate, Pausable, MintCloseAuthority, mutable TransferHook, ConfidentialTransfer, DefaultAccountState/freeze authority) as trust flags. Values only: no RPC, no PDA derivation, no keys. The output is a recompute, not legal finality and not proof of agreement; the Cantina audit scope mapping for this program commit is UNVERIFIED and never cited as coverage.


        **Tool URL:** https://ainumbers.co/chaingraph/art-735-solana-dvp-prefund-verifier.html

        **AP2/Policy Mandate export:** yes'
      tags:
      - solana
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - owner_program_id
              - byte_length
              - now
              - creation_timestamp
              - nonce
              - leg_a_extras_count
              - leg_b_extras_count
              - expected
              properties:
                owner_program_id:
                  type: string
                  description: The pasted account owner program id. Must equal the pinned DvP program id dvp34bdbcEm4f4FCUjGV4mDAkDshaQR4LkK8fdcsyZq.
                byte_length:
                  type: string
                  description: The pasted account data length in bytes. Must be exactly 458 (SwapDvp::LEN struct pin).
                now:
                  type: string
                  description: REQUIRED cluster unix timestamp in seconds (Clock::unix_timestamp). Cluster time, not wall-clock; the system clock is never read.
                creation_timestamp:
                  type: string
                  description: The record's creation cluster time (i64 decimal string); the one-year expiry cap is measured from it.
                nonce:
                  type: string
                  description: The pasted nonce value as a non-empty string (the README advises a cryptographically random 64-bit nonce per trade).
                user_a:
                  type: string
                  description: Party A address as pasted.
                user_b:
                  type: string
                  description: Party B address as pasted.
                mint_a:
                  type: string
                  description: Leg A mint address as pasted.
                mint_b:
                  type: string
                  description: Leg B mint address as pasted.
                token_program_a:
                  type: string
                  description: 'Leg A token program as pasted (struct pin: owner of mint_a captured at Create).'
                token_program_b:
                  type: string
                  description: 'Leg B token program as pasted (struct pin: owner of mint_b captured at Create).'
                settlement_authority:
                  type: string
                  description: The record's settlement_authority as pasted.
                destination_a:
                  type: string
                  description: user A's settlement destination (receives the cash leg mint_b proceeds) as pasted.
                destination_b:
                  type: string
                  description: user B's settlement destination (receives the asset leg mint_a proceeds) as pasted.
                mint_a_authority:
                  type: string
                  description: mint_a's mint authority captured at Create as pasted (struct pin).
                mint_b_authority:
                  type: string
                  description: mint_b's mint authority captured at Create as pasted (struct pin).
                amount_a:
                  type: string
                  description: Leg A amount as pasted, decimal string in u64 range.
                amount_b:
                  type: string
                  description: Leg B amount as pasted, decimal string in u64 range.
                expiry_timestamp:
                  type:
                  - string
                  - 'null'
                  description: The record's expiry_timestamp (i64 decimal string). Only Settle rejects after it (README Notes line 24).
                earliest_settlement_timestamp:
                  type:
                  - string
                  - 'null'
                  description: The record's earliest_settlement_timestamp, or null for None (no lower bound; struct pin lines 40-44).
                mint_a_extensions:
                  type: array
                  items:
                    type: string
                  description: Token-2022 extension names present on mint_a (caller-read off-chain). Unknown names are refused.
                mint_b_extensions:
                  type: array
                  items:
                    type: string
                  description: Token-2022 extension names present on mint_b (caller-read off-chain). Unknown names are refused.
                mint_a_frozen_by_default:
                  type: boolean
                  description: mint_a carries DefaultAccountState frozen (or starts accounts frozen).
                mint_b_frozen_by_default:
                  type: boolean
                  description: mint_b carries DefaultAccountState frozen (or starts accounts frozen).
                mint_a_freeze_authority_set:
                  type: boolean
                  description: mint_a has a freeze authority.
                mint_b_freeze_authority_set:
                  type: boolean
                  description: mint_b has a freeze authority.
                leg_a_extras_count:
                  type: string
                  description: Hook trailing accounts resolved for leg A (u8 0-255); must be <= 32 per leg (MAX_HOOK_REMAINING_ACCOUNTS).
                leg_b_extras_count:
                  type: string
                  description: Hook trailing accounts resolved for leg B (u8 0-255); must be <= 32 per leg.
                expected:
                  type: object
                  description: The funder-supplied agreed deal the record is verified against. Supplying the forged record's own values here makes the check circular.
                  required:
                  - amount_a
                  - amount_b
                  - expiry_timestamp
                  - user_a
                  - user_b
                  - settlement_authority
                  - destination_a
                  - destination_b
                  properties:
                    amount_a:
                      type: string
                      description: Agreed leg A amount, decimal string.
                    amount_b:
                      type: string
                      description: Agreed leg B amount, decimal string.
                    expiry_timestamp:
                      type: string
                      description: Agreed expiry, i64 decimal string.
                    earliest_settlement_timestamp:
                      type:
                      - string
                      - 'null'
                      description: Agreed earliest, i64 decimal string or null for no lower bound.
                    user_a:
                      type: string
                      description: Agreed party A.
                    user_b:
                      type: string
                      description: Agreed party B.
                    settlement_authority:
                      type: string
                      description: Agreed settlement authority.
                    destination_a:
                      type: string
                      description: Agreed user A settlement destination.
                    destination_b:
                      type: string
                      description: Agreed user B settlement destination.
      responses:
        '200':
          description: Successful tool execution result
          content:
            application/json:
              schema:
                type: object
                properties:
                  prefund_check:
                    type: string
                    enum:
                    - PASS
                    - FAIL
                    - REFUSED
                  owner_matches:
                    type:
                    - boolean
                    - 'null'
                  length_matches:
                    type:
                    - boolean
                    - 'null'
                  terms_match:
                    type:
                    - boolean
                    - 'null'
                  terms_mismatches:
                    type: array
                    items:
                      type: string
                  earliest_within_expiry:
                    type:
                    - boolean
                    - 'null'
                  expiry_within_one_year:
                    type:
                    - boolean
                    - 'null'
                  expiry_in_future:
                    type:
                    - boolean
                    - 'null'
                  no_blocked_extensions:
                    type:
                    - boolean
                    - 'null'
                  blocked_extensions_found:
                    type: array
                    items:
                      type: string
                  hook_extras_within_cap:
                    type:
                    - boolean
                    - 'null'
                  failed_checks:
                    type:
                    - array
                    - 'null'
                    items:
                      type: string
                  trust_flags:
                    type: array
                    items:
                      type: string
                  warnings:
                    type: array
                    items:
                      type: string
                  record:
                    type:
                    - object
                    - 'null'
                  error:
                    type: string
                  detail:
                    type: string
                  domain_errors:
                    type: array
                    items:
                      type: object
                  manual_review_required:
                    type: boolean
                  disclaimer:
                    type: string
                  audit_scope_note:
                    type: string
                  expected_terms_note:
                    type: string
                  error_direction:
                    type: string
                required:
                - prefund_check
                - owner_matches
                - length_matches
                - terms_match
                - earliest_within_expiry
                - expiry_within_one_year
                - expiry_in_future
                - no_blocked_extensions
                - hook_extras_within_cap
                - failed_checks
                - trust_flags
                - warnings
                - disclaimer
                - audit_scope_note
                additionalProperties: false
                x-derived-from: chaingraph/kernels/art-735-solana-dvp-prefund-verifier.kernel.mjs compute() output_payload
      x-mcp-tool-name: verify_solana_dvp_terms
      x-tool-url: https://ainumbers.co/chaingraph/art-735-solana-dvp-prefund-verifier.html
      x-source: manifest
      x-ap2-export: true
  /v1/tools/verify_solana_paychan_voucher:
    post:
      operationId: verify_solana_paychan_voucher
      summary: Solana Paychan Voucher Verifier
      description: 'Values-only check of a Solana payment-channels voucher message against trusted channel terms. The voucher is the 50-byte Ed25519-signed message the payment-channels program reads through the Instructions sysvar: magic bytes 0x56 0x01, a 32-byte channel PDA binding, a u64 little-endian cumulative amount and an i64 little-endian expiry (0 disables). This node recomputes the program validator post-signature check sequence by pure byte inspection and trusted inputs: exact 50-byte layout, magic tag/version, channel_id equals the supplied channel PDA, cumulative amount within the escrowed deposit ceiling, cumulative amount strictly above the settled watermark (at-or-below is a stale voucher), expiry 0 or later than the supplied unix clock, an optional supersession comparison where a second voucher with a lower or equal cumulative amount is superseded by the first, and the settle delta (cumulative minus settled) reported on success. Values are pasted; every channel term is a trusted input computed in BigInt with no floats. Out of scope and stated in every output: the Ed25519 signature is NOT verified here and nothing is read from chain. Sibling of the Tempo MPP voucher verifier art-594.


        **Tool URL:** https://ainumbers.co/chaingraph/art-749-solana-paychan-voucher-verifier.html

        **AP2/Policy Mandate export:** yes'
      tags:
      - solana
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - voucher_hex
              - channel_pda
              - deposit_ceiling
              - settled_watermark
              - current_time
              properties:
                voucher_hex:
                  type: string
                  description: The 50-byte Ed25519-signed voucher message, hex (optional 0x prefix).
                channel_pda:
                  type: string
                  description: The trusted channel PDA address, base58, exactly 32 bytes.
                deposit_ceiling:
                  type: string
                  description: The trusted escrowed deposit, decimal string (u64).
                settled_watermark:
                  type: string
                  description: The trusted current settled amount, decimal string (u64).
                current_time:
                  type: string
                  description: The trusted unix clock in seconds, decimal string (i64).
                mint:
                  type: string
                  description: Optional trusted mint, informational passthrough.
                authorized_signer:
                  type: string
                  description: Optional claimed signer pubkey, base58. NOT verified.
                second_voucher_hex:
                  type: string
                  description: Optional second 50-byte voucher message, hex, for the supersession check.
      responses:
        '200':
          description: Successful tool execution result
          content:
            application/json:
              schema:
                type: object
                properties:
                  all_pass:
                    type: boolean
                    enum:
                    - false
                    - true
                  channel_id_hex:
                    type:
                    - string
                    - 'null'
                  checks:
                    type: object
                    properties:
                      channel_id_matches_pda:
                        type: boolean
                        enum:
                        - false
                        - true
                      cumulative_above_settled_watermark:
                        type: boolean
                        enum:
                        - false
                        - true
                      cumulative_within_deposit_ceiling:
                        type: boolean
                        enum:
                        - false
                        - true
                      length_is_50:
                        type: boolean
                        enum:
                        - false
                        - true
                      magic_is_56_01:
                        type: boolean
                        enum:
                        - false
                        - true
                      not_expired:
                        type: boolean
                        enum:
                        - false
                        - true
                    required:
                    - channel_id_matches_pda
                    - cumulative_above_settled_watermark
                    - cumulative_within_deposit_ceiling
                    - length_is_50
                    - magic_is_56_01
                    - not_expired
                    additionalProperties: false
                  cumulative_amount:
                    type:
                    - string
                    - 'null'
                  expires_at:
                    type:
                    - string
                    - 'null'
                  note:
                    type: string
                  out_of_scope:
                    type: string
                  pinned_constants:
                    type: object
                    properties:
                      field_sizes:
                        type: object
                        properties:
                          channel_id:
                            type: number
                          cumulative_amount:
                            type: number
                          expires_at:
                            type: number
                        required:
                        - channel_id
                        - cumulative_amount
                        - expires_at
                        additionalProperties: false
                      magic:
                        type: array
                        items:
                          type: number
                      offsets:
                        type: object
                        properties:
                          channel_id:
                            type: number
                          cumulative_amount:
                            type: number
                          expires_at:
                            type: number
                        required:
                        - channel_id
                        - cumulative_amount
                        - expires_at
                        additionalProperties: false
                      open_slot_window:
                        type: number
                      voucher_len:
                        type: number
                    required:
                    - field_sizes
                    - magic
                    - offsets
                    - open_slot_window
                    - voucher_len
                    additionalProperties: false
                  second_voucher:
                    type:
                    - 'null'
                    - object
                  settle_delta:
                    type:
                    - string
                    - 'null'
                  trusted_terms:
                    type: object
                    properties:
                      authorized_signer:
                        type: 'null'
                      current_time:
                        type: string
                      deposit_ceiling:
                        type: string
                      mint:
                        type: 'null'
                      settled_watermark:
                        type: string
                    required:
                    - authorized_signer
                    - current_time
                    - deposit_ceiling
                    - mint
                    - settled_watermark
                    additionalProperties: false
                  voucher:
                    type: object
                    properties:
                      hex_prefix_stripped:
                        type: boolean
                      length:
                        type: number
                    required:
                    - hex_prefix_stripped
                    - length
                    additionalProperties: false
                required:
                - all_pass
                - channel_id_hex
                - checks
                - cumulative_amount
                - expires_at
                - note
                - out_of_scope
                - pinned_constants
                - second_voucher
                - settle_delta
                - trusted_terms
                - voucher
                additionalProperties: false
                x-derived-from: fixture
      x-mcp-tool-name: verify_solana_paychan_voucher
      x-tool-url: https://ainumbers.co/chaingraph/art-749-solana-paychan-voucher-verifier.html
      x-source: manifest
      x-ap2-export: true
  /v1/tools/audit_solana_pda_ata:
    post:
      operationId: audit_solana_pda_ata
      summary: Solana PDA Bump and ATA Audit
      description: 'Audit a claimed program-derived-address tuple: paste the program id, seeds with declared encodings (utf8 or hex), the bump seed and the claimed address. The node recomputes the address the runtime rules yield for that exact bump, tests whether the derived bytes land on the Ed25519 curve, scans the canonical bump space 255 down to 1, and reports claimed-matches and bump-canonicality booleans. A second valid address at a non-canonical bump is the substitution class exposed as a fact. Optionally paste wallet, mint and token program for the associated token account under the declared program and the classic Token program side by side. Values only; nothing on-chain is read.


        **Tool URL:** https://ainumbers.co/chaingraph/art-780-solana-pda-ata-audit.html

        **AP2/Policy Mandate export:** yes'
      tags:
      - solana
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - program_id
              - seeds
              - bump
              - claimed_address
              properties:
                program_id:
                  type: string
                  description: The claimed owning program address, base58 (decodes to 32 bytes). The PDA hash mixes these bytes after the seeds and bump.
                seeds:
                  type: array
                  description: Declared seeds in derivation order, each { data, encoding } with encoding "utf8" or "hex". An empty array is valid.
                  items:
                    type: object
                    properties:
                      data:
                        type: string
                      encoding:
                        type: string
                        enum:
                        - utf8
                        - hex
                    required:
                    - data
                    - encoding
                bump:
                  type: integer
                  minimum: 0
                  maximum: 255
                  description: The claimed bump seed, one byte. The canonical scan searches 255 down to 1; a claimed bump of 0 is auditable but never canonical.
                claimed_address:
                  type: string
                  description: The address the caller believes the tuple yields, base58. Compared by string equality against the recomputation.
                wallet:
                  type: string
                  description: 'Optional ATA mode: wallet address, base58. Requires mint and token_program_id alongside.'
                mint:
                  type: string
                  description: 'Optional ATA mode: the mint address, base58.'
                token_program_id:
                  type: string
                  description: 'Optional ATA mode: the token program the mint lives under, base58 (Token-2022 or the classic Token program).'
      responses:
        '200':
          description: Successful tool execution result
          content:
            application/json:
              schema:
                type: object
                properties:
                  program_id:
                    type:
                    - string
                    - 'null'
                  seed_count:
                    type:
                    - integer
                    - 'null'
                  seed_count_with_bump:
                    type:
                    - integer
                    - 'null'
                  seeds_exceeding_max_len:
                    type:
                    - array
                    - 'null'
                    items:
                      type: object
                      properties:
                        index:
                          type: integer
                        byte_length:
                          type: integer
                  seed_count_with_bump_exceeds_max:
                    type:
                    - boolean
                    - 'null'
                  derived_hash_base58:
                    type:
                    - string
                    - 'null'
                  on_curve:
                    type:
                    - boolean
                    - 'null'
                  create_program_address_verdict:
                    type:
                    - string
                    - 'null'
                    description: off_curve | on_curve | max_seed_length_exceeded
                  claimed_bump:
                    type:
                    - integer
                    - 'null'
                  claimed_address:
                    type:
                    - string
                    - 'null'
                  claimed_matches:
                    type:
                    - boolean
                    - 'null'
                  canonical_bump:
                    type:
                    - integer
                    - 'null'
                  canonical_address:
                    type:
                    - string
                    - 'null'
                  claimed_bump_is_canonical:
                    type:
                    - boolean
                    - 'null'
                  ata_derivation:
                    type:
                    - object
                    - 'null'
                    properties:
                      wallet:
                        type: string
                      mint:
                        type: string
                      token_program_id:
                        type: string
                      declared_token_program_is_token_2022:
                        type: boolean
                      declared_token_program_is_classic:
                        type: boolean
                      ata_under_declared_token_program:
                        type:
                        - object
                        - 'null'
                        properties:
                          address:
                            type: string
                          bump:
                            type: integer
                      ata_under_classic_token_program:
                        type:
                        - object
                        - 'null'
                        properties:
                          address:
                            type: string
                          bump:
                            type: integer
                      ata_addresses_differ:
                        type:
                        - boolean
                        - 'null'
                      token_program_mismatch:
                        type:
                        - boolean
                        - 'null'
                  error:
                    type: string
                  detail:
                    type: string
                  domain_errors:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        text:
                          type: string
                      required:
                      - code
                      - text
                      additionalProperties: false
                  note:
                    type:
                    - string
                    - 'null'
      x-mcp-tool-name: audit_solana_pda_ata
      x-tool-url: https://ainumbers.co/chaingraph/art-780-solana-pda-ata-audit.html
      x-source: manifest
      x-ap2-export: true
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.