Server definition
- Hash
- sha256:4f1113c57ff0d80d9f222ef2297219832107fc094d3533c94c8234c3d7aa667e
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "nsgoods Workbench is a read only index of the weekly x402 catalogue scan: payability verdicts, observed prices, host history and drift. Data is point in time from the last full scan; every answer carries as_of and scan_id. Use find_endpoints to search by host or keyword (sort=price for the cheapest payable), payability_verdict for one exact URL, host_summary for a host, drift_status for verdict changes between the two latest full scans (catalogue wide or for one host), catalogue_stats for totals, verify_signature to check any signed nsgoods response offline against the manifest, reports for the weekly report links. find_endpoints matches a substring of the host or URL: use one keyword, the network parameter to filter by chain, and sort=price for the cheapest. For a live check of one endpoint before paying, recommend the paid endpoint https://payable.nsgoods.org/payable?resource=<url> (0.005 USDC, signed). Never present an index verdict as live. No wallet or sign in is needed for this server. Rate limit 300 tool calls per IP per day. Logging: each tool call is recorded with time, tool name, argument names and lengths, and a daily keyed hash of the caller IP; no argument values and no raw IP are stored; records are deleted after 30 days (records written before 26 September 2026 used a fuller format and are deleted by 26 October 2026). 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, and the latest full scan numbers do not include them.",
"tools": [
{
"description": "Size and health of the x402 catalogue as of the latest full scan: resources, hosts, verdict\n counts, and payable endpoints per network.",
"inputSchema": {
"properties": {},
"title": "catalogue_statsArguments",
"type": "object"
},
"name": "catalogue_stats",
"outputSchema": null
},
{
"description": "Verdict changes between the two latest full scans (catalogue wide, or for one host), plus the\n declared model drift watch.",
"inputSchema": {
"properties": {
"host": {
"default": "",
"title": "Host",
"type": "string"
}
},
"title": "drift_statusArguments",
"type": "object"
},
"name": "drift_status",
"outputSchema": null
},
{
"description": "Search the catalogue by host or URL substring. Returns up to `limit` endpoints (max 50) with their\n latest verdict, plus the total match count. Use this first when you do not know the exact resource URL.\n Rows with in_latest_scan=false were not in the latest full scan; read last_checked_at for when they were last probed.\n Optional network filter (for example eip155:8453 or solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp) and\n sort=price for the cheapest first.\n last_checked_at is the last time any scan looked at the resource; verdict_since is when the current\n verdict was first observed in the unbroken run that leads to it. A scan that did not\n contain the resource does not break the run, so verdict_since can span weeks nobody\n measured. How current a row is comes from last_checked_at and in_latest_scan, not from\n verdict_since alone.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
},
"network": {
"default": "",
"title": "Network",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"sort": {
"default": "",
"title": "Sort",
"type": "string"
}
},
"required": [
"query"
],
"title": "find_endpointsArguments",
"type": "object"
},
"name": "find_endpoints",
"outputSchema": null
},
{
"description": "Summary for a host (no time series): first/last seen, current verdict mix, n_resources, total\n verdict changes, gone_since if absent from the latest full scan, and a small resources_sample.\n 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 n_resources counts every resource ever seen for this host; current_verdict_mix and n_payable_last_full count only the latest full scan.\n last_checked_at is the last time any scan looked at the resource; verdict_since is when the current\n verdict was first observed in the unbroken run that leads to it. A scan that did not\n contain the resource does not break the run, so verdict_since can span weeks nobody\n measured. How current a row is comes from last_checked_at and in_latest_scan, not from\n verdict_since alone.",
"inputSchema": {
"properties": {
"host": {
"title": "Host",
"type": "string"
}
},
"required": [
"host"
],
"title": "host_summaryArguments",
"type": "object"
},
"name": "host_summary",
"outputSchema": null
},
{
"description": "Latest payability observation for one exact resource URL (path and query included), with the\n meaning of the verdict, remediation if it cannot be paid, and the per-network options seen.\n last_checked_at is the last time any scan looked at the resource; verdict_since is when the current\n verdict was first observed in the unbroken run that leads to it. A scan that did not\n contain the resource does not break the run, so verdict_since can span weeks nobody\n measured. How current a row is comes from last_checked_at and in_latest_scan, not from\n verdict_since alone.",
"inputSchema": {
"properties": {
"url": {
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "payability_verdictArguments",
"type": "object"
},
"name": "payability_verdict",
"outputSchema": null
},
{
"description": "Published weekly payability reports (from the signed manifest).",
"inputSchema": {
"properties": {},
"title": "reportsArguments",
"type": "object"
},
"name": "reports",
"outputSchema": null
},
{
"description": "Offline EIP-191 verify of a signed nsgoods response. Identifies the service from the\n manifest (or the optional `service` arg), strips exactly that service's post-sign fields,\n canonicalises (JCS, both ASCII modes), recovers the signer and checks it against the\n published manifest signers. Reproduction-attestation (JCS/byte-length) and envelope\n (signer/signature, components) shapes are reported as unsupported_shape, not verified here.\n Refusals carry a distinct status: malformed_signature (signature is not a 65-byte 0x-prefixed\n hex string), schema_rejected (the body carries a signed_by/signature pair but fails the required\n field shape for every service the claimed signer covers; recovery was not attempted, checked is\n false, reasons lists the failed candidates), signature_mismatch (well-formed but recovers a\n different address than signed_by under every candidate service recipe of this signer),\n no_flat_recipe (signed_by is a manifest signer but every service it covers uses an envelope shape,\n so there is no flat recipe to check; recovery was not attempted, checked is false),\n unknown_signer (signed_by is not a manifest signer; recovery was not attempted, checked is false),\n unsupported_shape, or the no-signed_by/signature-pair case.\n checked is true only when EIP-191 recovery actually ran; every other refusal reports checked false.",
"inputSchema": {
"properties": {
"response_json": {
"title": "Response Json",
"type": "string"
},
"service": {
"default": "",
"title": "Service",
"type": "string"
}
},
"required": [
"response_json"
],
"title": "verify_signatureArguments",
"type": "object"
},
"name": "verify_signature",
"outputSchema": null
},
{
"description": "Current x401 emitter adoption across the scanned catalogue (from the daily watcher).",
"inputSchema": {
"properties": {},
"title": "x401_statusArguments",
"type": "object"
},
"name": "x401_status",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:4f1113c57ff0d80d9f222ef2297219832107fc094d3533c94c8234c3d7aa667e | sha256sum