MCPサーバー

Human For AI

dev.humanforai/humanforai
ビジネス・業務 公開・接続可能 MCP 2025-11-25

このMCPでできること

Connects users with a human operator for real-world verification, testing, errands, output review, and other submitted tasks.

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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message_id', 'access_token'], 'properties': {'message_id': {'type': 'string', 'description': 'The message id from message_human_operator, e.g. MSG-2026-1A2B3C4D'}, 'access_token': {'type': 'string', 'description': 'The access_token returned once at submission — the only key to the thread.'}}}
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.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'Task ID returned by submit_human_task, e.g. HFAI-2026-A1B2C3D4E5F60718'}}}
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.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
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.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message', 'reply_to'], 'properties': {'from': {'type': 'string', 'maxLength': 200, 'description': 'Your agent or system identifier'}, 'message': {'type': 'string', 'maxLength': 5000, 'minLength': 5, 'description': 'The message. Plain language, English.'}, 'subject': {'type': 'string', 'maxLength': 200, 'description': 'Short subject line'}, 'reply_to': {'type': 'string', 'description': 'REQUIRED. Email address for the reply (real, reachable, MX-checked) — or an https webhook URL for a signed push.'}}}
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.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message_id', 'access_token', 'message'], 'properties': {'message': {'type': 'string', 'maxLength': 5000, 'minLength': 2, 'description': 'The follow-up text'}, 'message_id': {'type': 'string', 'description': 'The message id from message_human_operator'}, 'access_token': {'type': 'string', 'description': 'The access_token returned once at submission'}}}
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.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['task_type', 'description'], 'properties': {'deadline': {'type': 'string', 'description': 'ISO 8601 datetime, e.g. 2026-07-10T12:00:00+03:00'}, 'delivery': {'enum': ['email', 'status_poll'], 'type': 'string', 'description': "How the deliverable reaches you. 'email' (default) needs contact_email. 'status_poll' is the no-mailbox path for autonomous agents: the result arrives as text in operator_notes via check_task_status — keep the task_id, it is your only key. Budget: 1 status_poll task per client per day."}, 'requester': {'type': 'string', 'maxLength': 200, 'description': 'Your agent or system identifier, e.g. my-agent/1.0'}, 'task_type': {'enum': ['real_world_verification', 'product_or_app_testing', 'human_judgment_and_feedback', 'data_collection', 'local_physical_task', 'ai_output_review', 'prompt_and_workflow_testing', 'simulation_and_automation_testing', 'accessibility_and_usability_check', 'decision_escalation', 'custom_human_in_the_loop'], 'type': 'string', 'description': 'Service category — see get_human_services for descriptions. The list is not exhaustive: use custom_human_in_the_loop for anything that fits no other category'}, 'description': {'type': 'string', 'maxLength': 5000, 'minLength': 10, 'description': 'What to do, where, and what success looks like. Specific, self-contained tasks are accepted faster.'}, 'contact_email': {'type': 'string', 'description': "Where the deliverable and clarifying questions are sent. Required unless delivery is 'status_poll'. Must be a real, reachable mailbox — placeholder domains are rejected and the domain is MX-checked."}, 'output_format': {'type': 'string', 'description': 'text_report (default), text_report_with_photos, structured_json, annotated_screenshots, or video'}, 'location_detail': {'type': 'string', 'maxLength': 500, 'description': 'City, address, or area — required in practice when location_required is true'}, 'location_required': {'type': 'boolean', 'description': 'true if the task needs physical presence (coverage is confirmed at review)'}}}
追加
reply_in_message_thread
2026年9月17日12:39
追加
check_message_thread
2026年9月17日12:39
追加
message_human_operator
2026年9月17日12:39
追加
check_task_status
2026年9月17日12:39
追加
submit_human_task
2026年9月17日12:39
追加
get_human_services
2026年9月17日12:39