protogrid

Search / com.modernmustardseed/voice-linter

Voice Agent Linter

R0· no sign-in

Lints a phone voice agent prompt and platform config before real callers reach it.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality92strong
Trust83of 100
Uptime, 30 days100%
Latency p50180 ms

Connect

8 clients · secrets stay placeholders
{
  "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

Quality 92 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations3 of 3 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 1,261 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes1 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

3 tools, about 1,261 tokens to load them all · tool set 64346ee14238 · tools last changed 2026-10-12 · checked 2026-10-20 17:02 UTC

Tool changes

  • lint_voice_agentchangeddescription, input schema
    before

    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. No model reads the input and nothing is stored. Informational, not legal advice.

    after · 81% of words in common

    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.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+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.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.modernmustardseed.com/voice-linter streamable-httpnoneyes100%180 ms2026-07-282026-10-20

Tools (3)

explain_lint_ruleread-onlyExplain 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-onlyCheck 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-onlyList 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.

Similar MCP servers

More from com.modernmustardseed

And 6 more from this publisher.

Official server.json
{
  "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."
}