Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

tech.vauban/pay-mcp

NPM · @VAUBAN-PAY/MCP

x402 pay tools for MCP clients, plus a `buy` command: read the offer, consent, pay. Starknet, Base.

Available components

0 this week 72 Trust /100

Last scanned (9 hours ago)

Scores higher than 42% of npm servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency6
  • Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.Unverified
  • Actively maintained (last published 1 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability58
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4410 tokens (~630/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "pay_for_resource" implies "pay" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Stability: 0.97 → pass security
  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 −1
    • Stability: pass → 0.93 functional
  • 24 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 23 Oct 26 −12
    • Malware scan: pass → unverified ▼ security
    • CVE-2026-111767 no longer affects this package ▲ security
    • CVE-2026-104850 no longer affects this package ▲ security
    • CVE-2026-111768 no longer affects this package ▲ security
    • CVE-2026-111771 no longer affects this package ▲ security
    • CVE-2026-111769 no longer affects this package ▲ security
    • Known CVEs: fail → pass ▲ security
    • Schema quality: 281 → 630 ▼ functional
    • License: pass → unverified ▼ functional
    • Dependency health: partial → pass ▲ functional
    • Maintenance: fail → pass ▲ functional
    • Licence: Apache-2.0 functional
    • Package version: 0.7.1 → 0.19.0 functional
  • 22 Oct 26 0
    • Stability: 0.97 → pass security
  • 21 Oct 26 0
    • CVE-2026-111771 affects this package: high ▼ security
    • CVE-2026-111768 affects this package: high ▼ security
    • CVE-2026-111769 affects this package: high ▼ security
    • CVE-2026-111767 affects this package: high ▼ security
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +3
    • Stability: 0.80 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@vauban-pay/mcp@0.19.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 7 exposed · ~4,410 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
check_merchant ~269

Check a merchant's proven service history (an x402 STARK-receipt history document, e.g. https://demo.pay.vauban.tech/x402/v1/history). Fetches history_url, validates the document, and verifies a sample of entries: L1 = structure + per-entry invariants + JCS canonicalization; L2 = each sampled settlement transaction is read from Starknet Sepolia and must be SUCCEEDED (a visible entry must carry a value transfer or a recognized receipt event). Four verdicts, NEVER conflated: - PROVEN_SAMPLE: document valid, sampled entries verify at the announced level. - REFUTED: an element contradicts itself or the chain -- the response names it. - NO_RECORD: no proven history at this URL. Indeterminate, NOT negative. - UNREACHABLE: transport failure; says nothing about the merchant. An RPC failure during L2 degrades the level to L1 and says so; it never becomes REFUTED. Full STARK re-verification (L3) is not run here; the response carries the public docker command.

NameTypeReqDescription
history_urlstringyesThe merchant's history endpoint (http(s) URL).
sample_sizeinteger–Entries to verify, 1..20 (default 5).

No output schema declared.

No examples provided.

jcs_hash ~58

JCS (RFC 8785) canonicalize a JSON object then compute its SHA-256 hash. Returns base64-encoded canonical bytes and the hex digest.

NameTypeReqDescription
json_objectobjectyesThe JSON object to canonicalize and hash.

No output schema declared.

No examples provided.

make_payment ~325

Make a payment on Starknet Sepolia testnet. Call it with no arguments to get a real, sponsored settlement: we fund the testnet payment, so you need no wallet, no account and no STRK. Returns the transaction hash of YOUR payment plus a Voyager link, and you can read it back from any Sepolia RPC you trust. Pass amount_wei (a decimal string in STRK-wei) to choose the amount, within the published cap. The payee is fixed by the sponsor, so this is a funded demo and not a faucet. If you would rather pay from your own account, set PAY_MCP_SEPOLIA_ACCOUNT_ADDRESS + PAY_MCP_SEPOLIA_PRIVATE_KEY and this tool switches to your signer ; in that mode it emits a receipt hash through the PaymentDemoEmitter contract, which moves NO value and is not proof of a settled payment.

NameTypeReqDescription
amount_weistring–Amount in STRK-wei, as a decimal STRING. A string because wei amounts exceed Number.MAX_SAFE_INTEGER and a JSON number would silently lose precision. Omit for the sponsored default.
cap_per_period_weistring–Optional per-period cap, STRK-wei as a string.
cap_per_tx_weistring–Optional per-transaction cap, STRK-wei as a string.
recipientstring–Informational only in sponsored mode: the payee is fixed by the sponsor so that this is a demo and not a faucet.
scopestring–Optional label carried into the authorization object.

No output schema declared.

No examples provided.

pay_for_resource ~2,164

Fetch a resource gated behind x402 and complete the payment flow to obtain it -- the x402 CLIENT walk, which none of the other tools here perform. GET url: if it answers 200 directly, the resource was free (outcome no_payment_required -- not a failure, x402 gates specific endpoints, not the whole internet). If it answers 402, parses the PAYMENT-REQUIRED manifest, downloads a STARK proof from proof_url (defaulted to the published demo proof only when url's host is demo.pay.vauban.tech; REQUIRED for any other host -- never guessed), gunzips it in memory, and POSTs it back to url. PROOF SOURCE: the proof submitted is the one the merchant PRE-GENERATED and published. A 'paid' outcome carries proof.honesty stating what the resulting 200 establishes (a real STARK verification, really bound to the settlement) and its scope (the proof and the settlement are the merchant's published ones, not this agent's). Four outcomes, never conflated: no_payment_required (free), paid (200 after proof -- content + receipt + manifest + honesty label), refused (402 again after the proof was submitted -- the server's own reason, verbatim: a result, not a crash), unreachable (transport failure or an unrecognized HTTP status -- says nothing about the merchant). A missing proof_url on a non-demo host that requires payment returns a plain input error instead, since no request was ever sent to guess at. STANDARD x402 v2 (since 0.7.0): if the 402 carries the x402 foundation's PaymentRequired document (standard base64 of JSON, x402Version 2) with an exact offer on a Starknet network, this tool pays it the standard way instead: the configured Starknet account signs a SNIP-9 authorization for exactly that transfer, the merchant's facilitator settles it and pays the gas, and the same GET is retried with PAYMENT-SIGNATURE. A 'paid' outcome then carries standard{scheme, network, payTo, amount, asset, payer, feePayer}, the facilitator's receipt (transaction, network, payer) and an honesty note: value mo…

NameTypeReqDescription
networkstring–Optional CAIP-2 network to pay on when the 402 offers several (e.g. eip155:84532 for Base Sepolia, starknet:SN_SEPOLIA). Without it, Starknet is the reference: the Starknet offer is taken when a Star…
proof_urlstring–Where to download a pre-generated, gzipped STARK proof to submit. Defaults to the published demo proof when url's host is demo.pay.vauban.tech. REQUIRED for any other host.
urlstringyesThe resource URL to fetch (http(s)).

No output schema declared.

No examples provided.

pay_shielded ~970

Pay an x402 resource on the SHIELDED rail (scheme vauban-shielded-strk20). Starknet Sepolia only: an offer on any other network is refused as unpayable (network_not_supported). It reads the offer, builds the X-VAUBAN-SHIELDED-SETTLEMENT header (vzk20-v2: pool coordinates plus a COMMITMENT), sends the STARK proof named by proof_path as the POST body, and returns the receipt from PAYMENT-RESPONSE. THE PROOF: proof_path names a proof file you already hold, READ FROM YOUR DISK AND SENT to url as given. It is read only inside the directory named by PAY_MCP_SHIELDED_PROOF_DIR (no default: unset, nothing is read, code proof_dir_unset), relative to it or absolute inside it, never through a symbolic link (proof_path_symlink) or a '..' component (proof_path_traversal), never outside it (proof_path_outside_dir), and only when the file has the form of a proof (proof_form_invalid); each refusal comes before any request. The offer says which proof it wants (extra.proof); an offer that asks for another form is refused before any upload (proof_form_mismatch). THE WITNESS: the witness that opens the commitment is yours. Pass it and this tool checks locally that it opens the commitment, that it is strictly under the published ceiling, and that neither of its numbers appears in the receipt served back. It is never sent, never returned and never logged; only the commitment travels. Or pass amount_commitment alone and the witness never reaches this tool at all. Scope: through the pool, the payer can stay out of the payment transaction when another account submits it; the payer's deposit into the pool is a public transaction of its own. THE PURCHASE SALT: when the offer announces a private receipt (extra.privateReceipt), PAY_MCP_WITNESS_DIR names a directory and payer_pseudonym is given, this tool draws one fresh random salt for this purchase, keeps it there in a 0600 file (purchase_salt_kept_at), and sends only a value derived from it: the salt itself never leaves this process. It also…

NameTypeReqDescription
amount_commitmentstring–The commitment as felt252 hex, when you computed it yourself.
payer_pseudonymstring–Optional. The payer pseudonym your proof publishes (its subject), felt252 hex. Needed, with the vault variable, for the purchase salt; it is not sent as such.
proof_pathstringyesA STARK proof file you hold, inside the directory named by PAY_MCP_SHIELDED_PROOF_DIR (relative to it, or absolute inside it). Its bytes are sent to url. .gz is gunzipped.
settlementobjectyesThe pool transaction that settled the value leg. Every field is a CLAIM: the facilitator decides.
urlstringyesThe gated resource (http(s)). GET it, read the 402, POST the proof back to it.
witnessobject–Optional, and it NEVER leaves this process: used only to check the commitment, the ceiling, and that neither number is in the receipt served back.

No output schema declared.

No examples provided.

request_delegation_grant ~137

Create a DelegationGrant authorization object. Builds the grant with canon_version 'x402-jcs-v1.0.0', JCS-hashes it and returns the grant hash.

NameTypeReqDescription
cap_per_periodinteger–Optional per-period cap in centimes.
cap_per_txinteger–Optional per-transaction cap in centimes.
delegateestringyesDelegatee identifier (address or DID).
delegatorstringyesDelegator identifier (address or DID).
expires_atstringyesISO 8601 expiration timestamp.
scopestringyesDelegation scope string.

No output schema declared.

No examples provided.

verify_receipt ~487

Check a receipt. Three modes, chosen by the arguments given: 1. Hash mode: receipt + expected_hash. Canonicalizes the receipt (JCS, RFC 8785), hashes it with SHA-256 and says whether the digest equals expected_hash. Nothing else about the receipt is checked. 2. Note-receipt mode: receipt alone, whose variant is 'payment-committed-note-v1'. Recomputes note_receipt_hash from the ten cells in note_cells and checks that the fields repeating a cell agree with it. It says only that the receipt is consistent with itself: not that a proof was verified, not that the pool note exists on chain, and nothing about the amount, which no cell carries. 3. Chain mode: tx_hash. Asks the node at STARKNET_RPC_URL which chain it serves (starknet_chainId): Starknet mainnet or Starknet Sepolia, named in network and chain_id with the matching Voyager link; any other chain is refused (status unknown_network) and nothing is read. Then reads the transaction and reports one of two things, checked in this order: on Sepolia only, a PaymentDemoEmitter receipt-hash emission, which moves no value (the receipt rebuilt from the event and its JCS hash), or a STRK Transfer event other than the fee payment (receipt_type starknet-transfer: execution status, block number, amount_wei, sender, recipient; who paid it is not established). A reverted transaction returns verified: false. A transaction that SUCCEEDED but carries neither returns verified: null with status not_a_recognised_payment: it exists and succeeded, and this tool does not read its form, which says nothing against it. A transaction the node does not see, or a read that fails, returns verified: null, never a verdict. Give either receipt (with or without expected_hash) or tx_hash, not both.

NameTypeReqDescription
expected_hashstring–Expected SHA-256 hex digest, optionally prefixed with 'sha256:' (hash mode).
receiptobject–The receipt object to check (hash mode, or note-receipt mode when given alone).
tx_hashstring–Starknet tx hash to read (chain mode), on the network the node at STARKNET_RPC_URL serves. E.g. 0x<hex>.

No output schema declared.

No examples provided.

Install

How do I install the tech.vauban/pay-mcp server?

tech.vauban/pay-mcp runs locally as an npm package, launched with npx -y @vauban-pay/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @vauban-pay/mcp

# add to Claude Code
claude mcp add tech-vauban-pay-mcp -- npx -y @vauban-pay/mcp
Common questions

What is the tech.vauban/pay-mcp server?

tech.vauban/pay-mcp is listed in the public MCP registry as tech.vauban/pay-mcp. x402 pay tools for MCP clients, plus a `buy` command: read the offer, consent, pay. Starknet, Base. This page covers its npm package (@vauban-pay/mcp).

Is the tech.vauban/pay-mcp server safe to use?

tech.vauban/pay-mcp scores 72 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the tech.vauban/pay-mcp server expose?

tech.vauban/pay-mcp exposes 7 tools: jcs_hash, make_payment, verify_receipt, request_delegation_grant, check_merchant, and 2 more. Their descriptions and schemas cost roughly 4,410 tokens of context every time the server is loaded.

Is the tech.vauban/pay-mcp server still maintained?

tech.vauban/pay-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.