Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

AINumbers Fintech Intelligence Suite

by PostOakLabsversion 0.4.48i★ –iRuns in the cloud
Registry nameco.ainumbers/tools

Install

Overview

Description from the maker (original English)

764 MCP tools across 1236 fintech tools: ChainGraph AP2 decisions, execution_hash. Zero PII.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://mcp.ainumbers.co/mcp

Run this in your terminal

claude mcp add --transport http tools https://mcp.ainumbers.co/mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "tools": {
      "url": "https://mcp.ainumbers.co/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "tools": {
      "type": "http",
      "url": "https://mcp.ainumbers.co/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://mcp.ainumbers.co/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Tool names and descriptions exactly as the server reported them on Nov 6, 2026. The maker wrote them, not us; we show them as plain text.

  • list_ainumbers_tools

    Search the AINumbers catalog (1230+ client-side fintech tools). Returns deep-links; prefill-enabled tools accept #in= [&run=1] for one-click invocation.

  • build_workflow_links

    Constructs an ordered set of ready-to-use deep-links for a named AINumbers workflow chain or an ad-hoc sequence of tools. Each link points directly to the browser tool; prefill-enabled steps accept #in= fragments so the tool opens pre-filled. Zero server-side execution -- all too

  • verify_execution_hash

    Independently verify a ChainGraph artifact (ChainGraph Standard v0.1 §6). Recomputes SHA-256 over the canonical (sorted-key, whitespace-stripped) JSON of policy_parameters + output_payload and compares it to the claimed execution_hash. A match proves integrity: policy_parameters

  • build_chaingraph

    Hash-aware sibling of build_workflow_links (ChainGraph Standard v0.1 §8.1). Returns an ordered, executable DAG over the ChainGraph suite's verifiable tools, with explicit parent_hash wiring: which upstream execution_hash each step must cite in its chain block. Pass target_tool_id

  • emit_chaingraph_artifact

    Makes ChainGraph tools agent-callable (ChainGraph Standard v0.1 §3.1). Mode 1 — supply pre_computed_artifact (exported from the browser tool): validates §4 schema fields, recomputes execution_hash via SHA-256 over canonical {policy_parameters, output_payload}, returns verified st

  • build_session_receipt

    Aggregates execution_hashes from N ChainGraph tool calls in one agent session into a single SHA-256 Merkle root (session_receipt_root). Returns a tamper-evident session receipt and a regulator-framed PTG-01 audit prompt. One receipt covers an entire agent session: supply all exec

  • find_tool

    BM25 search over all 703 live AINumbers ChainGraph node tools. Returns ranked tools with mcp_name, URL, mandate type, and wave. Use to locate a specific computation node (e.g. "FRTB expected shortfall", "MiCA own funds", "XVA calculator", "reserve composition", "2052a", "initial

  • find_chain

    BM25 search over all 416 AINumbers ChainGraph chains. Returns ranked chains with their full recipe: ordered node sequence, deep-links, composer URL, and entry tool mcp_name. Agent flow: find_chain(query) → read recipe → call the listed node MCP tools in order, passing parent_hash

  • run_chain

    Executes every step of a named chain (list names with find_chain / build_workflow_links) and returns ONE composite artifact whose execution_hash anchors all step outputs. compute:"server"/"auto" (default) runs each kernel-backed step server-side, threading step N's execution_hash

  • suite_howto

    How to chain AINumbers tools into audited workflows: call with NO recipe_id for the compact recipe index, or with one recipe_id for that workflow's full step-by-step recipe. Every recipe carries the suite conventions end to end: Policy Mandate exports, execution_hash verification

  • describe_tool

    Returns the full definition of exactly one AINumbers MCP tool: name, description, inputSchema, outputSchema (the JSON Schema its structuredContent validates against), annotations, and lifecycle_status. Use it after find_tool or find_chain hands you an mcp_name, or after tools/lis

  • run_chain_batch

    Batch over named chains in ONE round-trip with a PER-ROW terminal status — one row's failure never fails another, and every row's result rides the single response. mode:"run" (default) executes each row through the same engine as run_chain (composite artifact + execution_hash per

  • call_tool

    Runs ONE read-only AINumbers tool that is not in your tool list. tools/list is paginated (13 pages, 722 tools) and many hosts read only the first page; this is the door to the rest. Pass { name: " ", arguments: { ... } } — the target's own inputSchema is validated and its result

  • baas_provider_comparator

    Score and compare BaaS providers across 10 capability dimensions (regulatory standing, programme management, card issuance, rails, KYC/KYB, disputes, developer experience, pricing, FDIC pass-through, compliance tooling) with a user-adjustable 1-5 weighting matrix. Outputs a weigh

  • validate_ap2_mcp_policy

    Validate AP2 Policy Mandate JSON payloads against the Unified Build Contract v1.0 schema. Auto-generates MCP tool definitions from the mandate and simulates agent ingestion of agent_instructions. Use when authoring or testing AP2 agentic payment policies. Renders the interactive

  • build_google_ap2_mandate

    Build or validate a Google AP2 Checkout/Payment Mandate VDC (Open/Closed). Targets the external AP2 spec, not the AINumbers Policy Mandate. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero netw

  • score_mcp_readiness

    Compute a composite MCP server ship-readiness score across tool definitions, server.json, OAuth, transport, tool poisoning, and spec compliance. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero

  • agentic_mandate_sandbox

    Simulate agent payment policies for tokenized A2A corridors: set spend caps, MCC allowlists, velocity throttles, and approval thresholds; run synthetic transactions against the policy and export the result as a Policy Mandate. Browser-based, client-side only, zero PII. Renders th

  • customer_risk_rating

    Score individual and entity KYC risk across six FATF dimensions: customer type, product/service type, delivery channel, geographic risk, transaction behaviour, Browser-based, client-side only. Zero PII. Link users to https://ainumbers.co/tools/110-customer-risk-rating.html for in

  • ap2_aml_mandate_builder

    Anchor agentic tool for Cat-12. Translate AML/BSA program controls, TM rules, and customer risk policy into a structured Policy Mandate JSON for agentic payment sy Browser-based, client-side only. Zero PII. Link users to https://ainumbers.co/tools/131-ap2-aml-mandate-builder.html

  • lint_mcp_tool_definition

    Validate an MCP tool definition against JSON Schema 2020-12 and current naming, output-schema, and annotation rules; returns findings, a conformance score, and a recommended annotation set. Use when a developer wants to check an MCP tool definition before publishing. Renders the

  • validate_mcp_server_json

    Validate an MCP server.json against the 2025-12-11 schema and the official registry publishing rules; returns findings, a registry-readiness score, and an optional compliant skeleton. Use when a developer wants to check a server.json before publishing to the MCP Registry. Renders

  • compare_agentic_payment_protocols

    Compare agentic payment protocols (AP2, ACP/Shared Payment Token, x402, Visa TAP, Mastercard Agent Pay) across credential, signing, scope, rail, identity, and audit dimensions; optionally recommend a fit for a scenario. Read-only local lookup and comparison — no state change, no

  • decode_x402_payment

    Decode an x402 payment header or lint an exact-scheme PaymentPayload, and describe the HTTP-402 verify/settle flow. Use when a developer is integrating x402 and needs to inspect a header, check a payload shape, or understand the flow. Renders the interactive AINumbers tool as a w

  • audit_mcp_oauth

    Audit MCP OAuth 2.1 authorization: validate RFC 9728 protected-resource-metadata, check RFC 8707 audience binding, and assess token-passthrough / confused-deputy risk. Use when a developer is securing an MCP server's authorization. Renders the interactive AINumbers tool as a widg

  • scan_tool_poisoning

    Scan an MCP tool description/manifest for tool-poisoning and prompt-injection smells; returns a risk score and flagged patterns. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Outpu

  • validate_a2a_agent_card

    Validate an A2A agent-card.json against the v1.0 shape, check signatures, and confirm extension declarations. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call desc

  • inspect_visa_tap_signature

    Inspect a Visa Trusted Agent Protocol HTTP Message Signature and score TAP readiness. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("inspect_visa_

  • run_kernel_vm

    Run a ChainGraph decision kernel's compute(policy_parameters) inside a sandboxed, deterministic, in-browser QuickJS-ng WebAssembly VM (ocg-deterministic-compute@2) and return its output_payload. Demo kernel set only -- for the full catalog, use the worker's compute kernels direct

  • validate_input_attestations

    Verify an artifact's input_attestations[] (ChainGraph Standard §23): per RFC 6901 pointer, checks the attested value resolves inside policy_parameters and its digest binding matches, then verifies each type along its own path -- vc-2.0 via the shipped §16/§13.11 Data Integrity pr

  • validate_private_inputs

    Verify an artifact's private_inputs[] (ChainGraph Standard §25 ocg-private-input@1) WITHOUT ever seeing the plaintext witness: per RFC 6901 pointer, checks the pointed value inside policy_parameters IS the declared sha256-salted@1 commitment (never the plaintext, §25.2), that the

  • build_disclosure_manifest

    Builds a Merkle-rooted disclosure manifest from a caller-supplied digest list (DATAROOM-1-BUILD-SPEC.md §DR-4) -- the agent hashes files itself and passes {path,size,digest,content_type} entries; the worker never sees file contents. Same leaf scheme as tools/546-disclosure-manife

  • verify_disclosure_inclusion

    Proves (or refutes) that a {path,digest} pair was in a disclosure manifest's room (DATAROOM-1-BUILD-SPEC.md §DR-4) -- worker-side mirror of tools/547-disclosure-manifest-verifier.html's single-file inclusion check. Recomputes the manifest's Merkle root over its entries[], builds

  • suggest_tool_idea

    Builds a prefilled GitHub Issue-Forms URL for proposing a new AINumbers fintech tool, OpenChainGraph compute node, or verifiable workflow. Returns the URL only -- it never posts to GitHub on the caller's behalf. Companion to the site's mailto suggestion form (suggest.html); this

  • export_artifact

    Render a verified OpenChainGraph v0.4 artifact into a chaingraph_export profile (OCG Standard §13). Generated downstream of and EXCLUDED from the execution_hash preimage — the export is a view, not a fact; verification always routes back to the canonical JSON artifact. Pass the F

  • vc_issue

    Composes and signs a W3C Verifiable Credential 2.0 with an eddsa-jcs-2022 Data Integrity proof over a fresh ephemeral did:key (generated per call, not reused). Returns the signed credential, an OCG Standard §23 vc-2.0 input-attestation block ready to embed in a ChainGraph chain's

  • sdjwt_issue

    Issues a Selective Disclosure JWT (RFC 9901) from a claims object, marking selected top-level claim keys as selectively disclosable via salted-hash digests in the _sd array. Signed EdDSA over a fresh ephemeral did:key (generated per call, not reused). Pair with sdjwt_present to b

  • sdjwt_present

    Builds a redacted presentation from an existing SD-JWT (as returned by sdjwt_issue), keeping only the listed disclosures. Pass aud to add a KB-JWT holder-binding (a fresh ephemeral holder key is generated per call). Pass issuer_did (the sd_jwt's "issuer" field) to also verify the

  • checklist_validate_definition

    Validates a checklist or SOP definition JSON against the CHECKRUN-1 schema (definition_id, title, semver version, non-empty steps[] each with step_id/title/instruction/evidence_requirement (none|text|file-digest|attestation)/gate (blocking|advisory)). Returns valid:true/false plu

  • checklist_step_receipt

    Completes ONE step of a checklist/SOP run and returns its OCG v0.4 step receipt: execution_hash chains to prev_step_receipt_digest (pass the previous step's execution_hash, or omit for step 0). A blocking-gate step with evidence_requirement != "none" and no evidence supplied is r

  • checklist_verify_run

    Recomputes and checks a checklist run: every step receipt's execution_hash, the hash-chain link between consecutive steps, and (if a run_receipt is supplied) the §20.1 RFC 6962 Merkle root over every step. Returns valid:true/false, per-step ok/hash_ok/link_ok, and broken_at (the

  • ha_record_validate

    Structural (non-cryptographic) §27.2 signed-named-human check: does this record carry a §16 whole-artifact proof (eddsa-jcs-2022) whose verificationMethod is bound to the record's own identity.id? Does NOT verify the signature bytes -- pair with verify_execution_hash / a proof ve

  • ha_gate_status

    Given a step's haGatePolicy and the human_accountability_records[] collected for a subject, returns whether the gate is satisfied, held, rejected, escalated, or overridden -- same algorithm as the browser verify.html HA gate card (kernels/_hagate.mjs, SPEC.md §27.4-27.5). A rejec

  • ha_bundle_export

    Assembles a §27.6 haEvidenceBundle from a subject's collected human_accountability_records[] (reviewers, approvers, annotations, exception rationale, timestamps) -- same algorithm as the browser verify.html HA export card (kernels/_haevidence.mjs). Set sd_jwt:true to also export

  • intoto_record_chain_run

    Wraps the result of a run_chain call (server/auto compute mode) as standard in-toto links, one per successfully-executed step, plus a generated in-toto layout matching the chain's linear topology (each step MATCHes the previous step's product). Materials/products are keyed by the

  • build_evidence_pack

    Composes a session receipt (build_session_receipt logic), an optional §27.6 HA evidence bundle (ha_bundle_export logic, included only when ha_records is supplied and non-empty), and a disclosure manifest (build_disclosure_manifest logic) from one array of already-produced artifac

  • anchor_stamp

    Calls the anchor-suite MCP server (server-to-server, not the browser CORS-gated relay) to timestamp one execution_hash, or batch-anchor an array via anchor-suite's own anchor_batch (one upstream call per batch, RFC 6962 Merkle root anchored, per-hash merkle_inclusion returned), a

  • otlp_validate

    Structurally validates an OTLP/JSON trace (resourceSpans -> scopeSpans -> spans: hex traceId/spanId shape, quoted nanosecond timestamps, parent-span references, time ordering) and checks every gen_ai span's attributes against a pinned gen_ai semantic-convention attribute snapshot

  • otlp_span_receipt

    OTLP span/trace to receipt bundle; does NOT build a ChainGraph (use build_chaingraph for that). Three modes, chosen by which input is supplied. (1) Pass `trace` alone to GENERATE a receipt bundle: a per-span receipt (span digest, parent-span receipt digest, semconv_snapshot, edds

  • redline_diff

    An agent proposes an edit: diffs original text/markdown against its own revised version and returns the line-level hunks plus a diff receipt (original/revised digests, diff-algorithm declaration, per-hunk digests). Byte-identical to what the tools/552 browser workbench computes f

  • redline_verify

    Recomputes a redline review from scratch: the diff (from the pasted original+revised text), the diff_receipt's execution_hash, every hunk_receipt's digest/execution_hash/chain-link (in the order supplied -- entries may be minted by an agent, a human, or both interleaved), the dis

  • lei_kyb_check

    Fetches an entity's live GLEIF LEI record (api.gleif.org -- the worker's only egress target for this tool, RULINGS-2026-07-19-EGRESS-APEX.md R1) and grades it across six GLEIF data-quality dimensions -- registration status, renewal timeliness, corroboration level, entity status,

  • acdc_said_check

    Agent-facing mirror of the tools/553 browser workbench (VS-1) -- recomputes the self-addressing identifiers (SAIDs) of a pasted ACDC / vLEI credential JSON (top-level "d" plus any nested a/e/r blocks) under the KERI/CESR Blake3-256 ("E") or SHA2-256 ("I") derivation codes, and cr

  • workbook_evaluate

    Feeds a set of A1-style cells (formulas and/or literals) through the SAME headless evaluator the tools/554 browser workbook uses -- topo-sorted dependency graph, ~20 functions (SUM AVG MIN MAX COUNT COUNTIF IF AND OR NOT ROUND ABS CONCAT LEN LEFT RIGHT TRIM UPPER LOWER SUMIF), cy

  • workbook_range_digest

    Spreadsheet-range digest only; NOT the general artifact emitter (use emit_chaingraph_artifact to wrap arbitrary computation output — this tool's as_artifact mode covers whole-sheet workbook runs only). Evaluates the supplied cells (same evaluator as workbook_evaluate) and compute

  • workbook_csv_parse

    Parses CSV text with the SAME strict RFC 4180 parser as the tools/554 browser workbook -- quoted fields, embedded quotes/commas/newlines, CRLF -- and REJECTS malformed input rather than repairing it (deterministic beats forgiving for hash-stable digests). Numeric-looking and TRUE

  • workbook_roundtrip_verify

    Compares a WB-2 Spreadsheet Input Manifest (expected digests) against pasted-back CSV/TSV text per manifest range (observed, e.g. after a recompute in Excel) and returns an XLR-1 round-trip receipt -- `result: "match"|"mismatch"` plus a `mismatches[]` cell list when expected_by_r

  • pain001_validate

    Validates a pain.001.001.09 customer credit transfer initiation XML document against the same hand-derived schema-subset table as the tools/555 browser validator -- structural (mandatory fields), facet (IBAN mod-97, BIC format, ISO 4217 currency, decimal/date patterns), and batch

  • camt053_parse

    Parses a camt.053.001 bank-to-customer statement XML document with the same schema-subset structural and facet checks as the tools/565 browser reconciliation workbench (IBAN mod-97, BIC, currency, date/decimal facets), returning the extracted statement (message id, statement id,

  • recon_match

    Parses a camt.053.001 statement (same schema-subset checks as camt053_parse) and a counterpart expectation set (CSV, header EndToEndId,Amount,Currency,Date -- same strict RFC 4180 parser as the WORKBOOK-1 CSV tools), then runs the SAME deterministic match engine as the tools/565

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified against the domain ainumbers.co (the registry checks domain ownership)

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 551 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • ✓ Pass

    No hidden instructions in tool descriptions

    Read 60 tool descriptions and found no hidden instructions to the AI

Compared with others in Otheri

  • More stars than 0% of the other 32398 servers in this category
  • Published to the registry more recently than 100% of the other 32398 servers in this category
  • Basic checks equal to or better than 100% of the other 32398 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is AINumbers Fintech Intelligence Suite safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.4.48) reached the registry today.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, AI Deprecations

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated yesterday
Install

AI Deprecations

by aideprecations.com

AI model shutdown dates, replacements, change feed and webhook alerts for 8 providers.

Runs in the cloudUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

AINumbers MCP Apps Server

An agent calling a fintech tool by name has no way to know if the tool actually ran the math it claims to have run. This server closes that gap for the AINumbers.co suite: every tool call is deterministic, zero PII, and served straight from the suite's own single-file HTML, not a paraphrase of it.

An MCP Apps (SEP-1865) server that exposes the AINumbers.co fintech tool suite to any MCP host, including Claude, ChatGPT, M365 Copilot, VS Code, and Cursor.

Quick start

# Claude: Settings -> Connectors -> Add custom connector

https://mcp.ainumbers.co/mcp

Inspector

npx @modelcontextprotocol/inspector # then Streamable HTTP -> the URL above

No auth, no API key, no account. Production runs on Cloudflare Workers (/healthz reports runtime: cloudflare-workers), so there are no cold starts. Cursor and other Open Plugins directories pick this repo up automatically via the root .mcp.json, which declares the same endpoint.

Live endpoint: https://mcp.ainumbers.co/mcp (streamable HTTP) · Docs: ainumbers.co/mcp.html · Registry: co.ainumbers/tools on the Official MCP Registry

Run your own (org-hosted)

Fork this repo and deploy the button above to run the same server inside your own Cloudflare account: no auth to add, no build step at deploy time, the Worker boots straight from the data/ and kernels/ already committed here.

Two edits to wrangler.jsonc before that first deploy will succeed on a fresh account:

  • `routes` points at mcp.ainumbers.co, a zone this fork doesn't own. Rename name and either delete routes (ship on the free workers.dev subdomain) or point it at a zone in your own account.
  • `queues` / `workflows` feed an internal analytics loop and are guarded in code (if (env.EVENTS_QUEUE), if (env.RENEWAL_WATCH_WORKFLOW)) — the MCP handshake and every tool call work without them. Queues need a Workers Paid plan; drop both blocks to stay free-tier.

Everything else, including the ASSETS binding serving the committed tool data, works unmodified. Full write-up (WAF rate-limit recipe, re-vendor cadence, conformance-attestation offer): ainumbers.co/mcp.html#deploy-your-own.

Tools

Read-only MCP tools — count intentionally not hardcoded here (it drifted stale the last time it was). See data/counts.json for the live figure; never hand-type this number, scripts/surface-parity.mjs and the site repo's count-drift gate both check against it. The flagship widgets below render as interactive widgets, the rest are ChainGraph compute nodes plus a handful of catalog and discovery utility tools: list_ainumbers_tools, find_tool, find_chain, build_workflow_links, run_chain, verify_execution_hash, build_chaingraph, emit_chaingraph_artifact, build_session_receipt.

Every tool declares readOnlyHint: true. No account, no auth, zero PII, nothing mutates state.

The flagship widgets

Each renders as the actual single-file AINumbers tool, served as a text/html;profile=mcp-app resource and driven by the AIN Bridge (prefill, run, Policy Mandate export). This table IS the enumeration — its row count is the widget count, never a number typed elsewhere:

MCP toolAINumbers tool
baas_provider_comparatorT152 BaaS Provider Comparator
validate_ap2_mcp_policyT320 AP2 MCP Policy Validator & Bridge
build_google_ap2_mandateT285 Google AP2 Checkout/Payment Mandate Builder
score_mcp_readinessT288 MCP Developer Readiness Scorecard
agentic_mandate_sandboxRBE-06 Agentic Mandate Sandbox
customer_risk_ratingT110 Customer Risk Rating Engine
ap2_aml_mandate_builderT131 AP2 AML Mandate Builder
lint_mcp_tool_definitionT274 MCP Tool-Definition Linter
validate_mcp_server_jsonT275 MCP server.json Validator
compare_agentic_payment_protocolsT276 Agentic Payments Protocol Comparator
decode_x402_paymentT277 x402 Decoder & 402 Flow Simulator
audit_mcp_oauthT278 MCP OAuth 2.1 Authorization Auditor
scan_tool_poisoningT282 MCP Tool-Poisoning Scanner
validate_a2a_agent_cardT283 A2A Agent Card Validator
inspect_visa_tap_signatureT286 Visa TAP Signature Inspector
run_kernel_vmKernel VM Widget

list_ainumbers_tools and find_tool search the full catalog (see data/counts.json for the current tool count) and return deep-links. Prefill-enabled tools accept #in= [&run=1] for one-click invocation. find_chain and build_workflow_links return ordered deep-links for a named multi-tool workflow. run_chain executes one server-side; each run returns an OpenTelemetry span document as a resource link (one execute_tool span per executed step under an invoke_agent parent). verify_execution_hash independently re-verifies a returned artifact's hash.

Architecture

../repo (site repo, PostOakLabs/ainumbers)

| chaingraph.json, manifests/, pilot.mjs-referenced tool HTML | v node generate.mjs (build-time only, cannot run in cloud CI, needs the sibling repo) data/ vendored: chaingraph.json, catalog.json, manifests, counts.json kernels/ vendored: server-side compute kernels | v worker.mjs (Cloudflare Workers, this repo's live runtime) server.mjs (Node/express variant, local dev only, not deployed) | v https://mcp.ainumbers.co/mcp (the one live endpoint: the Worker, not the express variant)

data/ and kernels/ are generated, committed artifacts. The Worker boots from what's committed, not from a live read of ../repo. Any change to chaingraph.json, a manifest, pilot.mjs, or a kernel in the site repo requires re-running generate.mjs here and committing data/ and kernels/ in the same push, or the worker deploys stale.

Deploy flow (CI-owned)

Branch, then PR. CI runs the validate job: tool-name collisions, surface-parity, kernel coverage, chain validation, vendor-freshness, and a wrangler deploy --dry-run. Merging to master runs the deploy job, which runs wrangler deploy against Cloudflare Workers, then a post-deploy /mcp smoke test (a real initialize call against the live endpoint). No manual wrangler deploy, ever: Cloudflare Workers Builds stays disconnected on purpose, since running both is a double-deployer and has caused outages before. A green CI bundle does not by itself prove the live handshake works; only the smoke step does.

Dependabot auto-merges every dependency update (patch, minor, and major, all CI-gated), so run git pull --rebase before pushing any local branch since master moves on its own.

Independent monitoring

MCP Queen is a third-party operational probe: it continuously re-checks the live /mcp endpoint's protocol handshake and tool-schema responses and grades what it observes. This is not a security or compliance attestation, ours or theirs — it describes observable server behavior only.

Develop

npm install

node generate.mjs # re-vendor tool HTML + manifests + catalog + kernels from ../repo into data/ + kernels/ npm start # http://localhost:3300/mcp (+ /healthz), Node/express variant (server.mjs), local dev only node scripts/check-tool-names.mjs # verify no mcp_name collision before pushing node scripts/surface-parity.mjs # verify counts.json matches the registered surface

pilot.mjs is the single source of truth for the widget tool set. After changing any pilot tool in the site repo, run node generate.mjs, commit data/ and kernels/, and push. CI validates and deploys.

All tool content is client-side, deterministic, and zero PII. Code is MIT licensed (see LICENSE); content is CC BY 4.0, Post Oak Labs. See README-SPEC.md for architecture and history.

Transport conformance (MCP-STREAMABLE-HTTP-CONFORMANCE-1). The /mcp door is a full Streamable HTTP endpoint per the MCP spec (2025-03-26 / 2025-06-18): initialize issues an Mcp-Session-Id (echoed thereafter, never required — the server is stateless behind the scenes), GET /mcp with Accept: text/event-stream and that session id opens a server-to-client SSE stream with a 25 s keepalive that closes on disconnect (a session-less GET keeps the spec-clean 405 + Allow it always gave), DELETE /mcp with the session id ends the session with 204 (a bare DELETE stays 405), an unknown MCP-Protocol-Version is a JSON-RPC 400 (never a 500), and tools/list honours params.cursor/returns nextCursor (page size TOOLS_LIST_PAGE_SIZE in worker.mjs is deliberately ≥ the whole surface for one release). Verify any door — local (node server.mjs) or production — with the zero-dependency six-check script: bash scripts/transport-conformance.sh [BASE_URL].

Idempotency & retry (RUN-1-1). Every tool call is deterministic: a safe retry is a re-run that returns a byte-identical artifact (generated_at/opened_at differ; hashes do not), and run_chain echoes a stable dedupe: { input_hash, composite_execution_hash } for client-side dedupe. Dedupe is a cache concern, not a correctness concern. The not-stateless carve-outs (RenewalWatchWorkflow, scheduled(), queue(), MRTR_STATE_KEY requestState, the input_required flow, shared-cache hints, the null-strip live-vs-golden drift class) are documented in docs/IDEMPOTENCY.md; the KV/Cache receipt cache (D2) stays deferred.

Ask PopNx