Human decisions for autonomous agents
DecisionPing is a remote Streamable HTTP MCP server. It gives an agent a durable way to notify a human, request an explicit decision and resume with a structured answer.
https://mcp.decisionping.com/mcpBearer project API keyStreamable HTTPNegotiated MCP versionSetup
Create a project and API key in the administration app. Store the key as DECISIONPING_API_KEY, then configure the remote endpoint with Authorization: Bearer <key>.
Tool reference
Every tool publishes MCP safety annotations. Clients should still apply their own confirmation and trust policies.
notifyask_userget_requestwait_for_responsecancel_requestDecision lifecycle
- 1Create onceCall
ask_userwith a stableexternalId. - 2Save the request IDThe returned UUID identifies this decision in every later call.
- 3WaitCall
wait_for_response; repeat it if the result remains pending. - 4Continue only on answeredNever infer consent from a timeout, delivery status or silence.
Terminal statuses are answered, expired and cancelled. A timeout from wait_for_response does not change the request status.
Working examples
Approve a production deployment
{
"title": "Deploy production?",
"message": "Version 2.4.1 passed all checks.",
"kind": "confirmation",
"externalId": "deploy-2.4.1",
"expiresInSeconds": 1800
}Select one of several safe plans
{
"title": "Choose a migration strategy",
"message": "Both plans passed the dry run.",
"kind": "choice",
"choices": [
{ "id": "rolling", "label": "Rolling migration" },
{ "id": "maintenance", "label": "Maintenance window" }
],
"externalId": "migration-plan-42"
}Ask for missing incident context
{
"title": "Incident context needed",
"message": "What changed immediately before the alert?",
"kind": "text",
"allowText": true,
"externalId": "incident-inc-1842-context"
}Status and error handling
401The project API key is missing, malformed, revoked or invalid.404The request does not exist or belongs to another project.409The requested transition is no longer valid.pendingThe human has not answered yet; wait again without creating a duplicate.expiredThe deadline passed without a valid answer.
Security and data flow
Requests may contain title, message, choices, metadata and the resulting human response. They are delivered only to enabled chats in the project’s workspace. Telegram and WWChat process message content when those channels are enabled.
Passwords are bcrypt-hashed, project API keys are stored as SHA-256 hashes, public traffic uses HTTPS and PostgreSQL is not exposed publicly by the production stack.