Search / com.modernmustardseed/voice-linter
Voice Agent Linter
R0· no sign-inLints a phone voice agent prompt and platform config before real callers reach it.
v1.0.0 · active · website · descriptor JSON · versions
Search / com.modernmustardseed/voice-linter
R0· no sign-inLints a phone voice agent prompt and platform config before real callers reach it.
v1.0.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"voice-linter": {
"type": "http",
"url": "https://mcp.modernmustardseed.com/voice-linter"
}
}
}claude mcp add --transport http voice-linter https://mcp.modernmustardseed.com/voice-linter[mcp_servers.voice-linter]
url = "https://mcp.modernmustardseed.com/voice-linter"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"voice-linter": {
"type": "remote",
"url": "https://mcp.modernmustardseed.com/voice-linter",
"enabled": true
}
}
}{
"mcpServers": {
"voice-linter": {
"type": "http",
"url": "https://mcp.modernmustardseed.com/voice-linter"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=voice-linter&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLm1vZGVybm11c3RhcmRzZWVkLmNvbS92b2ljZS1saW50ZXIifQ%3D%3D"
}{
"servers": {
"voice-linter": {
"type": "http",
"url": "https://mcp.modernmustardseed.com/voice-linter"
}
}
}{
"mcpServers": {
"voice-linter": {
"httpUrl": "https://mcp.modernmustardseed.com/voice-linter"
}
}
}extensions:
"voice-linter":
enabled: true
name: "voice-linter"
type: streamable_http
uri: "https://mcp.modernmustardseed.com/voice-linter"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every useauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations3 of 3 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 1,261 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes1 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagelint_voice_agentchangeddescription, input schemaCheck 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.
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.
Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-100% +updated-9d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://mcp.modernmustardseed.com/voice-linter streamable-http | none | yes | 100% | 180 ms | 2026-07-28 | 2026-10-20 |
explain_lint_ruleread-only | 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. |
lint_voice_agentread-only | 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. |
list_lint_rulesread-only | List every Voice Agent Linter rule with its id, title, default severity, category, what it reads (prompt, config or both) and the platforms it applies to. Filter by platform or category. Static reference, no network access. |
Schemas: list_tools.
And 6 more from this publisher.
{
"name": "com.modernmustardseed/voice-linter",
"icons": [
{
"src": "https://mcp.modernmustardseed.com/apple-icon.png",
"mimeType": "image/png"
}
],
"title": "Voice Agent Linter",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://mcp.modernmustardseed.com/voice-linter",
"type": "streamable-http"
}
],
"version": "1.0.0",
"websiteUrl": "https://mcp.modernmustardseed.com/docs/voice-linter",
"description": "Lints a phone voice agent prompt and platform config before real callers reach it."
}