Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Risk-check counterparties before an AI agent pays; pay x402 resources only after a verified allow
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
X402CHECK_CREDIT_TOKEN, X402CHECK_PAYER_KEY, X402CHECK_BUDGET_USD, X402CHECK_PINNED_KEYS, X402CHECK_MAX_PAYMENT_USDValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"x402check": {
"command": "npx",
"args": [
"-y",
"@x402check/mcp"
],
"env": {
"X402CHECK_CREDIT_TOKEN": "your-value",
"X402CHECK_PAYER_KEY": "your-value",
"X402CHECK_BUDGET_USD": "your-value",
"X402CHECK_PINNED_KEYS": "your-value",
"X402CHECK_MAX_PAYMENT_USD": "your-value"
}
}
}
}Run this in your terminal
claude mcp add x402check --env X402CHECK_CREDIT_TOKEN=your-value --env X402CHECK_PAYER_KEY=your-value --env X402CHECK_BUDGET_USD=your-value --env X402CHECK_PINNED_KEYS=your-value --env X402CHECK_MAX_PAYMENT_USD=your-value -- npx -y @x402check/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"x402check": {
"command": "npx",
"args": [
"-y",
"@x402check/mcp"
],
"env": {
"X402CHECK_CREDIT_TOKEN": "your-value",
"X402CHECK_PAYER_KEY": "your-value",
"X402CHECK_BUDGET_USD": "your-value",
"X402CHECK_PINNED_KEYS": "your-value",
"X402CHECK_MAX_PAYMENT_USD": "your-value"
}
}
}
}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.
Paste into .vscode/mcp.json in your project
{
"servers": {
"x402check": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@x402check/mcp"
],
"env": {
"X402CHECK_CREDIT_TOKEN": "your-value",
"X402CHECK_PAYER_KEY": "your-value",
"X402CHECK_BUDGET_USD": "your-value",
"X402CHECK_PINNED_KEYS": "your-value",
"X402CHECK_MAX_PAYMENT_USD": "your-value"
}
}
}
}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.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
X402CHECK_BUDGET_USD envX402CHECK_PINNED_KEYS envX402CHECK_MAX_PAYMENT_USD envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
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 9, 2026
The registry name was verified with the GitHub account caiovicentino, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 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.
You need to fill in: X402CHECK_CREDIT_TOKEN, X402CHECK_PAYER_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.3.3) reached the registry 16 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Systemdox
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Your architecture in your agents' context: checks, specs, ADRs and docs over MCP, at write time.
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.
An MCP server that lets any AI agent check a counterparty before money moves, with x402check, and pay for x402 resources only after the payee is cleared. It is a stdio server built on the official @modelcontextprotocol/sdk.
Each check screens the counterparty against the OFAC SDN list, phishing and drainer feeds, look-alike domains and on-chain facts. It can also simulate the transaction (API v0.3), and a typed model reads the content the agent acted on. The server verifies every verdict's ES256 attestation against did:web:x402check.xyz before the agent sees an action.
Every check is paid. There is no free tier, and the agent never handles money. The server pays one of two ways:
POST https://x402check.xyz/v1/credits or the SDK's buyCredits.| Tool | What it does |
|---|---|
x402check_check | Risk-checks a counterparty, paying $0.001 from credits (or the network's price per call), or $0.005 when a transaction is simulated. It returns an action (allow, warn, block or not_verified), the findings, the evidence, the attestation jti, the settlement receipt and the full structured result. |
x402check_pay | Fetches an x402 resource (an API that answers 402 Payment Required) and pays for it only if x402check clears the exact payee, right before the payment is signed. A warn is paid only if the user approves it in the client. block and not_verified sign nothing. It needs X402CHECK_PAYER_KEY; see Paying x402 resources. |
x402check_verify_attestation | Verifies an x402check attestation ({ jws, aud?, sub?, request?, max_age_seconds? }) before relying on it. Pass request, the exact body that was checked: it binds the verdict to that request (request_mismatch otherwise). It makes no payment. |
x402check_methodology | Explains what is checked, the price, and the published, measured limits. It makes no payment. |
# prepaid credits: $0.001 a check, no payment round trip
claude mcp add x402check -e X402CHECK_CREDIT_TOKEN=x402c_YOUR_TOKEN -- npx -y @x402check/mcp
claude mcp add x402check \ -e X402CHECK_PAYER_KEY=0xYOUR_DEDICATED_WALLET_KEY \ -e X402CHECK_BUDGET_USD=1.00 \ -e X402CHECK_MAX_PAYMENT_USD=0.05 \ -- npx -y @x402check/mcp
claude mcp add x402check \ -e X402CHECK_CREDIT_TOKEN=x402c_YOUR_TOKEN \ -e X402CHECK_PAYER_KEY=0xYOUR_DEDICATED_WALLET_KEY \ -- npx -y @x402check/mcp
Without X402CHECK_CREDIT_TOKEN or X402CHECK_PAYER_KEY, the server still starts. Every check then returns not_verified, with instructions to configure one of them. x402check_pay needs X402CHECK_PAYER_KEY: credits pay for checks, never for resources.
Add the server to claude_desktop_config.json:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": { "x402check": { "command": "npx", "args": ["-y", "@x402check/mcp"], "env": { "X402CHECK_PAYER_KEY": "0xYOUR_DEDICATED_WALLET_KEY", "X402CHECK_BUDGET_USD": "1.00", "X402CHECK_MAX_PAYMENT_USD": "0.05" } } } }
Run npx -y @x402check/mcp, or x402check-mcp after npm install -g @x402check/mcp, as a stdio server. The server needs Node.js 22 or later, on its latest security release (22.23.4, 24.22.1 or 26.12.1 or later as of 2026-10-21): it holds a payer key and talks to servers it does not know.
# from the repository root; the server depends on the client via file:../client, so build the client first
npm --prefix packages/client ci && npm --prefix packages/client run build npm --prefix packages/mcp ci && npm --prefix packages/mcp run build node packages/mcp/dist/index.js --help
Then register the built entry point with an absolute path. Quote it if it contains spaces.
claude mcp add x402check -e X402CHECK_PAYER_KEY=0xYOUR_DEDICATED_WALLET_KEY -- node "/absolute/path/to/repo/packages/mcp/dist/index.js"
{
"mcpServers": { "x402check": { "command": "node", "args": ["/absolute/path/to/repo/packages/mcp/dist/index.js"], "env": { "X402CHECK_PAYER_KEY": "0xYOUR_DEDICATED_WALLET_KEY" } } } }
| Variable | Default |
|---|
| X402CHECK_CREDIT_TOKEN | none | A prepaid credit token (x402c_…, from POST /v1/credits). • Each check is debited from its balance: $0.001, or $0.005 when a transaction is simulated. There is no payment round trip. • For checks, it takes precedence over X402CHECK_PAYER_KEY. • What this process spends from it is capped by X402CHECK_BUDGET_USD (below); the balance is a second cap. • An empty balance returns not_verified, with the top-up to do. | | X402CHECK_PAYER_KEY | none | EVM private key (0x + 64 hex) of the wallet that pays, in USDC via x402, on Base when offered: • the x402 resources x402check_pay clears; • the checks themselves, when there is no credit token. See the security note below. | | X402CHECK_MAX_PAYMENT_USD | 0.05 | The most a single payment may cost, a check or a resource. A higher price is refused before anything is checked or signed. | | X402CHECK_BUDGET_USD | 1.00 | The spend cap of this server process, applied twice, separately: • the payer: checks paid per call and x402check_pay payments together. Every signed payment that was sent counts, settled or not; • prepaid credits: what checks spend from X402CHECK_CREDIT_TOKEN, tallied from the API's X-Credits-Charged header. A check with no answer stays counted, since it may have been charged; an HTTP error is not charged, so it is not counted. Once a budget cannot cover the next check or payment, it is refused without calling the API, and the result says which budget ran out (budget_exhausted). A restart resets both. | | X402CHECK_BASE_URL | https://x402check.xyz | API origin, for example a staging or local provider. x402check_pay pays x402check's own pay_to without a check only on this origin. | | X402CHECK_ISSUER | did:web:x402check.xyz | The attestation issuer this server trusts. It is the trust anchor, so it is operator configuration only and never a tool argument. | | X402CHECK_PINNED_KEYS | x402check's own keys | Comma-separated RFC 7638 SHA-256 thumbprints (base64url) of the attestation keys accepted, in every verification: x402check_check, x402check_pay and x402check_verify_attestation. A key outside the list fails with key_not_pinned, even when the issuer's DID document serves it. • For did:web:x402check.xyz, the default is @x402check/client's X402CHECK_KEY_THUMBPRINTS, the same pins as the signing guard. • Another issuer is pinned only when its keys are listed here (the startup line on stderr says so). • Pinning cannot be switched off from the environment, and an unusable list fails at startup. | | X402CHECK_TIMEOUT_MS | 30000 | Per API call (a paid call is two round trips plus settlement), and per request to an x402 resource: until its headers arrive, and for a 402 until its body is read. |
X402CHECK_BASE_URL). Payments to any other payee, including a site that names x402check's pay_to, are signed only after x402check allows them (or the user approves a warning).untrusted_check_payee, over_check_price): a hijacked API domain cannot collect from the payer.X402CHECK_MAX_PAYMENT_USD caps each payment (x402 spend controls). X402CHECK_BUDGET_USD caps the total for the process: the payer's, and separately what checks spend from prepaid credits.maxTimeoutSeconds, capped at 900), so a payee that holds one back can settle it only within that window.@x402check/client accepts any x402-paying fetch, including a Solana one. The runtime dependencies are the MCP SDK, the x402 and viem packages, zod, and undici (Node.js's own HTTP client, which pins resource connections to checked addresses).The server's instructions and the tool description tell the agent the following:
x402check_check before it sends funds, signs a token approval, permit or order, or pays an x402 invoice.pay_to, not the token contract.context), verbatim.transaction (EVM from, to, value, data) to have the transaction simulated.| Action | Meaning | Agent behaviour |
|---|---|---|
allow | No check fired. | Proceed. This is still not a guarantee of safety. |
warn | Risk signals are present. | Get explicit confirmation from the user. |
block | High or critical risk. | Do not proceed. |
not_verified | The check did not complete or its attestation did not verify. Causes include a missing payer, an exhausted budget or a failed payment, 422, 503, a network error or timeout, checked: false (with its reason), and a bad, missing or mismatched attestation. | STOP. This is never an all-clear. |
The tool does not accept caller assertions (screening, authorization), because claims such as "already screened" are not evidence.
x402check: BLOCK. Do not proceed.
Checked 0x7a3e8f0c2b1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f on base for permit_signature (unlimited) from https://app-uniswap.org Why:
Evidence: OFAC SDN not listed (list as of 2026-09-23) · on-chain: plain wallet (EOA), no history on eip155:8453 · domain app-uniswap.org: imperso
Only the beginning is shown; read the rest in the repo