SEO AI-Visibility MCP — does brand X appear in an LLM's answer (GEO / AI-SEO)
Single tool with partial schema and weak descriptions. Tool name lacks action verb (should be 'query_llm_answer' or 'get_llm_answer'). Description is 280+ chars, too long and example-heavy, violating pattern:tool-description guidance. Input schema present but incomplete: missing type constraints on model_name (should enum gpt-4o, gpt-4-turbo, etc.), no output schema documented, no error handling guidance. Parameter descriptions are minimal (e.g., model_name just says 'default gpt-4o', doesn't explain what it controls or valid options). Exposes _apiKey as a parameter, violating pattern:secret-injection, credentials must never appear in tool params. No pagination, no result limits documented. Defensive text/URL collection is good engineering but not compensated in scoring since output structure is undocumented for the LLM.
Does `<brand>` appear in ChatGPT's answer for `<question>` — runs a prompt through an LLM and returns its answer plus any cited sources/links, for AI-visibility (GEO) analysis: see what an LLM says about a brand, topic, or query and which sources it cites. Example: seo_llm_answer({ user_prompt: "What are the best running shoe brands?", model_name: "gpt-4o", _apiKey: "your-base64-key" })
API key exposed as tool parameter (_apiKey). Credentials must use server-side secret injection via environment variables or vault. Agent traces log all parameters, secrets leak into logs and prompt history.
Tool name lacks action verb. 'seo_llm_answer' is a noun phrase; should be 'query_llm_answer' or 'get_llm_answer' to signal the action. LLMs infer intent from verb-first names.
Description is 280+ characters with embedded example values ('What are the best running shoe brands?'). Violates pattern:tool-description guidance (10 - 1024 chars, no example values). LLMs reuse examples literally instead of adapting to context.
model_name parameter lacks enum constraint. Should declare valid models (gpt-4o, gpt-4-turbo, etc.) as an enum, not free-form string. Prevents LLM hallucination of invalid model names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Output schema not documented. LLM cannot plan downstream calls or extract fields. Response structure (answer, sources, raw) is inferred from code, not declared in tool definition.