
Human Dispatch Mcp
io.github.zyntarasystemsPublished by GitHub account zyntarasystemsv0.2.2Updated Oct 24, 2026
MCP server that dispatches physical-world tasks to humans through a unified API
The publisher's own server: TAP
Overview
An MCP server that lets an assistant dispatch physical-world and digital tasks to human workers through webhook providers, with routing, status tracking and a 3
- What you can do
- Dispatch tasks to human workers with a description, category, budget, deadline and required proof, routed to the best matching provider or a manual fallback. Check task status, worker info and submitted proof, list tasks with filters, and cancel pending or in-progress tasks. Register, list and remove webhook providers, and see which backends are configured and what they support.
- When to use it
- Use it when an agent needs work done that only a person can perform, such as taking a photo at a location, checking something on site, or small digital jobs, and you have a provider webhook or a manual backend to receive the tasks.
- Requirements
- Runs locally as an npm package over stdio, or over HTTP on loopback with a bearer token. Optional backends need credentials: MTURK_ACCESS_KEY_ID and MTURK_SECRET_ACCESS_KEY for Amazon Mechanical Turk, RENTAHUMAN_API_KEY for RentAHuman.ai, and MANUAL_WEBHOOK_URL for manual notifications. Outbound webhook URLs must be public HTTPS addresses.
Installation
In SourceWeft
- Open Human Dispatch Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
human-dispatch-mcp
🌐 humandispatch.ai — Homepage & provider docs
A universal dispatch layer for AI-agent-to-human task routing — Any business (law firms, VA services, freelancers, agencies) can plug in via webhooks and start receiving AI-dispatched tasks in minutes.
Routes tasks to registered webhook providers with smart matching, fallback chains, and proof-of-completion tracking. Any service provider registers a webhook, and the router matches tasks to providers based on capabilities, region, and budget.
Quick Start
Testing with MCP Inspector
The easiest way to verify the server is working:
Open http://localhost:5173, enter the proxy session token shown in your terminal, and click Connect.
Test sequence:
-
List backends — call
human_list_backendsto seewebhook_providerandmanual -
Register a provider — call
human_register_provider:
- Dispatch a task — call
human_dispatch_taskwith Raw JSON input mode:
The task should route to your registered provider. If no providers match, it falls through to the manual backend.
MCP Client Configuration
Claude Desktop / Cursor / Any MCP Client
HTTP Transport
Note: HTTP transport binds to
127.0.0.1only. For remote access, place a TLS-terminating reverse proxy (e.g. nginx, Caddy) in front of the server. Never expose the port directly.
Required: HTTP transport refuses to start without
MCP_AUTH_TOKENset. AllPOST /mcprequests must includeAuthorization: Bearer <MCP_AUTH_TOKEN>. The/callbacks/task/:taskIdendpoint uses HMAC-signature auth instead — providers do not see the bearer token.
Tools Reference
Architecture
For Service Providers
Any business can register as a provider to receive AI-dispatched tasks. Here's how:
1. Set up a webhook endpoint
Your endpoint receives POST requests with these headers:
2. Handle task.new events
Request body:
payload_version is the request-shape version; pin your parser to a known version and reject unknown ones. Today only 1 is sent.
Respond with:
Or reject:
Handle provider.verify events
When a provider is registered, the server immediately POSTs a provider.verify event to confirm the endpoint is reachable and willing. A 200 alone is not enough — your endpoint must return { "verified": true } in the JSON body. Anything else (missing field, false, non-JSON) marks verification as unreachable. This makes registration require explicit consent from your endpoint, not just URL reachability.
3. Report completion (HTTP transport only)
POST to http://<server>/callbacks/task/<task_id> with headers:
x-provider-id: Your provider UUIDx-dispatch-signature:sha256=<hmac_hex>of the body
4. Verify HMAC signatures
Always verify incoming webhooks using your shared secret:
HMAC canonicalization contract (load-bearing): the signature is computed over the exact bytes the request was POSTed with, not over a re-serialized JSON object. When you send a callback, sign the byte string you put on the wire — do not parse the body, re-stringify it, and sign that, because key ordering or whitespace may differ. Use JSON.stringify(payload) once, capture the resulting string, sign that string, send that string. The server applies the same rule on the receiving side: it captures the raw request body buffer before any JSON parser touches it.
Smart Routing
The router automatically picks the best backend based on:
- Agent preferences —
preferred_backendsandfallback_chainare honored first - Provider matching — category, task type, region, and budget compatibility
- Reliability — providers with higher completion rates are tried first
- Speed — faster providers score higher
- Fallback — the
manualbackend is always available as the ultimate fallback
Example Agent Usage
Python with LangGraph
Environment Variables
Security
This server processes outbound HTTP requests on behalf of its callers and is intended to run inside trusted infrastructure. The relevant guarantees:
- HTTP transport requires authentication.
MCP_AUTH_TOKENis mandatory; the server refuses to start without it. Bearer comparison is constant-time (timingSafeEqual). - DNS-rebinding protection is enabled on
POST /mcp. The transport rejects requests whoseHostheader points at anything other than the configured loopback. - Outbound URL guard. Every webhook URL the server fetches (provider registration,
MANUAL_WEBHOOK_URL,callback_url, proof URLs) goes through a structured validator: HTTPS only, no loopback, no RFC1918 / link-local / unique-local hosts, with a DNS resolution check at fetch time to defeat last-second rebinds. There is no opt-out — use a public tunnel (ngrok, cloudflared) for local testing. - Inbound callbacks are authenticated by HMAC, not by IP. Each provider registers its own webhook secret. The server verifies
x-dispatch-signatureover the raw request bytes before parsing JSON. A per-provider token bucket limits callback flood (30 burst, 5/sec sustained). - Terminal-state guard. Once a task reaches
completed,failed, orcancelled, callbacks for that task are rejected with 409. This blocks replays, late provider retries, and provider-driven status flips. - Webhook payload versioning. All outbound bodies carry
payload_versionandeventdiscriminators. Pin your parser; reject unknown versions. - Webhook secrets never leave the server. Provider data returned by MCP tools is sanitized to drop
webhook_secret. The same field never appears in logs. - No persistence. Tasks, providers, and per-task state live in memory. Restarting the server discards all state. If you operate this in production, terminate it cleanly so in-flight tasks fail fast rather than hang in providers.
If you discover a security issue, please open a private security advisory on GitHub rather than a public issue.
Roadmap
- Persistent provider registry (SQLite / PostgreSQL)
- Task expiration and automatic retry
- Provider quality scoring and feedback loops
- Cost estimation before dispatch
- Batch task submission
- Provider dashboard / admin UI
- OAuth-based provider authentication
Contributing
Adding a New Backend Adapter
- Create a new file in
src/services/backends/ - Extend
BaseBackendAdapter - Implement all methods from
BackendAdapterinterface - Add the backend ID to the
BackendIdenum insrc/types.ts - Register the adapter in
src/index.ts
License
MIT
Source: README.md at commit d8d9f83
Tools
0Version history
1- v0.2.2LatestSep 16, 2026
Score
40% 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 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.
Other Human integrations

TAP
tech.humanOfficial publisher
TAP is a hosted remote MCP endpoint that isolates AI agents' credentials using placeholder secrets, policy checks and optional human approval.
UGC, the Human Ad Network
africa.ugcOfficial publisher
Remote MCP endpoint for UGC, a "Human Ad Network", letting an assistant work with ad campaigns, clipping and Clip Studio from chat.

Woodstitch
com.woodstitch
Runs paid, blinded human listening tests on text-to-speech audio and returns preference or human-vs-AI scores with confidence intervals.

J-Dawgs AI Tool Store & Human Hands — Catalog MCP
Published by GitHub account joshuajdawg0350
Read-only catalog server for the J-Dawgs AI Tool Store and Human Hands for AIs, letting an assistant search tools, prices and bundles and learn how agents…

ActualHumanTake
Published by GitHub account magiautonomous
Submits a product for an honest, human-written review and lets an assistant check status or read the finished feedback using a secret receipt token.