Skip to main content
Glama

AIDE npm version License: MIT

@aidemd-mcp/server

MCP-сервер, который привносит разработку, управляемую намерениями (intent-driven development), в любую IDE с поддержкой AI. Управляйте файлами спецификаций .aide, которые находятся рядом с вашим кодом — это контекст предметной области, на основе которого архитекторы планируют, разработчики создают, а QA проводит валидацию.

Возможности

  • Обнаружение спецификаций во всем проекте с деревом прогрессивного раскрытия, которое отображает намерения, исследования и спецификации QA на каждом уровне вашей кодовой базы.

  • Настройка проекта одной командой через aide_init — подключает методологические документы, команды конвейера и этот MCP-сервер к вашему проекту в рамках одного направляемого процесса.

  • Автоматическое соблюдение соглашений об именовании — aide_scaffold обрабатывает правила переименования .aide / intent.aide, чтобы вы никогда не создавали конфликтующие спецификации.

  • Проверка работоспособности через aide_validate — обнаруживает осиротевшие спецификации, отсутствующие описания, битые ссылки и конфликты имен до того, как они приведут к рассинхронизации.

  • Обнаружение отклонений при обновлении через aide_upgrade — сравнивает артефакты методологии AIDE вашего проекта с каноническими версиями и записывает обновления по категориям.

Related MCP server: Foundry MCP

Установка

Быстрый старт (Claude Code)

Самый быстрый путь — это одна команда npx, которая автоматически все настраивает:

npx @aidemd-mcp/server@latest init

Эта команда:

  • Объединяет запись MCP-сервера AIDE в .mcp.json (создает файл или пропускает запись, если она уже есть).

  • Записывает слэш-команду /aide:init в .claude/commands/aide/init.md (пропускает, если существует).

  • Записывает лаунчер aide-tree в .aide/bin/aide-tree.mjs (пропускает, если существует).

Все операции идемпотентны — их безопасно запускать в любое время.

После выполнения откройте Claude Code и запустите /aide:init для завершения настройки.

Ручная настройка

Если вы используете клиент, отличный от Claude Code, или предпочитаете настраивать вручную, добавьте запись сервера в файл конфигурации MCP вашего клиента.

Claude Code

claude mcp add aide npx -- -y @aidemd-mcp/server@latest

Или добавьте в .mcp.json вашего проекта:

{
  "mcpServers": {
    "aide": {
      "command": "npx",
      "args": ["-y", "@aidemd-mcp/server@latest"]
    }
  }
}

[!NOTE] Команда быстрого старта выше автоматически выполняет это для пользователей Claude Code.

Claude Desktop

Расположение файлов конфигурации:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "aide": {
      "command": "npx",
      "args": ["-y", "@aidemd-mcp/server@latest"]
    }
  }
}

[!NOTE] Claude Desktop не наследует переменную окружения PATH терминала. Если вы используете nvm или Homebrew для управления Node, npx может быть не найден. Выполните which npx в терминале, чтобы получить абсолютный путь, и замените им "npx" в конфигурации выше.

Claude Desktop требует полного перезапуска после любого изменения конфигурации.

Cursor

Добавьте в ~/.cursor/mcp.json:

{
  "mcpServers": {
    "aide": {
      "command": "npx",
      "args": ["-y", "@aidemd-mcp/server@latest"]
    }
  }
}

VS Code / Copilot

Добавьте в .vscode/mcp.json:

{
  "servers": {
    "aide": {
      "command": "npx",
      "args": ["-y", "@aidemd-mcp/server@latest"]
    }
  }
}

[!NOTE] VS Code / Copilot использует "servers" в качестве корневого ключа, а не "mcpServers". Использование неверного корневого ключа приведет к тому, что сервер не загрузится без вывода ошибок.

Windsurf

Добавьте в ~/.windsurf/mcp.json:

