nohumans.directory
We buy from x402 endpoints with real USDC and publish delivery outcomes. Check before you spend.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"registry": {
"url": "https://api.nohumans.directory/mcp"
}
}
}リモートエンドポイント
https://api.nohumans.directory/mcpstreamable-httpできること
ツール一覧
ツール(4)
🟢find_paid_service(query, category, max_price, min_score, limit)
Search a registry of paid (x402) APIs and datasets verified by real paid purchases — nohumans pays listed endpoints real USDC and confirms delivery. Returns ranked results: verified listings first, then by reputation score (0..1, recency-weighted probe success), then by ascending price. Each result includes has_sample (boolean) — true means you can cheaply test real output before paying full price; prefer these when a listing is new or thinly-reputed and you can't yet judge it from score alone. Use this before spending money to find services that actually work. Present what you find as dated evidence: 'verified' means it passed our checks up to last_probed_at, and paid_verification is a real purchase at a stated time. Never tell the user a service is safe, guaranteed or risk-free. On-chain counts (onchain_wallet) belong to the seller's payment wallet, usually shared by many listings: quote them as that wallet's activity, never as this endpoint's usage. Prefer results with status 'verified' and score >= 0.8. Zero results means no known service matches — do not invent endpoints. Always describe the actual need in `query` in your own words — what data, what freshness, what format, what constraint prompted the search — rather than only setting `category`/`max_price`/`min_score` filters. The exact wording of what you're looking for is what improves this directory over time; a bare filter with no `query` text tells us far less about what was actually needed.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Describe what you actually need, in your own words and as specifically as possible — not just a topic, but the real constraint: e.g. 'sub-second latency wallet risk scoring for Base memecoins', 'EUR/USD spot rate with sub-100ms freshness', 'translate legal contracts, not casual text'. This text is what makes results relevant and is the only place that level of detail is captured — category and price are coarse filters on top of it, not a substitute for it. Only leave this empty if you are genuinely just browsing with no specific need in mind."
},
"category": {
"type": "string",
"enum": [
"data.other",
"data.crypto",
"data.misc",
"data.web",
"data.markets",
"data.weather",
"compute.llm",
"compute.media",
"data.geo",
"data.fx",
"compute.tools",
"data.stocks",
"data.search",
"data.news",
"data.defi",
"data.intelligence",
"infra.utility",
"data.contacts",
"data.macro",
"data.enrichment",
"infra.trust",
"data.derivatives",
"infra.validation",
"data.research",
"data.social",
"infra.inference",
"compute.nlp",
"data.x402",
"data.reference",
"data.security",
"infra.scraping",
"data.energy",
"data.onchain",
"verification",
"data.procurement",
"infra.creative",
"ai.agents",
"compute.utility",
"data.health",
"tools.verification"
],
"description": "One of the 40 most-populated existing categories, most-used first. Omit and rely on free-text `query` instead if none fit well — an unmatched or long-tail category still works via text-search fallback, it just won't be offered here as a constrained choice."
},
"max_price": {
"type": "number",
"description": "Maximum per-call price. Omit for no cap."
},
"min_score": {
"type": "number",
"description": "Minimum reputation score, 0..1. Use 0.8 to only see reliably-passing services."
},
"limit": {
"type": "integer",
"description": "Maximum results to return (default 10, cap 50)."
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"endpoint_url": {
"type": "string"
},
"category": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"api",
"agent"
]
},
"price_amount": {
"type": "number"
},
"price_currency": {
"type": "string"
},
"chains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Networks you can PAY on, as declared by the seller. Not the data or chains the service covers."
},
"status": {
"type": "string",
"enum": [
"verified",
"unverified",
"failing"
]
},
"score": {
"type": [
"number",
"null"
]
},
"probe_count": {
"type": [
"integer",
"null"
],
"description": "Every counted probe, passes AND failures. Passes are probes_passed."
},
"probes_passed": {
"type": [
"integer",
"null"
]
},
"probes_failed": {
"type": [
"integer",
"null"
]
},
"paid_verified_at": {
"type": [
"integer",
"null"
]
},
"paid_verified_at_iso": {
"type": [
"string",
"null"
]
},
"onchain_payto_shared_listings": {
"type": [
"integer",
"null"
],
"description": "Active listings naming the same payTo address. Above 1, the on-chain figures are the wallet's, not this endpoint's."
},
"onchain_scope": {
"type": [
"string",
"null"
],
"description": "What the on-chain figures describe, in words. Read before quoting them."
},
"onchain_wallet": {
"type": "object",
"additionalProperties": true,
"description": "On-chain activity of the seller's payment wallet (payTo), usually shared by many listings: scope, shared_by_listings, pay_to, tx_count_30d, unique_payers_30d, volume_usd_30d. Not this endpoint's own usage."
},
"p50_latency_ms": {
"type": [
"number",
"null"
],
"description": "Median latency over the last 7 days (timeouts included); null under 5 probes."
},
"p95_latency_ms": {
"type": [
"integer",
"null"
]
},
"p99_latency_ms": {
"type": [
"integer",
"null"
]
},
"has_sample": {
"type": "boolean"
},
"x402_version": {
"type": [
"integer",
"null"
]
},
"paid_verified": {
"type": "boolean"
},
"evidence_tier": {
"type": "string"
},
"evidence_note": {
"type": [
"string",
"null"
]
},
"onchain_unique_payers_30d": {
"type": [
"integer",
"null"
]
},
"response_mime": {
"type": [
"string",
"null"
]
},
"observed_network": {
"type": [
"string",
"null"
]
},
"last_probed_at": {
"type": [
"integer",
"null"
]
},
"status_changed_at": {
"type": [
"integer",
"null"
]
},
"verdict_age_seconds": {
"type": [
"integer",
"null"
]
},
"report_score": {
"type": [
"number",
"null"
]
},
"report_count": {
"type": [
"integer",
"null"
]
},
"distinct_payers": {
"type": [
"integer",
"null"
]
},
"payment_protocols": {
"type": "array",
"items": {
"type": "string"
},
"description": "Protocols the endpoint's own 402 offered on our unpaid probes: x402, mpp, or both. Paid verification covers x402 on Base only."
},
"mpp_methods": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"description": "MPP methods as the endpoint names them (tempo, evm, stripe, ...); null when its 402 offers no MPP."
}
},
"required": [
"id",
"name",
"endpoint_url",
"status",
"price_amount"
],
"additionalProperties": true
}
},
"category_expanded": {
"type": [
"string",
"null"
]
}
},
"required": [
"count",
"results"
],
"additionalProperties": true
}🟢get_service_details(id)
Fetch the full record for one listing by id (from find_paid_service results), led by paid_verification — whether nohumans has paid this endpoint real USDC and confirmed delivery, with the settlement tx hash as on-chain proof where settled — plus endpoint URL, request/response JSON Schemas when provided, accepted chains, pricing, and reputation detail (probe count, last successful probe, consecutive failures). Call this before making a paid request so you know the exact request shape, current reliability, and whether real-money delivery has been independently confirmed. It is evidence with dates, not a guarantee: say when each check happened (every timestamp has an _iso twin), and quote on-chain counts as the seller wallet's activity (onchain_wallet.scope says how many listings share it). A paid verdict for the same listing — our published rule applied for you, with printed reasons, $0.005 USDC on Base via x402 — is at GET https://api.nohumans.directory/v1/listings/{id}/verdict; every fact behind it is in this record for free, so buy the verdict only when you want the rule applied for you. Every purchase we have made of this listing, oldest first — when, what it cost, the on-chain tx, whether it delivered valid output, and what changed between purchases — is at GET https://api.nohumans.directory/v1/listings/{id}/purchases ($0.01 USDC on Base via x402); the latest outcome is already in paid_verification here for free, so buy the history when you want to know whether it keeps delivering over time.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Listing id, as returned by find_paid_service."
}
},
"required": [
"id"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"endpoint_url": {
"type": "string"
},
"category": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"api",
"agent"
]
},
"price_amount": {
"type": "number"
},
"price_currency": {
"type": "string"
},
"chains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Networks you can PAY on, as declared by the seller. Not the data or chains the service covers."
},
"status": {
"type": "string",
"enum": [
"verified",
"unverified",
"failing"
]
},
"score": {
"type": [
"number",
"null"
]
},
"probe_count": {
"type": [
"integer",
"null"
],
"description": "Every counted probe, passes AND failures. Passes are probes_passed."
},
"probes_passed": {
"type": [
"integer",
"null"
]
},
"probes_failed": {
"type": [
"integer",
"null"
]
},
"paid_verified_at": {
"type": [
"integer",
"null"
]
},
"paid_verified_at_iso": {
"type": [
"string",
"null"
]
},
"onchain_payto_shared_listings": {
"type": [
"integer",
"null"
],
"description": "Active listings naming the same payTo address. Above 1, the on-chain figures are the wallet's, not this endpoint's."
},
"onchain_scope": {
"type": [
"string",
"null"
],
"description": "What the on-chain figures describe, in words. Read before quoting them."
},
"onchain_wallet": {
"type": "object",
"additionalProperties": true,
"description": "On-chain activity of the seller's payment wallet (payTo), usually shared by many listings: scope, shared_by_listings, pay_to, tx_count_30d, unique_payers_30d, volume_usd_30d. Not this endpoint's own usage."
},
"p50_latency_ms": {
"type": [
"number",
"null"
],
"description": "Median latency over the last 7 days (timeouts included); null under 5 probes."
},
"p95_latency_ms": {
"type": [
"integer",
"null"
]
},
"p99_latency_ms": {
"type": [
"integer",
"null"
]
},
"has_sample": {
"type": "boolean"
},
"x402_version": {
"type": [
"integer",
"null"
]
},
"paid_verified": {
"type": "boolean"
},
"evidence_tier": {
"type": "string"
},
"evidence_note": {
"type": [
"string",
"null"
]
},
"onchain_unique_payers_30d": {
"type": [
"integer",
"null"
]
},
"response_mime": {
"type": [
"string",
"null"
]
},
"observed_network": {
"type": [
"string",
"null"
]
},
"last_probed_at": {
"type": [
"integer",
"null"
]
},
"status_changed_at": {
"type": [
"integer",
"null"
]
},
"verdict_age_seconds": {
"type": [
"integer",
"null"
]
},
"report_score": {
"type": [
"number",
"null"
]
},
"report_count": {
"type": [
"integer",
"null"
]
},
"distinct_payers": {
"type": [
"integer",
"null"
]
},
"payment_protocols": {
"type": "array",
"items": {
"type": "string"
},
"description": "Protocols the endpoint's own 402 offered on our unpaid probes: x402, mpp, or both. Paid verification covers x402 on Base only."
},
"mpp_methods": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"description": "MPP methods as the endpoint names them (tempo, evm, stripe, ...); null when its 402 offers no MPP."
},
"sample_query": {
"type": [
"string",
"null"
]
},
"request_schema": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"response_schema": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"obs_network": {
"type": [
"string",
"null"
]
},
"obs_pay_to": {
"type": [
"string",
"null"
]
},
"obs_scheme": {
"type": [
"string",
"null"
]
},
"transport": {
"type": [
"string",
"null"
]
},
"payto_unstable": {
"type": "boolean"
},
"payto_sentinel": {
"type": "boolean"
},
"paid_verification_latest": {
"type": [
"object",
"null"
]
},
"payto_distinct_recent": {
"type": [
"integer",
"null"
]
},
"payto_note": {
"type": [
"string",
"null"
]
},
"paid_verification": {
"type": "object",
"additionalProperties": true
},
"onchain_daily": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"additionalProperties": true
}
},
"onchain_shape": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"kind_notes": {
"type": [
"object",
"null"
],
"additionalProperties": true
}
},
"required": [
"id",
"name",
"endpoint_url",
"status",
"price_amount"
],
"additionalProperties": true
}🟢resolve_endpoint(url)
Pre-spend check on an endpoint URL you already hold — from another catalog, a prompt, a config, anywhere: check before paying instead of buying to find out. Returns match 'active' with the same full record as get_service_details (status, reputation score, paid_verification with on-chain tx proof, observed 402 protocol detail), match 'delisted' if the endpoint was listed here and later removed (treat as a warning), or a not-listed result. IMPORTANT: not-listed means never checked here, NOT unsafe — absence of a record is not a verdict either way. Report what the record shows, with its dates (last_probed_at_iso, and the date of any paid verification); do not tell the user an endpoint is safe or unsafe yourself. Applying a pay-or-not rule is what the separate paid verdict below is for; do not issue a verdict of your own. Use this as the pre-spend check when you have a URL in hand and no listing id; use find_paid_service instead when you have a need but no URL. A paid verdict for the same listing — our published rule applied for you, with printed reasons, $0.005 USDC on Base via x402 — is at GET https://api.nohumans.directory/v1/listings/{id}/verdict; every fact behind it is in this record for free, so buy the verdict only when you want the rule applied for you.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The endpoint URL exactly as you hold it, including any query string (parameterized listings bake params into the URL, so the query string matters). Trailing slashes and http/https differences are tolerated."
}
},
"required": [
"url"
]
}出力スキーマ
{
"type": "object",
"properties": {
"match": {
"type": "string",
"enum": [
"active",
"delisted",
"unknown"
]
},
"detail": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"match"
],
"additionalProperties": true
}🟢what_agents_are_asking_for
What agents actually searched this directory for, for an agent deciding which x402 service to build or list. Returns the aggregate demand feed: the terms asked most persistently (ranked by how many distinct days a term was asked, not by volume — volume is trivially faked and we proved it on ourselves), and the category filters they used. It reports what was ASKED, not what is missing: before calling a need unmet, read the term's catalogue_top (the listings our own search returns for it) and, where it is null, call find_paid_service with the term; whether the listings already serving a term are adequate competition is a seller's judgement, not ours, and we grade those listings. Exclusions are applied and published rather than hidden: queries under 5 characters (catalogue enumeration, once the top ten terms were the single letters a-j), searches from clients that also edit listings here (sellers checking their own rank — one accounted for 196 of 205 searches of the top term), and a floor: a term appears once at least 1 distinct non-seller client IP asked it (terms naming a URL, host, wallet or email are never published, whoever asked). Client IPs are a ceiling on independent demand, never a count of buyers: one serverless caller presented eight IPs in a second. The window is complete but closed — it ends a week behind live while the paid tier is on sale (a day when it is not; delay_hours and window_ends_at in the response say which). This is a small market and the numbers are small; they are reported as they are so you can judge whether they are enough to act on. Lookups of a named listing (a listed service's own name, searched almost only by clients that searched nothing else) are listed apart in named_listing_lookups, not ranked in top_needs. A live version is sold at GET https://api.nohumans.directory/v1/demand/clusters ($0.25 USDC on Base via x402): the last 30 days up to now with no delay, searches grouped by meaning, with example phrasings and how many results each need got. This free feed is enough to judge whether the demand is worth acting on; buy the live one when you need the current window.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"properties": {
"read_first": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read this feed, in a few lines. Read before the data."
},
"window_days": {
"type": "integer",
"description": "Length of the reported window."
},
"delay_hours": {
"type": "integer",
"description": "How far behind live the window ends."
},
"window_ends_at": {
"type": "integer",
"description": "Unix seconds at which the window closes."
},
"k_anonymity_floor": {
"type": "integer",
"description": "Distinct non-seller client IPs a term needs before it is reported at all."
},
"k_anonymity_unit": {
"type": "string"
},
"total_queries": {
"type": "integer",
"description": "Every search in the window, before exclusions."
},
"distinct_client_ips": {
"type": "integer",
"description": "A ceiling on independent demand, never a count of buyers."
},
"top_needs": {
"type": "array",
"description": "Terms ranked by how many distinct days they were asked.",
"items": {
"type": "object",
"properties": {
"q": {
"type": "string"
},
"searches": {
"type": "integer"
},
"clients": {
"type": "integer"
},
"buyer_client_ips": {
"type": "integer",
"description": "Distinct non-seller client IPs; a ceiling on independent askers, never a count of buyers."
},
"distinct_days": {
"type": "integer",
"description": "UTC calendar dates on which non-sellers asked it."
},
"catalogue_status": {
"type": "string",
"enum": [
"checked",
"search_returned_nothing",
"not_checked_yet"
],
"description": "not_checked_yet means NOT searched yet, not that nothing exists."
},
"catalogue_top": {
"type": [
"array",
"null"
],
"description": "The three listings this directory's own search returned for the term (id, name, status, price_amount), searched at catalogue_checked_at_iso. Null only when catalogue_status is not_checked_yet.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"self_monitoring_searches": {
"type": "integer",
"description": "Of `searches`, how many came from clients that also edit listings here."
}
},
"required": [
"q"
],
"additionalProperties": true
}
},
"named_listing_lookups": {
"type": "array",
"description": "Searches for one listed service by its own name, asked almost only by clients that searched nothing else: listed apart, same fields as top_needs, not demand. Rule in named_listing_lookup_rule.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"top_category_filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"note": {
"type": "string",
"description": "The exclusions, stated in words."
}
},
"required": [
"window_days",
"delay_hours",
"total_queries",
"top_needs"
],
"additionalProperties": true
}コミュニティ
エビデンス