Lint a voice agent
lint_voice_agentCheck a phone voice agent’s system prompt and, optionally, its config JSON (Vapi assistant, Retell agent or LLM, ElevenLabs agent, or OpenAI Realtime session) against rule-based checks learned on live calls. Finds: no live date and dates without a year; phone numbers, emails, URLs, hyphen ranges and long numbers the voice will misread; no spelling protocol or bare-letter spelling; instructions to pass as human, missing AI disclosure and missing recording notice; scripted tool start lines, stall phrases and silent or long openers; tools with no description, untyped or undescribed parameters, undefined required fields, unformatted date parameters and unstated results; Vapi nested item enums, flat analysisPlan keys, disabled plans and plans without the transcript; ElevenLabs Turbo stutter risk; no transfer or callback path and no end-call; placeholders, secrets, very long prompts and contradictory always and never rules. Each finding has a rule id, severity, the exact line (and JSON path for config), an excerpt, a specific message and the fix; disclosure and recording rules carry their legal citations with the date read. Returns a 0 to 100 score and a verdict. No model reads the input and nothing is stored. Informational, not legal advice.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Which platform the config is for. "auto" detects it from the JSON. | auto |
| config_json | No | The agent’s config as a JSON string, exactly as the platform exports it: a Vapi assistant, a Retell agent and/or LLM (or {"agent": ..., "llm": ...}), an ElevenLabs agent, or an OpenAI Realtime session or session.update event. | |
| min_severity | No | Only return findings at or above this severity: critical, high, medium or low. | low |
| first_message | No | The opening line the agent speaks, when it is not in the config. | |
| system_prompt | No | The agent’s system prompt, as plain text. Optional when config_json contains it. |