{
  "mcpServers": {
    "aide": {
      "command": "npx",
      "args": ["-y", "@aidemd-mcp/server@latest"]
    }
  }
}

Инструменты

aide_discover

Сканирует проект на наличие файлов спецификаций .aide и возвращает карту дерева прогрессивного раскрытия, показывающую тип, расположение и краткое содержание каждой спецификации.

Входные данные:

  • path (строка, опционально): Подкаталог для углубленного анализа. При указании ответ открывается с цепочкой предков — каскадной линией намерений от корня до цели, где каждый предок показывает свое описание и статус согласования, — за которой следует подробное поддерево с краткими описаниями и предупреждениями. Если опущено, возвращает поверхностную карту всего проекта (только расположения и типы).

aide_read

Читает файл спецификации .aide с полным контекстом, возвращая содержимое файла, его классифицированный тип (intent/research/plan/todo), связанные спецификации в той же директории и ссылки, найденные в содержимом.

Входные данные:

  • path (строка, обязательно): Путь к файлу .aide для чтения.

aide_scaffold

Создает новые файлы спецификаций .aide с автоматическим соблюдением соглашений об именовании. Обрабатывает правила переименования: спецификации намерений по умолчанию имеют расширение .aide, но становятся intent.aide, когда в той же папке существует research.aide; создание research.aide автоматически переименовывает любой существующий .aide в intent.aide.

Входные данные:

  • directory (строка, обязательно): Директория, в которой будут созданы файлы .aide.

  • type (строка, обязательно): Тип создаваемого файла .aide. Один из: intent, research, both, todo, plan.

aide_validate

Запускает проверку работоспособности файлов спецификаций .aide в проекте. Обнаруживает осиротевшие спецификации, отсутствующие спецификации, конфликты имен (.aide и intent.aide в одной папке), битые ссылки, осиротевшие файлы исследований и отсутствие описаний в frontmatter.

Входные данные:

  • path (строка, опционально): Подкаталог для проверки. По умолчанию проверяется весь проект, если опущено.

aide_init

Выполняет начальную настройку среды разработки AIDE в проекте с помощью пошагового мастера. При первом вызове (без category) возвращает сводку каждого шага со статусом и обнаруженной средой. При последующих вызовах (с category) записывает все ожидающие файлы для этой категории на диск и возвращает манифест.

Входные данные:

  • framework (строка, опционально): Принудительное использование конкретной среды вместо автоопределения. Один из: claude, cursor, windsurf, copilot.

  • path (строка, опционально): Пользовательский корневой путь проекта. По умолчанию — рабочая директория сервера.

  • category (строка, опционально): Записывает все файлы would-create для этой категории и возвращает манифест. Один из: framework, methodology, commands, agents, skills, mcp, brain, ide. Опустите при первом вызове, чтобы получить сводку только с метаданными.

  • brainPath (строка, опционально): Разрешенный путь к хранилищу brain. Обязательно, когда category=brain.

aide_upgrade

Сравнивает артефакты методологии AIDE в этом проекте с каноническими версиями и возвращает структурированный diff, сгруппированный по категориям. При первом вызове (без category) возвращает легкую сводку каждой категории со статусом отклонения. При последующих вызовах (с category) записывает все измененные или отсутствующие файлы для этой категории на диск и возвращает манифест.

Входные данные:

  • framework (строка, опционально): Принудительное использование конкретной среды вместо автоопределения. Один из: claude, cursor, windsurf, copilot.

  • path (строка, опционально): Пользовательский корневой путь проекта. По умолчанию — рабочая директория сервера.

  • category (строка, опционально): Записывает все измененные или отсутствующие файлы для этой категории и возвращает манифест. Один из: pointer-stub, methodology-docs, version-metadata, commands, agents, skills, mcp, ide. Опустите при первом вызове, чтобы получить сводку только с метаданными.

Начало работы

После добавления сервера в ваш MCP-клиент попросите агента запустить aide_init для внедрения методологии AIDE в ваш проект. Это установит документы по методологии, создаст команды конвейера и все настроит.

