DecisionPing MCP server

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.

Endpointhttps://mcp.decisionping.com/mcp
AuthenticationBearer project API key
TransportStreamable HTTP
ProtocolNegotiated MCP version

Setup

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>.

Keep project keys secret.Do not commit keys to source control, print them in logs or include them in agent prompts. Prefer the client’s secret or environment-variable support.
Open the client configuration guide →

Tool reference

Every tool publishes MCP safety annotations. Clients should still apply their own confirmation and trust policies.

notify
Send information without blocking the agent.Creates and delivers a notification
External side effect
ask_user
Request confirmation, a choice, or free text.Creates and delivers a decision request
External side effect
get_request
Read the current request status and response.Does not modify the request
Read only
wait_for_response
Poll until a human answers or the call times out.Waits for up to 120 seconds per call
Read only
cancel_request
Cancel a pending request that is no longer needed.Transitions a pending request to cancelled
External side effect

Decision lifecycle

  1. 1Create onceCall ask_user with a stable externalId.
  2. 2Save the request IDThe returned UUID identifies this decision in every later call.
  3. 3WaitCall wait_for_response; repeat it if the result remains pending.
  4. 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

01 · Confirmation

Approve a production deployment

{
  "title": "Deploy production?",
  "message": "Version 2.4.1 passed all checks.",
  "kind": "confirmation",
  "externalId": "deploy-2.4.1",
  "expiresInSeconds": 1800
}
02 · Choice

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"
}
03 · Text

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

  • 401 The project API key is missing, malformed, revoked or invalid.
  • 404 The request does not exist or belongs to another project.
  • 409 The requested transition is no longer valid.
  • pending The human has not answered yet; wait again without creating a duplicate.
  • expired The 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.