humanbottasks
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@humanbottaskshave a human verify this photo of a signed contract, then get me the result"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
humanbottasks
Gemanagter Human-Service-Layer fuer AI-Agenten. Ein AI-Agent delegiert ueber MCP eine Aufgabe, die er nicht selbst kann, an einen Menschen; der Mensch erledigt sie, der Agent ruft das Ergebnis ab.
MVP-Status
server.pyMCP-Server (Tools: request_human_task, get_task_status)store.pySQLite-Queue (tasks.db)fulfill.pyCLI fuer den Menschen (Tasks ansehen/erledigen)demo.pyEnd-to-End-Demo (Agent -> Task -> Mensch -> Ergebnis)test_smoke.pySmoke-Test
Related MCP server: human-delegation
Setup & Start
cd humanbottasks
unset PYTHONPATH
uv venv
uv pip install "mcp<2"
uv run server.pyTransporte
uv run server.py # stdio (Claude Desktop, Cursor, lokale Frameworks)
uv run server.py --transport streamable-http # HTTP-Endpoint http://127.0.0.1:8000/mcp (lokal/Remote-Agents)
uv run server.py --transport sse # Legacy-SSE http://127.0.0.1:8000/sseHost/Port via Umgebungsvariablen: HBT_HOST (default 127.0.0.1), HBT_PORT (default 8000). Fuer Remote-Zugriff: HBT_HOST=0.0.0.0 setzen.
Install (fuer andere Builder, 1 Zeile)
uvx humanbottasksTask-Typen
verification · physical_action · subjective_judgment · ground_truth_labeling · prove_human
MCP-Clients (installiert + konfiguriert)
Claude Desktop:
C:\Users\marku\AppData\Roaming\Claude\claude_desktop_config.jsonCursor:
C:\Users\marku\.cursor\mcp.jsonWindsurf:
C:\Users\marku\.codeium\windsurf\mcp_config.jsonTemplates in
config/(falls neu einrichten noetig)
Naechste Schritte (Reihenfolge)
Nachfrage-Test: Server laeuft, ein echter Agent ruft request_human_task.
Website/Landing fuer Agent-Builder.
Payments (Stripe/Circle) erst, wenn Nachfrage da ist.
Available Tools
2 toolsget_task_statusA
Status und Ergebnis einer delegierten Task abfragen.
Args: task_id: Die task_id aus request_human_task.
Returns: 'pending'/'done' plus Ergebnis, wenn fertig.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full behavioral burden; it does disclose the shape of the result ('pending'/'done' plus the result once finished), which tells the agent this is a state-polling read. It says nothing about error cases, what happens for unknown task_ids, or whether calling before completion is expected, so the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by a compact Args/Returns block with no padding. The Args entry largely repeats the schema, but the overall length is proportionate to a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter status tool with an output schema already present, the description supplies purpose, parameter provenance, and the polling-state vocabulary an agent needs to act. The Returns section slightly duplicates the output schema, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the schema only says 'Task Id' as a bare string — so the description must compensate, and it does explain that the value originates from request_human_task. That is meaningful provenance but not format or validity detail, so it fills the gap only halfway.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource pair (query the status and result of a delegated task) rather than restating the tool name, and it ties itself to the sibling by naming request_human_task as the source of the task_id. It stops short of contrasting a distinct scope, but an agent can still separate it from request_human_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentioning that task_id comes from request_human_task implicitly positions this tool as the follow-up step after delegation, which is useful context. There is no explicit statement of when to call it (e.g., poll until 'done'), how often, or what alternatives exist, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_human_taskA
Delegiere eine Aufgabe an einen menschlichen Arbeiter.
Nutze das fuer alles, was du als KI nicht selbst erledigen kannst: physische Aktionen, Verifikation, subjektive Urteile oder Ground-Truth-Labeling.
Args: task_type: Eine von 'verification', 'physical_action', 'subjective_judgment', 'ground_truth_labeling', 'prove_human'. description: Klare, konkrete Beschreibung der Aufgabe. max_price_usd: Maximalpreis in USD, den du bereit bist zu zahlen.
Returns: Eine task_id, mit der du den Status abfragen kannst.
| Name | Required | Description | Default |
|---|---|---|---|
| task_type | Yes | ||
| description | Yes | ||
| max_price_usd | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden. It does disclose meaningful behavior: that this is a paid, queued delegation (max_price_usd) with a task_id returned for later polling. It does not state latency, what happens if no worker accepts, whether funds are committed upfront, or whether the call blocks – all important for a cost-incurring mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in one sentence, then a usage block, then Args and Returns. Every line is functional; nothing is restated from the tool name alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, yet the description still names the task_id and its use. Coverage of type, description, and price is sufficient to invoke correctly; only operational details of the human-worker marketplace (timing, failure modes) are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema declares task_type as a bare string with no enum, but the description enumerates all five accepted values and explains description and max_price_usd. The only gap is that the default of 10 for max_price_usd is not mentioned, nor what happens if it is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Delegiere eine Aufgabe an einen menschlichen Arbeiter") and makes the delegation model unmistakable. The Returns section points at the async follow-up (task_id → status query), which implicitly distinguishes it from the sibling get_task_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear selection criterion plus concrete use cases: physical actions, verification, subjective judgments, ground-truth labeling. What is missing is an explicit when-not or a direct reference to the sibling as an alternative; the negative-space framing ("was du als KI nicht selbst erledigen kannst") carries most of the weight.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
get_task_status - First observed
request_human_task
TDQS
Scored across 2 tools
The two tools are a clean submit/poll pair with no overlap: request_human_task creates work, get_task_status reports on it. Descriptions explicitly cross-reference each other (task_id comes from request_human_task), making selection obvious.
Both names follow the same verb_noun snake_case pattern (request_human_task, get_task_status). The verb choice (request vs get) correctly distinguishes action from read.
Two tools is thin for a delegation marketplace; the surface is just create + poll. It is defensible for a minimal MVP, but a single missing operation forces the agent into a dead end rather than an alternate tool.
The core lifecycle (submit task, poll for result) is covered, but there is no cancel/abort, no list of outstanding tasks, and no way to extend or renegotiate a task's price. Agents delegating multiple tasks must track IDs themselves with no cleanup path.
Maintenance
Related MCP Connectors
API for AI agents to delegate tasks to real humans.
Human-as-a-Service for AI agents. Delegate tasks that need a real human, get results via API.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Human execution API for AI agents needing voluntary help with physical-world tasks.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables AI agents to submit tasks for human or AI review and receive decisions via MCP tools, adding human review checkpoints to workflows.MIT- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables agents to delegate asynchronous tasks to registered humans, with support for threaded conversation, result review, and delivery via web, email, or Telegram.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage task state through MCP, including creating, updating, and tracking tasks, with support for client-side encryption and secure local credential storage.10 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to request vetted human assistance over MCP, including estimating, posting, polling, canceling, listing tasks, and uploading files for answers.-