Затем попробуйте: "Scaffold an intent spec for my authentication module" — агент использует aide_discover для отображения вашего проекта и aide_scaffold для создания спецификации в нужном месте с правильными соглашениями об именовании.

Разработка

npm install
npm run build
npm test

Лицензия

MIT

Available Tools

10 tools
aide_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, with kind: "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 with marker, role (live or seed) and purpose, and no section text.

  • "draft" — a structural check of the draft config at path, 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; invalid with fault (missing-sections and its sections, or malformed and its reason); absent when no file is at path; refused when path is 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 — instructions is that section's verbatim bytes from the host's .aide/config/brain.aide: no trimming, no normalization, no ${...} substitution. purpose is that section's one-line purpose from the published contract; use it when adapting the section for another backend.

  • found: false — instructions is remediation, and purpose is absent. An absent file → run /aide:brain config. A requested section missing from the file → with the user's consent, call aide_upgrade with category: "brain". A malformed or unreadable file → the exact fault, a hand fix with the user, then re-check with aide_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".

NameRequiredDescriptionDefault
kindNoWhich 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.
pathNoProject-relative path of a draft brain config. Required with `source: "draft"` and accepted nowhere else; a path outside the project is refused unread.
sourceNoWhich 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

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault
pathYesThe module directory whose ephemerals to remove, relative to the project root
dryRunNoOptional. Removes nothing and only reports what a real call would remove. Agents closing a module omit it.
allowEmptyPlanNoOptional, 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

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathNoSubdirectory 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

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.aide exists, satisfies the required-section contract, and the host's .mcp.json brain entry matches the parsed mcpServerConfig. name is the user-declared descriptive label from brain.aide. The pipeline may proceed.

  • no-brain-aide — .aide/config/brain.aide is absent. No name field. Remediation: run /aide:brain config, which creates the config.

  • brain-aide-invalid — the file exists but falls short. fault.kind is missing-sections (with fault.sections naming each missing required section) or malformed (with fault.reason). No name field. Remediation: run /aide:brain config.

  • no-mcp-entry — brain.aide parsed successfully but the host's .mcp.json is absent, malformed, or has no mcpServers.brain key. name is present. Remediation: run sync with the same launcher the project's aide MCP entry uses — aidemd-mcp sync when the project's aide MCP entry runs the globally installed aidemd-mcp, or npx -y @aidemd-mcp/server@<version> sync with the version that entry pins when it runs through npx.

  • mcp-drift — brain.aide and .mcp.json both exist but their brain entries disagree on command or args. name is present. Remediation: run sync with the same launcher the project's aide MCP entry uses — aidemd-mcp sync when the project's aide MCP entry runs the globally installed aidemd-mcp, or npx -y @aidemd-mcp/server@<version> sync with 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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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, or exists): apply silently by calling with category=X immediately — 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 with category=X — the tool overwrites and returns overwritten in the manifest. If the user declines an overwrite but wants the new files, call with category=X — the tool writes only would-create steps; the would-overwrite step stays would-overwrite in 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.

  1. Call without category first to get the metadata

  2. Present ONLY the detected framework — use AskUserQuestion with Yes/{alternatives} options. STOP.

  3. 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.

  4. For brain: read brainSummary from the step, then direct the user to /aide:brain config. Call with category=brain only to receive the manifest; the tool creates .aide/config/brain.aide only when absent and never overwrites an existing one. /aide:brain config asks the brain's launch mode and passes brainMode.

  5. 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 with category=mcp and aideMode. If the returned step carries globalPackage with installed: false, ask whether to run its installCommand; run it via Bash only on yes. If the user declines or the install fails, call again with aideMode: "local" and tell the user the server will launch locally. Then use AskUserQuestion with Merge/Skip and merge the prescription entry into the existing config yourself (read → merge → write). Never replace an existing aide entry. STOP.

  6. 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.

