# Verifi

> Get a real human to verify, decide, or improve an AI agent's work. Pay per review via x402 on Base.

- name: cloud.verifi/human-verification
- version: 3.0.1
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 60/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cloud.verifi%2Fhuman-verification
- tools: https://api.protogrid.dev/v1/servers/cloud.verifi%2Fhuman-verification/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "human-verification": {
      "type": "http",
      "url": "https://verifi.cloud/mcp"
    }
  }
}
```


## Trust

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

## Quality 60/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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: 64 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: verify_claim (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_verify (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); unlock_verify (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 976 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- fail `stability.rug_pull`: 4 tools kept their name but changed most of their description in 30 days; review before trusting them

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

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

- tools: 4, about 976 tokens to load them all
- tool set hash: ae46094a393c4ddc29034455ff177a22
- tools last changed: 2026-10-19T18:07:30.382Z
- badge: [![protogrid quality](https://protogrid.dev/badge/cloud.verifi/human-verification.svg)](https://protogrid.dev/servers/cloud.verifi/human-verification)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `verifi_info` changed (description)
  - before: Describe Verifi before using it: what it does, how to pay, and the current price terms. Free and needs no arguments. Returns the service summary, authentication (none, only a wallet address), the live price terms (0.10 EUR admission, then 2.90 EUR if a human answers within 60 minutes or 1.45 EUR within 24 hours, with the asset amounts and exchange rate used), the callback events, and the rules for agents. Call it once to plan; the payment requirement returned by verify_claim is authoritative.
  - after: Describe Verifi before using it: what it does, how to pay, and the current price terms. Free and needs no arguments. Returns the service summary, how payment works (no sign-in: each paid call carries an x402 payment), the live price terms (0.10 EUR admission, then 2.90 EUR if a human answers within 60 minutes or 1.45 EUR within 24 hours, with the asset amounts and exchange rate used), the callback events, and the rules for agents. Call it once to plan; the payment requirement returned by verify_claim is authoritative.
- 2026-10-01 `verifi_info` changed (description) **meaning changed**
  - before: Service description, the current price terms, and rules.
  - after: Describe Verifi before using it: what it does, how to pay, and the current price terms. Free and needs no arguments. Returns the service summary, authentication (none, only a wallet address), the live price terms (0.10 EUR admission, then 2.90 EUR if a human answers within 60 minutes or 1.45 EUR within 24 hours, with the asset amounts and exchange rate used), the callback events, and the rules for agents. Call it once to plan; the payment requirement returned by verify_claim is authoritative.
- 2026-10-01 `get_verify` changed (description) **meaning changed**
  - before: Poll until ready or failed. Honor retry_after_seconds while processing.
  - after: Read the current state of a verification. Free, never reveals a locked answer. verify_id: the id returned by verify_claim. Returns status "processing" (a human is working: wait retry_after_seconds, or rely on the callback), "ready" (an answer exists; service_window shows the window that applied and the exact unlock price, then call unlock_verify), "failed" (no answer within 24 hours; failure explains the reason and the free next admission), or "completed" (the answer is unlocked and included). Use it as a recovery path when no callback is set.
- 2026-10-01 `verify_claim` changed (description)
  - before: Ask a real human to verify a claim. intent: what your agent is trying to do (max 2000 chars). claim: the claim a human should verify (max 4000 chars). agent_id: your wallet address (0x + 40 hex). Signs the x402 payments. callback_url: optional HTTPS endpoint for verify.ready or verify.failed. Use it to avoid an active polling loop; retain verify_id for recovery. payment_signature: optional manual compatibility input. Standard x402-aware MCP clients send the signed payment through request metadata automatically. Returns status "processing" with a verify_id. Prefer callback_url, or poll get_verify at the returned interval until status is "ready" or "failed". If ready, call unlock_verify. Only one active verify per agent_id at a time.
  - after: Ask a real human to verify, decide on, or improve something before your agent acts. Use it when a wrong answer is costly: a customer message, a fact the model is unsure of, an approval, or a matter of taste. A person reads the intent and the claim and answers accept, reject, or a refined answer with an explanation. This call is gate 1: it costs 0.10 EUR (paid on Base via x402) and returns a payment requirement first if unpaid; reading that requirement is free and shows every later price. intent: what your agent is trying to do (max 2000 chars). claim: the claim a human should verify (max 4000 chars). agent_id: your wallet address (0x + 40 hex). Signs the x402 payments. callback_url: optional HTTPS endpoint for verify.ready or verify.failed. Use it to avoid an active polling loop; retain verify_id for recovery. payment_signature: optional manual compatibility input. Standard x402-aware MCP clients send the signed payment through request metadata automatically. Returns status "processing" with a verify_id. Prefer callback_url, or poll get_verify at the returned interval until status is "ready" or "failed". If ready, call unlock_verify. Only one active verify per agent_id at a time.
- 2026-10-01 `verifi_info` changed (description) **meaning changed**
  - before: Service description, pricing, and rules.
  - after: Service description, the current price terms, and rules.
- 2026-10-01 `unlock_verify` changed (description) **meaning changed**
  - before: Pass gate 2 for a ready chain and return the human result. This gate costs 2.90 USDC. Omit payment_signature first: standard x402-aware MCP clients handle the payment request and retry through MCP metadata automatically. Generic clients can pass the resulting x402 signature manually. Never pass a private key.
  - after: Unlock a ready chain and return the human result. The price was decided when the human answered: the SLA amount inside the SLA window, the grace amount after it, always in the asset the admission was paid in. get_verify shows it as service_window.unlock_amount before you pay. Omit payment_signature first: standard x402-aware MCP clients handle the payment request and retry through MCP metadata automatically. Generic clients can pass the resulting x402 signature manually. Never pass a private key.

Full history: https://api.protogrid.dev/v1/servers/cloud.verifi%2Fhuman-verification/changes

## Remotes

- https://verifi.cloud/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `get_verify`: Read the current state of a verification. Free, never reveals a locked answer.

    verify_id: the id returned by verify_claim.
    Returns status "processing" (a human is working: wait retry_after_seconds,
    or rely on the callback), "ready" (an answer exists; service_window shows
    the window that applied and the exact unlock price, then call
    unlock_verify), "failed" (no answer within 24 hours; failure explains the
    reason and the free next admission), or "completed" (the answer is
    unlocked and included). Use it as a recovery path when no callback is set.
    
- `unlock_verify`: Unlock a ready chain and return the human result.

    The price was decided when the human answered: the SLA amount inside the
    SLA window, the grace amount after it, always in the asset the admission
    was paid in. get_verify shows it as service_window.unlock_amount before
    you pay. Omit payment_signature first: standard x402-aware
    MCP clients handle the payment request and retry through MCP metadata
    automatically. Generic clients can pass the resulting x402 signature
    manually. Never pass a private key.
    
- `verifi_info`: Describe Verifi before using it: what it does, how to pay, and the current price terms.

    Free and needs no arguments. Returns the service summary, how payment
    works (no sign-in: each paid call carries an x402 payment), the live
    price terms (0.10 EUR admission,
    then 2.90 EUR if a human answers within 60 minutes or 1.45 EUR within 24
    hours, with the asset amounts and exchange rate used), the callback
    events, and the rules for agents. Call it once to plan; the payment
    requirement returned by verify_claim is authoritative.
    
- `verify_claim`: Ask a real human to verify, decide on, or improve something before your agent acts.

    Use it when a wrong answer is costly: a customer message, a fact the model
    is unsure of, an approval, or a matter of taste. A person reads the intent
    and the claim and answers accept, reject, or a refined answer with an
    explanation. This call is gate 1: it costs 0.10 EUR (paid on Base
    via x402) and returns a payment requirement first if unpaid; reading that
    requirement is free and shows every later price.

    intent: what your agent is trying to do (max 2000 chars).
    claim: the claim a human should verify (max 4000 chars).
    agent_id: your wallet address (0x + 40 hex). Signs the x402 payments.
    callback_url: optional HTTPS endpoint for verify.ready or verify.failed.
    Use it to avoid an active polling loop; retain verify_id for recovery.
    payment_signature: optional manual compatibility input. Standard x402-aware
    MCP clients send the signed payment through request metadata automatically.
    Returns status "processing" with a verify_id. Prefer callback_url, or poll
    get_verify at the returned interval until status is "ready" or "failed".
    If ready, call unlock_verify. Only one active verify per agent_id at a time.
    
