AINumbers.co Solana API
The solana API from AINumbers.co — 3 operation(s) for solana.
The solana API from AINumbers.co — 3 operation(s) for solana.
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-solana-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 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.