Three tools with basic verb-noun naming (make_call, get_phone_number, list_assistants). Descriptions present but generic and lack actionable context. Input schemas visible with type definitions, but parameter descriptions are minimal (10-30 chars, well below 72-char baseline). No output schemas documented. Error handling returns status/message but lacks recovery guidance or categorization. No tool annotations (readOnlyHint, destructiveHint). make_call is a WRITE operation that should warn about irreversible consequences. Missing pagination for list_assistants despite potentially returning many results.
Get details of a VAPI phone number by ID.
List all VAPI assistants. Returns a list of assistants with their details
Make an outbound call using VAPI. Args: phone_number (E.164 format), task (call prompt), assistant_name (optional, if not provided a custom assistant will be created)
Descriptions lack actionable context and recovery guidance. 'Make an outbound call using VAPI' does not explain when to use this vs alternatives, what happens on failure, or prerequisites (e.g., VAPI_API_KEY must be set). Descriptions should be 50-200 chars and answer WHAT, WHEN, and WHAT-NEXT.
Parameter descriptions are minimal (10-30 chars vs 72-char baseline). 'The phone number to call in E.164 format' is adequate, but 'The task or prompt for the call' is vague, does it accept free text, structured JSON, or a predefined template? 'Optional name of a predefined assistant to use' lacks guidance on how to discover valid names.
No output schemas documented. Callers cannot predict response structure (e.g., does make_call return call_id, status, details, or all three?). LLMs must guess what fields to extract for downstream operations. All tools should document return types with field names and types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
make_call is a destructive WRITE operation (initiates real phone calls) but lacks tool annotations (destructiveHint) and no confirmation/dry-run pattern. Agents can trigger calls without safeguards. Should support a dry_run parameter or require explicit confirmation.
list_assistants returns unspecified structure with no pagination. If VAPI has hundreds of assistants, returning all in one response wastes tokens and risks context overflow. Should accept limit/offset and return total_count.