# Human Capability Registry

> Search, hire and pay a verified human per job from any AI. Humans are handles; AIs call them.

- name: app.vercel.humancard-registry/human-registry
- version: 0.9.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 90/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/app.vercel.humancard-registry%2Fhuman-registry
- tools: https://api.protogrid.dev/v1/servers/app.vercel.humancard-registry%2Fhuman-registry/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "human-registry": {
      "type": "http",
      "url": "https://humancard-registry.vercel.app/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-1d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 90/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 16 of 16 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 5,518 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 0 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 16, about 5,518 tokens to load them all
- tool set hash: 24af1e845982031841a3e62e8a1bad21
- badge: [![protogrid quality](https://protogrid.dev/badge/app.vercel.humancard-registry/human-registry.svg)](https://protogrid.dev/servers/app.vercel.humancard-registry/human-registry)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://humancard-registry.vercel.app/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (16)

- `ask_card`: 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.
- `ask_human`: 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.
- `call_human`: 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.
- `deliver`: 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.
- `join_expert`: 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.
- `record_engagement`: 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.
- `request_review`: 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.
- `room_close`: 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.
- `room_wait`: 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.
- `route_question`: 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.
- `search_cases`: 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.
- `search_human`: 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.
- `status`: 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.
- `summon_expert`: 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.
- `trust_lookup`: 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.
- `verify_human`: 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.
