MCP server for triggering and managing AI-powered phone calls via Twilio, with real-time call monitoring and SMS confirmation capabilities
Three tools with partial schemas and descriptions. start_call has a detailed, well-structured input schema with enums and nested objects (calendarSlot), but descriptions lack LLM-optimization guidance on when/why to use it. wait_for_call_result and send_sms_confirmation have minimal schemas (single string params) and descriptions that are functional but lack actionable context. No output schemas documented for any tool. Descriptions range 50 - 200 chars but lack dependency hints and recovery guidance. No error handling patterns visible. Tool names follow verb_noun convention (start_, wait_for_, send_) but descriptions do not explain prerequisites or failure modes.
Send a confirmation SMS directly to a phone number.
Trigger a real phone call toward a business objective. Returns almost immediately with {callId, dashboardUrl}. ALWAYS tell the user the dashboard URL right away, then call wait_for_call_result — don't wait for the call to finish before sharing the link. CALENDAR: for a booking/reschedule, FIRST use your Google Calendar connector to check the user is free, then pass that verified time as calendarSlot (this app server never touches calendar credentials — you own the calendar). AFTER wait_for_call_result comes back goal_met, use the calendar connector again to add the confirmed event AND set a reminder for it.
Blocks until the call finishes, returns the final outcome (transcript, receipt). Call this immediately after start_call, after the dashboard link has already been shared with the user. When the receipt outcome is goal_met for a booking/reschedule, add the confirmed time to the user's Google Calendar via your connector and set a reminder.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (callId, dashboardUrl, transcript, receipt). Breaks tool chaining.
wait_for_call_result and send_sms_confirmation have minimal parameter descriptions. 'callId' and 'toNumber' lack format guidance (E.164 format mentioned in start_call but not here). Inconsistent documentation.
No error handling guidance. Descriptions do not explain failure modes (invalid phone number, call timeout, SMS delivery failure) or recovery steps. LLM cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
start_call description embeds procedural instructions ('ALWAYS tell the user', 'FIRST use your Google Calendar') that belong in agent prompts, not tool descriptions. Pollutes the tool definition with orchestration logic.
calendarSlot parameter marked 'optional' but description says 'Pre-verified by the calendar connector', implies it is required for booking/reschedule callTypes. Undocumented dependency between callType and calendarSlot presence.