Audit and enforce brand voice consistency across marketing content.
This is a Python client library, not an MCP server. It lacks transport layer, MCP protocol implementation, and any server registration mechanism. The single 'audit' tool has a reasonable input schema and description, but the codebase shows no evidence of MCP tool registration, error handling patterns, or any protocol-layer work. The audit() method exists as a Python class method in client.py, but there is no explicit tool definition block, no MCP server scaffolding, no resource/prompt support, and no transport configuration. The overall definition quality score is pulled down further by lack of error handling guidance, no security patterns, no idempotency markers, and no output schema documentation.
Audit a list of content strings for brand voice consistency.
Not an MCP server, this is a standalone Python client library with no MCP protocol implementation, transport layer, or tool registration mechanism.
Tool definition is inferred from a Python class method, not explicitly registered with an MCP tool registration block. No evidence of MCP tool metadata (names, descriptions, schemas) in MCP protocol format.
No output schema documented. The audit() method returns a dict with audit_results, overall_score, critical_issues, pieces_audited, and brand_profile_summary, but the return type structure is not formally specified for LLM consumption.
No error handling or recovery guidance. If content_pieces is empty, malformed, or very large, the method silently degrades or may fail. No error messages guide the LLM on what went wrong or how to retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 33 | 2026-07-28+ | v2 |
Input parameter 'content_pieces' has a schema (array of strings) but lacks input validation, length limits, or constraints. An LLM could pass an array with 10,000 items, causing performance issues. No minimum/maximum specified.
No tool composition support. Standalone client library cannot compose with other MCP tools or services. No prompts, resources, or sampler capabilities to orchestrate workflows.
No security patterns or permission gates. The audit() method accepts arbitrary brand_profile dicts in __init__, allowing callers to override sensitive checks (e.g., prohibited_words list). No audit logging or who-did-what tracking.
audit() method is not idempotent-marked. Calling it twice with the same content_pieces will produce different scores if the deduction logic has any randomness or state. No idempotent guarantees documented.