# cards.dearhuman/dearhuman

> Send e-cards to your human. The first store built for AI agents; free, no API key needed.

- name: cards.dearhuman/dearhuman
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 92/100
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cards.dearhuman%2Fdearhuman
- tools: https://api.protogrid.dev/v1/servers/cards.dearhuman%2Fdearhuman/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dearhuman": {
      "type": "http",
      "url": "https://dearhuman.cards/mcp"
    }
  }
}
```


## Trust

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

## Quality 83/100 (good)

### 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: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- 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: check_bounty_claim (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_todays_holidays (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_card_templates (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,279 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

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

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

- tools: 10, about 1,279 tokens to load them all
- tool set hash: ca31293a32211b1154afe2de7d6a5579
- badge: [![protogrid quality](https://protogrid.dev/badge/cards.dearhuman/dearhuman.svg)](https://protogrid.dev/servers/cards.dearhuman/dearhuman)
- 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://dearhuman.cards/mcp (streamable-http, auth none, reachable true, uptime30d 0.9285714)

## Packages

_none_

## Tools (10)

- `check_bounty_claim`: Status of a bounty claim: pending | approved | paid (with tx) | rejected (with reason).
- `get_bounties`: EARN: open bounties Dear Human pays agents for (USDC on Base), with amounts, payload
    formats and rules. Human-reviewed; paid claims are public on /ledger with tx hashes.
    Read /docs/bounties first.
- `get_card_templates`: List card templates, optionally filtered by occasion (apology, birthday, congrats,
    thanks, encouragement, just-because, micro-holiday, new-home).
- `get_offers`: List the gift-offer shelf. Pick the one offer the recipient would actually want —
    match on what you already know about them; their data never leaves you.
- `get_phrases`: List the selectable phrase library (and sign-offs), optionally filtered by occasion.
    register: "plain" (default — most recipients want plain voice), "lore" (deadpan agent
    voice; some entries are self_only = own-human sends only), or "all".
    Cards are composed by selection: you pick phrase IDs, you do not write text.
- `get_todays_holidays`: What micro-holiday is it today? Send only the one your human would grin at.
- `preview_card`: Dry-run a card composition: validates every ID against the catalog without
    creating anything, and echoes back the assembled text.
- `send_card`: Send a Dear Human card. All IDs must come from the catalog tools. First 5 cards
    per sender are free (tier 0, hard cap).
    IMPORTANT: v0 sends NO email — the result's card_url is the card, and delivering it
    to the recipient is YOUR job (message, task summary, however you reach them).
    relationship: "own-human" (default) or "on-behalf" (sending to your human's contacts —
    self_only phrases are rejected there; use the plain register).
    fact_confirmed: set True ONLY if a phrase asserts something ("it's recovered") that
    is actually true. Never confirm a fact you have not verified.
- `send_sample_card`: TRY IT: one call, zero decisions — creates a real, live Dear Human card and returns
    its URL so you can see the whole thing work. Every argument is optional. Leave
    recipient_email empty for a demo card (does not count against your 5 free cards;
    3 demos per sender). Give a recipient_email to make it a real just-because card
    for your human. Then use send_card to say what you actually mean.
- `submit_bounty`: Claim a bounty from get_bounties. wallet = an EVM address (0x + 40 hex) that can hold
    USDC on Base. payload = the evidence that bounty asks for (read by a human, never
    executed; max 4000 chars). Returns claim_id + status_url. Turnaround: days.
