Iconsult MCP
Iconsult MCP is an architecture consulting server for multi-agent systems. It analyzes codebases against a knowledge graph of 141 concepts and 462 relationships derived from Agentic Architectural Patterns for Building Multi-Agent Systems, delivering book-grounded recommendations with exact chapter/page citations.
Core Consultation Workflow
Match concepts: Embed a project description to rank relevant architectural patterns and create a tracked session
Plan consultation: Generate an adaptive step-by-step plan based on project complexity
Traverse the knowledge graph: BFS from seed concepts to discover prerequisites, conflicts, alternatives, and complements
Query the book: RAG search for exact passages with chapter numbers, page references, and section titles
Log pattern assessments: Record whether patterns are implemented, partial, missing, or not applicable — with code evidence
Score architecture: Compute a deterministic L1–L6 maturity scorecard with gap analysis and an implementation roadmap
Generate failure scenarios: Produce cascading failure walkthroughs for missing/partial patterns with recovery recommendations
Critique the consultation: Structural quality check for workflow completeness, traversal depth, and coverage gaps
Render an HTML report: Interactive before/after architecture review with SVG diagrams, tooltips, zoom controls, and animations
Coverage analysis: Compute concept/relationship coverage metrics and diff two consultation sessions
Supervision & Implementation Tracking
Supervise consultation progress across 9 workflow phases with recommended next steps
Generate phased implementation checklists classifying steps as mechanical or design decisions
Track plan step status (pending/in-progress/completed/skipped)
Multi-Agent Coordination
Shared key-value state store for subagent coordination
Typed, versioned blackboard facts with conflict detection, confidence scores, and TTL
Event-driven reactivity (emit/poll typed events like
gap_found,coverage_threshold_reached)Schema-validate subagent JSON responses
Quality & Analytics
Rate consultations (1–5) and surface quality trends across sessions
Browse and filter the full 141-concept catalogue with definitions
Health check with graph statistics
Uses Mermaid syntax to generate and render interactive architectural diagrams that visualize agent relationships, system flows, and recommended design improvements.
Integrates with OpenAI's API for generating embeddings to support RAG-based searches of architectural patterns and provides specialized analysis for systems built with the OpenAI Agents SDK.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Iconsult MCPReview my multi-agent architecture for gaps and provide a maturity score."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Iconsult MCP
Architecture consulting for multi-agent systems, grounded in the textbook.
Iconsult is an MCP server that reviews your multi-agent architecture against a knowledge graph of 141 concepts and 462 relationships extracted from Agentic Architectural Patterns for Building Multi-Agent Systems (Arsanjani & Bustos, Packt 2026). Every recommendation comes with chapter numbers, page references, and concrete code-level changes — not abstract advice.
This project was influenced by Piaget's theories of cognitive development in which learning occurs through the adaptation of schemas.
See It In Action
We pointed Iconsult at OpenAI's Financial Research Agent — a 5-stage multi-agent pipeline from their Agents SDK — and asked it to assess architectural maturity.
![]()
View the full interactive architecture review →
The agent's current architecture
The Financial Research Agent uses a 5-stage sequential pipeline orchestrated by FinancialResearchManager. Search is the only concurrent stage — everything else runs in sequence, and the verifier is a terminal dead end:
flowchart TD
User(["User Query"]) --> Manager["FinancialResearchManager"]
Manager --> Planner["PlannerAgent\no3-mini"]
Planner -->|"FinancialSearchPlan"| FanOut{"Parallel Fan-Out"}
FanOut --> S1["SearchAgent 1"]
FanOut --> S2["SearchAgent 2"]
FanOut --> SN["SearchAgent N"]
S1 --> Collect["Collect Results"]
S2 --> Collect
SN --> Collect
Collect --> Writer["WriterAgent\ngpt-5.4"]
Writer -.->|"as_tool"| Fundamentals["FundamentalsAnalystAgent"]
Writer -.->|"as_tool"| Risk["RiskAnalystAgent"]
Fundamentals -.-> Writer
Risk -.-> Writer
Writer -->|"FinancialReportData"| Verifier["VerifierAgent\ngpt-5.4"]
Verifier --> Output(["Print Report"])What Iconsult found
Solid foundation — and Iconsult's knowledge graph traversal identified key opportunities across 7 categories:
Category | Rating | Key Finding |
Coordination & Planning | Established | Solid supervisor + agent-as-tool delegation |
Human-Agent Interaction | Emerging | Agent delegation works; no HITL checkpoints |
Agent Capabilities | Emerging | WebSearchTool + structured outputs in place |
Robustness | Not Started | 0% failure chain coverage; no retry, no timeout |
Explainability | Not Started | No instruction anchoring or fidelity auditing |
Infrastructure | Not Started | No event system, no auth, no registry |
Continuous Improvement | Not Started | Verification is informational only |
Recommended architecture
The natural next evolution — adding retry logic, checkpointing, shared memory, and a verification feedback loop:
flowchart TD
User(["User Query"]) --> Manager["FinancialResearchManager"]
Manager --> Planner["PlannerAgent\no3-mini"]
Planner -->|"FinancialSearchPlan"| FanOut{"Parallel Fan-Out"}
FanOut --> S1["SearchAgent 1"]
FanOut --> S2["SearchAgent 2"]
FanOut --> SN["SearchAgent N"]
S1 --> Collect["Collect Results"]
S2 --> Collect
SN --> Collect
FanOut -.-> WD["Watchdog Timeout\nSupervisor"]:::opportunity
S1 -.-> RT["Adaptive Retry\n+ Prompt Mutation"]:::opportunity
S2 -.-> RT
SN -.-> RT
Collect --> CP1["Checkpoint\nSearch Results"]:::opportunity
CP1 --> SharedMem[("Shared Epistemic\nMemory")]:::newpattern
SharedMem --> Writer["WriterAgent\ngpt-5.4"]
Writer -.->|"as_tool"| Fundamentals["FundamentalsAnalystAgent"]
Writer -.->|"as_tool"| Risk["RiskAnalystAgent"]
Fundamentals -.-> Writer
Risk -.-> Writer
Writer -->|"FinancialReportData"| Verifier["VerifierAgent\ngpt-5.4\n+ Scoring Rubric"]:::newpattern
Verifier -->|"Pass"| Output(["Print Report"])
Verifier -->|"Fail + Feedback"| Writer
Verifier -.-> Metrics["Custom Evaluation\nMetrics"]:::opportunity
classDef opportunity fill:none,stroke:#E74C3C,stroke-dasharray:5 5,color:#E74C3C
classDef newpattern fill:#27AE60,stroke:#333,color:whiteHow it got there
The consultation followed Iconsult's 7-step guided workflow — view the visual workflow →
Step | Tool(s) | What happened |
1. Read codebase | — | Fetched |
2. Match concepts |
| Embedded the project description (OpenAI |
2b. Plan |
| Assessed complexity as complex (score 86/100 — 20 concepts, high relationship density). Generated 11-step adaptive plan. Complexity controls traversal depth: simple (3 concepts, 1 hop, 8 steps) → moderate (5 concepts, 2 hops, adds follow-up questions + optional critique, 10 steps) → complex (8 concepts, 2 hops, parallel subagents, second traversal round, mandatory critique, 11 steps). |
3. Traverse graph |
| 4 parallel subagents explored concept clusters across two traversal rounds (39 nodes, 45 edges). Logged 20 pattern assessments (7 implemented, 3 partial, 7 missing, 3 N/A). Emitted |
4. Retrieve passages |
| Book passages scoped to discovered concepts — returned chapter numbers, page ranges, and quotes grounding each recommendation. |
5. Coverage + Score + Stress test |
|
|
5b. Critique |
| No LLM — 7 rule-based checks against fixed thresholds (workflow completeness, traversal depth >= 3, assessments >= 5, coverage >= 50%, critical edges examined, etc.). Flagged 2 issues; backfilled 6 unexplored concepts. |
6. Render report |
| Generated the interactive HTML report server-side — scores, scenarios, and coverage pulled from DB, merged with narrative content. |
7. Implementation plan |
| Offered step-by-step phased checklist (mechanical code changes vs. design decisions). |
Related MCP server: MCP Architect
What It Does
Point it at a codebase (or describe your architecture), and it runs a structured consultation: matching concepts, traversing the knowledge graph for prerequisites and conflicts, scoring maturity against a category-based rubric (7 categories × 3 levels from Ch. 12), and generating an interactive HTML review with before/after architecture diagrams.
Tools (25)
Consultation workflow:
Tool | Role | What it does |
| Entry point | Embeds a project description → deterministic concept ranking + |
| Planning | Assesses complexity (simple/moderate/complex) and generates an adaptive step-by-step plan |
| Graph traversal | Priority-queue BFS from seed concepts — discovers alternatives, prerequisites, conflicts, complements |
| Assessment | Records whether each pattern is implemented, partial, missing, or not applicable |
| Deep context | RAG search against the book — returns passages with chapter, page numbers, and full text |
| Coverage | Computes concept/relationship coverage, identifies opportunities, optionally diffs two sessions |
| Scoring | Category-based maturity scorecard (7 categories × 3 levels) from logged pattern assessments; pattern ID aliases bridge KG ↔ rubric IDs |
| Resilience analysis | Resilience scenarios for each opportunity — code-grounded or book-grounded, with Ch. 7 recovery chain mapping |
| Quality | Structural critique with actionable fix suggestions; multi-iteration mode (1-3 passes) with convergence detection |
| Report rendering | Server-side HTML rendering — pulls scores/scenarios/coverage from DB, merges with narrative content, writes complete HTML with CSS/JS/zoom/tooltips |
| Supervision | Tracks workflow progress across 9 phases, suggests next action with tool + params |
| Implementation | Phased markdown checklist from consultation results; classifies steps as mechanical or design decision |
| Implementation | Retrieve a previously generated plan with progress summary |
| Implementation | Update step status (pending/in_progress/completed/skipped); recomputes summary |
Coordination:
Tool | What it does |
| Shared key-value state for subagent coordination during traversal |
| Blackboard Knowledge Hub — typed, versioned facts with conflict detection, confidence scores, and TTL |
| Event-driven reactivity — emit events like |
Quality & utility:
Tool | What it does |
| Record user quality score (1-5) and/or feedback with metadata snapshot |
| Surface quality trends across consultations (avg rating, coverage, distribution) |
| Browse/filter the full 138-concept catalogue |
| Schema validation for subagent responses; optional semantic validation against the knowledge graph |
| Server health + graph stats |
Prompt
Prompt | What it does |
| Kick off a full architecture consultation — provide your project context and get the guided workflow |
The Knowledge Graph
141 concepts · 786 sections · 462 relationships · 1,248 concept-section mappingsRelationship types span uses, extends, alternative_to, component_of, requires, enables, complements, specializes, precedes, and conflicts_with.
How it was built
The graph was extracted from the book in 4 phases using Claude and OpenAI embeddings:
Phase | What it does | Output |
1a — Parse Index | Extract concept entries from the book's index (OCR-corrected) | 138 concepts with page references |
1b — Parse Book | Segment the book into sections by heading structure | 786 sections across 16 chapters |
2 — Tag Concepts | Claude maps each concept to relevant sections using index page numbers + semantic context | 1,248 concept-section mappings |
3a — Explicit Relationships | Claude identifies relationships between concepts within each chapter | Typed edges (uses, requires, extends, etc.) |
3b — Semantic Pairs | OpenAI embeddings find similar concepts across chapters; Claude validates and types the relationship | Cross-chapter semantic edges |
3c–3e — Cross-Chapter | Three additional passes: knowledge-based, cross-chapter semantic, and summary-based structural relationships | 462 total relationships at avg 0.695 confidence |
4 — Build Graph | Deduplicate edges, validate confidence thresholds, compute final embeddings from section content | Production-ready graph on MotherDuck |
See docs/development.md for pipeline commands and technical details.
Explore the interactive knowledge graph →
Setup
Prerequisites
Python 3.10+
A MotherDuck account (free tier works)
OpenAI API key (for embeddings used by
ask_book)Claude Code (optionally with the visual-explainer skill for ad-hoc diagrams outside consultations)
Database Access
The knowledge graph is hosted on MotherDuck and shared publicly. The server automatically detects whether you own the database or need to attach the public share — no extra configuration needed. Just provide your MotherDuck token and it works.
Install visual-explainer (optional)
The visual-explainer skill is no longer required for consultations — render_report now handles HTML rendering server-side. However, it remains useful for ad-hoc diagrams outside consultations:
git clone https://github.com/nicobailon/visual-explainer.git ~/.claude/skills/visual-explainer
mkdir -p ~/.claude/commands
cp ~/.claude/skills/visual-explainer/prompts/*.md ~/.claude/commands/Install
pip install git+https://github.com/marcus-waldman/Iconsult_mcp.gitFor development:
git clone https://github.com/marcus-waldman/Iconsult_mcp.git
cd Iconsult_mcp
pip install -e .Environment Variables
export MOTHERDUCK_TOKEN="your-token" # Required — database
export OPENAI_API_KEY="sk-..." # Required — embeddings for ask_bookMCP Configuration
Add to your Claude Desktop config (claude_desktop_config.json) or Claude Code settings:
{
"mcpServers": {
"iconsult": {
"command": "iconsult-mcp",
"env": {
"MOTHERDUCK_TOKEN": "your-token",
"OPENAI_API_KEY": "sk-..."
}
}
}
}Verify
iconsult-mcp --checkLicense
AGPL-3.0 — see LICENSE for details.
Available Tools
17 toolsask_bookA
DEEP CONTEXT — RAG search against book sections. Embeds a natural language question and returns the most relevant book passages with full text, chapter, page numbers, and section title. ALWAYS scope with concept_ids from get_subgraph for precision. Returns suggested_questions derived deterministically from graph edges. Pass consultation_id to log retrieval steps.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | Natural language question to search for in the book | |
| concept_ids | No | Optional: scope search to sections linked to these concept IDs | |
| max_passages | No | Maximum number of passages to return (default: 3) | |
| consultation_id | No | Optional consultation ID from match_concepts to log this step |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by explaining what the tool returns ('full text, chapter, page numbers, section title, suggested_questions'), the deterministic nature of suggested questions, and the logging capability. However, it doesn't mention potential limitations like rate limits, error conditions, or whether this is a read-only operation (though implied by 'search').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with three sentences that each serve a distinct purpose: explaining the core functionality, providing usage guidance, and describing logging. It's front-loaded with the most important information. The 'DEEP CONTEXT' prefix is slightly verbose but doesn't significantly detract from overall efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description provides adequate coverage of the tool's purpose and usage context. However, it doesn't fully compensate for the lack of output schema by describing the exact structure of returned passages or the format of suggested_questions. The description is complete enough for basic understanding but leaves some implementation details unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3 even without additional parameter information in the description. The description does add some context about 'concept_ids from get_subgraph' and 'consultation_id to log retrieval steps', but doesn't provide significant semantic value beyond what's already documented in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('RAG search', 'embeds', 'returns') and resources ('book sections', 'passages'). It distinguishes from siblings by mentioning 'concept_ids from get_subgraph' and 'consultation_id from match_concepts', showing awareness of related tools. The description goes beyond the name 'ask_book' to explain the retrieval-augmented generation mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('ALWAYS scope with concept_ids from get_subgraph for precision') and mentions prerequisites ('Pass consultation_id to log retrieval steps'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the many sibling tools, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultation_reportA
COVERAGE CHECK — Compute coverage metrics for a consultation session. Concept coverage counts matched concepts that were either traversed (get_subgraph seeds) or assessed (log_pattern_assessment). Also shows relationship type coverage, passage diversity, prerequisite/conflict edge checks, and specific gaps. Call before synthesizing to ensure thorough coverage. Optionally compare two sessions with the same project fingerprint to see diffs.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session to evaluate | |
| compare_to | No | Optional second consultation ID to diff against |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool does (computes metrics, shows checks, identifies gaps) and its optional diffing capability. However, it lacks details on output format, error handling, or performance characteristics, which would be needed for a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by specific metrics and usage guidelines in a logical flow. Every sentence adds value—none are redundant or vague—making it efficiently structured and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, no annotations, and no output schema, the description does well by covering purpose, usage, and key metrics. However, it lacks details on the output structure (e.g., what the coverage metrics look like) and any limitations or prerequisites, which would be needed for full completeness in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the purpose of the optional 'compare_to' parameter ('to see diffs') and contextualizing 'consultation_id' as part of coverage evaluation. However, it doesn't provide additional syntax or format details beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('compute coverage metrics') and resource ('for a consultation session'), distinguishing it from siblings like 'score_architecture' or 'validate_subagent' by focusing on coverage analysis rather than scoring or validation. It enumerates specific metrics like concept coverage, relationship type coverage, and gap identification, making the purpose highly specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Call before synthesizing to ensure thorough coverage') and includes an alternative usage scenario ('Optionally compare two sessions with the same project fingerprint to see diffs'). This clearly distinguishes it from tools like 'critique_consultation' or 'supervise_consultation' by focusing on pre-synthesis coverage checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
critique_consultationA
CRITIQUE — Deterministic quality critique of a consultation session. Analyzes logged steps for workflow completeness, traversal depth, pattern assessment coverage, passage diversity, and critical edge checks. Returns issues with severity (error/warning), categories, and actionable suggestions. No LLM calls — pure structural analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session to critique |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it's a read-only analysis tool (implied by 'critique' and 'analyzes'), deterministic rather than generative, returns structured issues with severity levels and suggestions, and explicitly states it makes no LLM calls. However, it doesn't mention performance characteristics, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: purpose statement, analysis dimensions, and behavioral constraints. Every sentence adds value with zero wasted words, and key information is front-loaded with the core function stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter analysis tool with no output schema, the description provides good context about what the tool does, how it works (deterministic structural analysis), and what it returns (issues with severity, categories, suggestions). The main gap is lack of output format details, but given the tool's relatively simple function and good behavioral disclosure, it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter clearly documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides (consultation_id as the session to critique), so it meets the baseline for high schema coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'deterministic quality critique of a consultation session' with specific analysis dimensions (workflow completeness, traversal depth, pattern assessment coverage, passage diversity, critical edge checks). It distinguishes from siblings by focusing on structural analysis rather than generation, reporting, or planning functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('analyzes logged steps') and distinguishes from LLM-based approaches ('No LLM calls — pure structural analysis'), but doesn't explicitly state when to use this versus alternatives like consultation_report or supervise_consultation. It provides some guidance but lacks explicit when/when-not comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emit_eventC
EVENT (emit) — Emit a consultation event for reactive processing. Valid types: gap_found, pattern_assessed, coverage_threshold_reached, coverage_dropped, plan_created, state_conflict. Returns a reactive suggestion based on the event type.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID | |
| event_type | Yes | Type of event to emit | |
| data | No | Optional event payload (JSON object) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'emits' an event and returns a 'reactive suggestion', but lacks details on side effects (e.g., if it modifies state), authentication needs, rate limits, or error handling. This is inadequate for a tool that likely triggers downstream processing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, starting with the core action ('emit a consultation event') followed by key details. Both sentences are informative, though the second sentence could be slightly more structured (e.g., separating the enum list from the return statement).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of an event-emitting tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'reactive processing' entails, what a 'reactive suggestion' looks like, or potential side effects, leaving significant gaps for the agent to understand the tool's behavior and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting all three parameters. The description adds minimal value by listing the valid event types (which are already in the schema's enum) and mentioning the optional 'data' payload, but doesn't provide additional semantics beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('emit') and resource ('consultation event'), and it specifies the valid event types. However, it doesn't explicitly differentiate this tool from its siblings like 'log_pattern_assessment' or 'get_events', which might have overlapping domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'reactive processing' but doesn't clarify when this emission is appropriate compared to other event-related tools like 'get_events' or 'log_pattern_assessment', leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_failure_scenariosA
STRESS TEST — Generate concrete failure scenario walkthroughs for missing/partial patterns. Each scenario shows a realistic cascading failure: trigger event, step-by-step propagation through the architecture (with file:line references when code evidence is available), downstream impact, and book-cited recovery recommendation. Also maps coverage against Ch. 7's five-step failure recovery chain. Flags inverted pyramid warnings when advanced patterns depend on missing foundations. Deterministic — same consultation always produces same scenarios. Requires pattern_assessment steps from step 3.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session to analyze | |
| max_scenarios | No | Maximum scenarios to return (1-20, default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and discloses key behavioral traits: it's deterministic ('same consultation always produces same scenarios'), includes specific outputs (walkthroughs with file:line references, coverage mapping, warnings), and mentions cascading failure analysis. It doesn't cover rate limits or auth needs, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with 'STRESS TEST' and key purpose, but could be slightly more concise by integrating some details (e.g., 'Deterministic' note) more seamlessly. Most sentences earn their place by adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does well to explain the tool's behavior, outputs (scenarios with specific elements), and prerequisites. It could improve by hinting at return format or error handling, but covers complexity adequately for a stress-test tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description doesn't add meaning beyond what the schema provides for 'consultation_id' or 'max_scenarios', though it implies 'consultation_id' relates to analysis sessions mentioned in the usage guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('generate concrete failure scenario walkthroughs') and resources ('missing/partial patterns'), distinguishing it from siblings like 'score_architecture' or 'health_check' by focusing on stress testing and failure analysis rather than evaluation or monitoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('Requires pattern_assessment steps from step 3') and provides context for its application ('STRESS TEST'), with no misleading guidance. This helps differentiate it from alternatives like 'consultation_report' or 'critique_consultation' by specifying prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventsA
EVENT (poll) — Poll consultation events with optional filters. Use since_id to get only new events since a previous poll. Use event_type to filter by type.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID | |
| since_id | No | Only return events with id > since_id | |
| event_type | No | Filter by event type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the polling behavior and optional filtering, which is useful, but it doesn't cover aspects like rate limits, authentication needs, error handling, or what the return format looks like (e.g., list of events, pagination). For a polling tool with zero annotation coverage, this leaves gaps in understanding its full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured, consisting of two sentences that efficiently convey the tool's purpose and parameter usage. Every sentence earns its place: the first states the core function, and the second explains key parameters. There is no wasted text, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (polling with filters), no annotations, and no output schema, the description is somewhat complete but has gaps. It covers the basic purpose and parameter guidance, but it doesn't explain the return values (e.g., event structure, error responses) or behavioral details like polling intervals. For a tool with no output schema, more context on what to expect would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already documents all parameters ('consultation_id', 'since_id', 'event_type') with clear descriptions. The description adds marginal value by reinforcing the use of 'since_id' for new events and 'event_type' for filtering, but it doesn't provide additional syntax, format details, or examples beyond what the schema states. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Poll consultation events with optional filters.' It specifies the verb ('poll') and resource ('consultation events'), distinguishing it from siblings like 'emit_event' (which creates events) or 'consultation_report' (which generates reports). However, it doesn't explicitly contrast with all siblings, such as 'read_state', which might also retrieve event-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use certain parameters ('Use since_id to get only new events since a previous poll. Use event_type to filter by type.'), but it doesn't explicitly state when to use this tool versus alternatives like 'read_state' or 'consultation_report'. It implies usage for polling events with filters, yet lacks explicit exclusions or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subgraphA
QUERY PLANNER — Bounded graph traversal from seed concepts. Given one or more concept IDs (from match_concepts or list_concepts), performs BFS up to max_hops and returns all reachable nodes and edges. Use relationship types to discover what the user is missing: alternative_to for competing approaches, requires for prerequisites, conflicts_with for incompatibilities, complements for synergies. Pass consultation_id to log traversal steps for coverage tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| concept_ids | Yes | List of concept IDs to start traversal from | |
| max_hops | No | Maximum traversal depth (1-3, default: 2) | |
| confidence_threshold | No | Minimum edge confidence to traverse (0.0-1.0, default: 0.5) | |
| max_edges | No | Maximum edges to return (1-200, default: 50) | |
| include_descriptions | No | Include edge description text (default: false) | |
| consultation_id | No | Optional consultation ID from match_concepts to log this step |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it performs BFS traversal, returns nodes and edges, includes relationship types for discovery (alternative_to, requires, etc.), and mentions logging for coverage tracking. However, it doesn't specify rate limits, error handling, or performance characteristics, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with core functionality, uses bullet-like structure for relationship types, and every sentence adds value (e.g., traversal method, usage context, logging). No wasted words, efficiently conveying necessary information in three focused sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, 100% schema coverage, no output schema, and no annotations, the description is largely complete: it covers purpose, usage, behavior, and parameters context. However, it lacks details on output format (nodes/edges structure) and error cases, which could be important for a tool with complex traversal logic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the purpose of traversal (to discover what users are missing via relationship types) and linking concept_ids to match_concepts/list_concepts, providing context beyond schema. It doesn't detail individual parameters but enhances overall parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs 'bounded graph traversal from seed concepts' using BFS up to max_hops, returning reachable nodes and edges. It specifies the exact operation (traversal), resource (graph/concepts), and distinguishes from siblings like list_concepts (which lists concepts) or match_concepts (which matches concepts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Given one or more concept IDs (from match_concepts or list_concepts)' and provides guidance on relationship types to discover what users are missing (e.g., alternative_to, requires). It also mentions passing consultation_id for logging, indicating integration with other tools like match_concepts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Check server health and graph scope. Returns database connection status, graph statistics (concept count, relationship count, avg confidence), and pipeline status. Call this first to understand how large the knowledge graph is and whether the database is reachable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (database connection status, graph statistics, pipeline status) and its diagnostic purpose. However, it doesn't mention potential side effects, rate limits, or authentication requirements, leaving some behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise and well-structured in two sentences. The first sentence states what the tool does and returns, while the second provides crucial usage guidance. Every word earns its place with no redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's diagnostic nature, 0 parameters, no output schema, and no annotations, the description provides good contextual completeness. It explains what information is returned and when to use it. The main gap is the lack of output format details, but for a health check tool, the described return categories are reasonably sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the empty input. The description appropriately doesn't add parameter information, maintaining focus on the tool's purpose and usage. A baseline of 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('check', 'returns') and resources ('server health', 'graph scope', 'database connection status', 'graph statistics', 'pipeline status'). It distinguishes from siblings by focusing on system diagnostics rather than knowledge graph operations like 'list_concepts' or 'get_subgraph'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Call this first to understand how large the knowledge graph is and whether the database is reachable.' This provides clear guidance on its initial diagnostic role versus alternatives like data retrieval or analysis tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conceptsA
BROWSE — List all 138 concepts in the knowledge graph. Returns compact output (id, name, category) by default. Use search to filter by name, and include_definitions for full definition text. Use this to browse the catalogue; for consultation workflows, prefer match_concepts as the entry point.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Filter concepts by name substring (case-insensitive) | |
| include_definitions | No | Include definition text in output (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the tool returns compact output by default, supports filtering via search, and can include definitions. However, it doesn't mention pagination, rate limits, or error handling, leaving some behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by usage details and alternatives in three concise sentences. Every sentence adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no annotations, no output schema), the description is mostly complete. It covers purpose, usage, and key behaviors, but lacks details on output structure beyond compact format, which could be improved since there's no output schema to rely on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by mentioning the default behavior for include_definitions and the purpose of search, but doesn't provide additional syntax or format details. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all 138 concepts in the knowledge graph'), specifying the scope and output format. It distinguishes from sibling tools by contrasting with 'match_concepts' for consultation workflows, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Use this to browse the catalogue; for consultation workflows, prefer match_concepts as the entry point.' This clearly states when to use this tool versus an alternative, with named context and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_pattern_assessmentA
LOG ASSESSMENT — Record a pattern assessment for a consultation session. Call this during graph traversal (step 3) for each architectural pattern you identify in the user's codebase or confirm is missing. These stored assessments are what score_architecture uses to compute deterministic maturity scores.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID from match_concepts | |
| pattern_id | Yes | The concept ID of the pattern being assessed | |
| pattern_name | Yes | Human-readable name of the pattern | |
| status | Yes | Whether the pattern is implemented, partial, missing, or not_applicable (pattern is irrelevant to this architecture, e.g. Agent Calls Human for a batch pipeline) | |
| evidence | No | File path or description of what was found (or not found) | |
| maturity_level | No | Assessed maturity level (1-6, default: 1) | |
| failure_context | No | Optional structured failure context for stress test demos. Fields: code_refs (list of {file, line, snippet}), failure_mode (string describing what breaks), depends_on (list of pattern_ids this depends on) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool stores assessments for later use by 'score_architecture', which implies persistence and data recording behavior. However, it lacks details on potential side effects, error handling, or performance characteristics (e.g., rate limits, idempotency).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with two sentences that efficiently convey purpose and usage. Every sentence adds value without redundancy, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, including nested objects) and the absence of annotations and output schema, the description is reasonably complete. It explains the tool's role in a workflow and its relationship to other tools, but could benefit from more detail on behavioral aspects like error cases or data persistence guarantees.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description does not add any additional meaning or context beyond what the schema provides (e.g., it doesn't explain parameter interactions or provide examples). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Record a pattern assessment') and resources ('for a consultation session'), and distinguishes it from sibling tools by explicitly mentioning its relationship to 'score_architecture' (a sibling tool). It goes beyond restating the name by explaining the action and context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines, specifying when to use it ('Call this during graph traversal (step 3) for each architectural pattern you identify in the user's codebase or confirm is missing') and linking it to another tool ('score_architecture'). It clearly defines the context and purpose without being misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_conceptsA
ENTRY POINT — Deterministically match a project description to knowledge graph concepts via embedding similarity. Returns ranked concepts with scores and creates a consultation_id that tracks the session. The same description always produces the same concept ranking and fingerprint. Pass the returned consultation_id to get_subgraph and ask_book for step logging.
| Name | Required | Description | Default |
|---|---|---|---|
| project_description | Yes | Free-text description of the user's project, architecture, and pain points | |
| max_results | No | Maximum concepts to return (1-50, default: 15) | |
| similarity_threshold | No | Minimum cosine similarity to include (0.0-1.0, default: 0.3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: deterministic matching ('same description always produces the same concept ranking'), embedding similarity method, ranked output with scores, consultation_id creation for session tracking, and fingerprint generation. It doesn't mention rate limits or auth needs, but covers core behavior thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with three sentences that each serve distinct purposes: stating the core function, explaining deterministic behavior, and providing usage guidance. It's front-loaded with the most important information and contains no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, 100% schema coverage, but no annotations or output schema, the description provides strong context about behavior, workflow role, and deterministic nature. It could benefit from mentioning output format details (since no output schema exists), but otherwise covers the essential context well given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add meaningful semantic context beyond what the schema provides about project_description, max_results, or similarity_threshold. It meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('match', 'returns', 'creates') and resources ('project description', 'knowledge graph concepts', 'consultation_id'). It distinguishes from siblings by mentioning its role as an 'ENTRY POINT' and explicitly naming related tools (get_subgraph, ask_book) for subsequent steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('ENTRY POINT'), when to use alternatives (pass consultation_id to get_subgraph and ask_book for step logging), and distinguishes it from siblings like list_concepts. It establishes clear sequencing in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_consultationA
PLAN — Generate an adaptive consultation plan after match_concepts. Assesses project complexity (simple/moderate/complex) based on concept count, description keywords, and relationship density. Returns a step-by-step plan with tool names and parameters. Call once after match_concepts, then follow the generated plan.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID from match_concepts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it's a generative tool that creates a plan based on complexity assessment (using concept count, keywords, relationship density), returns structured output (step-by-step plan with tool names/parameters), and has a specific call pattern (once after match_concepts). It doesn't mention error handling or performance characteristics, but covers core operational behavior well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: purpose statement, complexity assessment details, and usage instructions. Every sentence adds essential information with zero waste. It's appropriately sized and front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (generative planning with assessment logic), no annotations, and no output schema, the description does well by explaining the assessment criteria, output format, and sequencing requirements. However, it doesn't detail the plan structure or potential edge cases, leaving some gaps for a tool with behavioral complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining that the consultation_id comes 'from match_concepts,' providing context about the parameter's origin and relationship to another tool. This semantic context goes beyond the schema's basic type/requirement documentation, though it doesn't elaborate on format or validation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('generate an adaptive consultation plan') and resources ('after match_concepts'), explicitly distinguishing it from siblings by mentioning its dependency on match_concepts. It specifies what it assesses (project complexity) and what it returns (step-by-step plan with tool names and parameters).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage instructions: 'Call once after match_concepts, then follow the generated plan.' It clearly states when to use it (after match_concepts) and what to do next (follow the plan), distinguishing it from alternatives like consultation_report or supervise_consultation by specifying its unique sequencing role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_stateA
SHARED STATE (read) — Read shared state from a consultation. Returns one entry if key is specified, or all entries if omitted. Use for subagent coordination and progress tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID | |
| key | No | Specific key to read (omit for all entries) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns one entry if a key is specified or all entries if omitted, which adds behavioral context beyond the input schema. However, it doesn't cover aspects like error handling, performance, or authentication needs, leaving gaps for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded: the first part states the core purpose, the second explains parameter behavior, and the third provides usage context. Every sentence earns its place with no wasted words, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description partially compensates by explaining the return behavior based on the key parameter. However, for a tool that reads shared state in a consultation system, it lacks details on output format, error cases, or coordination specifics, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters thoroughly. The description adds marginal value by implying the 'key' parameter's effect on output (single vs. all entries), but doesn't provide additional syntax or format details beyond what the schema specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads shared state from a consultation, specifying the resource (shared state) and action (read). It distinguishes from the sibling 'write_state' by indicating this is a read operation, though it doesn't explicitly contrast with other siblings like 'get_events' or 'get_subgraph' that might also retrieve data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance: 'Use for subagent coordination and progress tracking' suggests a specific context. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_events' or 'get_subgraph', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_architectureA
MATURITY SCORECARD — Deterministic architecture scoring from stored pattern assessments. Reads pattern_assessment steps logged during graph traversal and computes: maturity level (L1-L6), pattern status with goals (target status after recommendations), gap analysis with severity, recommended metrics from the book, and implementation roadmap. Same consultation always produces same results. Requires pattern_assessment steps to have been logged during step 3 (traverse graph).
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session to score | |
| target_level | No | Override target maturity level (1-6, default: current + 1) | |
| roadmap_levels | No | Number of maturity levels the roadmap covers (1-6, default: 3). Controls the scope of Goal column and implementation phases. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: deterministic behavior ('Same consultation always produces same results'), prerequisites ('Requires pattern_assessment steps to have been logged'), and the computational process. However, it doesn't cover aspects like error handling, performance, or output format details, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. It uses bullet-like phrasing ('computes: maturity level...') to list outputs efficiently. However, the sentence structure is slightly dense, and some phrasing ('Same consultation always produces same results') could be more streamlined, though all content earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (scoring tool with 3 parameters, no annotations, no output schema), the description is moderately complete. It covers the purpose, prerequisites, and outputs but lacks details on the return format (e.g., structure of maturity scores or roadmap), which is critical since there's no output schema. This leaves gaps for an AI agent to fully understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain 'consultation_id' further or provide examples). This meets the baseline of 3, as the schema does the heavy lifting, but the description doesn't compensate with extra insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Deterministic architecture scoring from stored pattern assessments' and details what it computes (maturity level, pattern status, gap analysis, etc.). It distinguishes itself from siblings by focusing on scoring based on logged pattern assessments, though it doesn't explicitly name alternatives. The description is specific about the verb ('computes') and resource ('pattern assessments'), but lacks direct sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: 'Requires pattern_assessment steps to have been logged during step 3 (traverse graph).' This implies when to use it (after logging assessments) but doesn't explicitly state when not to use it or name alternative tools for similar tasks. The guidance is helpful but incomplete, as it doesn't compare to siblings like 'consultation_report' or 'critique_consultation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supervise_consultationA
SUPERVISE — Track consultation progress and suggest the next action. Returns workflow phase progress (percent complete), the recommended next tool call with parameters, step summary, recent event alerts, and shared state entries. Call after each major step for guided workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format ('workflow phase progress, recommended next tool call, step summary, recent event alerts, shared state entries') and the tool's role in workflow guidance. However, it doesn't mention error conditions, performance characteristics, or whether this is a read-only operation (though 'Track' implies reading). For a tool with no annotations, this provides useful context but lacks comprehensive behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences. The first sentence clearly states purpose and return values. The second sentence provides usage timing. Every element earns its place with no redundant information. It's appropriately sized for a single-parameter tool with clear functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with 100% schema coverage and no output schema, the description provides good contextual completeness. It explains what the tool returns (progress metrics, recommendations, summaries, alerts, state entries) which compensates for the missing output schema. For a workflow guidance tool, this covers the essential context about what information agents will receive. However, it doesn't mention error handling or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter 'consultation_id' with its description. The description doesn't add any parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Track consultation progress and suggest the next action.' It specifies the verb ('Track', 'suggest') and resource ('consultation progress'), and distinguishes it from siblings like 'plan_consultation' or 'consultation_report' by focusing on progress tracking and guidance rather than planning or reporting. However, it doesn't explicitly differentiate from 'get_events' or 'read_state', which could also track progress-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Call after each major step for guided workflow.' This gives explicit timing guidance. It doesn't specify when NOT to use it or name alternatives among siblings, but the context implies it's for ongoing consultation tracking rather than initial planning or final reporting, which helps differentiate from tools like 'plan_consultation' and 'consultation_report'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_subagentA
VALIDATE — Schema validation for subagent responses from scatter-gather graph traversal. Checks that a subagent response contains the required fields (concept, key_relationships, recommendation, discovered_ids) with correct types. Returns validation result with errors and warnings. No LLM calls — pure structural validation.
| Name | Required | Description | Default |
|---|---|---|---|
| response | Yes | The JSON object returned by a graph-analysis subagent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool does (structural validation of specific fields), what it returns (validation result with errors and warnings), and important behavioral constraints ('No LLM calls — pure structural validation'). However, it doesn't mention error handling, performance characteristics, or other operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences that each earn their place: first states the tool's purpose and scope, second specifies what it checks, third describes the return value and important constraint. No wasted words, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (validation with specific field requirements), no annotations, and no output schema, the description provides good coverage of what the tool does, what it validates, and its behavioral constraints. However, without an output schema, it could more explicitly describe the structure of the validation result it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'response' parameter. The description adds context that this is 'The JSON object returned by a graph-analysis subagent' and mentions the specific fields being validated, but doesn't provide additional syntax or format details beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('validate', 'checks', 'returns') and identifies the resource ('subagent responses from scatter-gather graph traversal'). It distinguishes from siblings by specifying it validates subagent responses rather than performing other operations like asking, consulting, or generating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('for subagent responses from scatter-gather graph traversal') but doesn't explicitly state when to use this tool versus alternatives. It mentions 'No LLM calls — pure structural validation' which provides some guidance on its scope, but doesn't name specific sibling tools or provide explicit when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_stateA
SHARED STATE (write) — Upsert a key-value pair in consultation shared state. Use for subagent coordination: store discovered concepts, current phase, conflict markers, or any JSON-serializable value. Logs a state_write step to the consultation.
| Name | Required | Description | Default |
|---|---|---|---|
| consultation_id | Yes | The consultation session ID | |
| key | Yes | State key (e.g. 'discovered_concepts', 'current_phase') | |
| value | Yes | Any JSON-serializable value to store |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it performs an upsert operation (implying mutation), logs a state_write step, and handles JSON-serializable values. However, it doesn't mention potential side effects like overwriting existing data or error conditions, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured: it starts with a clear purpose, immediately provides usage guidelines, and includes essential behavioral details without unnecessary elaboration. Every sentence adds value, and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation tool with no annotations or output schema), the description does a good job covering purpose, usage, and key behaviors. However, it lacks details on return values or error handling, which would be helpful for completeness, though not strictly required without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema, only reinforcing that the value is 'JSON-serializable' (implied by the schema's description). This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Upsert a key-value pair') and resource ('in consultation shared state'), distinguishing it from sibling tools like read_state (which presumably reads rather than writes). The purpose is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use for subagent coordination') and provides concrete examples ('store discovered concepts, current phase, conflict markers, or any JSON-serializable value'), clearly differentiating it from alternatives like read_state for retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
ask_book - First observed
consultation_report - First observed
critique_consultation - First observed
emit_event - First observed
generate_failure_scenarios - First observed
get_events - First observed
get_subgraph - First observed
health_check - First observed
list_concepts - First observed
log_pattern_assessment - First observed
match_concepts - First observed
plan_consultation - First observed
read_state - First observed
score_architecture - First observed
supervise_consultation - First observed
validate_subagent - First observed
write_state
TDQS
Most tools have distinct purposes, but some overlap exists. For example, 'consultation_report' and 'critique_consultation' both analyze consultation sessions, though 'consultation_report' focuses on coverage metrics while 'critique_consultation' focuses on quality critique. Similarly, 'get_events' and 'emit_event' both handle events but for different actions (polling vs. emitting). Descriptions help clarify these distinctions, but an agent might occasionally confuse them.
Naming conventions are mixed but generally readable. Most tools use snake_case (e.g., 'ask_book', 'get_subgraph'), but there are deviations like 'health_check' (underscored) and inconsistent verb styles (e.g., 'log_pattern_assessment' vs. 'validate_subagent'). Some names are clear (e.g., 'list_concepts'), while others are less intuitive (e.g., 'emit_event'). Overall, it's a mix that doesn't follow a strict pattern.
With 17 tools, the count is slightly high but reasonable for the server's purpose of architectural consultation and knowledge graph interaction. The tools cover various aspects like entry points, traversal, logging, analysis, and coordination, which aligns with the domain. It might feel a bit heavy, but each tool appears to serve a specific role in the workflow.
The tool set provides comprehensive coverage for the consultation domain. It includes entry points (match_concepts, plan_consultation), traversal and querying (get_subgraph, ask_book), logging and assessment (log_pattern_assessment, score_architecture), analysis and reporting (consultation_report, critique_consultation), event handling (emit_event, get_events), state management (read_state, write_state), and validation (validate_subagent). There are no obvious gaps; the tools support a full CRUD-like lifecycle for consultations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Evidence-backed architecture-quality analysis for Python agent applications.
Multi-agent AI pipeline that generates professional Solution Architecture Documents.
Agent-to-agent reasoning-as-a-service: chain-of-thought, analysis, and decision support.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA temporal knowledge graph system that enables users to record and query architectural decisions, implementation patterns, and project failures. It integrates with Claude to provide hybrid search, timeline tracking, and automated knowledge gap detection using graph analysis.3MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive architectural expertise through specialized agents, resources, and tools for generating, evaluating, and modifying architectural designs.1,853ISC
- FlicenseNot gradedqualityBmaintenanceA multi-agent system for code rules management using MCP, supporting search, generation, and architectural validation through specialized agents.1-
- AlicenseNot gradedqualityAmaintenanceProvides architecture design expertise to AI coding agents, analyzing requirements, selecting architecture patterns, generating concrete designs, and evaluating quality attributes.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcus-waldman/Iconsult_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server