MCP server for governance and style enforcement in Adobe Experience Manager (AEM). Provides tools to list pages, detect style violations, list available component styles, update component styles, and bulk-fix violations against governance rules.
MACE defines 5 tools with clear verb-noun naming (list_*, update_*, fix_*) and reasonable descriptions (avg ~150 chars). All tools have input schemas with type definitions. However, parameter descriptions are inconsistent: some params lack descriptions entirely (e.g., 'policyPath' in list_component_styles has a description, but 'regionPath' in list_pages is minimal). Output schemas are not documented, LLMs cannot predict what list_pages or list_style_violations return. Error handling is absent from visible code; no guidance on retryability or recovery. The fix_style_violations tool accepts a complex nested array but provides no validation rules or examples. Overall: functional definitions with gaps in completeness and LLM-optimization.
Bulk-fix all violations from list_style_violations. Prefer style by name (e.g. Default, Featured); use cq:styleId only as fallback.
List all styles available for a component on a page (styleLabel, styleId, styleClasses per style). Primary use: pass pagePath and componentType (e.g. wknd/components/teaser); the policy path is resolved automatically. Use style names (labels) in governance rules (allowedStyleNames) and when fixing violations; IDs are for reference only. Optional: pass policyPath to bypass resolution when you already have it (e.g. from a violation report).
List all cq:Page paths under a given AEM content path.
Scan a region for style violations against governance rules. Returns violations where component styles do not match allowedStyleNames from the governance config.
Update the style (cq:styleIds) of a single component on a page. Prefer style by name (e.g. Default, Featured); use cq:styleId only as fallback.
Output schemas not documented. LLMs cannot predict what list_pages, list_style_violations, or list_component_styles return. This forces agents to guess field names and types, risking failed downstream tool calls.
No error handling or recovery guidance in visible code. Tools do not indicate whether failures are retryable, user-fixable, or fatal. Agents cannot self-correct on failures.
fix_style_violations accepts a complex nested array (violations with componentPath, violationType, policyPath) but provides no validation rules, examples, or constraints. LLMs may construct malformed requests.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Parameter descriptions are sparse. 'regionPath' in list_pages is described as 'AEM content path to list pages under', lacks format guidance (e.g., must start with /content/, max length). 'styleId' in update_component_style says 'Style name (preferred) or cq:styleId' but does not explain when to use which or how to distinguish them.
No pagination support visible in list_pages or list_style_violations. If a region contains hundreds of pages or violations, the response could exhaust context. No limit parameter or cursor documented.