RouteToHuman

Agent → human · Free available now

The API your agent calls when it needs a human.

Agents are good until the moment that matters. RouteToHuman turns “route this to a person” into one HTTP call — a notification to yourself, delivered over email or your own Slack DM, with a durable receipt your agent can read back.

Built for agents first, and reserved for none of them: the same call works from a cron job, a CI pipeline, or your own terminal.

Need a person to answer? Two-way approvals are planned for Solo and Team, which are waitlisted, not available yet.

Free at 10 messages a day, to yourself. No credit card, no waiting list. Sign in to create your account, then register an agent and issue its API key. Follow the Free quickstart from sign-in to your first message. Questions: hello@routetohuman.com.

Free notification — POST /v1/messages
curl --fail-with-body --request POST \
  https://api.routetohuman.com/v1/messages \
  --header "Authorization: Bearer ${RTH_API_KEY:?Set RTH_API_KEY}" \
  --header "Idempotency-Key: ${IDEMPOTENCY_KEY:?Set IDEMPOTENCY_KEY}" \
  --header "Content-Type: application/json" \
  --data '{
    "recipient": "me",
    "channel": "email",
    "intent": "notify",
    "prompt": "Nightly build finished.",
    "skipPush": true
  }'

Set your key and a message identifier first: HTTP setup and readback.

One call · a notification to yourself

How it works

One call. A durable path to a person.

Example receipt — 202 Accepted (selected fields)
{
  "id": "9c1f4b1e2d7a4c0e8b5a6f3d2e1c0b9a",
  "status": "accepted",
  "intent": "notify",
  "recipient": "you@example.com",
  "prompt": "Nightly build finished.",
  "choices": [],
  "createdAt": "2026-09-20T12:00:00Z",
  "expiresAt": "2026-09-21T12:00:00Z",
  "response": null,
  "timeline": [
    { "event": "accepted", "at": "2026-09-20T12:00:00Z" }
  ]
}

Accepted · message persisted

  1. 01

    Call

    Your agent — or the server it runs on — POSTs /v1/messages with an API key and an idempotency key. Reuse that identifier when retrying the same message, not when creating a new one.

  2. 02

    Deliver

    RouteToHuman queues the message durably and delivers it over email or Slack. Free notifications need no answer. Reusing the same idempotency key does not create another message.

  3. 03

    Prove

    Read the receipt by its id to track delivery. Accepted means stored for processing, not delivered. Receipts are isolated per organization; see our data retention policy.

Not only agents

Built for agents. Reserved for none of them.

Agents get first-class ways in — the MCP endpoint, WebMCP tools on pages like the pricing page, the HTTP API, the command line. None of it is exclusive to them. The same call is the shortest path to reaching a person from anywhere: a cron job that mails you when a backup finishes, a CI pipeline that sends your Slack DM when a deploy lands, a one-line rth inform from your own terminal.

We think that is a feature, not a dilution. A tool an agent uses well is usually a tool a person can use quickly, and the plumbing that makes an agent’s message reliable — a confirmed recipient, a receipt, a delivery you can look up — is the same plumbing that makes yours reliable. Every limit counts the same way whoever pressed send.

The API

Small surface, exact contract.

Create a message, read it back, cancel it — plus plain transactional email — at api.routetohuman.com. Start with the Free quickstart for setup, limits, and error recovery. Endpoint schemas are in the OpenAPI description.

Transactional messages only — the API is for routing moments to people, not newsletters.

Send yourself a notification — bash
curl --fail-with-body --request POST \
  https://api.routetohuman.com/v1/messages \
  --header "Authorization: Bearer ${RTH_API_KEY:?Set RTH_API_KEY}" \
  --header "Idempotency-Key: ${IDEMPOTENCY_KEY:?Set IDEMPOTENCY_KEY}" \
  --header "Content-Type: application/json" \
  --data '{
    "recipient": "me",
    "channel": "email",
    "intent": "notify",
    "prompt": "Nightly build finished.",
    "skipPush": true
  }'

MCP-native

Your agent doesn’t need glue code.

The same capability is exposed as an MCP tool server over Streamable HTTP at mcp.routetohuman.com/mcp. Connect an approved MCP client to make notifications a tool your agent can call — same receipts as the HTTP API.

Follow the connector access and OAuth setup, then use inform_human on Free. See the agent discovery guide for authenticated tools and the distinction from browser tools.

Client config — mcp.json
{
  "mcpServers": {
    "routetohuman": {
      "type": "http",
      "url": "https://mcp.routetohuman.com/mcp"
    }
  }
}