MCP server for auditing brand citation share and visibility in generative AI search engines
This server has a single tool 'execute_skill_action' with virtually no usable definition. The tool description is extremely brief (59 characters) and provides no actionable guidance. No input schema is visible in the source code, the tool registration is a JSON print statement with no schema or parameters defined. The client.py file shows a completely different interface (audit_brand_citation_share) that does not match the MCP tool name, suggesting either incomplete implementation or a fundamental mismatch between the declared tool and what the server actually does. The source shows no error handling, no parameter descriptions, no output schema documentation, and no evidence of following any of the 54 Agentic Tool Patterns. The tool is not properly registered, it appears only as a string in a JSON print statement, not as a formal tool definition with schema.
Execute skill action for citation visibility auditing
Tool has no input schema. The mcp_server.py file declares 'execute_skill_action' as a string in a JSON print statement with zero schema, zero parameter definitions, zero types, zero constraints. A tool without a schema cannot be invoked, LLMs have no way to know what parameters to provide or what format is expected.
Tool description is too short and uninformative. 'Execute skill action for citation visibility auditing' (59 chars) violates the baseline of 10 - 1024 chars and provides zero context. It does not answer: What exactly does this tool do? When should the LLM call it? What does it return? The description does not help an LLM decide whether to invoke it.
Mismatch between declared tool and actual implementation. The MCP server declares a tool named 'execute_skill_action', but client.py defines a completely different method 'audit_brand_citation_share(brand_domain, target_search_queries)'. These do not correspond. Either the tool registration is incomplete, or the client.py is not wired into the MCP server. This makes the tool unusable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 17 | 2026-07-28+ | v2 |
Tool name does not start with a clear action verb. 'execute_skill_action' is generic and does not convey what the tool actually does. Following baseline patterns, tool names should be specific like 'audit_citation_visibility', 'analyze_search_results', or 'report_brand_sov'. A generic 'execute_*' verb forces LLMs to reason about what will happen.
No documented output schema. The tool returns nothing visible, or the response structure is entirely undocumented. LLMs cannot plan downstream calls or extract results without knowing what fields the response contains. Baseline A+ servers document all return types.
No parameter descriptions or constraints. Even if a schema were present, parameters lack descriptions explaining what they control, what format they accept, or what values are valid. This violates the baseline that 100% of A+ tools have parameter descriptions.
No error handling or recovery guidance. The source code contains no error classification, no actionable error messages, and no guidance for what an LLM should do if a call fails. This violates the recovery-guide pattern.