Nsgoods Workbench Mcp

org.nsgoodsPublished by nsgoods.orgOfficial publisherv1.0.0Updated Oct 24, 2026

Read only x402 catalogue: payability verdicts, prices, drift, host status, signatures. No wallet.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingFinanceData & Analytics

Overview

AI-generated overview

Read-only index of a weekly x402 catalogue scan: lets an assistant look up payability verdicts, prices, host status, drift and signed-response verification.

What you can do
  • Search the catalogue by host or URL substring, with latest verdict and observed price per endpoint
  • Look up the payability verdict, remediation hint and per-network options for one exact resource URL
  • Read catalogue-wide statistics, per-host summaries and verdict drift between scans
  • Check x401 emitter adoption and list published weekly payability reports
  • Verify a signed nsgoods response offline against the published manifest signers
When to use it
Useful when an assistant needs to judge whether an x402 endpoint is payable and what it costs before deciding to call or pay it, or to check which hosts have disappeared and how verdicts changed between weekly scans. It is an index of point-in-time scan data, not a live check.
Requirements
Remote Streamable HTTP endpoint at mcp.nsgoods.org; no sign in, wallet or API key. Free limit of 300 tool calls per caller IP per day. Self-hosting is possible with Python and the provided scripts, or an untested Docker image, configured through WORKBENCH_DIR, WORKBENCH_DATA_DIR and WORKBENCH_HOST.
Before you install
Data is point in time from the last full scan, so confirm a live endpoint before paying; the README points to a separate paid oracle for that. The service logs tool usage: timestamp, tool name, argument names and lengths, and a daily keyed hash of the caller IP, plus client metadata and error details, kept 30 days. No payments are handled here.

Installation

In SourceWeft

  1. Open Nsgoods Workbench Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/org.nsgoods%2Fnsgoods-workbench-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nsgoods-workbench": {
      "type": "http",
      "url": "https://mcp.nsgoods.org/mcp"
    }
  }
}

README

[nsgoods]

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.

[endpoint] [MCP Registry] [Smithery] [MIT] [M8ven]

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)

  1. Settings, then Connectors, then Add custom connector
  2. Name: nsgoods. URL: https://mcp.nsgoods.org/mcp. No sign in.
  3. New conversation, then ask for example: Using nsgoods, find the cheapest payable endpoint for sanctions screening on Base

Cursor: add to mcp.json

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

toolwhat it answers
find_endpointssearch the catalogue by host or keyword, with the latest verdict and the observed price per endpoint, optional sort by price
payability_verdictverdict, history, remediation hint and price for one exact URL
catalogue_statssize of the catalogue, verdict counts, payable endpoints per network, median price
host_summaryper host verdict mix, first and last seen, gone since
drift_statusverdict changes between scans
x401_statuscurrent x401 emitter count
verify_signatureverify any nsgoods signed response offline against our manifest
reportslinks 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:

json
{  "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.pyvenv/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:

vardefaultmeaning
WORKBENCH_DIR.base directory for the index and data files
WORKBENCH_DATA_DIRWORKBENCH_DIRdirectory for scans.jsonl and watch state
WORKBENCH_HOST127.0.0.1bind 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.

Source: README.md at commit 1b3d52e

Tools

8

payability_verdict

Payability verdict

Latest payability observation for one exact resource URL (path and query included), with the meaning of the verdict, remediation if it cannot be paid, and the per-network options seen. last_checked_at is the currency claim: the last time any scan or reprobe looked at this resource. in_latest_scan means only that the resource was in the latest full scan; a row reprobed the same day can carry in_latest_scan=false and still be current. verdict_since is when the current verdict was first observed in the unbroken run that leads to it. A scan that did not contain the resource does not break the run, so verdict_since can span weeks nobody measured. How current a row is comes from last_checked_at and in_latest_scan, not from verdict_since alone.

Parametersurlrequired

find_endpoints

Find endpoints

Search the catalogue by host or URL substring. Returns up to `limit` endpoints (max 50) with their latest verdict, plus the total match count. Use this first when you do not know the exact resource URL. Rows with in_latest_scan=false were not in the latest full scan; read last_checked_at for when they were last probed. Optional network filter (for example eip155:8453 or solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp) and sort=price for the cheapest first. last_checked_at is the currency claim: the last time any scan or reprobe looked at this resource. in_latest_scan means only that the resource was in the latest full scan; a row reprobed the same day can carry in_latest_scan=false and still be current. verdict_since is when the current verdict was first observed in the unbroken run that leads to it. A scan that did not contain the resource does not break the run, so verdict_since can span weeks nobody measured. How current a row is comes from last_checked_at and in_latest_scan, not from verdict_since alone.

Parameterssortlimitqueryrequirednetwork

catalogue_stats

Catalogue stats

Size and health of the x402 catalogue as of the latest full scan: resources, hosts, verdict counts, and payable endpoints per network.

Takes no parameters.

host_summary

Host summary

Summary for a host (no time series): first/last seen, current verdict mix, n_resources, total verdict changes, gone_since if absent from the latest full scan, and a small resources_sample. Sample rows with in_latest_scan=false were not in the latest full scan; read last_checked_at for when they were last probed. n_resources counts every resource ever seen for this host; current_verdict_mix and n_payable_last_full count only the latest full scan. last_checked_at is the currency claim: the last time any scan or reprobe looked at this resource. in_latest_scan means only that the resource was in the latest full scan; a row reprobed the same day can carry in_latest_scan=false and still be current. verdict_since is when the current verdict was first observed in the unbroken run that leads to it. A scan that did not contain the resource does not break the run, so verdict_since can span weeks nobody measured. How current a row is comes from last_checked_at and in_latest_scan, not from verdict_since alone.

Parametershostrequired

x401_status

x401 status

Current x401 emitter adoption across the scanned catalogue (from the daily watcher).

Takes no parameters.

drift_status

Drift status

Verdict changes between the two latest full scans (catalogue wide, or for one host), plus the declared model drift watch.

Parametershost

verify_signature

Verify signature

Offline EIP-191 verify of a signed nsgoods response. Identifies the service from the manifest (or the optional `service` arg), strips exactly that service's post-sign fields, canonicalises (JCS, both ASCII modes), recovers the signer and checks it against the published manifest signers. Reproduction-attestation (JCS/byte-length) and envelope (signer/signature, components) shapes are reported as unsupported_shape, not verified here. Refusals carry a distinct status: malformed_signature (signature is not a 65-byte 0x-prefixed hex string), schema_rejected (the body carries a signed_by/signature pair but fails the required field shape for every service the claimed signer covers; recovery was not attempted, checked is false, reasons lists the failed candidates), signature_mismatch (well-formed but recovers a different address than signed_by under every candidate service recipe of this signer), no_flat_recipe (signed_by is a manifest signer but every service it covers uses an envelope shape, so there is no flat recipe to check; recovery was not attempted, checked is false), unknown_signer (signed_by is not a manifest signer; recovery was not attempted, checked is false), unsupported_shape, or the no-signed_by/signature-pair case. checked is true only when EIP-191 recovery actually ran; every other refusal reports checked false.

Parametersserviceresponse_jsonrequired

reports

Weekly reports

Published weekly payability reports (from the signed manifest).

Takes no parameters.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Nsgoods integrations