This server has 9 tools with reasonable names and some parameter documentation, but significant gaps in schema completeness, output schema documentation, and error handling guidance. Most tools lack detailed descriptions of what they return and how to use results downstream. Parameters are loosely typed (many lack explicit type constraints). No visible output schema documentation for any tool. Error handling is minimal, no recovery guidance, no actionable error messages. The server reads as a thin wrapper around an external 'ADR Aggregator platform' API without sufficient abstraction for agent-safe composition.
Tools (9)
generate_adr_bootstrap_scriptswrite50/100
Generate bootstrap and validation scripts for ADR-compliant deployment
get_adr_contextread onlyauth50/100
Retrieve ADR context with optional diagrams, timeline, and code links
get_adr_diagramsread onlyauth50/100
Get Mermaid diagrams for ADRs (Pro+ tier)
get_adr_templatesread onlyauth50/100
Get ADR templates from aggregator platform with domain filtering
get_knowledge_graphread onlyauth50/100
Get knowledge graph of ADR relationships (Team tier)
get_staleness_reportread onlyauth50/100
Get staleness report for ADRs with configurable threshold
suggest_adrsread onlyauthsource verified57/100
Suggest ADRs based on project analysis with advanced prompting and learning capabilities
No output schemas documented for ANY tool. LLMs cannot plan downstream calls or extract chaining IDs. Example: does sync_to_aggregator return synced_count, synced_adr_ids, or just a status string?
String parameters using enum-like values are NOT formally constrained. Example: 'validation_type' in validate_adr_compliance lists 'implementation|architecture|security|all' in description, but no JSON Schema enum field. LLMs may hallucinate invalid values (e.g., 'compliance_test'). This violates constrained-input pattern.
Add formal JSON Schema output types for each tool. Example for sync_to_aggregator: {"type": "object", "properties": {"synced_count": {"type": "integer"}, "synced_adr_ids": {"type": "array", "items": {"type": "string"}}, "status": {"type": "string", "enum": ["success", "partial", "failed"]}}}
Convert all enum-like string parameters to formal JSON Schema enums. Example for validate_adr_compliance 'validation_type': {"type": "string", "enum": ["implementation", "architecture", "security", "all"], "description": "Type of validation to perform..."}
Add min/max bounds to numeric parameters. Example: 'threshold' in get_staleness_report: {"type": "number", "minimum": 1, "maximum": 365, "description": "Days threshold (1-365) for staleness"}
Expand tool descriptions to 80-150 characters with explicit WHEN context. Example: 'Retrieve architectural decisions and their relationships. Call this after get_adr_templates to understand existing decisions before creating new ones.'
Add pagination support (limit, offset, or cursor) to tools returning multiple results: get_adr_context, get_adr_diagrams, get_knowledge_graph, get_adr_templates. Document default limit (e.g., 20) and max limit (e.g., 100).
Add error handling documentation for each tool. Example for sync_to_aggregator: 'On error, returns {"error": "tier_mismatch", "message": "Pro+ tier required for diagram sync. Retry with include_diagrams=false, or upgrade account.", "retry_with": {"include_diagrams": false}}'
Document idempotency for WRITE tools. Example: 'sync_to_aggregator is idempotent within 5-minute window. Safe to retry on network failure.' Add dry-run support: {"dry_run": {"type": "boolean", "description": "Preview changes without persisting"}}
Score history
Overall score trend
↓ 4 points across a rubric change (v1 → v2)
49/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
F
49
2026-07-28+
v2
2026-03-09
D
53
1.19.1+
v1
write
auth
50/100
Sync ADRs to ADR Aggregator platform (POST /functions/v1/mcp-sync-adr)
validate_adr_complianceread onlyauth50/100
Validate ADR compliance with implementation (Pro+ tier)
Tier-gated features (Pro+, Team tier) mentioned in descriptions but no error handling when user lacks permissions. Example: get_adr_diagrams says '(Pro+ tier)' but no guidance on what error is returned or how to recover. Violates error-classification pattern.
Tool descriptions are too short (most 30-70 chars) and lack WHEN/WHY context. Example: get_staleness_report description is 46 chars. LLMs cannot distinguish when to call this vs get_adr_context. Baseline for A+ tools: 50-200 chars with clear intent.
No pagination guidance. Tools like get_adr_context, get_adr_diagrams, get_knowledge_graph may return many results but lack limit/offset/cursor parameters. Large results will bloat context windows.
Error handling is absent or implicit. No tool documents what errors can occur, what they mean, or what to do next. Example: If sync_to_aggregator fails due to tier mismatch, no recovery guidance provided. Violates recovery-guide pattern.
No chaining IDs in documented outputs. Example: suggest_adrs suggests ADRs but no documented ID returned, so agent cannot immediately call sync_to_aggregator with the suggestion IDs. Violates include-chaining-ids pattern.
Multiple boolean flags with unclear interactions. Example: suggest_adrs has 'enhancedMode', 'learningEnabled', 'knowledgeEnhancement', are they independent? Can you enable learning without knowledgeEnhancement? Undocumented dependencies violate param-relationships pattern.
WRITE tools (sync_to_aggregator, generate_adr_bootstrap_scripts) lack idempotency guarantees or confirmation steps. If sync_to_aggregator is retried on ambiguous failure, could it double-sync ADRs? No idempotency hint or dry-run support documented.
sync_to_aggregatorgenerate_adr_bootstrap_scripts
For suggest_adrs, clarify boolean flag interactions. Example: 'enhancedMode: Enable advanced prompting. knowledgeEnhancement: Enable knowledge graph context. learningEnabled: Enable Reflexion learning from ADR patterns. All independent; learningEnabled requires enhancedMode=true.'
Add chaining IDs to outputs. Example: suggest_adrs should return {"suggestions": [{"id": "ADR-042", "title": "...", "adr_path": "..."}]} so agent can immediately pass adr_path to sync_to_aggregator.
Document tier-gating behavior. Example: 'include_diagrams parameter requires Pro+ tier. If not available, error: {"code": "tier_insufficient", "required": "Pro+", "current": "Free", "suggestion": "Retry with include_diagrams=false, or contact sales@adr-aggregator.io to upgrade."}'
Add result limits and document them. Example: get_adr_context returns max 50 ADRs. If more exist, return {"total": 152, "returned": 50, "next_cursor": "abc123..."} to enable pagination.
Split suggest_adrs into suggest_adrs (discovery) and generate_adr_from_template (creation) for clearer composition.
Add per-parameter validation error guidance. Example: 'Invalid analysisType: got "implicit_decisions_all". Must be one of: implicit_decisions, code_changes, comprehensive.'
Document what happens when optional parameters are omitted. Example: 'If adr_paths is empty, validates all ADRs in project. Large projects may take >30s; consider filtering.'