An MCP server that provides tools for sending SMS messages, making calls, and managing contacts via the Twilio API
Server has 4 tools with explicit Zod schemas and descriptions. However, critical gaps limit production readiness: (1) Parameter descriptions are sparse, 'name' in addContact lacks description entirely; (2) Tool descriptions are generic and lack context on when/why to use each tool or what happens on failure; (3) No error handling guidance, tools throw raw errors without recovery hints; (4) rickRoll is a destructive/irreversible operation with no confirmation pattern or dry-run; (5) Output schemas are implicit (MCP text content) but not documented for the agent; (6) No pagination, rate limiting, or result limits despite contact storage. Naming is clear (verb_noun pattern) and schemas are present, but descriptions fall short of the 50-200 char LLM-optimized baseline.
Adds a new contact to your contact book
Returns an E164 phone number for the contact matching the name
Calls a person and rick rolls them
Sends a text message. Use the findPhoneNumberByName tool if you do not have the number in context
addContact 'name' parameter has no description. LLMs cannot infer whether to pass first name, full name, or display name.
rickRoll is irreversible (calls a person) but has no confirmation pattern, dry-run, or error recovery guidance. Agents will invoke it without safeguards.
Tool descriptions lack context on when to use each tool vs alternatives and what happens on failure. 'Calls a person and rick rolls them' does not explain prerequisites, side effects, or error recovery.
No error handling guidance. Tools throw raw errors (e.g., 'Contact not found') without suggesting recovery steps (e.g., 'Try addContact() first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Output schemas are implicit (MCP text content type) but not documented. Agents cannot plan downstream calls or extract structured data.