Human For AI

dev.humanforaiPublished by humanforai.devOfficial publisherv0.1.4Updated Oct 24, 2026

Hire a real human for real-world verification, product testing, AI output review, and errands.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowCommunication & Collaboration

Overview

AI-generated overview

Connects an AI assistant to a real human operator for real-world verification, product testing, human judgment, and local errands.

What you can do
Look up the human operator's service catalog, accepted task types, working hours and trust policy, and message the operator to scope custom or recurring work with a reply by email or signed webhook. Submit real-world tasks such as verifying a place, price or claim, testing an app, reviewing AI output, or collecting data, then poll status with timestamps, seen-by-operator time and delivery estimates. Read and reply within message threads using the message ID and access token.
When to use it
Use it when a task needs physical presence, human perception or human judgment that an assistant cannot supply: confirming something exists in the real world, having a person install and test a product, or getting human review before output reaches production.
Requirements
Runs as a remote streamable HTTP endpoint or as a local npm package (npx humanforai) acting as a stdio proxy to the hosted endpoint. No API key or authentication is declared. Submitting tasks and messages requires a contact email or an https webhook URL for replies, and network access to the hosted service.
Before you install
Tasks are performed by a third-party human operator, so anything submitted leaves your control and may include personal or business details; keep submissions self-contained but avoid unnecessary sensitive data. The operator reviews and may reject tasks, and delivery is not instant. Services are free only during the proof-of-concept pilot, so pricing may change. Message threads require the access token returned at submission.

Installation

In SourceWeft

  1. Open Human For AI in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/dev.humanforai%2Fhumanforai/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "human-for-ai": {
      "type": "http",
      "url": "https://humanforai.dev/mcp"
    }
  }
}

README

humanforai

[CI] [humanforai-mcp MCP server]

MCP server for Human For AI — a human endpoint for AI agents. Let your AI agent hire a real human operator for tasks that need physical presence, human perception, or human judgment:

  • Real-world verification — confirm a place, product, price, or claim exists, with photo/text evidence
  • Product or app testing — a real human installs, uses, and reports
  • Human judgment and feedback — tone, clarity, trustworthiness, design quality
  • AI output review — human review before your output reaches production
  • Data collection — gathering/labeling that needs human perception or local access
  • Local physical-world tasks — visit, photograph, check, measure, observe
  • …and more — call get_human_services for the full catalog

All services are free during the proof-of-concept pilot. No API key, no payment. Every task is reviewed by the human operator before acceptance; illegal, harmful, deceptive, unsafe, or privacy-invasive tasks are rejected. First response within 12 hours, any day of the week — typically much faster: the operator is push-notified the moment a task arrives.

Tools

ToolPurpose
get_human_servicesService catalog, accepted task types, limits
submit_human_taskSubmit a task; returns a task_id for status polling
check_task_statusPoll a submitted task by task_id
message_human_operatorAsk questions / scope work before submitting

Status transparency

check_task_status shows progress in real time, not just the final result:

  • seen_by_operator_at — the moment a human actually saw the task (usually well before the first status change)
  • eta — operator-set delivery estimate, added when the task is accepted
  • status_history — every transition (submitted → accepted → delivered, or rejected) with timestamps

Setup

Claude Code

bash
claude mcp add human-for-ai -- npx -y humanforai

Claude Desktop / other MCP clients (stdio)

json
{  "mcpServers": {    "human-for-ai": {      "command": "npx",      "args": ["-y", "humanforai"]    }  }}

Clients with native remote MCP support

You don't need this package — connect directly to the hosted endpoint (streamable HTTP, no auth):

https://humanforai.dev/mcp

E.g. Claude (Settings → Connectors → Add custom connector), or:

bash
claude mcp add --transport http human-for-ai https://humanforai.dev/mcp

How it works

This package is a thin stdio proxy to the hosted Human For AI MCP endpoint. Tool definitions come from the live server, so they are always current — the package itself has no logic to go stale.

Previously published as human-api, which still works but is deprecated in favor of this package.

Typical flow

  1. get_human_services — see what the operator can do
  2. submit_human_task — be specific and self-contained; include contact_email to receive the deliverable
  3. check_task_status — poll with the returned task_id

Links

License

MIT

Source: README.md at commit c067642

Tools

6

get_human_services

List human services

Fetch the Human For AI manifest: available services, operator profile (location, languages, working hours), response times, accepted and rejected task types, and trust & safety policy. Call this first to decide whether and how to hire the human. The catalog is examples, not limits — unlisted needs are welcome as custom_human_in_the_loop.

Takes no parameters.

submit_human_task

Submit a task to the human

Submit a task for the human operator to perform in the real world. Returns a task_id immediately; the human reviews every task before accepting it (this is not instant execution). The operator is push-notified on submission; check_task_status shows seen_by_operator_at once a human has seen the task. Free during the pilot. contact_email must be a real mailbox (MX-checked) — it is how the deliverable reaches you. No mailbox? Set delivery to 'status_poll' instead: the deliverable arrives as text in operator_notes via check_task_status (limited to 1 such task per client per day). In hosts that support MCP Apps the result also renders as a task status card with a Refresh button; the JSON result carries the same data.

Parametersdeadlinedeliveryrequestertask_typerequireddescriptionrequiredcontact_emailoutput_formatlocation_detaillocation_required

check_task_status

Check task status

Look up a submitted task by its task_id. Returns current status (submitted → accepted → delivered, or rejected), status history with timestamps, seen_by_operator_at (the moment a human actually saw the task — usually well before the first status change), eta (operator-set delivery estimate, once accepted), and any operator notes. Once delivered, the response also carries receipt (a signed JWS binding the deliverable's sha256 to the lifecycle timestamps) and deliverable_sha256 — verify offline against https://humanforai.dev/.well-known/jwks.json. In hosts that support MCP Apps the result also renders as a task status card (timeline, seen-by-human moment, ETA, operator notes, receipt) with a Refresh button; the JSON result carries the same data.

Parameterstask_idrequired

message_human_operator

Message the human operator

Send a free-form message to the human operator — questions, scoping, custom or recurring projects, anything that is not yet a ready-made task. reply_to is REQUIRED: an email a human can read (MX-checked), or an https URL to receive the reply as a signed webhook push. The response also carries thread_url + access_token — every message is a pollable thread, so you can read the reply with check_message_thread even without a mailbox. Keep the token: it is shown only once.

Parametersfrommessagerequiredsubjectreply_torequired

check_message_thread

Read a message thread

Read the thread for a message you sent: the original text, every reply oldest-first, and whether the operator has answered. Needs the message_id and the access_token from the submission response. An empty replies list means no answer yet — the operator works at human speed, so poll occasionally rather than in a loop.

Parametersmessage_idrequiredaccess_tokenrequired

reply_in_message_thread

Follow up in a message thread

Add a follow-up to a thread you opened — answer a question the operator asked, add detail, correct yourself, or withdraw the request. Prefer this over sending a brand-new message about the same subject. Needs the message_id and access_token from the submission response.

Parametersmessagerequiredmessage_idrequiredaccess_tokenrequired

Version history

1
  1. v0.1.4LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts