Nsgoods Workbench Mcp

org.nsgoods由 nsgoods.org 發布官方發布者v1.0.0更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取金融資料與分析

概覽

AI 產生的概覽

每週 x402 目錄掃描的唯讀索引,讓助理查詢可支付性判定、價格、主機狀態、漂移以及簽章回應驗證。

可以做什麼
  • 依主機或 URL 子字串搜尋目錄,回傳每個端點的最新判定與觀測價格
  • 查詢某個精確資源 URL 的可支付性判定、修復提示及各網路選項
  • 讀取目錄整體統計、單一主機摘要,以及兩次掃描之間的判定漂移
  • 查看 x401 發送方採用情況,並列出已發佈的每週可支付性報告
  • 離線驗證 nsgoods 簽章回應是否與已發佈清單中的簽署者一致
適用情境
適合在助理決定是否呼叫或支付某個 x402 端點之前,判斷它是否可支付及價格;也適合查看哪些主機已消失、判定在每週掃描間如何變化。它是某一時點的掃描索引,並非即時檢查。
執行需求
遠端 Streamable HTTP 端點 mcp.nsgoods.org,無需登入、錢包或 API 金鑰。每個呼叫方 IP 每天免費 300 次工具呼叫。也可用 Python 腳本或未經測試的 Docker 映像自行架設,透過 WORKBENCH_DIR、WORKBENCH_DATA_DIR 和 WORKBENCH_HOST 設定。
安裝前請注意
資料來自最近一次完整掃描,屬某一時點結果,付款前應另行確認端點是否仍可用;README 指向另一個付費預言機做即時檢查。服務會記錄工具使用情形:時間戳、工具名稱、參數名稱與長度、呼叫方 IP 的每日金鑰雜湊,以及用戶端中繼資料和錯誤詳情,保留 30 天。本服務不處理任何付款。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Nsgoods Workbench Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/org.nsgoods%2Fnsgoods-workbench-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "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.

來源:README.md,提交 1b3d52e

工具

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.

輸入參數url必填

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.

輸入參數sortlimitquery必填network

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.

無需輸入參數。

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.

輸入參數host必填

x401_status

x401 status

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

無需輸入參數。

drift_status

Drift status

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

輸入參數host

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.

輸入參數serviceresponse_json必填

reports

Weekly reports

Published weekly payability reports (from the signed manifest).

無需輸入參數。

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Nsgoods 整合