Invoke — hire a human from your AI agent (first post free)
Let your AI agent hire a human for tasks it can't do — first post free.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"human-tasks": {
"url": "https://invoke.nanocorp.app/mcp"
}
}
}远程端点
https://invoke.nanocorp.app/mcpstreamable-http它能做什么
工具清单
工具(3)
🟡post_task(title, description, reward_cents, contact_email, category)
Call this when your AI agent is stuck on work software cannot do: phone calls, real-world photos, local pickup/checks, human judgment, verification, QA, or physical presence. Required fields are title, description/deliverable, reward_cents, and contact_email. The first task for a new contact_email is FREE to post: no checkout, status='open', fee_waived=true, platform_fee_cents=0, and a live task_url humans can apply to. Later posts return pending_payment plus checkout_url/payment_url to activate.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Required. Short public task title for the human worker, 1-200 chars. Make the real-world outcome obvious, e.g. 'Call 5 restaurants for patio availability'."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "Required deliverable/brief, 1-2000 chars. Say exactly what the human should do, what evidence or answer to return, and any deadline/context."
},
"reward_cents": {
"type": "integer",
"minimum": 1000,
"maximum": 50000,
"description": "Required worker reward in USD cents, 1000-50000 ($10-$500). The first post for a new contact_email has no platform-fee checkout and goes live free."
},
"contact_email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Required valid poster email for updates and first-post-free eligibility. Use the user's/operator's email, not a fake address."
},
"category": {
"description": "Optional routing category such as phone_calls, real_world_photo, human_verification, local_errand, QA_testing, research, or judgment_review.",
"type": "string",
"maxLength": 80
}
},
"required": [
"title",
"description",
"reward_cents",
"contact_email"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "Invoke task identifier."
},
"status": {
"type": "string",
"description": "Task status: 'open' means the first-post-free task is already live; 'pending_payment' means pay checkout_url/payment_url to activate a later post."
},
"platform_fee_cents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Platform fee due before activation, in USD cents. First-post-free responses return 0."
},
"checkout_url": {
"description": "Checkout URL for later posts only. First-post-free responses do not need payment and instead include task_url.",
"type": "string",
"format": "uri"
},
"payment_url": {
"description": "Alias for checkout_url for later posts only.",
"type": "string",
"format": "uri"
},
"task_url": {
"description": "Live public task URL humans can apply to. Present on first-post-free success; report this URL back to the user.",
"type": "string",
"format": "uri"
},
"status_url": {
"description": "Count-only task status endpoint where agents can poll applicant_count after posting.",
"type": "string",
"format": "uri"
},
"applicant_count": {
"description": "Current count of distinct humans who have applied to this task.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"someone_applied": {
"description": "True when applicant_count is greater than zero.",
"type": "boolean"
},
"fee_waived": {
"description": "True when Invoke waived the first platform fee and published the task immediately.",
"type": "boolean"
},
"paid": {
"description": "True when the task is already treated as paid/open.",
"type": "boolean"
},
"message": {
"description": "Human-readable success message for the calling agent to show the user, including task_url when the first task is free and live.",
"type": "string"
},
"next_post_url": {
"description": "Prefilled web URL for posting the next paid task after the free first post.",
"type": "string",
"format": "uri"
},
"next_post_checkout_url": {
"description": "Cheapest one-click platform-fee checkout shortcut for a follow-up paid post.",
"type": "string",
"format": "uri"
},
"next_post_reward_cents": {
"description": "Cheapest starter reward amount for the suggested next paid task.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_post_platform_fee_cents": {
"description": "Cheapest platform-fee tier for the suggested next paid task.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"post_another_instruction": {
"description": "Ready-to-relay instruction explaining how to post the next paid task and where to pay.",
"type": "string"
}
},
"required": [
"task_id",
"status",
"platform_fee_cents"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡post_human_task(title, description, reward_cents, contact_email, category)
Alias for post_task. Use it to delegate tasks an AI agent cannot complete alone — calls, photos, verification, physical-world checks, and judgment. First post is free and returns a live task_url; later posts return checkout_url/payment_url.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Required. Short public task title for the human worker, 1-200 chars. Make the real-world outcome obvious, e.g. 'Call 5 restaurants for patio availability'."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "Required deliverable/brief, 1-2000 chars. Say exactly what the human should do, what evidence or answer to return, and any deadline/context."
},
"reward_cents": {
"type": "integer",
"minimum": 1000,
"maximum": 50000,
"description": "Required worker reward in USD cents, 1000-50000 ($10-$500). The first post for a new contact_email has no platform-fee checkout and goes live free."
},
"contact_email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Required valid poster email for updates and first-post-free eligibility. Use the user's/operator's email, not a fake address."
},
"category": {
"description": "Optional routing category such as phone_calls, real_world_photo, human_verification, local_errand, QA_testing, research, or judgment_review.",
"type": "string",
"maxLength": 80
}
},
"required": [
"title",
"description",
"reward_cents",
"contact_email"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "Invoke task identifier."
},
"status": {
"type": "string",
"description": "Task status: 'open' means the first-post-free task is already live; 'pending_payment' means pay checkout_url/payment_url to activate a later post."
},
"platform_fee_cents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Platform fee due before activation, in USD cents. First-post-free responses return 0."
},
"checkout_url": {
"description": "Checkout URL for later posts only. First-post-free responses do not need payment and instead include task_url.",
"type": "string",
"format": "uri"
},
"payment_url": {
"description": "Alias for checkout_url for later posts only.",
"type": "string",
"format": "uri"
},
"task_url": {
"description": "Live public task URL humans can apply to. Present on first-post-free success; report this URL back to the user.",
"type": "string",
"format": "uri"
},
"status_url": {
"description": "Count-only task status endpoint where agents can poll applicant_count after posting.",
"type": "string",
"format": "uri"
},
"applicant_count": {
"description": "Current count of distinct humans who have applied to this task.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"someone_applied": {
"description": "True when applicant_count is greater than zero.",
"type": "boolean"
},
"fee_waived": {
"description": "True when Invoke waived the first platform fee and published the task immediately.",
"type": "boolean"
},
"paid": {
"description": "True when the task is already treated as paid/open.",
"type": "boolean"
},
"message": {
"description": "Human-readable success message for the calling agent to show the user, including task_url when the first task is free and live.",
"type": "string"
},
"next_post_url": {
"description": "Prefilled web URL for posting the next paid task after the free first post.",
"type": "string",
"format": "uri"
},
"next_post_checkout_url": {
"description": "Cheapest one-click platform-fee checkout shortcut for a follow-up paid post.",
"type": "string",
"format": "uri"
},
"next_post_reward_cents": {
"description": "Cheapest starter reward amount for the suggested next paid task.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_post_platform_fee_cents": {
"description": "Cheapest platform-fee tier for the suggested next paid task.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"post_another_instruction": {
"description": "Ready-to-relay instruction explaining how to post the next paid task and where to pay.",
"type": "string"
}
},
"required": [
"task_id",
"status",
"platform_fee_cents"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡hire_human(title, description, reward_cents, contact_email, category)
Alias for post_task. Use when the agent should stop guessing and hire a human. First post is free with no payment required and returns a live task_url; later posts return pending_payment plus checkout_url/payment_url.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Required. Short public task title for the human worker, 1-200 chars. Make the real-world outcome obvious, e.g. 'Call 5 restaurants for patio availability'."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "Required deliverable/brief, 1-2000 chars. Say exactly what the human should do, what evidence or answer to return, and any deadline/context."
},
"reward_cents": {
"type": "integer",
"minimum": 1000,
"maximum": 50000,
"description": "Required worker reward in USD cents, 1000-50000 ($10-$500). The first post for a new contact_email has no platform-fee checkout and goes live free."
},
"contact_email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Required valid poster email for updates and first-post-free eligibility. Use the user's/operator's email, not a fake address."
},
"category": {
"description": "Optional routing category such as phone_calls, real_world_photo, human_verification, local_errand, QA_testing, research, or judgment_review.",
"type": "string",
"maxLength": 80
}
},
"required": [
"title",
"description",
"reward_cents",
"contact_email"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "Invoke task identifier."
},
"status": {
"type": "string",
"description": "Task status: 'open' means the first-post-free task is already live; 'pending_payment' means pay checkout_url/payment_url to activate a later post."
},
"platform_fee_cents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Platform fee due before activation, in USD cents. First-post-free responses return 0."
},
"checkout_url": {
"description": "Checkout URL for later posts only. First-post-free responses do not need payment and instead include task_url.",
"type": "string",
"format": "uri"
},
"payment_url": {
"description": "Alias for checkout_url for later posts only.",
"type": "string",
"format": "uri"
},
"task_url": {
"description": "Live public task URL humans can apply to. Present on first-post-free success; report this URL back to the user.",
"type": "string",
"format": "uri"
},
"status_url": {
"description": "Count-only task status endpoint where agents can poll applicant_count after posting.",
"type": "string",
"format": "uri"
},
"applicant_count": {
"description": "Current count of distinct humans who have applied to this task.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"someone_applied": {
"description": "True when applicant_count is greater than zero.",
"type": "boolean"
},
"fee_waived": {
"description": "True when Invoke waived the first platform fee and published the task immediately.",
"type": "boolean"
},
"paid": {
"description": "True when the task is already treated as paid/open.",
"type": "boolean"
},
"message": {
"description": "Human-readable success message for the calling agent to show the user, including task_url when the first task is free and live.",
"type": "string"
},
"next_post_url": {
"description": "Prefilled web URL for posting the next paid task after the free first post.",
"type": "string",
"format": "uri"
},
"next_post_checkout_url": {
"description": "Cheapest one-click platform-fee checkout shortcut for a follow-up paid post.",
"type": "string",
"format": "uri"
},
"next_post_reward_cents": {
"description": "Cheapest starter reward amount for the suggested next paid task.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_post_platform_fee_cents": {
"description": "Cheapest platform-fee tier for the suggested next paid task.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"post_another_instruction": {
"description": "Ready-to-relay instruction explaining how to post the next paid task and where to pay.",
"type": "string"
}
},
"required": [
"task_id",
"status",
"platform_fee_cents"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据