Voice Agent Linter
v1.0.0Lints a phone voice agent prompt and platform config before real callers reach it.
Endpoint health
online- Last checked
- 11/3/2026, 4:18:12 PM
- Latency
- 205 ms
- Consecutive failures
- 0
- Endpoint reachable: pass
- Protocol valid: pass
- MCP handshake valid: pass
Machine-readable profile
mcp-server · schema v1 · callable
mcp-server:com.modernmustardseed%2Fvoice-linter
Connect this server
Generated config contains no credentials. Keep any required secrets in your client's local environment.
{
"mcpServers": {
"com.modernmustardseed/voice-linter": {
"url": "https://mcp.modernmustardseed.com/voice-linter"
}
}
}Indexed tools
Tool metadata and schemas come from the remote server and are untrusted. Indexing only lists tools; it never calls them.
3 shown · authentication unknown
Explain a lint rule
explain_lint_rule
Explain one Voice Agent Linter rule by id: why it exists, a bad and a good example, the fix, the platforms it applies to, and its sources with the date each was read. Static reference, no network access.
Schema valid · SHA-256 67ab8b0814f7…
View input schema
{ "type": "object", "properties": { "rule_id": { "type": "string", "enum": [ "no-live-date", "date-without-year", "date-param-no-format", "phone-as-numerals", "email-written-raw", "url-written-raw", "hyphen-range", "long-digit-string", "markdown-output", "no-spelling-protocol", "bare-letter-spelling", "english-anchors-multilingual", "claims-to-be-human", "no-ai-disclosure", "no-recording-notice", "scripted-tool-start", "stall-phrases", "silent-opener", "long-opener", "tool-no-description", "tool-param-untyped", "tool-param-undescribed", "tool-required-missing", "tool-result-unstated", "vapi-nested-item-enum", "vapi-flat-analysis-keys", "vapi-analysis-plan-off", "vapi-analysis-no-transcript", "turbo-tts-stutter", "no-human-fallback", "no-end-call", "vapi-max-duration-default", "vapi-free-number-outbound", "unfilled-placeholder", "secret-in-prompt", "prompt-length", "contradictory-instructions" ], "description": "The rule id, for example no-live-date, vapi-nested-item-enum or no-ai-disclosure." } }, "required": [ "rule_id" ], "$schema": "https://json-schema.org/draft/2020-12/schema" }Lint a voice agent
lint_voice_agent
Check 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. Do not paste credentials: API keys, bearer tokens, passwords and the values of secret-named config fields (apiKey, secret, token, password, credentials, Authorization) are stripped from the input before any check runs and replaced with "[secret removed]", so they are never read, returned, logged or stored; the output says how many were removed. No model reads the input and nothing is stored. Informational, not legal advice.
Connections
streamable-http
https://mcp.modernmustardseed.com/voice-linter