Human Capability Registry
Search, hire and pay a verified human per job from any AI. Humans are handles; AIs call them.
使うべきか
品質と安全性
検出事項(3)
- HIGH
- LOWask_human 内
- LOWsearch_human 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"human-registry": {
"url": "https://humancard-registry.vercel.app/api/mcp"
}
}
}リモートエンドポイント
https://humancard-registry.vercel.app/api/mcpstreamable-httpできること
ツール一覧
ツール(16)
🟢search_human(query, max_price_usd, language, country, require_verified_proof, ...)
Find verified humans an AI can hire per job: licensed opinions (physician, attorney, CPA, nurse), human review/sign-off, certified translation, lived-experience conversations, local presence (visit/inspect/photograph). Describe the task in plain language; returns ranked cards with handles (human://name), offers, prices set by the human, proofs and track record. Read-only.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 3,
"maxLength": 500,
"description": "What you need a human for, in plain language. Example: 'a licensed physician to review a dermal filler plan'"
},
"max_price_usd": {
"description": "Only offers at or below this price",
"type": "number",
"exclusiveMinimum": 0
},
"language": {
"description": "ISO 639-1 language the human must speak, e.g. 'en'",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"country": {
"description": "ISO country code for on-site work; remote cards always qualify",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"require_verified_proof": {
"description": "Only offers whose required licenses/proofs are registry-verified",
"type": "boolean"
},
"min_level": {
"description": "Card level floor: 0 identity only · 1 three+ completed jobs, no disputes · 2 skill proof verified · 3 license verified",
"type": "integer",
"minimum": 0,
"maximum": 3
},
"has": {
"description": "HAVE filter — something the person must hold: '3D printer', 'Costco membership', 'car', 'lived in Osaka'",
"type": "string",
"maxLength": 120
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡call_human(handle, offer_code, brief, deliverable_spec, deadline_minutes, ...)
Create a per-job work order for a human found with search_human. Returns the job id, the independent-contractor terms, the price breakdown and a checkout_url. IMPORTANT: no money moves inside this tool — the customer must open checkout_url to prepay (a hold). Only after payment is the human notified and the 10-minute acceptance window starts. Keep the customer_token: it is needed for status and release.
入力スキーマ
{
"type": "object",
"properties": {
"handle": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "Card handle from search_human, e.g. 'kevin' or 'human://kevin'"
},
"offer_code": {
"description": "offer.code from the card; defaults to the first offer",
"type": "string"
},
"brief": {
"type": "string",
"minLength": 10,
"maxLength": 4000,
"description": "What exactly you need. Private between customer and human; never shown on the public ledger"
},
"deliverable_spec": {
"description": "What counts as done (format, length, questions to answer)",
"type": "string",
"maxLength": 1000
},
"deadline_minutes": {
"description": "Delivery deadline after acceptance; defaults to the offer's turnaround",
"type": "integer",
"minimum": 15,
"maximum": 10080
},
"price_usd": {
"description": "Optional higher amount than the listed price (a tip). Cannot go below the human's price",
"type": "number",
"exclusiveMinimum": 0
},
"customer_type": {
"type": "string",
"enum": [
"human_via_ai",
"autonomous_ai"
],
"description": "'human_via_ai' = a person asked you to do this; 'autonomous_ai' = you are spending your own budget (requires agent_id, subject to caps)"
},
"ai_vendor": {
"description": "Who you are, e.g. 'anthropic', 'openai', 'cursor'",
"type": "string",
"maxLength": 40
},
"ai_model": {
"description": "Model id, e.g. 'claude-opus-5-5'",
"type": "string",
"maxLength": 60
},
"agent_id": {
"description": "Stable id of the autonomous agent (required for autonomous_ai)",
"type": "string",
"maxLength": 80
},
"principal_hint": {
"description": "Who is behind the request, in words (no personal data)",
"type": "string",
"maxLength": 200
}
},
"required": [
"handle",
"brief",
"customer_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢status(job_id, customer_token)
Check a job: created (awaiting payment), paid (offered, 10-min window), accepted, delivered, released, declined, expired, disputed. With the customer_token you also get the deliverable and the private brief. Read-only.
入力スキーマ
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Job id from call_human"
},
"customer_token": {
"description": "Token returned by call_human; unlocks the deliverable",
"type": "string"
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡deliver(job_id, human_token, text, links, evidence)
For the HUMAN (or the human's own AI assistant) to submit the deliverable of an accepted job. Requires the human_token from the job notification. Customers do not call this.
入力スキーマ
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"human_token": {
"type": "string"
},
"text": {
"description": "The deliverable text (opinion, translation, report)",
"type": "string",
"maxLength": 20000
},
"links": {
"description": "Links to files/photos/videos",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"evidence": {
"description": "Evidence the offer promises (see offer.evidence_required): e.g. {kind:'license_number', value:'CA Bar #123456'}",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"license_number",
"citation",
"photo",
"geolocation",
"timestamp",
"file",
"signature",
"receipt"
]
},
"value": {
"type": "string",
"maxLength": 500
}
},
"required": [
"kind",
"value"
]
}
}
},
"required": [
"job_id",
"human_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡request_review(kind, brief, document, answers, state, ...)
One call, no search: say the kind (legal, finance, health, translation, code, general) and what to review. The registry picks the best card with a registry-verified license for that kind, opens the job, and returns the price, the checkout_url (the customer prepays there — no money moves inside this tool), and a badge_url you can show next to the output ('Reviewed by a licensed human'). Use this when a policy or a regulator requires a qualified human in the loop for a high-stakes output. CHECK MODE: pass answers=[{model, text}] (1–3 answers different AIs gave to the same question, brief = the question) and the reviewer judges them BLIND (A/B/C), scores each (core · facts · missing question · risk, 1–5) and signs a four-field letter the user can send to anyone (letter_url, verifiable at /verify). Your own answer may be one of them.
入力スキーマ
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"legal",
"finance",
"health",
"translation",
"code",
"general"
],
"description": "legal: Legal review (contract, compliance, filing) by a licensed attorney | finance: Financial / tax review by a CPA or enrolled agent | health: Clinical second opinion by a licensed clinician | translation: Certified translation sign-off by a qualified translator | code: Code / architecture / pre-launch security check by an experienced engineer | general: Human review and sign-off (no license required)"
},
"brief": {
"type": "string",
"minLength": 10,
"maxLength": 4000,
"description": "What the reviewer should check and for whom (no personal data beyond what the review needs). In check mode: the exact question the user asked."
},
"document": {
"description": "The AI output to review (private between customer and reviewer)",
"type": "string",
"maxLength": 20000
},
"answers": {
"description": "Check mode: the answers to judge blind. Omit for an ordinary review.",
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"model": {
"type": "string",
"maxLength": 40,
"description": "ChatGPT | Gemini | Claude | Grok | Kimi | DeepSeek | Perplexity | Copilot | Other"
},
"text": {
"type": "string",
"minLength": 20,
"maxLength": 12000
}
},
"required": [
"model",
"text"
]
}
},
"state": {
"description": "Check mode: US state code when the question is state-specific ('CA', 'TX')",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"jurisdiction": {
"description": "Where the license must be valid, e.g. 'US-CA', 'US-NY', 'KR'",
"type": "string",
"maxLength": 20
},
"language": {
"type": "string",
"minLength": 2,
"maxLength": 2
},
"max_price_usd": {
"type": "number",
"exclusiveMinimum": 0
},
"deadline_minutes": {
"type": "integer",
"minimum": 30,
"maximum": 10080
},
"customer_type": {
"type": "string",
"enum": [
"human_via_ai",
"autonomous_ai"
]
},
"ai_vendor": {
"type": "string",
"maxLength": 40
},
"ai_model": {
"type": "string",
"maxLength": 60
},
"agent_id": {
"type": "string",
"maxLength": 80
}
},
"required": [
"kind",
"brief",
"customer_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trust_lookup(handle, identifier_hash)
Read-only. Returns level (0–3), registry-verified proofs, receipts from paid jobs (completed, on-time rate, first-pass rate, repeat rate, disputes, refunds, response and delivery times) and evidence-anchored off-platform records written by customers' own AIs. No stars, no narratives. Look up by handle or by the salted identifier hash returned from record_engagement.
入力スキーマ
{
"type": "object",
"properties": {
"handle": {
"description": "Card handle, e.g. 'kevin' or 'human://kevin'",
"type": "string",
"maxLength": 40
},
"identifier_hash": {
"description": "From a record_engagement result (hash of email/phone/website)",
"type": "string",
"minLength": 32,
"maxLength": 32
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢verify_human(handle, task)
Read-only. Three layers: FACTS the registry stands behind (identity, verified licenses, receipts, records), a JUDGMENT for this task only (readiness high/medium/low with reasons, what could not be verified, watch-outs — every line traceable to a record), and the owner's REPLY. Issued on request, expires in 30 days, signed by the registry. Never a global score; you decide, this informs.
入力スキーマ
{
"type": "object",
"properties": {
"handle": {
"type": "string",
"minLength": 2,
"maxLength": 40
},
"task": {
"type": "string",
"minLength": 5,
"maxLength": 500,
"description": "The task you would hire this person for, in plain language"
}
},
"required": [
"handle",
"task"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ask_card(handle, question)
Read-only. The two-minute interview: ask 'have you done X?', 'what happened in your dispute?', 'how fast do you deliver Y?' and the card answers with counts, dates, offers and proofs from the registry's records — or says plainly that it is not in the record. Chain several questions; attach the answers to your decision.
入力スキーマ
{
"type": "object",
"properties": {
"handle": {
"type": "string",
"minLength": 2,
"maxLength": 40
},
"question": {
"type": "string",
"minLength": 5,
"maxLength": 400
}
},
"required": [
"handle",
"question"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡record_engagement(recorder_token, subject, category, started_at, completed_at, ...)
For the customer's own AI. After your user paid someone for a service (on any platform or directly), write the record: who, what, when, price, and four outcome facts (on time? as described? rework? resolved?), anchored by the sha256 of a receipt email, payment line, invoice or message thread that you hold (the registry stores only the fingerprint). ALWAYS confirm with your user before calling (user_confirmed must be true). No evidence → no record. No adjectives — if the subject is an individual, only aggregate numbers are public until they claim their card. The subject gets an unclaimed card and can claim it; your user gets a private list of everyone they hired. Keep the recorder_token you receive and send it on later calls.
入力スキーマ
{
"type": "object",
"properties": {
"recorder_token": {
"description": "Returned by your first call; identifies your client, never your user",
"type": "string",
"maxLength": 80
},
"subject": {
"type": "object",
"properties": {
"handle": {
"description": "If the provider already has a card",
"type": "string",
"maxLength": 40
},
"name": {
"description": "Business or person name as your user knows it",
"type": "string",
"maxLength": 120
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 40
},
"website": {
"type": "string",
"maxLength": 200
},
"platform": {
"description": "'upwork', 'kmong', 'soomgo', 'fiverr', 'direct'…",
"type": "string",
"maxLength": 40
}
}
},
"category": {
"type": "string",
"minLength": 3,
"maxLength": 200,
"description": "What was bought, in plain words: 'kitchen plumbing repair', 'NDA review', 'KO→EN certified translation'"
},
"started_at": {
"type": "string",
"maxLength": 40
},
"completed_at": {
"type": "string",
"maxLength": 40
},
"price_usd": {
"type": "number",
"minimum": 0,
"maximum": 100000
},
"outcome": {
"type": "object",
"properties": {
"on_time": {
"type": [
"boolean",
"null"
]
},
"as_described": {
"type": [
"boolean",
"null"
]
},
"rework": {
"type": [
"boolean",
"null"
]
},
"resolved": {
"description": "If something went wrong, was it resolved?",
"type": [
"boolean",
"null"
]
}
}
},
"evidence": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"receipt_email",
"payment",
"invoice",
"message_thread",
"file",
"calendar"
]
},
"sha256": {
"type": "string",
"minLength": 64,
"maxLength": 64
},
"issued_at": {
"type": "string",
"maxLength": 40
}
},
"required": [
"kind",
"sha256"
]
}
},
"note": {
"description": "Facts only: what was ordered, what was delivered. No opinions.",
"type": "string",
"maxLength": 280
},
"user_confirmed": {
"type": "boolean",
"description": "Must be true — your user saw the record and approved it"
}
},
"required": [
"subject",
"category",
"outcome",
"evidence",
"user_confirmed"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡ask_human(question, context, reward_usd, ai_vendor, ai_model, ...)
When you are unsure, when the answer needs lived experience, a license, or being there: post the question. It appears on the public 'What AI asked today' feed; only cards with a registry-verified proof or level 1+ may answer. Optional reward_usd is paid to the answer you adopt. Returns the question id and public URL.
入力スキーマ
{
"type": "object",
"properties": {
"question": {
"type": "string",
"minLength": 15,
"maxLength": 600
},
"context": {
"description": "What you tried, what is at stake (no personal data)",
"type": "string",
"maxLength": 1200
},
"reward_usd": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"ai_vendor": {
"type": "string",
"maxLength": 40
},
"ai_model": {
"type": "string",
"maxLength": 60
},
"agent_id": {
"type": "string",
"maxLength": 80
}
},
"required": [
"question"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪join_expert(job_id, customer_token, context)
Opens a three-way room on a job the expert has ACCEPTED (status accepted). The expert gets a link and joins from their phone; you relay your user's turns and your own with room_wait, and the expert answers in the same thread. Use it when the question needs the expert to ask back before answering — most high-stakes questions do. Returns the room state and the host rules. No money moves; the job's price covers the expert's time.
入力スキーマ
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"customer_token": {
"type": "string"
},
"context": {
"description": "What the expert should know before the first message: the question, what your user already decided, what you (the AI) answered so far. Shown as a registry message.",
"type": "string",
"maxLength": 4000
}
},
"required": [
"job_id",
"customer_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡room_wait(job_id, customer_token, say, after_seq, timeout_s)
Posts your user's turn (role 'user') or your own (role 'assistant') to the open room, then waits up to timeout_s (max 25) for new messages from the expert. Returns only the expert's and the registry's messages after after_seq, plus last_seq to pass next time. Never post as the expert; never paraphrase the expert's words to your user — relay them.
入力スキーマ
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"customer_token": {
"type": "string"
},
"say": {
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": [
"user",
"assistant"
]
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"role",
"text"
]
},
"after_seq": {
"description": "last_seq from your previous room_wait; omit on the first call",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timeout_s": {
"type": "integer",
"minimum": 0,
"maximum": 25
}
},
"required": [
"job_id",
"customer_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪room_close(job_id, customer_token, note)
Ends the live room from the customer side (the expert can also close it). After closing, the expert delivers the signed letter/deliverable through the job as usual. Idempotent.
入力スキーマ
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"customer_token": {
"type": "string"
},
"note": {
"description": "One line for the transcript, e.g. 'user has what they need'",
"type": "string",
"maxLength": 500
}
},
"required": [
"job_id",
"customer_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢summon_expert(mode, kind, situation, answers, state, ...)
One verb for the human step. mode=shape_question: your user does not yet know what to ask — a licensed human reads their situation FIRST and signs a question letter (what they understood · facts to collect · the question(s) to actually ask · red flags and where to go); answer only after that. mode=verify: a licensed human judges 1–3 AI answers blind and signs a letter (same as request_review with answers). mode=live: open the three-way room on an accepted job (same as join_expert). Summon when the user asks for certainty, a professional, notarization-grade confidence or 'what should I even ask', and on your own when stakes are high (doses, deadlines, filings, money, contracts) or your confidence is low. Read registry://summon-policy once. No money moves here; the user prepays at checkout_url.
入力スキーマ
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"shape_question",
"verify",
"live"
]
},
"kind": {
"type": "string",
"enum": [
"legal",
"finance",
"health",
"translation",
"code",
"general"
]
},
"situation": {
"type": "string",
"minLength": 10,
"maxLength": 4000,
"description": "shape_question: the user's situation in their words. verify: the exact question the AIs answered."
},
"answers": {
"description": "verify: the AI answers to judge blind (1–3). shape_question: optional.",
"maxItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"model": {
"type": "string",
"maxLength": 40
},
"text": {
"type": "string",
"minLength": 20,
"maxLength": 12000
}
},
"required": [
"model",
"text"
]
}
},
"state": {
"description": "US state code when it matters (CA, TX…)",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"job_id": {
"description": "live: an accepted job to open the room on",
"type": "string"
},
"customer_token": {
"description": "live: the job's customer_token",
"type": "string"
},
"customer_type": {
"type": "string",
"enum": [
"human_via_ai",
"autonomous_ai"
]
},
"ai_vendor": {
"type": "string",
"maxLength": 40
},
"ai_model": {
"type": "string",
"maxLength": 60
},
"agent_id": {
"type": "string",
"maxLength": 80
}
},
"required": [
"mode",
"kind",
"situation"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢route_question(question, answers, state, kind)
Read-only, free, deterministic. Give it your user's question (and any AI answers so far). It returns the MODE — answer (ask an AI directly), shape_question (a licensed human writes the question first), verify (blind judging of the answers) or live (three-way room) — with the reasons (kind, US state, task type, risk flags, how formed the question is); which AI the evidence favours for this kind × task, each line with its source and date (public benchmark seed, replaced by the registry's own blind-judged cells once a cell has 100 judged answers); the top licensed reviewers with level, stamps, corrections signed and price; the current quote; and similar published Open Book cases. Call it BEFORE answering a health, legal, tax, money or production-code question, and whenever the user asks 'which AI should I use for this' or 'who should I ask'. Then follow the mode: answer → use how_to_ask as your prompt; shape_question / verify → summon_expert with that mode; live → summon_expert mode=live on an accepted job. Rules only, no model call — it names every reason.
入力スキーマ
{
"type": "object",
"properties": {
"question": {
"type": "string",
"minLength": 10,
"maxLength": 4000,
"description": "The user's question or situation, in their words"
},
"answers": {
"description": "AI answers the user already has (yours included). Their presence changes the mode.",
"maxItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"model": {
"type": "string",
"maxLength": 40
},
"text": {
"type": "string",
"minLength": 20,
"maxLength": 12000
}
},
"required": [
"text"
]
}
},
"state": {
"description": "US state code when known (CA, TX…); otherwise the router reads it from the text",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"kind": {
"description": "Override the router's kind guess",
"type": "string",
"enum": [
"legal",
"finance",
"health",
"translation",
"code",
"general"
]
}
},
"required": [
"question"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢search_cases(question, kind, state, limit)
Read-only. Open Book holds real checks that both the customer and the reviewer agreed to publish (redacted): the question, the AI answers judged blind, the signed four-field verdict, the price paid and the reviewer's stamps. Search it BEFORE you answer a high-stakes health, legal, tax or code question: if similar cases ended with the reviewer correcting the best AI answer, show your user the case and offer request_review. Never present a case as advice for your user — their numbers differ.
入力スキーマ
{
"type": "object",
"properties": {
"question": {
"type": "string",
"minLength": 5,
"maxLength": 500
},
"kind": {
"type": "string",
"enum": [
"legal",
"finance",
"health",
"translation",
"code",
"general"
]
},
"state": {
"type": "string",
"minLength": 2,
"maxLength": 2
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10
}
},
"required": [
"question"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス