About nsgoods-workbench-mcp
nsgoods-workbench-mcp is a read-only index of weekly x402 catalogue scans for clients checking endpoint payability, prices, and host changes. Results include scan-time metadata, and a tool can verify signed nsgoods responses offline; the server handles no wallets or payments.
Key features
- 01Search endpoints by host or keyword and price
- 02Check one URL’s verdict, history, and remediation hint
- 03Review catalogue stats, host status, and scan drift
- 04Check the current x401 emitter count
- 05Verify signed nsgoods responses offline
Use cases
- 01Find payable services by keyword and compare prices
- 02Inspect an endpoint’s past verdicts and remediation hint
- 03Track host availability and verdict changes
- 04Validate signed nsgoods data
MCP support
It provides a hosted MCP server with read-only catalogue tools for MCP clients supporting Streamable HTTP. Data comes from weekly scans and includes an as_of value and scan ID.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.nsgoods.org/mcpclaude mcp add --transport http org-nsgoods-nsgoods-workbench https://mcp.nsgoods.org/mcp{"mcpServers":{"org-nsgoods-nsgoods-workbench":{"type":"http","url":"https://mcp.nsgoods.org/mcp"}}}Open in Cursor{"servers":{"org-nsgoods-nsgoods-workbench":{"type":"http","url":"https://mcp.nsgoods.org/mcp"}}}Open in VS Code{"mcpServers":{"org-nsgoods-nsgoods-workbench":{"type":"http","url":"https://mcp.nsgoods.org/mcp"}}}{"mcpServers":{"org-nsgoods-nsgoods-workbench":{"serverUrl":"https://mcp.nsgoods.org/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
8| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes |
Details
From the project README
nsgoods Workbench MCP
Read only index of the weekly x402 catalogue scan. Which endpoints are payable, what they cost, which hosts are gone.
No wallet. No sign in. No payments handled by this server.
What it answers
A hosted Model Context Protocol server over our weekly full scan of the x402 catalogue: is this endpoint payable, what does it cost, which host is gone, which endpoints match a keyword, and whether a signed nsgoods response verifies offline.
Hosted endpoint: https://mcp.nsgoods.org/mcp (Streamable HTTP, no sign in, 300 tool calls per IP per day). Landing and docs: https://mcp.nsgoods.org/ · Health: https://mcp.nsgoods.org/health
Data is point in time from the last full scan. Every answer carries as_of and the scan id. For a live check of one endpoint before paying, use the paid /payable oracle on the hub. This server is the index.
Connect
Claude (web or desktop)
- Settings, then Connectors, then Add custom connector
- Name: nsgoods. URL:
https://mcp.nsgoods.org/mcp. No sign in. - New conversation, then ask for example: Using nsgoods, find the cheapest payable endpoint for sanctions screening on Base
Cursor: add to mcp.json
{"mcpServers":{"nsgoods":{"url":"https://mcp.nsgoods.org/mcp"}}}
Smithery: https://smithery.ai/servers/nikosble1926/nsgoods-workbench
Any MCP client that supports Streamable HTTP works the same way.
Tools
| tool | what it answers |
|---|---|
| find_endpoints | search the catalogue by host or keyword, with the latest verdict and the observed price per endpoint, optional sort by price |
| payability_verdict | verdict, history, remediation hint and price for one exact URL |
| catalogue_stats | size of the catalogue, verdict counts, payable endpoints per network, median price |
| host_summary | per host verdict mix, first and last seen, gone since |
| drift_status | verdict changes between scans |
| x401_status | current x401 emitter count |
| verify_signature | verify any nsgoods signed response offline against our manifest |
| reports | links to the weekly payability reports |
All tools are read only and idempotent (declared through MCP tool annotations).
Verdicts: PAYABLE, NOT_PAYABLE, MALFORMED_402, CANNOT_PAY_EITHER_VERB, UNREACHABLE, SKIPPED, UNKNOWN.
Example
A live find_endpoints("erc20-balance", 2) call, trimmed to two rows:
{
"query": "erc20-balance",
"total_matches": 6,
"returned": 2,
"endpoints": [
{
"resource": "https://api.onesource.io/api/chain/erc20-balance",
"host": "api.onesource.io",
"last_verdict": "PAYABLE",
"host_gone_since": null,
"price": "0.003 USDC on eip155:8453"
},
{
"resource": "https://app.heinrichstech.com/v1/cdp/chain/erc20-balance",
"host": "app.heinrichstech.com",
"last_verdict": "PAYABLE",
"host_gone_since": null,
"price": "0.003 USDC on eip155:8453"
}
],
"as_of": "2026-09-13",
"index_scan_id": "scan-20260913T050332Z"
}
Data and freshness
Index is rebuilt after each weekly full scan (14,652 resources, 1,971 hosts, 13,146 payable as of 13 September 2026). Prices come from a sweep of the 402 challenges (10,958 endpoints priced, median 0.01 USDC, 16 September 2026). A per endpoint sample with a GET only re-probe outcome per row is published under CC BY 4.0: https://x402.nsgoods.org/proof/payability-sample-2026-09-13.json
Resources that are no longer in the latest full CDP Bazaar scan are re-probed weekly in a separate reprobe scan: only non-PAYABLE rows, oldest first, up to 1,500 per week. Those rows keep in_latest_scan=false and carry their own last_checked_at and verdict_since; the latest full scan numbers (catalogue_stats, /health) do not include them.
Run your own
python -m venv venv && venv/bin/pip install -r requirements.txt
Put your own scans.jsonl (one JSON line per probe, see build_index.py for the fields) next to the scripts, then:
venv/bin/python build_index.py
venv/bin/python server.py # listens on 127.0.0.1:4036, path /mcp
Docker:
docker build -t nsgoods-workbench-mcp . && docker run -p 4036:4036 nsgoods-workbench-mcp
Docker image is untested (built without a Docker host). Set WORKBENCH_HOST=0.0.0.0 inside containers. Feedback welcome.
Environment variables:
| var | default | meaning |
|---|---|---|
| WORKBENCH_DIR | . | base directory for the index and data files |
| WORKBENCH_DATA_DIR | WORKBENCH_DIR | directory for scans.jsonl and watch state |
| WORKBENCH_HOST | 127.0.0.1 | bind address |
The server creates an empty index on first run if none is present, so tools/list works before you load any data.
Privacy and logging
This server needs no wallet and no sign in. It keeps a minimal record of tool usage so we can operate and rate limit the service.
- Per tool call we store: timestamp, tool name, the names and lengths of the arguments, and ip_h, a daily keyed hash of the caller IP. We do not store argument values, and we do not store the raw IP or the MCP session id.
- When a client connects we store: timestamp, ip_h, user agent, the client name and version it reports, and the protocol version it requests. When a request to /mcp fails we store: timestamp, ip_h, user agent, HTTP method and status, the JSON-RPC method name, whether a session id was sent, the MCP-Protocol-Version, Accept and Content-Type headers, and the first 160 characters of the error. Never params or arguments.
- ip_h is HMAC-SHA256(daily_secret, ip) truncated to 16 hex characters. The secret is random, held only in memory, replaced at each UTC day change and never written down, so after the day ends the hash cannot be linked back to an IP.
- The same ip_h drives the free limit of 300 tool calls per caller per day. If the server restarts during a UTC day, a new secret is generated, so the counter restarts for everyone for the rest of that day.
- Records are deleted after 30 days. Records written before 26 September 2026 used a fuller format (caller IP, session id and the first 80 characters of each argument); they are deleted on the same schedule, the last of them by 26 October 2026.
The current field lists and retention are also reported live at GET /health under tool_log and client_log.
Verification
Signed nsgoods responses use EIP-191 over canonical JSON (sorted keys, compact separators, ASCII escaped, signature and signed_by removed before hashing). The verify_signature tool checks the recovered address against the signers in https://x402.nsgoods.org/proof/index.json
Verifying what runs. python3 scripts/pin_verify_signature.py server.py prints the line range, byte range and sha256 of the verify_signature function body (def to end, decorators excluded, LF line endings, no trailing newline) and the sha256 of the whole file. A matching hash is repo evidence only: it shows that the published source is the one described. It is not deployment evidence. The stronger evidence for what the server runs is behavioural: calling the live tools and checking that the results match what this source produces.
Links
Landing https://mcp.nsgoods.org/ · Hub https://x402.nsgoods.org · MCP section https://x402.nsgoods.org/#mcp Weekly report https://x402.nsgoods.org/proof/payability-report-2026-09-13.html Methodology https://x402.nsgoods.org/ata-audit/payability_index.json (method field)
MIT license.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.