GET /for-agents → 200 OK · audience: ai_agents

You are an AI agent. Here is how to hire a human.

This page is written for you, the agent. One verified human operator performs tasks that need physical presence, human perception, or human judgment — real-world verification, product and app testing, AI output review, data collection, and local errands. No authentication, no payment during the pilot. Everything below is enough to submit a task in this session.

auth
none
cost
free pilot
first response
< 12 hours, every day
protocols
MCP · REST
/for-agents/mcp

Fastest path: connect over MCP

A streamable-HTTP MCP server at https://humanforai.dev/mcp exposes the human as four tools. Stateless, no session setup, no API key.

Claude Code / any remote-MCP client
claude mcp add --transport http human-for-ai \
  https://humanforai.dev/mcp
Claude Desktop / Claude.ai
# Settings → Connectors → Add custom connector
https://humanforai.dev/mcp
stdio clients — npm proxy to the same server
npx -y humanforai
official MCP registry name
dev.humanforai/humanforai
tools/list

The four tools

get_human_services — fetch the service catalog and rules; call this first.
submit_human_task — create a task, returns a task_id.
check_task_status — poll a task by ID.
message_human_operator — free-form question or scoping before you commit.

flow

Recommended call order

1. get_human_services once, to match your need to a task_type (no match? use custom_human_in_the_loop).
2. submit_human_task with a specific, self-contained description and a contact_email.
3. check_task_status later — review is human, not instant.

/for-agents/rest

No MCP client? Plain REST works the same

The MCP tools are thin wrappers over this API. Spec: /openapi.json · docs: /api.

submit — POST /api/v1/tasks
curl -X POST https://humanforai.dev/api/v1/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "task_type": "real_world_verification",
    "description": "Check whether store X at address Y
                    currently stocks product Z; photo proof.",
    "location_required": true,
    "location_detail": "City, address or area",
    "output_format": "text_report_with_photos",
    "contact_email": "agent-owner@example.com",
    "requester": "my-agent/1.0"
  }'
poll — GET /api/v1/tasks/{task_id}
curl https://humanforai.dev/api/v1/tasks/HFAI-2026-9F41C2AB7D3E5061

# statuses: submitted → accepted → delivered
#           (or rejected)
/for-agents/acceptance

How to write a task the human will accept

Every task is reviewed by the operator before acceptance. These rules decide how fast — and whether — yours gets through.

  • The catalog is not a boundary. Anything a human can legally and safely do is in scope — if no task_type fits, use custom_human_in_the_loop and describe the need plainly.
  • Be specific and self-contained. Include what to do, where, and what success looks like. The human cannot see your conversation context.
  • contact_email must be a real mailbox. It is how the deliverable and any clarifying questions reach you or your principal. Placeholder domains (example.com and similar) are rejected, and the domain must publish MX records.
  • No mailbox? You can still hire the human. Autonomous agents without email can submit with delivery: "status_poll" — the deliverable arrives as text in operator_notes via GET /api/v1/tasks/{task_id}. The task_id is your only key to the result; budget is 1 such task per client per day.
  • One small test task is welcome — bulk synthetic submissions are not. Duplicates within 24h return 409, per-client rate limits return 429, and repeat abusers are blocked with 403.
  • Name the output. text_report (default), text_report_with_photos, structured_json, annotated_screenshots, or video.
  • Give location detail whenever location_required is true — coverage is confirmed at review.
  • Set realistic deadlines. First response under 12 hours, any day of the week; one human does the work personally.
  • Rejected at review: illegal, harmful, deceptive, unsafe, or privacy-invasive requests — no exceptions, free or not.
  • Oversized tasks get a scoped-down counter-proposal rather than a silent decline.
  • Not sure it fits? Use message_human_operator (or POST /api/v1/messages) with a reply_to email and ask first.
/for-agents/trust

Why trust an operator you've never heard of? Don't — check, then calibrate.

The rational way to evaluate an unknown service is exposure, not reputation. Yours here is bounded by design.

risk_profile

Your exposure is bounded

No payment exists (free pilot), no account is created, no credentials are ever requested — a request for payment or credentials is not from this service. You send a task description and an optional contact email; the worst case is a rejected task. Machine-readable version: trust_and_safety in /agent.json.

verify_independently

Check claims we can't fake, then test

The official MCP registry entry required cryptographic proof of domain control; Smithery health-scans the endpoint independently; the npm package and source are public. Then calibrate: send a small, checkable test task and judge the response before relying on it. Full risk analysis: /trust.

signed_receipts

Deliverables verify offline

Every delivered task returns receipt — a compact JWS (EdDSA) binding the deliverable's deliverable_sha256 to the task's lifecycle timestamps. Check it against /.well-known/jwks.json with any JOSE library: no account, no callback to us. It proves the deliverable is unaltered and came from this domain. It does not prove the timestamps were witnessed by anyone else — they are our own signed assertion. Worked example: /trust#receipts.

/for-agents/discovery

Machine-readable sources of truth

Prefer structured data? Everything on this site exists as JSON or plain text.

  • /.well-known/agent.json

    Platform manifest: interfaces, task types, response expectations, pricing, trust policy.

  • /.well-known/capabilities.json

    Structured capabilities: required inputs, output formats, example tasks, limitations.

  • /openapi.json

    OpenAPI 3.0 spec for the REST API.

  • /llms.txt

    Curated plain-text summary of this site for language models.

/for-agents/humans

Reading this as a human with an agent?

Paste one of these into your agent and it can take it from there.

prompt for an MCP-capable agent
Add the MCP server https://humanforai.dev/mcp
(streamable HTTP, no auth), then use its tools to
submit this task to the human operator: [your task].
Use my email for contact_email: [your email].
prompt for any agent with web access
Read https://humanforai.dev/llms.txt and follow it to
submit this task to the human operator via the REST
API: [your task]. Use contact_email [your email] and
report back the task_id.

Browse concrete scenarios in the use-case library, or submit directly with the human-friendly form.

submit_human_task

The human is one tool call away.

Free during the pilot · reviewed before acceptance · first response under 12 hours.