aidemd-mcp/server
@aidemd-mcp/server
Servidor MCP que aporta desarrollo basado en intenciones a cualquier IDE impulsado por IA.
Gestione archivos de especificación .aide que residen junto a su código: el contexto de dominio a partir del cual los arquitectos planifican, los implementadores construyen y el control de calidad (QA) valida.
Características
Descubrimiento de especificaciones en todo el proyecto con un árbol de divulgación progresiva que muestra intenciones, investigación y especificaciones de QA en cada nivel de su base de código.
Bootstrap de proyecto con un solo comando mediante
aide_init: conecta documentos de metodología, comandos de pipeline y este servidor MCP a su proyecto en un único flujo guiado.Cumplimiento automático de convenciones de nomenclatura:
aide_scaffoldmaneja las reglas de cambio de nombre de.aide/intent.aidepara que nunca cree especificaciones en conflicto.Validación de estado mediante
aide_validate: detecta especificaciones huérfanas, descripciones faltantes, enlaces rotos y conflictos de nomenclatura antes de que causen desviaciones.Detección de desviaciones de actualización mediante
aide_upgrade: compara los artefactos de metodología AIDE de su proyecto con las versiones canónicas y escribe actualizaciones por categoría.
Related MCP server: Foundry MCP
Instalación
Inicio rápido (Claude Code)
La ruta más rápida es un único comando npx que conecta todo automáticamente:
npx @aidemd-mcp/server@latest initEste comando:
Fusiona la entrada del servidor AIDE MCP en
.mcp.json(crea el archivo o salta la entrada si ya está presente).Escribe el comando de barra
/aide:initen.claude/commands/aide/init.md(lo salta si existe).Escribe el lanzador
aide-treeen.aide/bin/aide-tree.mjs(lo salta si existe).
Todas las operaciones son idempotentes: es seguro volver a ejecutarlas en cualquier momento.
Después de ejecutarlo, abra Claude Code y ejecute /aide:init para completar la configuración.
Configuración manual
Si utiliza un cliente distinto a Claude Code, o prefiere configurar manualmente, añada la entrada del servidor al archivo de configuración MCP de su cliente.
Claude Code
claude mcp add aide npx -- -y @aidemd-mcp/server@latestO añádalo al archivo .mcp.json de su proyecto:
{
"mcpServers": {
"aide": {
"command": "npx",
"args": ["-y", "@aidemd-mcp/server@latest"]
}
}
}[!NOTE] El comando de Inicio rápido anterior maneja esto automáticamente para los usuarios de Claude Code.
Claude Desktop
Ubicaciones de los archivos de configuración:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"aide": {
"command": "npx",
"args": ["-y", "@aidemd-mcp/server@latest"]
}
}
}[!NOTE] Claude Desktop no hereda el PATH del terminal. Si utiliza nvm o Homebrew para gestionar Node, es posible que no se encuentre
npx. Ejecutewhich npxen su terminal para obtener la ruta absoluta y sustituya "npx" por ella en la configuración anterior.
Claude Desktop requiere un cierre completo y volver a abrir después de cualquier cambio de configuración.
Cursor
Añada a ~/.cursor/mcp.json:
{
"mcpServers": {
"aide": {
"command": "npx",
"args": ["-y", "@aidemd-mcp/server@latest"]
}
}
}VS Code / Copilot
Añada a .vscode/mcp.json:
{
"servers": {
"aide": {
"command": "npx",
"args": ["-y", "@aidemd-mcp/server@latest"]
}
}
}[!NOTE] VS Code / Copilot utiliza "servers" como clave raíz, no "mcpServers". Usar la clave raíz incorrecta hace que el servidor falle silenciosamente al cargar.
Windsurf
Añada a ~/.windsurf/mcp.json:
{
"mcpServers": {
"aide": {
"command": "npx",
"args": ["-y", "@aidemd-mcp/server@latest"]
}
}
}Herramientas
aide_discover
Escanea el proyecto en busca de archivos de especificación .aide y devuelve un mapa de árbol de divulgación progresiva que muestra el tipo, la ubicación y el resumen de cada especificación.
Entradas:
path(cadena, opcional): Subdirectorio en el que profundizar. Cuando se proporciona, la respuesta se abre con la cadena de ancestros (el linaje de intención en cascada desde la raíz hasta el objetivo, cada ancestro mostrando su descripción y estado de alineación), seguido del subárbol detallado con resúmenes y advertencias. Cuando se omite, devuelve un mapa superficial de todo el proyecto (solo ubicaciones y tipos).
aide_read
Lee un archivo de especificación .aide con contexto completo, devolviendo el contenido del archivo, su tipo clasificado (intención/investigación/plan/todo), especificaciones relacionadas en el mismo directorio y enlaces encontrados en el contenido.
Entradas:
path(cadena, requerido): Ruta al archivo.aideque se va a leer.
aide_scaffold
Crea nuevos archivos de especificación .aide con cumplimiento automático de convenciones de nomenclatura. Maneja las reglas de cambio de nombre: las especificaciones de intención son .aide por defecto, pero se convierten en intent.aide cuando existe research.aide en la misma carpeta; crear un research.aide cambia automáticamente el nombre de cualquier .aide existente a intent.aide.
Entradas:
directory(cadena, requerido): Directorio donde se crearán los archivos.aide.type(cadena, requerido): Tipo de archivo.aidea crear. Uno de:intent,research,both,todo,plan.
aide_validate
Ejecuta una comprobación de estado en los archivos de especificación .aide del proyecto. Detecta especificaciones huérfanas, especificaciones faltantes, conflictos de nomenclatura (.aide e intent.aide en la misma carpeta), enlaces rotos, archivos de investigación huérfanos y descripciones de frontmatter faltantes.
Entradas:
path(cadena, opcional): Subdirectorio a validar. Por defecto, todo el proyecto cuando se omite.
aide_init
Bootstrap del entorno de desarrollo AIDE en un proyecto utilizando un asistente guiado paso a paso. En la primera llamada (sin category), devuelve un resumen de cada paso con el estado y el framework detectado. En llamadas posteriores (con category), escribe todos los archivos pendientes para esa categoría en el disco y devuelve un manifiesto.
Entradas:
framework(cadena, opcional): Fuerza un framework específico en lugar de la autodetección. Uno de:claude,cursor,windsurf,copilot.path(cadena, opcional): Ruta raíz personalizada del proyecto. Por defecto, el directorio de trabajo del servidor.category(cadena, opcional): Escribe todos los archivoswould-createpara esta categoría y devuelve un manifiesto. Uno de:framework,methodology,commands,agents,skills,mcp,brain,ide. Omita en la primera llamada para obtener un resumen solo de metadatos.brainPath(cadena, opcional): Ruta resuelta de la bóveda de cerebro (brain vault). Requerido cuandocategory=brain.
aide_upgrade
Compara los artefactos de metodología AIDE en este proyecto con las versiones canónicas y devuelve una diferencia estructurada agrupada por categoría. En la primera llamada (sin category), devuelve un resumen ligero de cada categoría con el estado de desviación. En llamadas posteriores (con category), escribe todos los archivos diferenciados o faltantes para esa categoría en el disco y devuelve un manifiesto.
Entradas:
framework(cadena, opcional): Fuerza un framework específico en lugar de la autodetección. Uno de:claude,cursor,windsurf,copilot.path(cadena, opcional): Ruta raíz personalizada del proyecto. Por defecto, el directorio de trabajo del servidor.category(cadena, opcional): Escribe todos los archivos desviados o faltantes para esta categoría y devuelve un manifiesto. Uno de:pointer-stub,methodology-docs,version-metadata,commands,agents,skills,mcp,ide. Omita en la primera llamada para obtener un resumen solo de metadatos.
Primeros pasos
Después de añadir el servidor a su cliente MCP, pida a su agente que ejecute aide_init para realizar el bootstrap de la metodología AIDE en su proyecto. Esto instala los documentos de metodología, prepara los comandos de pipeline y conecta todo.
Luego pruebe: "Scaffold an intent spec for my authentication module" (Crea una especificación de intención para mi módulo de autenticación): el agente utilizará aide_discover para mapear su proyecto y aide_scaffold para crear la especificación en el lugar correcto con las convenciones de nomenclatura adecuadas.
Desarrollo
npm install
npm run build
npm testLicencia
Available Tools
10 toolsaide_brainA
On-demand brain entry-point tool. Call this when you need to reach the brain mid-task — do NOT call it on every /aide boot. Boot-time brain precondition state is already reported by aide_info.brain.status; firing aide_brain at boot duplicates that work unnecessarily. It is also how a brain config is set up, repaired or written for any backend, one decision at a time. Every mode is read-only: no call writes to disk.
Optional source parameter — which read runs. Omitted means "host".
"host"— one section of the host's.aide/config/brain.aide, described below."template"—{ template, purpose }: one section of the bundled template (or its launcher, withkind: "launcher") as verbatim bytes, and that section's one-line purpose from the published contract. The answer is the same whatever state the host's config is in. Use it as a worked example when writing that section for another backend."contract"—{ sections }: every contract section in order, each withmarker,role(liveorseed) andpurpose, and no section text."draft"— a structural check of the draft config atpath, with the same rules and fault vocabulary as the host config check, so a draft that passes is ready to swap in. Returns{ outcome, instructions }:valid;invalidwithfault(missing-sectionsand itssections, ormalformedand itsreason);absentwhen no file is atpath;refusedwhenpathis outside the project, and nothing is read. It checks structure, never content.
Optional kind parameter — host and template reads only: any section marker of the published brain contract (see the enum), live or seed; "launcher" only with source: "template". Omitting it means "orientation", the runtime briefing for reaching the brain mid-task. "config" is the integration's wiring flow that /aide:brain config runs. Seed sections are fetched one per call while seeding. path is required with source: "draft" and accepted nowhere else; any other combination is rejected before the tool runs.
Host read response shape: exactly { status, instructions, found, purpose? }. No backend, no connector, no name, no kind.
found: true—instructionsis that section's verbatim bytes from the host's.aide/config/brain.aide: no trimming, no normalization, no${...}substitution.purposeis that section's one-line purpose from the published contract; use it when adapting the section for another backend.found: false—instructionsis remediation, andpurposeis absent. An absent file → run/aide:brain config. A requested section missing from the file → with the user's consent, callaide_upgradewithcategory: "brain". A malformed or unreadable file → the exact fault, a hand fix with the user, then re-check withaide_info. Do not proceed as if the section were available.
The section is returned on every status where the config exists and is well-formed, including brain-aide-invalid with missing sections, no-mcp-entry and mcp-drift.
status mirrors the BrainState tagged union from buildBrainState, with five values: ok, no-brain-aide, brain-aide-invalid, no-mcp-entry, mcp-drift. Branch on found for "did I get the section" and on status for "is the brain healthy".
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Which section: any section marker of the published contract, live or seed, or `launcher` with `source: "template"` only. Omitted means `orientation`. Not accepted with `contract` or `draft`. Seed sections are fetched one per call while seeding. | |
| path | No | Project-relative path of a draft brain config. Required with `source: "draft"` and accepted nowhere else; a path outside the project is refused unread. | |
| source | No | Which read runs. Omitted means `host`: one section of the host's `.aide/config/brain.aide`. `template`: one section or the launcher of the bundled template, with its purpose. `contract`: every contract section with its role and purpose. `draft`: a structural check of the draft config at `path`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and succeeds: it declares 'Every mode is read-only: no call writes to disk', documents the exact host response shape, enumerates all five status values, and explains that 'draft' never reads content and refuses paths outside the project. These are behaviors the agent could not infer from the schema alone.
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?
Front-loaded with purpose and usage caveat, then organized by parameter and response shape with bold headers and bullets. It is long and partially restates the schema's enum descriptions, but nearly every sentence carries operational detail (status values, fault vocabulary, remediation branches) rather than filler.
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?
There is no output schema, so the description must define returns — and it does, giving the exact host response shape, found:true/false semantics, the four draft outcomes, and the contract/template payload shapes. Nothing an agent needs to call this correctly or interpret its result is missing.
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 coverage is 100%, so the schema already documents all three parameters and their enums; the baseline would be 3. The description goes further by specifying per-source response shapes, the 'source: draft requires path' constraint, and the incompatibility of path with any other source, though it retreads some enum text already present in the schema.
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?
States a specific verb+resource — an on-demand entry point that reads brain sections — and explicitly separates itself from siblings by contrasting with aide_info.brain.status (boot-time reporting) and naming aide_upgrade for remediation. An agent can identify what this tool does and what it is not without opening the schema.
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?
Gives an explicit when-not ('do NOT call it on every /aide boot') with the reason, plus a named alternative for boot state. It also routes to /aide:brain config, aide_upgrade, and aide_info for specific failure cases, so the agent has a decision path for almost every scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_cleanupA
Remove a module's pipeline ephemerals (plan.aide, todo.aide, brief.aide) once that module's cycle has closed, leaving the code and the intent specs as the durable record. It never removes, rewrites or reads anything else: intent specs, research specs, code, and .aide/session.aide are all out of reach.
Where plan.aide exists, it refuses unless every plan checkbox is checked and any todo.aide present is fully checked; a missing todo.aide does not block. Where there is no plan.aide, it removes a todo.aide that is fully checked, and refuses a brief.aide (which is removed only together with its plan), a todo.aide with no checkboxes, or a folder with no ephemerals at all. A refusal lists each unchecked item with its file and line, and nothing is removed. By default a plan.aide with no checkboxes is refused; passing allowEmptyPlan: true lets such a plan pass, overrides nothing else, and has no effect where there is no plan.aide.
Call it directly, because the real call is already safe. dryRun is an optional preview for inspection only and is never a required step before the real call.
This is the cross-platform replacement for a shell delete, so it can be permitted by name.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The module directory whose ephemerals to remove, relative to the project root | |
| dryRun | No | Optional. Removes nothing and only reports what a real call would remove. Agents closing a module omit it. | |
| allowEmptyPlan | No | Optional, off by default. Lets a plan.aide with no checkboxes pass. Overrides nothing else, and has no effect where there is no plan.aide. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses exactly what is destroyed versus protected, the refusal conditions (unchecked items, empty/unchecked todo.aide, brief.aide without plan), the refusal reporting format (each unchecked item with file and line, nothing removed), and the allowEmptyPlan exception. This is unusually rich for a destructive tool.
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?
It is dense but well front-loaded, opening with the core action before enumerating edge cases. Some phrasing about allowEmptyPlan is duplicated between description and schema, but overall every sentence carries decision-relevant 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?
For a destructive cleanup tool with no annotations and no output schema, the description covers all the behavioral ground an agent needs: scope, protected files, refusal conditions, error reporting, and the two optional flags. Nothing critical is missing.
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 coverage is 100%, so all three parameters are already documented in the schema with nearly identical wording to the description (allowEmptyPlan's 'overrides nothing else' phrasing appears in both). The description adds little syntax or format detail beyond the schema, so the baseline 3 applies.
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 states a specific verb and resource — removing a module's pipeline ephemerals (plan.aide, todo.aide, brief.aide) after the cycle closes — and explicitly bounds it by naming everything it never touches (intent specs, research specs, code, session.aide). An agent can distinguish this cleanup tool from siblings like aide_validate or aide_inspect without opening any schema.
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 gives clear use conditions (only once a module's cycle has closed, only when checks are complete) and explicit invocation guidance ('Call it directly... dryRun... is never a required step'). It does not name sibling alternatives for the cleanup decision, but the when-to-use context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_discoverA
Scan for .aide spec files in this project. Returns a tree map of where specs live, following progressive disclosure.
Without a path: returns a lightweight project-wide map — file locations and types only, no content. Use this once to understand the project's spec architecture.
With a path: the response opens with the ancestor chain — the cascading intent lineage from project root down to the target directory, with each ancestor showing its description and alignment status (aligned/misaligned when set). The ancestor chain gives you the full inherited context before you read a single spec body. After the ancestor chain comes the detailed subtree of the target directory — summaries extracted from file content and anomaly warnings. Use this to drill into the area you're working on.
.aide files are progressive disclosure specs that live next to orchestrator code — they contain intent (strategy, implementation contracts, anti-patterns), research (sources, data, patterns), or QA checklists (todo). Read .aide files BEFORE reading code — they are the context layer between folder structure and implementation details.
File types (.aide, intent.aide, research.aide, plan.aide, todo.aide):
.aide — Intent spec (default). Strategy, contracts, anti-patterns.
intent.aide — Same as .aide, used only when research.aide exists in the same folder.
research.aide — Raw research. Sources, data points, pattern synthesis.
plan.aide -- Architect's implementation plan. Checkboxed steps for the implementor.
todo.aide — QA re-alignment document. Captures where implementation drifted from intent.
Never have both .aide and intent.aide in the same folder.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Subdirectory to drill into. When provided, the response opens with the ancestor chain — the cascading intent lineage from root to target, each ancestor showing its description and alignment status — followed by the detailed subtree with summaries and warnings. When omitted, returns a shallow project-wide map (locations and types only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: different responses based on path, ancestor chain with alignment status, summaries and warnings, and explains .aide file types. No contradictions.
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 longer but well-structured with clear sections. Front-loaded main purpose. Could be slightly more concise, but every sentence adds value for this complex tool.
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?
No output schema, but the description thoroughly explains the output structure (ancestor chain, subtree) and file types. Covers both modes comprehensively given the tool's 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 coverage is 100% with a single parameter 'path'. The description adds significant context beyond schema: different outcomes, ancestor chain structure, and usage scenarios, enhancing agent 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 verb 'Scan' and the resource '.aide spec files', returning a 'tree map'. It distinguishes between two modes (with/without path), which differentiates it from siblings like aide_read and aide_inspect.
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 on when to use without path (project-wide overview) and with path (drill into area). Does not explicitly state when not to use, but the progressive disclosure concept and file type explanations provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_infoA
Boot-time reporter called by the orchestrator at startup. Returns independent top-level fields that the orchestrator must branch on separately:
outdated (array of stale artifact keys) — soft notification.
Compares the host's .aide/versions.json against the canonical manifest shipped with this npm package. Each element names an artifact key that is behind. An empty array means everything is current. A missing .aide/versions.json (old install predating version tracking) silently collapses to []. Staleness is informational — the orchestrator continues with a heads-up to the user.
behind ({ installed, latest } or null) — soft notification. Non-null only when the project's aide entry launches a globally installed server that is older than the latest published version. Suggest npm i -g @aidemd-mcp/server once and continue — it never gates the pipeline. Null when the server is launched locally, is current, or the version check could not run (offline checks pass silently).
brainMigration ({ staleSections, legacyLauncher } or null) — soft notification. Non-null when the brain config has sections whose text matches an earlier template version, or a legacy brain launcher (legacyLauncher lists the reasons: unpinned, unversioned, older-pin, missing-auto-confirm). Mention it once and suggest /aide:brain config; it never gates the pipeline and never changes brain.status.
brain (precondition state) — hard gate.
Reports whether the host's brain MCP entry is wired and consistent. Shape: { status, name?, fault?, hints } — name is absent on no-brain-aide and brain-aide-invalid; fault is present only on brain-aide-invalid. The orchestrator must halt and direct the user to resolve the issue before continuing if status is not 'ok'. No path validation is performed — the package never stats any directory on disk; state derives entirely from comparing .aide/config/brain.aide against .mcp.json.
The five brain.status values:
ok—.aide/config/brain.aideexists, satisfies the required-section contract, and the host's.mcp.jsonbrainentry matches the parsedmcpServerConfig.nameis the user-declared descriptive label from brain.aide. The pipeline may proceed.no-brain-aide—.aide/config/brain.aideis absent. Nonamefield. Remediation: run/aide:brain config, which creates the config.brain-aide-invalid— the file exists but falls short.fault.kindismissing-sections(withfault.sectionsnaming each missing required section) ormalformed(withfault.reason). Nonamefield. Remediation: run/aide:brain config.no-mcp-entry— brain.aide parsed successfully but the host's.mcp.jsonis absent, malformed, or has nomcpServers.brainkey.nameis present. Remediation: run sync with the same launcher the project'saideMCP entry uses —aidemd-mcp syncwhen the project'saideMCP entry runs the globally installedaidemd-mcp, ornpx -y @aidemd-mcp/server@<version> syncwith the version that entry pins when it runs through npx.mcp-drift— brain.aide and.mcp.jsonboth exist but theirbrainentries disagree oncommandorargs.nameis present. Remediation: run sync with the same launcher the project'saideMCP entry uses —aidemd-mcp syncwhen the project'saideMCP entry runs the globally installedaidemd-mcp, ornpx -y @aidemd-mcp/server@<version> syncwith the version that entry pins when it runs through npx.
hints is always present on every status — an array of candidate brain root paths the orchestrator can surface during recovery.
No parameters needed — uses the server's working directory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses that staleness is informational only, that a missing versions.json silently collapses to [], that `behind` is null when offline, that no path validation or directory stat ever occurs, and exactly which statuses require halting. These are genuine behavioral traits beyond anything the schema provides.
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 response is long, but it is front-loaded with the soft-vs-hard-gate distinction and uses bolded field names as scannable anchors, so the structure aids navigation. It is dense rather than wasteful, though the two lengthy remediation paragraphs about `no-mcp-entry`/`mcp-drift` contain duplicated wording that could be tightened.
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?
There is no output schema, so the description must fully describe the return shape — and it does, covering every top-level field, the null conditions, the five `brain.status` values with their faults and remediations, and the always-present `hints` array. An agent has everything needed to interpret and branch on the result.
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 takes zero parameters, so per the rubric the baseline is 4. The description adds a small amount of useful context by noting that the call relies on the server's working directory, which explains how a zero-arg tool determines its target, but there are no parameter semantics to enrich further.
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 opens with a specific use case — 'Boot-time reporter called by the orchestrator at startup' — and enumerates the exact fields returned (outdated, behind, brainMigration, brain), making the resource and function unambiguous. However, it never differentiates itself from plausible siblings like aide_inspect or aide_validate, which also sound like status/config readers, so it falls short of the rubric's 5.
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 clearly states the invocation context (called by the orchestrator at startup) and gives explicit branching guidance: soft notifications that never gate, versus `brain` as a hard gate where the orchestrator 'must halt' when status is not 'ok'. It never names an alternative tool to use instead, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_initA
Bootstrap the AIDE development environment into a project. Returns structured JSON for agent consumption — not prose.
The tool uses a two-call pattern for progressive disclosure:
First call (no category param): Returns a lightweight summary — every step with name, status (would-create/would-overwrite/would-skip/exists), category, and filePath, but NO content fields. Also returns brainHints (brain root candidates) and detected framework. Use this to understand what needs to be done and which categories require user prompts.
Second call (with category param): The tool writes all would-create AND approved would-overwrite files directly to disk itself and returns a manifest — steps with filePath, status (created, overwritten, or exists), and name, but NO content. would-skip steps stay would-skip in the manifest (tool writes nothing for them). The agent never sees file content and never uses the Write tool for new files.
Exception — MCP steps: For MCP steps, the manifest includes prescription data (key name and entry object) so the agent can read the existing config, merge, and write. The tool never touches MCP config directly.
Exception — brain category: The Brain config (brain.aide) step carries brainSummary on every call, including the summary: sections (each section's marker, role, seedPath for seeds, and templateBytes), missingSections, staleSections, legacyLauncher reasons and templateIntegration. It never carries section text, purposes, repair blocks or before/after bodies. Missing sections are inserted with aide_upgrade category: "brain", seeds are read one at a time with aide_brain, and migrations are previewed and applied one at a time through aide_upgrade. Sections the user edited and custom launchers are never offered. The tool creates .aide/config/brain.aide when it is absent and never overwrites an existing one.
Exception — IDE VS Code steps: IDE steps that need external tooling (VS Code CLI) return instructions for the agent to execute, since those aren't simple file writes.
Agent branch logic — silent-on-create, prompt-on-overwrite:
After the first call, walk the categories using this rule:
Pure-create category (all steps are
would-create,would-skip, orexists): apply silently by calling withcategory=Ximmediately — no AskUserQuestion. A category with nothing on disk to overwrite has no decision the user can inform.Overwrite-bearing category (any step is
would-overwrite): pause and use AskUserQuestion with structured options. Name the files that would be overwritten. If the user approves, call withcategory=X— the tool overwrites and returnsoverwrittenin the manifest. If the user declines an overwrite but wants the new files, call withcategory=X— the tool writes onlywould-createsteps; thewould-overwritestep stayswould-overwritein the manifest.Inherent-decision categories (framework, brain root path, MCP config merge, launch mode, IDE choice): always use AskUserQuestion regardless of disk state. These are not file-write decisions — filesystem contents cannot resolve them.
IMPORTANT — one-at-a-time wizard pattern using AskUserQuestion:
Do NOT present a summary table of all categories. Do NOT offer "all" as an option. Do NOT ask conversational questions — use the AskUserQuestion tool with structured options at every pause point.
Call without
categoryfirst to get the metadataPresent ONLY the detected framework — use AskUserQuestion with Yes/{alternatives} options. STOP.
Walk categories in order: methodology, commands, agents, skills, mcp, brain, ide, readme. For each:
Pure-create: apply silently (call with
category=X), report results, move to next.Overwrite-bearing: use AskUserQuestion naming the would-overwrite files. STOP. Wait for selection, then call with
category=X. Report manifest (created N, overwrote M). Move to next.Inherent decision: always use AskUserQuestion. STOP.
For brain: read
brainSummaryfrom the step, then direct the user to/aide:brain config. Call withcategory=brainonly to receive the manifest; the tool creates.aide/config/brain.aideonly when absent and never overwrites an existing one./aide:brain configasks the brain's launch mode and passesbrainMode.For MCP: when the aide step is would-create, first ask the aide server's launch mode with AskUserQuestion — "Global (recommended)" (personal machine, reliable startup; stays on its installed version; one-time
npm i -g.) or "Local" (shared repos, cloud/CI; pinned to one version that /aide:upgrade moves forward; flaky cold start.) — and call withcategory=mcpandaideMode. If the returned step carriesglobalPackagewithinstalled: false, ask whether to run itsinstallCommand; run it via Bash only on yes. If the user declines or the install fails, call again withaideMode: "local"and tell the user the server will launch locally. Then use AskUserQuestion with Merge/Skip and merge theprescriptionentry into the existing config yourself (read → merge → write). Never replace an existing aide entry. STOP.For IDE: use AskUserQuestion with multiSelect for Zed/VS Code/Neither. STOP.
Each pause point is ONE AskUserQuestion → wait for selection → then proceed. Never show multiple categories at once. Never ask open-ended conversational questions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Custom project root path (defaults to server working directory) | |
| aideMode | No | Launch mode for the aide MCP entry, chosen by the user (global recommended). Pass with category=mcp. Omitted means local. | |
| category | No | Write all would-create and approved would-overwrite files for this category to disk and return a manifest (status: created/overwritten/exists; would-skip steps pass through unchanged). Omit on the first call to get a metadata-only summary of all steps. | |
| brainMode | No | Launch mode for the bundled brain template's launcher, chosen by the user in /aide:brain config. Pass with category=brain. Omitted means local. | |
| framework | No | Force a specific framework instead of auto-detecting. Use this when re-calling after the user confirms or overrides detection. |
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 — and it delivers. It discloses that the tool writes files directly to disk, that `would-overwrite` steps require approval, that `would-skip` steps are never written, that it never touches MCP config, and that it never overwrites an existing `.aide/config/brain.aide`. That is unusually rich behavioral context for a mutation tool.
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?
Purpose is front-loaded, but the body is extremely long and partly redundant — the branch logic section and the numbered wizard section re-explain the same one-at-a-time rules, and much of the text is agent-turn UI guidance rather than tool semantics. Substantial trimming is possible without losing 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?
There is no output schema, so the description must describe returns — and it does in detail: the metadata summary (statuses, brainHints, framework), the write manifest (created/overwritten/exists), MCP `prescription` data, and the brain `brainSummary` shape. For a tool of this complexity, an agent has everything needed to invoke it correctly.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning: the `category` param's role in the two-call pattern, `aideMode` pairing with category=mcp (including the global-vs-local tradeoff and npm install fallback), `brainMode` with category=brain, and `framework` as a forced override on re-call. This goes beyond the schema's field-level text.
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?
States a specific verb and resource: "Bootstrap the AIDE development environment into a project," and immediately frames it as a two-call progressive-disclosure tool. The role is unambiguous. It never names a sibling (aide_scaffold, aide_upgrade, aide_cleanup), so it does not explicitly differentiate itself from adjacent tools.
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?
Extensive when-to-use guidance: call without `category` first, then per-category, with explicit branch rules for pure-create vs overwrite-bearing vs inherent-decision categories. However, it gives no when-not-to-use and never routes the agent to alternative tools such as aide_upgrade or aide_cleanup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_inspectA
Return JSDoc, signature, and kind for a named symbol without opening the full file — Tier 2 progressive disclosure for code. When an agent knows a function name from an import list or orchestrator file, call inspect to learn what the symbol does, what it accepts, and what it returns, based on its contract alone. Searches across TypeScript and JavaScript source files (ts, tsx, js, jsx, mjs, cjs). Use the optional file parameter to narrow the search to a single file when the location is already known.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Optional file path to narrow search to a single file | |
| name | Yes | Symbol name to look up |
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 operates without opening the full file (lightweight), and searches across multiple file extensions (ts, tsx, js, jsx, mjs, cjs). It could mention return format or performance constraints, but overall it is transparent.
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 (two sentences plus one additional sentence on file types) and front-loaded with the core functionality. Every sentence adds value, 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?
The description explains the input and what is returned (JSDoc, signature, kind) adequately for a simple lookup tool. No output schema is needed; the description covers the return values. It fits well within the sibling tools 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?
Schema coverage is 100% with both parameters described. The description adds context beyond schema: it explains how to use the optional file parameter to narrow the search when location is known. This provides meaningful guidance beyond the schema's basic 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 it returns JSDoc, signature, and kind for a named symbol without opening the full file, distinguishing it from siblings like aide_read which opens the full file. The verb 'inspect' and resource 'symbol' are 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 explicitly advises when to use this tool: when an agent knows a function name from an import list or orchestrator file. It also explains the optional file parameter for narrowing search. However, it does not explicitly state when not to use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_readA
Read an .aide spec file with full context. Returns the file content, its classified type (intent/research/plan/todo), related specs in the same directory, and links found in the content (relative paths, inline references, URLs). Use this after aide_discover to drill into a specific spec.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .aide file to read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It details the output structure (content, type, related specs, links), which goes beyond a minimal description. However, it does not mention error handling or read-only status, though that is implied.
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 two sentences: first defines functionality, second gives usage guidance. No unnecessary words, front-loaded with key details.
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?
The tool is simple (1 param, no output schema). The description fully explains the return value and usage context, making it complete for the agent.
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 coverage is 100%, so baseline is 3. The description adds no additional meaning for the 'path' parameter beyond the schema 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 verb 'read', the resource '.aide spec file', and details the returned information (file content, type, related specs, links). It also explicitly distinguishes from sibling tool aide_discover.
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 instructs to use this tool after aide_discover, providing clear context on when to use it versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_scaffoldA
Create new .aide spec files with automatic naming convention enforcement. Handles the naming rules: intent specs are .aide by default, but become intent.aide when research.aide exists in the same folder. Creating a research.aide auto-renames any existing .aide to intent.aide.
Types:
intent — Strategy, contracts, anti-patterns
research — Sources, data, patterns (triggers rename of existing .aide)
both — Creates research.aide + intent.aide pair
todo — QA re-alignment document for QA agents
plan -- Architect's implementation plan (no naming interaction with intent/research)
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of .aide file to create | |
| directory | Yes | Directory where the .aide file(s) will be created |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses key behaviors: naming rules, auto-renaming of existing .aide files when creating research.aide, and the specific purpose of each type. It could mention potential side effects like overwriting, but the information is sufficient.
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 well-structured, with a clear main sentence followed by bullet points for types. Every sentence contributes meaning without being verbose.
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 simplicity (2 params, no output schema, no annotations), the description covers all necessary aspects: purpose, naming conventions, type meanings, and usage context. An agent can correctly select and invoke the 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 coverage is 100%, baseline 3. The description adds significant value beyond the schema by detailing each type's purpose and naming interactions, which helps the agent decide values for the 'type' parameter.
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 creates .aide spec files and enforces naming conventions. It explains the types and interactions, distinguishing it from sibling tools like aide_read or aide_validate, which are for different purposes.
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 each type (intent, research, etc.) and when to use them, but does not explicitly state when not to use this tool or suggest alternatives. The sibling tools cover other operations, making usage relatively clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_upgradeA
Compare the AIDE methodology artifacts in this project against the canonical versions and return structured JSON results grouped by category. Use this when the user asks to update AIDE, sync AIDE, refresh AIDE, check for AIDE updates, or bring AIDE up to date. This is NOT for editing user .aide specs — it inspects methodology infrastructure only.
The tool uses a two-call pattern for progressive disclosure:
First call (no category param): Returns a lightweight summary — every category with file names, statuses, and counts, but NO file content. Use this to understand what has drifted and present a summary to the user. Ask which categories they want to apply.
Second call (with category param): The tool writes all differs/missing files directly to disk itself and returns a manifest — file results with filePath, status ("updated", "created", or "unchanged"), and name, but NO canonicalContent. The agent never sees file content and never uses the Write tool for methodology files.
Repeat the second call for each category the user confirms.
As the calling agent, you must:
Call without
categoryfirst to get the summaryPresent each drifted category (differs/missing) and ask the user which to apply
For each confirmed category, call again with
category=X— the tool writes the files and returns a manifest. Report what was updated/created to the user.For the
mcpcategory, the manifest still includesprescriptiondata — merge the entry into the existing MCP config yourself (read → merge → write). Ifmalformed, tell the user — do not overwrite.For
ide, the manifest may includeinstructionsfor VS Code extension install — execute that command for the user. Zed config is written directly by the tool.For
brain, the summary reportsmissingSections, outdated section text asstaleSectionsand a legacy brain launcher aslegacyLauncher(its reasons), each named separately. The brain category then works through three calls, each one decision at a time: a.category: "brain"(after the user's yes) inserts every missing section from the latest bundled template — byte-identical, in the file's line endings — only when the config launches the template's own brain server. It returns{ outcome: "inserted", inserted }(markers only; empty when nothing is missing) or{ outcome: "adapt", adapt, instructions }naming the sections the user must write for their backend. b.category: "brain"withbrainChange: <marker | "launcher">returns one{ outcome: "change", target, before, after, beforeHash }diff to show the user. It is read-only. For a non-template config it returnsmissingwith the template's version of an absent section instead. c. The same call plus thatbeforeHash, only on the user's yes to that one diff, returnsapplied, or arefusedre-fetch instruction when the bytes changed since the preview. Never batch changes under one yes. Every refusal'sinstructionsnames the next step.
IMPORTANT — one-at-a-time wizard pattern using AskUserQuestion: Do NOT present all categories at once. Walk the user through ONE category at a time using AskUserQuestion with Yes/Skip options. Stop after each question and wait for confirmation before calling with that category.
Categories: pointer-stub, methodology-docs, version-metadata, commands, agents, skills, mcp, ide, readme, brain.
Upgrade surface (user code and user .aide specs are never touched):
AIDE pointer stub in the agent config file
Canonical methodology docs under .aide/docs/
versions.json metadata under .aide/docs/
Slash commands for all pipeline phases
Pipeline agent files, skill templates
MCP server entry in the project's MCP config
IDE file association config (Zed settings, VS Code extension)
The user-owned brain config, only through the brain category: missing sections and confirmed migrations, one consented change at a time
Supports Claude Code, Cursor, Windsurf, and Copilot. Auto-detects the framework or accepts an override.
MCP step: only AIDE's own launch forms for the aide entry are judged, and a prescription never switches the mode. An npx entry matches only when it is npx -y pinned to this server's version, so a differs there is how the pin moves forward deliberately. An aidemd-mcp entry matches as the bare command or an absolute-path shim of it; a path-launched one may carry tip, an informational remark to mention once — never drift, never a merge question. Any other (custom) command under the aide key is left alone and reports matches. The brain entry is not part of the mcp step; a legacy brain launcher is changed only through the brain category's brainChange: "launcher" preview and apply, on the user's yes.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Custom project root path (defaults to server working directory) | |
| category | No | When provided, applies that category. For package-owned categories the call writes all differs/missing files to disk and returns a manifest (no canonicalContent). For `brain` it inserts missing sections (no `brainChange`), previews one change (`brainChange` alone), or applies it (`brainChange` + `beforeHash`); it never rewrites an existing section outside an applied change. When omitted, return all categories as metadata-only summaries (no canonicalContent fields). | |
| framework | No | Force a specific framework instead of auto-detecting. Auto-detection checks for framework-specific files/directories and defaults to Claude Code. | |
| beforeHash | No | The `beforeHash` a `brainChange` preview returned. Turns the call into the guarded apply: the change is written only if the current bytes still hash to this value. | |
| brainChange | No | Brain-category-only selector for one stale section (its marker) or the legacy launcher (`launcher`). Without `beforeHash` the call previews that one change read-only; with `beforeHash` it applies it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the entire burden and does so: it discloses that the tool writes files to disk itself, that no canonicalContent is ever returned, the exact outcome shapes for the brain category, the beforeHash guard and refusal behavior on changed bytes, that user code and specs are never touched, and the MCP matching rules. This is unusually rich behavioral disclosure.
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?
Purpose and usage are front-loaded in the first two paragraphs, and given the tool's branching brain/mcp behavior, most sentences carry operational weight. It is nevertheless very long and includes recursive prose (the nested brain steps) that partly duplicates the schema's own descriptions, costing some crispness.
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?
With no output schema and no annotations, the description must cover returns and it does: manifests, statuses, outcome values, refusal instructions, and the mcp prescription/tip semantics. Combined with 100% parameter coverage, an agent has everything needed to call this correctly across all five parameters.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains that omitting category yields metadata-only summaries, that the second call is what performs writes, and that brainChange alone previews while brainChange + beforeHash applies. The only shortfall is that it reads more as workflow narration than as per-parameter discrimination.
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?
States a specific verb and resource: compare AIDE methodology artifacts against canonical versions and return grouped JSON. It scopes the tool precisely, both positively (methodology infrastructure) and negatively (NOT user .aide specs), which cleanly separates it from sibling tools like aide_init, aide_cleanup, and aide_brain.
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 triggers are listed (update AIDE, sync AIDE, refresh AIDE, check for updates), an exclusion is stated, and the full agent workflow — call without category, ask per category, repeat with category — is spelled out. The one-at-a-time wizard pattern with AskUserQuestion leaves no ambiguity about when and how to sequence calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aide_validateB
Health check for .aide spec files in the project. Detects orphaned specs (in folders with no orchestrator), missing specs (orchestrators with 3+ helper imports but no .aide), naming conflicts (.aide + intent.aide in same folder), broken links, orphaned research (research.aide without intent spec), and missing descriptions (specs with no description field in frontmatter).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Subdirectory to validate (defaults to entire project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It lists the specific checks performed, which is good, but it omits details about the output format, side effects, or whether any changes are made. The description is somewhat transparent but incomplete.
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 a single sentence but front-loaded with the main purpose. It lists multiple items clearly separated by commas. Could be improved with bullet points, but it's reasonably concise and informative.
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 the tool (multiple checks) and the absence of an output schema, the description covers the input and the nature of the checks. However, it fails to describe what the tool produces (e.g., a report, exit code), which is important for an agent to invoke correctly.
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 parameter 'path' is documented in the schema. The description adds that it defaults to the entire project, which is a slight extension. This meets the baseline for high 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 uses a specific verb 'health check' and resource '.aide spec files', and lists distinct detections like orphaned specs, missing specs, naming conflicts, etc. This clearly differentiates it from sibling tools like aide_init or aide_read.
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 does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. It simply states what it does.
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.
4 tool updates
v0.11.1- Changed
aide_brain4 fields changed- changed
Input schema / properties / kind / descriptionPrevious value: -"Which section of brain.aide to return. `\"orientation\"` (default when omitted) returns the runtime briefing for mid-task brain access. `\"config\"` returns the integration-specific wiring flow used by `/aide:brain config`."New value: +"Which section: any section marker of the published contract, live or seed, or `launcher` with `source: \"template\"` only. Omitted means `orientation`. Not accepted with `contract` or `draft`. Seed sections are fetched one per call while seeding." - changed
Input schema / properties / kind / enumPrevious value: -[ - "orientation", - "config" -]New value: +[ + "orientation", + "config", + "playbook-index", + "study-playbook", + "update-playbook", + "research-index", + "kanban-index", + "kanban-create", + "kanban-work", + "kanban-manage", + "kanban-move", + "kanban-complete", + "kanban-stash", + "kanban-review", + "launcher" +] - added
Input schema / properties / pathAdded value: +{ + "description": "Project-relative path of a draft brain config. Required with `source: \"draft\"` and accepted nowhere else; a path outside the project is refused unread.", + "type": "string" +} - added
Input schema / properties / sourceAdded value: +{ + "description": "Which read runs. Omitted means `host`: one section of the host's `.aide/config/brain.aide`. `template`: one section or the launcher of the bundled template, with its purpose. `contract`: every contract section with its role and purpose. `draft`: a structural check of the draft config at `path`.", + "enum": [ + "host", + "template", + "contract", + "draft" + ], + "type": "string" +}
- Added
aide_cleanup - Changed
aide_init3 fields changed- added
Input schema / properties / aideModeAdded value: +{ + "description": "Launch mode for the aide MCP entry, chosen by the user (global recommended). Pass with category=mcp. Omitted means local.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - added
Input schema / properties / brainModeAdded value: +{ + "description": "Launch mode for the bundled brain template's launcher, chosen by the user in /aide:brain config. Pass with category=brain. Omitted means local.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - removed
Input schema / properties / brainPathRemoved value: -{ - "description": "Resolved brain root path. Required when category=brain. The agent provides this after interviewing the user.", - "type": "string" -}
- Changed
aide_upgrade3 fields changed- added
Input schema / properties / beforeHashAdded value: +{ + "description": "The `beforeHash` a `brainChange` preview returned. Turns the call into the guarded apply: the change is written only if the current bytes still hash to this value.", + "type": "string" +} - added
Input schema / properties / brainChangeAdded value: +{ + "description": "Brain-category-only selector for one stale section (its marker) or the legacy launcher (`launcher`). Without `beforeHash` the call previews that one change read-only; with `beforeHash` it applies it.", + "enum": [ + "orientation", + "config", + "playbook-index", + "study-playbook", + "update-playbook", + "research-index", + "kanban-index", + "kanban-create", + "kanban-work", + "kanban-manage", + "kanban-move", + "kanban-complete", + "kanban-stash", + "kanban-review", + "launcher" + ], + "type": "string" +} - changed
Input schema / properties / category / descriptionPrevious value: -"Write all differs/missing files for this category to disk and return a manifest. Omit on the first call to get a metadata-only summary of all categories."New value: +"When provided, applies that category. For package-owned categories the call writes all differs/missing files to disk and returns a manifest (no canonicalContent). For `brain` it inserts missing sections (no `brainChange`), previews one change (`brainChange` alone), or applies it (`brainChange` + `beforeHash`); it never rewrites an existing section outside an applied change. When omitted, return all categories as metadata-only summaries (no canonicalContent fields)."
4 tool updates
v0.6.1- Added
aide_brain - Changed
aide_init2 fields changed- changed
Input schema / properties / brainPath / descriptionPrevious value: -"Resolved brain vault path. Required when category=brain. The agent provides this after interviewing the user."New value: +"Resolved brain root path. Required when category=brain. The agent provides this after interviewing the user." - changed
Input schema / properties / category / descriptionPrevious value: -"Write all would-create files for this category to disk and return a manifest. Omit on the first call to get a metadata-only summary of all steps."New value: +"Write all would-create and approved would-overwrite files for this category to disk and return a manifest (status: created/overwritten/exists; would-skip steps pass through unchanged). Omit on the first call to get a metadata-only summary of all steps."
- Added
aide_inspect - Changed
aide_upgrade1 field changed- changed
Input schema / properties / category / enumPrevious value: -[ - "pointer-stub", - "methodology-docs", - "version-metadata", - "commands", - "agents", - "skills", - "mcp", - "ide", - "readme" -]New value: +[ + "pointer-stub", + "methodology-docs", + "version-metadata", + "commands", + "agents", + "skills", + "mcp", + "ide", + "readme", + "brain" +]
7 tool updates
v0.3.15- First observed
aide_discover - First observed
aide_info - First observed
aide_init - First observed
aide_read - First observed
aide_scaffold - First observed
aide_upgrade - First observed
aide_validate
TDQS
Scored across 10 tools
Each tool has a largely distinct role (cleanup, upgrade, info, brain, init, discover, inspect, read, scaffold, validate). A few boundaries blur — init vs upgrade both write methodology files, and info vs brain both surface brain state — but the descriptions explicitly disambiguate these cases.
All ten tools share the `aide_` prefix followed by a single short snake_case token (aide_read, aide_scaffold, aide_validate, etc.). The convention is uniform throughout, with only a minor verb-vs-noun variance (aide_info, aide_brain) that remains readable.
Ten tools is well within the ideal 3-15 range and each maps to a concrete operation in the AIDE methodology lifecycle. Nothing appears redundant or gratuitous for the server's scope.
The surface covers discovery, read, inspect, scaffold, validate, init, upgrade, cleanup, and brain/info state, giving broad lifecycle coverage. Minor gaps exist — no explicit spec update/edit or rename tool — but agents can work around these via normal file editing.
Maintenance
Related MCP Connectors
Spec-driven development for AI coding agents: live requirements, stories and traceability over MCP
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Turn PRDs and product ideas into structured specs so coding agents build your intent, not theirs.
Code-map tools for AI agents: see a repo's structure first, then edit only what matters.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceThis is a connector to allow Claude Desktop (or any MCP client) to read and search any directory containing Markdown notes (such as an Obsidian vault).395 npm1,352AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables spec-driven development workflows with AI assistants, providing tools for managing specification lifecycles, task dependencies, code navigation, testing, and automated reviews through a unified CLI and MCP interface.4MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI-powered architecture analysis and visualization of codebases, exposing 17 MCP tools for querying components, dependencies, and generating interactive diagrams.16 npm5MIT

NEAT MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceProvides AI agents with a live architecture model of a codebase, enabling queries for root cause analysis, blast radius, and dependency traversal through MCP tools.139 npm22Apache 2.0