Remote MCP server bridging Poke and ElevenLabs Conversational AI for outbound phone calls
Four tools with complete JSON schemas and clear descriptions. Naming follows verb_noun convention (place_call, get_call_status, list_calls, cancel_call). Descriptions are substantive (100-200 chars), explaining WHAT and WHEN. Input schemas properly typed with required fields marked. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is present but generic ('Failed to place call'). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Parameters lack some constraints (e.g., limit in list_calls has no max documented in schema, though code enforces 100).
Attempt to cancel an in-flight call. No-op if the call already finished.
Get the current status, transcript, and (when finished) outcome summary of a previously placed call.
List the user's recent calls, most recent first.
Place an outbound phone call where an AI voice agent pursues a natural-language objective on the user's behalf (e.g. booking an appointment). Returns immediately with a call_id; the call runs for minutes. Poll get_call_status or wait for the completion notification.
Output schemas not documented. LLMs cannot predict response structure (e.g., place_call returns {call_id, conversation_id, status, message} but this is not in the tool definition). Agents must guess or fail.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). place_call and cancel_call are destructive/reversible but not marked. LLMs cannot distinguish safe reads from risky writes.
list_calls limit parameter lacks max constraint in schema (code enforces 100, but schema does not declare it). LLMs may pass invalid values; validation error is generic.
Error messages are generic ('Failed to place call: ...') and do not guide recovery. No categorization of retryable vs. fatal errors. LLMs cannot decide whether to retry or escalate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No idempotency guarantees documented. place_call creates an agent and initiates a call, if retried, will create duplicate agents/calls. Agents need to know this is non-idempotent.