Open-source AI marketing plugin with 163 skills, 24 agents, 12-Part Strategy Flow, EU AI Act ready. Native on Claude Code, Cowork, Codex, Cursor, Copilot CLI, Antigravity, Hermes Agent, OpenClaw.
This server has significant structural and documentation gaps that prevent confident production use. While it provides 19 tools across 4 functional areas (brand setup, approval workflows, narrative mapping, language routing), the definitions lack the rigor required for reliable LLM interaction. Tool descriptions are present but often generic (e.g., 'Map competitive positioning...' without explaining when to use vs. similar tools or what structure is returned). Parameters have types but many lack concrete constraints, enums are used in some tools (approval types, move types) but missing in others (brand names, competitor names are free-form strings). Output schemas are not documented, forcing LLMs to infer what fields will be returned. Error handling is absent from all tool definitions. The server is STDIO-only, which caps protocol readiness at 50 and limits remote accessibility. The package.json claims 163 skills and 24 agents but only 19 tools are visible in the MCP definitions, suggesting the actual tool surface is incomplete or undocumented.
Approve a pending approval request
Create a new approval request for execution actions (publish-blog, send-email, launch-ad, schedule-social, send-report, crm-sync, send-sms)
Retrieve a specific approval by ID
List all executed or failed approvals with summary statistics
List all pending approvals sorted by risk level (critical first)
Record execution result for an approved action
Reject a pending approval request with reason
Create a brand profile with business model, industry, brand voice, channels, goals, target markets, and competitors
No output schemas documented. Tools return objects with undocumented field names and types, forcing LLMs to infer structure. This breaks downstream tool chaining and causes errors when fields are missing or named differently than expected.
Parameter descriptions are generic and lack usage guidance. Many parameter descriptions are 1-3 words (e.g., 'Brand slug identifier') without explaining what constitutes a valid slug, how to obtain it, or what happens if it doesn't exist. LLMs cannot disambiguate between similar tools without clear 'when to use' guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Detect language from text using Unicode script analysis and word frequency matching
Route language pair to appropriate translation service based on capability criteria
Score translated content across length ratio, formatting preservation, key-term consistency, and placeholder integrity
List all supported languages and their routing characteristics
Detect positioning shifts in competitor narratives and assess strategic implications
Find narrative gaps and positioning opportunities in the competitive landscape
Generate counter-narrative playbooks for competitive moves
Map competitive positioning and narrative territories by analyzing dimensions, competitors, and your positions
Analyze narrative trends over a specified time period
Get a summary of the current narrative landscape and your positioning
Track narrative landscape evolution over time
No error handling guidance in tool definitions. Tools do not document what errors they return, when they are retryable, or what recovery steps are available. E.g., 'brand-setup' does not explain what happens if the brand already exists, and 'approval-manager:reject' does not specify what happens if the approval ID is invalid.
Missing parameter constraints on free-form string fields. 'competitor' (in narrative-mapper tools), 'content_summary' (approval-manager), and custom object properties like 'brand_voice' lack enums, length limits, or format specifications. This invites hallucinated values and makes it impossible for LLMs to validate input before submission.
Inconsistent naming across related tools. Narrative mapper has 'narrative-mapper:map-landscape', 'narrative-mapper:find-gaps', 'narrative-mapper:detect-shifts', and 'narrative-mapper:track-narrative', all similar operations on the same resource. Names do not clearly distinguish between exploring the landscape vs. tracking changes vs. generating responses. LLMs will struggle to select the right tool without explicit 'when to use' guidance in descriptions.
Tool descriptions lack 'when to use' context. Every tool's description states WHAT it does but not WHEN an LLM should call it or WHY instead of a similar tool. E.g., 'narrative-mapper:find-gaps' vs 'narrative-mapper:detect-shifts', both analyze narratives, but the descriptions do not explain the distinction.
Required parameter 'brand' appears in most tools but is not universally required or defined. Some tools require it; some make it optional. The format (slug vs. UUID vs. name) is never specified. This forces LLMs to guess how to populate the 'brand' parameter and introduces errors when the format is wrong.
No pagination or result limits documented. Tools like 'approval-manager:list-pending' and 'approval-manager:get-execution-log' return lists but do not specify page size, max results, or pagination mechanism. Without limits, large result sets blow the context window.
Object-typed parameters lack structure. Fields like 'business_model', 'industry', 'brand_voice', 'channels', 'goals', 'compliance_check' are typed as 'object' with only high-level descriptions. The exact fields, types, and valid values are not documented, forcing LLMs to guess the correct structure.
No tool composition guidance. Related tools (e.g., 'create-approval' → 'approve' → 'mark-executed') are not documented as a workflow. LLMs cannot infer the sequence or dependencies without explicit guidance. E.g., can you call 'approve' before 'create-approval'? What if you call 'mark-executed' without 'approve'?
No idempotency or side-effect documentation. Destructive tools like 'approval-manager:reject' and 'approval-manager:mark-executed' (marked IRREVERSIBLE) do not document whether they are idempotent or what happens if called twice with the same parameters. This is critical for agent retry logic.