NameRequiredDescriptionDefault
pathNoCustom project root path (defaults to server working directory)
aideModeNoLaunch mode for the aide MCP entry, chosen by the user (global recommended). Pass with category=mcp. Omitted means local.
categoryNoWrite 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.
brainModeNoLaunch mode for the bundled brain template's launcher, chosen by the user in /aide:brain config. Pass with category=brain. Omitted means local.
frameworkNoForce a specific framework instead of auto-detecting. Use this when re-calling after the user confirms or overrides detection.

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
fileNoOptional file path to narrow search to a single file
nameYesSymbol name to look up

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathYesPath to the .aide file to read

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

NameRequiredDescriptionDefault
typeYesType of .aide file to create
directoryYesDirectory where the .aide file(s) will be created

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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:

  1. Call without category first to get the summary

  2. Present each drifted category (differs/missing) and ask the user which to apply

  3. 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.

  4. For the mcp category, the manifest still includes prescription data — merge the entry into the existing MCP config yourself (read → merge → write). If malformed, tell the user — do not overwrite.

  5. For ide, the manifest may include instructions for VS Code extension install — execute that command for the user. Zed config is written directly by the tool.

  6. For brain, the summary reports missingSections, outdated section text as staleSections and a legacy brain launcher as legacyLauncher (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" with brainChange: <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 returns missing with the template's version of an absent section instead. c. The same call plus that beforeHash, only on the user's yes to that one diff, returns applied, or a refused re-fetch instruction when the bytes changed since the preview. Never batch changes under one yes. Every refusal's instructions names 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.

NameRequiredDescriptionDefault
pathNoCustom project root path (defaults to server working directory)
categoryNoWhen 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).
frameworkNoForce a specific framework instead of auto-detecting. Auto-detection checks for framework-specific files/directories and defaults to Claude Code.
beforeHashNoThe `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.
brainChangeNoBrain-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

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

NameRequiredDescriptionDefault
pathNoSubdirectory to validate (defaults to entire project)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 4 tool updatesv0.11.1
    • Changedaide_brain4 fields changed
      • changedInput schema / properties / kind / description
        Previous 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."
      • changedInput schema / properties / kind / enum
        Previous 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"
        +]
      • addedInput schema / properties / path
        Added 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"
        +}
      • addedInput schema / properties / source
        Added 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"
        +}
    • Addedaide_cleanup
    • Changedaide_init3 fields changed
      • addedInput schema / properties / aideMode
        Added 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"
        +}
      • addedInput schema / properties / brainMode
        Added 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"
        +}
      • removedInput schema / properties / brainPath
        Removed value: -{
        -  "description": "Resolved brain root path. Required when category=brain. The agent provides this after interviewing the user.",
        -  "type": "string"
        -}
    • Changedaide_upgrade3 fields changed
      • addedInput schema / properties / beforeHash
        Added 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"
        +}
      • addedInput schema / properties / brainChange
        Added 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"
        +}
      • changedInput schema / properties / category / description
        Previous 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)."
  2. 4 tool updatesv0.6.1
    • Addedaide_brain
    • Changedaide_init2 fields changed
      • changedInput schema / properties / brainPath / description
        Previous 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."
      • changedInput schema / properties / category / description
        Previous 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."
    • Addedaide_inspect
    • Changedaide_upgrade1 field changed
      • changedInput schema / properties / category / enum
        Previous 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"
        +]
  3. 7 tool updatesv0.3.15
    • First observedaide_discover
    • First observedaide_info
    • First observedaide_init
    • First observedaide_read
    • First observedaide_scaffold
    • First observedaide_upgrade
    • First observedaide_validate

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    This 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 npm
    1,352
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI-powered architecture analysis and visualization of codebases, exposing 17 MCP tools for querying components, dependencies, and generating interactive diagrams.
    16 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides 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 npm
    22
    Apache 2.0