Skip to main content
Glama
theSharque
by theSharque

MCP Architector

npm version GitHub

Model Context Protocol (MCP) server for architecture and system design

Local-first MCP server that stores and manages project architecture information. All data is stored locally in ~/.mcp-architector for maximum privacy and confidentiality.

πŸ“¦ Install: npm install -g mcp-architector or use via npx 🌐 npm: https://www.npmjs.com/package/mcp-architector πŸ”— GitHub: https://github.com/theSharque/mcp-architect

How to connect to Claude Desktop / IDE

Add the server to your MCP config. Example for claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "architector": {
      "command": "npx",
      "args": ["-y", "mcp-architector"],
      "env": {
        "MCP_PROJECT_ID": "${workspaceFolder}"
      }
    }
  }
}

For Cursor IDE: Settings β†’ Features β†’ Model Context Protocol β†’ Edit Config, then add the same block inside mcpServers. See the Integration section for more options.

Related MCP server: LocalNest MCP

For Cursor IDE and Cursor Cloud Agents, use a phased onboarding rule so the agent does not dump the whole repo into context in one shot.

  1. Copy .cursor/rules/architector-onboarding.mdc into your project (the repo you are documenting):

    mkdir -p /path/to/your-app/.cursor/rules
    cp /path/to/mcp-architector/.cursor/rules/architector-onboarding.mdc /path/to/your-app/.cursor/rules/
  2. Ensure MCP Architector is connected. The agent must call list-projects and pass projectId on every write β€” do not rely on omitting it.

  3. Ask in chat, for example: "Onboard this repo into architector β€” phase 0 plan first" or "Import architecture module by module".

The rule is alwaysApply: false β€” Cursor attaches it when the task matches architecture import/onboarding. It enforces: structure β†’ one module per step β†’ validate after each step β†’ compact tools only.

If you develop this server repo, keep the same file here so contributors and Cloud Agents follow the same workflow when updating ~/.mcp-architector/_qs_mcp-architector/.

Overview

Store and manage project architecture, modules, scripts, data flow, and usage examples - all locally with complete privacy.

Features

  • Local Storage: All data stored in ~/.mcp-architector (privacy-first)

  • Project Architecture: Store and retrieve overall project architecture

  • Module Details: Detailed information about each module

  • Resources: Access architecture data via resources

Storage Structure

~/.mcp-architector/
└── {projectId}/
    β”œβ”€β”€ architecture.json      # Modules + dataFlow (vertical structure)
    β”œβ”€β”€ modules/
    β”‚   β”œβ”€β”€ {moduleId}.json
    β”‚   └── ...
    β”œβ”€β”€ entries/
    β”‚   β”œβ”€β”€ index.json         # Catalog (no duplicate bodies)
    β”‚   └── {entryId}.json     # Canonical facts (API, domain, flows, …)
    β”œβ”€β”€ slices/
    β”‚   └── {sliceId}.json     # Custom filters only (no items)

Data model

Layer

Purpose

Tools

Modules

Vertical structure: components, dependencies, dataFlow

set-project-architecture, set-module-details, set-module-data-flow, rebuild-data-flow, validate-architecture

Entries

Single source of truth for horizontal facts (one fact = one file)

set-entry, set-entries, get-entry, list-entries

Slices

Read-only views over entries (built-in or custom filters)

list-slices, get-slice

Anti-patterns (no duplication): Do not copy module.description into entry.summary. Link with refs.moduleName. Slices never store item copiesβ€”only filters in slices/*.json.

Do not edit ~/.mcp-architector directly β€” always use MCP tools so timestamps, merge semantics, and dataFlow inverse sync stay consistent.

Agent workflow

  1. list-projects β€” find projectId for this workspace (query by folder name). Pass it to every other tool. Never omit. Never use default-project.

  2. Structure task β†’ get-project-architecture / set-project-architecture.

  3. Each module β†’ set-module-details with files + facts[] (endpoints, entities, glossary) in the same call, or set-entries / set-entry with refs.moduleName.

  4. Single module graph edge β†’ set-module-data-flow.

  5. Bulk rebuild flow (many modules) β†’ rebuild-data-flow.

  6. After edits, verify everything β†’ validate (summary + issues[]; no full project load).

  7. Need a category (all APIs, all domain terms) β†’ list-slices β†’ get-slice with format=compact or table; use offset when hasMore is true.

  8. Find by name β†’ search-entries β†’ get-entry for full payload.

  9. After code refactor (same modules) β†’ refactor-architecture: scan β†’ dryRun preview β†’ apply with confirm=true.

Scenario

Tool

Update one module + its APIs/facts

set-module-details with facts[]

Bulk facts for a domain

set-entries with moduleName

Patch dataFlow for one module

set-module-data-flow

Rebuild all module edges

rebuild-data-flow

Diagnose graph + empty slices

validate (or validate-architecture)

Sync paths/names after refactor

refactor-architecture (dryRun, then confirm)

Index out of sync

rebuild-entry-index

Create project from scratch

set-project-architecture with replaceModules: true

Onboard a fresh git clone (phased)

Copy .cursor/rules/architector-onboarding.mdc β†’ ask agent to onboard phase by phase

Full project picture: modules alone do not populate slices β€” without http-endpoint (and other kinds) entries, slice api stays empty. New module β†’ add facts or entries in the same step.

Example: set-module-details with facts: [{ kind: "http-endpoint", title: "POST /orders", ... }], then get-slice sliceId=api format=table.

Quick Start

For Users (using npm package)

# No installation needed - use directly in Cursor/Claude Desktop
# Just configure it as described in Integration section below

For Developers

  1. Clone the repository:

git clone https://github.com/theSharque/mcp-architect.git
cd mcp-architect
  1. Install dependencies:

npm install
  1. Build the project:

npm run build

Usage

Development Mode

Run with hot reload:

npm run dev

Production Mode

Start the server:

npm start

MCP Inspector

Debug and test your server with the MCP Inspector:

npm run inspector

Integration

Cursor IDE

  1. Open Cursor Settings β†’ Features β†’ Model Context Protocol

  2. Click "Edit Config" button

  3. Add one of the configurations below

Installs from npm registry automatically:

{
  "mcpServers": {
    "architector": {
      "command": "npx",
      "args": ["-y", "mcp-architector"],
      "env": {
        "MCP_PROJECT_ID": "${workspaceFolder}"
      }
    }
  }
}

For local development with live changes:

{
  "mcpServers": {
    "architector": {
      "command": "mcp-architector",
      "env": {
        "MCP_PROJECT_ID": "${workspaceFolder}"
      }
    }
  }
}

Requires: cd /path/to/mcp-architector && npm link -g

Option 3: Direct path

{
  "mcpServers": {
    "architector": {
      "command": "node",
      "args": ["/path/to/mcp-architector/dist/index.js"],
      "env": {
        "MCP_PROJECT_ID": "${workspaceFolder}"
      }
    }
  }
}

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "architector": {
      "command": "npx",
      "args": ["-y", "mcp-architector"],
      "env": {
        "MCP_PROJECT_ID": "${workspaceFolder}"
      }
    }
  }
}

Continue.dev

Edit .continue/config.json:

{
  "mcpServers": {
    "architector": {
      "command": "npx",
      "args": ["-y", "mcp-architector"],
      "env": {
        "MCP_PROJECT_ID": "${workspaceFolder}"
      }
    }
  }
}

Using Project ID

projectId is required on every tool except list-projects. There is no default dump project.

  1. Call list-projects first (optionally with query = workspace folder name)

  2. Pass the matching projectId to every other tool

  3. If none matches, create one with set-project-architecture using a stable id from the workspace path (e.g. _qs_my-app)

MCP_PROJECT_ID is only a hint (isCurrent / suggestedProjectId). It is not used as a silent write target. default-project and unsubstituted ${workspaceFolder} ids are forbidden.

Tools

set-project-architecture

Creates or updates the overall architecture for a project. By default merges modules and dataFlow by name; omit dataFlow to preserve existing flow. dependsOn is canonical; providesTo is recomputed on save.

Input:

  • projectId (required): Project ID from list-projects. Never omit. default-project is forbidden.

  • description: Overall project description

  • modules: Array of module objects with:

    • name: Module name

    • description: Brief description of the module

    • inputs (optional): What this module requires to work

    • outputs (optional): What this module produces or generates

  • dataFlow (optional): Object describing data flow between modules (omit to keep existing):

    • Key: module name

    • Value: object with:

      • dependsOn (optional): Array of module names this module depends on

      • providesTo (optional): Derived on save from all dependsOn edges

      • dataTransformation (optional): How data is transformed between modules

  • replaceModules (optional): Replace entire modules list (default false = merge by name)

  • replaceDataFlow (optional): Replace entire dataFlow (default false = merge by module name)

Output:

  • Project ID and success message

get-project-architecture

Retrieves the overall architecture of the project.

Input:

  • projectId (required): Project ID from list-projects. Never omit. default-project is forbidden.

Output:

  • Complete project architecture

list-projects

Lists all projects in local storage (~/.mcp-architector). Call this first. Match the current workspace by folder name, then pass projectId to every other tool.

Input:

  • query (optional): Filter by substring in projectId or description (case-insensitive)

Output:

  • projects[]: projectId, description, moduleCount, updatedAt, isCurrent (hint from MCP_PROJECT_ID), forbidden (default-project and unsubstituted workspaceFolder dumps)

  • suggestedProjectId: current MCP_PROJECT_ID when it is a valid id, else null

  • reminder: always pass projectId; never use default-project

Entries and slices

Tool

Purpose

set-entry

Upsert one fact; response may include reminder if modules missing or unlinked

set-entries

Bulk upsert (max 200); optional moduleName sets refs.moduleName on all

get-entry

Full entry by id

delete-entry

Remove entry

list-entries

Catalog without payload; filter by kind, tags, query

search-entries

Compact text search with snippet, slices, moduleName, pagination; filters: moduleName, kind, tags

list-slices

Built-in + custom slices with entry counts

get-slice

Filtered view: sliceId, format, query, limit, offset, hasMore

set-slice

Save custom filter (kinds, tags) β€” no items

delete-slice

Remove custom slice

rebuild-entry-index

Rebuild entries/index.json from entry files

Built-in sliceId values: api, persistence, events, domain, flows, integrations, config, runtime, decisions, scripts.

search-entries

Compact navigation searchβ€”returns enough context to pick a hit, then call get-entry for full payload.

Input: query (required), moduleName, kind, tags, limit (default 10, max 50), offset (default 0)

Output: summary, total, returned, offset, hasMore, results[] with snippet, matchedIn, slices, moduleName plus legacy summary, tags, refs

Recommended kind examples (any string allowed):

sliceId

kinds

api

http-endpoint, grpc-method, mcp-tool, cli-command, …

persistence

db-table, entity, repository

domain

glossary, invariant, lifecycle

scripts

script β€” use set-entry / get-slice sliceId=scripts

set-module-details

Creates or updates detailed information about a module. Slices read entries, not module text β€” pass facts[] to create linked entries in one call.

Input:

  • projectId (required): Project ID from list-projects

  • name: Module name

  • description: Detailed description of the module

  • inputs: What the module accepts as input

  • outputs: What the module produces as output

  • dependencies (optional): List of module dependencies (syncs to dataFlow.dependsOn when provided)

  • files (optional): List of files belonging to this module

  • facts (optional): Array of horizontal facts (kind, title, summary, …) β€” each upserted as entry with refs.moduleName = module name

  • usageExamples (optional): Array of usage examples with fields:

    • title: Example title

    • description (optional): Description of the example

    • command (optional): Command or code snippet

    • input (optional): Input data

    • output (optional): Expected output

    • notes (optional): Additional notes about the example

  • notes (optional): Additional notes

Output:

  • Module ID and success message

set-module-data-flow

Patches dataFlow for a single module without sending the full architecture.

Input:

  • projectId (required): Project ID from list-projects

  • moduleName: Module name

  • dependsOn (optional): Modules this module depends on (canonical)

  • dataTransformation (optional): How data is transformed

  • syncInverse (optional): Recompute providesTo (default true)

Output:

  • Module name and success message

rebuild-data-flow

Rebuilds dataFlow for all modules from module file dependencies or existing dependsOn edges. Replaces bulk manual edits to architecture.json.

Input:

  • projectId (required): Project ID from list-projects

  • source (optional): module-dependencies (default) or dataFlow-dependsOn

  • syncInverse (optional): Recompute providesTo (default true)

  • pruneOrphans (optional): Remove invalid module references (default true)

Output:

  • edgesAdded, edgesRemoved, modulesUpdated, message

validate

Primary post-edit check. Read-only validation with a compact agent-friendly report. Does not modify data.

Checks (only rules we can verify from stored JSON):

  • dataFlow: inverse drift, dangling dependsOn/providesTo, orphan flow keys

  • module.dependencies vs dataFlow.dependsOn

  • entries: entries-without-modules, entry-unlinked, orphan-entry-module, module-no-entries, module-missing-api / module-missing-persistence, entry-slice-orphan, module-too-many-entries, module-too-few-entries

  • storage: missing modules/{id}.json, orphan module files, entry index drift

  • slices: empty built-in api / domain / persistence when modules exist

Input: projectId, checkInverse, checkModuleDeps, checkEntryCoverage, checkStorage, checkEmptySlices, checkSliceCoverage, checkModuleEntryCounts, moduleEntryMax (default 50), moduleEntryMin (optional; omit to disable min check) β€” all boolean flags default true unless noted

Output: valid, issueCount, summary, stats, issuesByKind, issues[], coverage, checksRun

refactor-architecture

Preview or apply in-architector sync after a code refactor when module boundaries stay the same. Agent is the source of truth β€” no workspace or git access. Default dryRun=true.

Workflow: (1) scan with file or text β†’ compact hits, (2) build mutation ops, (3) dryRun preview, (4) apply with dryRun=false and confirm=true.

Operations (max 10 per call): scan, move-file, replace-path-prefix, rename-text, patch-entry, merge-files, remove-file-ref.

Scope (optional): moduleName, kinds, tags β€” limits which entries/modules are touched.

Orphan entries with empty refs.files and no refs.entryIds are deleted after file operations.

Input: projectId, operations[], scope, dryRun (default true), confirm (required when applying), limit, offset

Output: summary, stats, hits (scan) or paginated changes, warnings, hasMore

validate-architecture

Same as validate (legacy alias). Prefer validate after edits.

Output:

  • valid (boolean), issues array

get-module-details

Retrieves detailed information about a specific module.

Input:

  • projectId (required): Project ID from list-projects

  • moduleName: Name of the module to retrieve

Output:

  • Complete module details

list-modules

Lists all modules in the project architecture.

Input:

  • projectId (required): Project ID from list-projects

Output:

  • Array of module summaries

delete-module

Deletes a module from the project architecture.

Input:

  • projectId (required): Project ID from list-projects

  • moduleName: Name of the module to delete

Output:

  • Success message

Resources

architecture

Provides access to project architecture as a resource.

Usage: Access via URI: arch://{projectId}

module

Provides access to module details as a resource.

Usage: Access via URI: module://{projectId}/{moduleId}

Development

Project Structure

mcp-architector/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts          # Main server implementation
β”‚   β”œβ”€β”€ types.ts          # Type definitions
β”‚   └── storage.ts        # Storage utilities
β”œβ”€β”€ dist/                 # Compiled output (generated)
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── README.md

Project ID

The server stores each project in ~/.mcp-architector/{projectId}/. projectId must be passed explicitly on every tool except list-projects.

  • Call list-projects (with query = workspace folder name) to find the id

  • MCP_PROJECT_ID is only a listing hint (isCurrent / suggestedProjectId), not a silent write target

  • default-project and unsubstituted ${workspaceFolder} ids are forbidden

To start a new project, pass a stable id derived from the workspace path (e.g. _qs_my-app) to set-project-architecture.

Extending the Server

To add new tools, resources, or prompts, edit src/index.ts:

// Add a tool
server.registerTool(
  "tool-name",
  { /* tool config */ },
  async (params) => { /* handler */ }
);

// Add a resource
server.registerResource(
  "resource-name",
  new ResourceTemplate("uri-template", { /* options */ }),
  { /* resource config */ },
  async (uri, params) => { /* handler */ }
);

// Add a prompt
server.registerPrompt(
  "prompt-name",
  { /* prompt config */ },
  (args) => { /* handler */ }
);

License

MIT

Available Tools

28 tools
delete-entriesDelete EntriesA

Bulk delete entries matching kind/moduleName/tags filter. Requires confirm=true. Use before full re-import or to clear a module slice. Prefer replace-entries with deleteOrphans for idempotent sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
kindNoExact entry kind
kindsNoEntry kinds
moduleNameNoOnly entries linked to this module
tagsNoEntries having any of these tags
confirmYesMust be true to delete; safety guard against accidental bulk delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
messageYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses destructive nature via 'delete' and safety guard (confirm). However, it does not mention irreversibility, cascading effects, or permission requirements. Still, it provides adequate transparency for an agent to understand the operation's gravity.

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?

Three sentences, front-loaded with core action, then required flag, then usage guidance. Every sentence adds value without redundancy.

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?

Given complexity of a bulk delete with filters and the presence of an output schema, the description is fairly complete. It covers purpose, required parameter, alternatives, and context. Minor lack of behavioral depth (e.g., irreversibility) keeps it from a 5, but it's sufficient.

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. Description adds minimal extra meaning beyond schemaβ€”it mentions the filter criteria but does not elaborate on nuances like the relationship between 'kind' and 'kinds' or the role of 'confirm' beyond 'must be true'. Hence, at baseline.

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?

Description clearly states it bulk deletes entries matching a filter by kind/moduleName/tags. It distinguishes from siblings like delete-entry (singular) and delete-module/delete-slice by specifying bulk operation and filter criteria.

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?

Explicitly states when to use (before full re-import, to clear a module slice) and when not to (prefer replace-entries with deleteOrphans for idempotent sync). Also notes confirm=true requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-entryDelete EntryA

Removes one entry and updates the index. Use when a fact is obsolete. Do not use to delete modulesβ€”use delete-module. Cannot delete slice definitionsβ€”use delete-slice.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
idYesEntry id to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes removal and index update, but lacks details on reversibility, side effects, or permissions. Adequate but not comprehensive.

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?

Three sentences with no wasted words. First sentence states action and effect, second gives use case, third lists exclusions. Perfectly front-loaded and efficient.

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?

Given tool simplicity (delete one entry) and presence of an output schema, the description covers purpose, usage, and exclusions well. Lacks mention of error conditions or idempotency, but overall complete enough.

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% with both parameters documented. The description adds no parameter-specific details beyond the schema, meeting baseline but offering no extra semantic value.

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 'Removes' and the resource 'one entry' with specific scope 'entry' (not module or slice). It distinguishes itself from siblings by explicitly stating it cannot delete modules or slices.

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?

Provides explicit when-to-use ('Use when a fact is obsolete') and when-not-to-use ('Do not use to delete modulesβ€”use delete-module. Cannot delete slice definitionsβ€”use delete-slice') with alternative tools named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-moduleDelete ModuleA

Deletes one module from architecture and its module detail file. Does not delete entriesβ€”remove those with delete-entry if needed. Does not delete custom slices.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
moduleNameYesName of the module to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses core behavior (deletes module and detail file) and explicitly states exclusions (entries, custom slices). Lacks information on error conditions or side effects.

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?

Extremely concise: three sentences that efficiently convey purpose, scope, and exclusions with no unnecessary 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?

Given the presence of a output schema and high schema coverage, the description is fairly complete. It could mention return values or error handling, but overall adequate for a deletion tool.

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% with descriptions. The description adds minimal value beyond the schema, only implying moduleName is required and projectId defaults to normalized workdir.

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?

Clearly states it deletes a module from architecture and its detail file, distinguishing itself from sibling tools like delete-entry and delete-slice by explicitly listing what it does not delete.

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?

Provides guidance on when to use this tool by noting it does not delete entries or custom slices, and suggests using delete-entry if entries need removal. Could be more explicit about prerequisites or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-sliceDelete SliceA

Deletes a custom slice definition only. Built-in slices (api, domain, …) cannot be deleted. Does not delete entriesβ€”use delete-entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
sliceIdYesCustom slice id from list-slices

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Clearly states limitations (custom only, no entry deletion) but does not discuss reversibility or permissions. Adequate for a straightforward delete operation.

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?

Two concise sentences with no unnecessary words. Front-loaded with primary action, then clarifies restrictions and alternatives efficiently.

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?

Output schema exists, so return values are covered elsewhere. Description fully covers key constraints and differentiates from siblings, making it complete for this simple deletion tool.

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% with clear parameter descriptions. Description adds no new parameter information beyond what schema already provides, so baseline 3 is appropriate.

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?

Clearly states it deletes custom slice definitions only, explicitly excluding built-in slices. Distinguishes from sibling tools by specifying it does not delete entries.

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?

Explicitly states when to use (custom slices only) and when not to (built-in slices cannot be deleted). Provides alternative for related action ('use delete-entry').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-entryGet EntryA

Returns one full entry by id. Use after list-entries or search-entries when you need payload and refs. Do not use for a full API listβ€”use get-slice sliceId=api. Do not use for module structureβ€”use get-module-details.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id; use list-projects if unsure
idYesEntry id from list-entries or search-entries

Output Schema

ParametersJSON Schema
NameRequiredDescription
entryNo

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. The description implies read-only by saying 'returns', but does not explicitly disclose safety, authentication, or rate-limit behaviors. It could be more transparent about side effects or permissions.

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?

Three sentences, each purposeful. First sentence states purpose, subsequent sentences provide usage guidance. No redundancy or 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?

Given the tool's simplicity, presence of output schema, and comprehensive usage guidelines, the description covers all necessary context for correct invocation.

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 description coverage is 100%, and the description adds value by providing context for parameters: the id should come from list-entries or search-entries, and projectId can be resolved via list-projects. This goes beyond the schema 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 the tool returns one full entry by id, with specific verb 'returns' and resource 'one full entry'. It distinguishes from sibling tools like list-entries and search-entries by specifying when to use this tool after those calls.

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?

Explicitly states when to use the tool ('after list-entries or search-entries when you need payload and refs') and when not to use it, providing specific alternatives like get-slice and get-module-details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-import-statsGet Import StatsA

Returns entry counts grouped by kind, module, and tag. Use after replace-entries/import to verify catalog size.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id

Output Schema

ParametersJSON Schema
NameRequiredDescription
byKindYes
byModuleYes
byTagYes
totalYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description is the primary source. It correctly indicates a read operation returning grouped counts. It does not mention any side effects or permissions, but for a simple read-only stats tool this 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 extremely concise with two sentencesβ€”no fluff. The first sentence states purpose, the second provides usage context. Every word earns its place.

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?

Given the output schema exists (not shown) and the tool has a single optional parameter, the description adequately covers purpose and usage. It could briefly mention aggregation scope, but overall it's sufficiently complete.

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?

The schema covers 100% of the parameter with a description ('Project id'). The tool description adds no additional meaning beyond what is already in the schema. Baseline 3 is appropriate.

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 returns entry counts grouped by kind, module, and tag, specifying the verb and resource precisely. It also distinguishes itself by noting when to use it, differentiating from sibling tools that handle entries.

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 to use this tool after 'replace-entries/import' to verify catalog size. While it does not list when not to use it or name alternatives, the usage context is clear and helpful for the AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-module-detailsGet Module DetailsA

Returns one module's full detail (files, dependencies, examples). Use when you know the module name from get-project-architecture or list-modules. If module has files but get-slice is empty, add entries with refs.moduleName=this module. For cross-cutting API/domain lists use get-slice. moduleName must match architecture exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
moduleNameYesName of the module to retrieve

Output Schema

ParametersJSON Schema
NameRequiredDescription
moduleNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it returns files, dependencies, examples. Hints at an implied action (adding entries) when get-slice is empty. With no annotations, the description does well but could explicitly state whether the tool is read-only or has side effects.

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?

Three concise sentences: purpose, usage guidelines, and a behavioral note. No superfluous words. Front-loaded with the core function.

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?

Given an output schema exists, the description covers what is returned and when to use. Could mention error conditions or prerequisites (e.g., module must exist), but overall sufficient for an agent to use the tool 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 covers both parameters fully (100% coverage). The description adds value by requiring exact match for moduleName, which is not in the schema. No further detail needed for projectId.

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 returns a module's full detail (files, dependencies, examples). It distinguishes from sibling tools like get-slice (for cross-cutting lists) and get-project-architecture.

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?

Explicitly states when to use: 'Use when you know the module name from get-project-architecture or list-modules.' Also provides a when-not-to: 'For cross-cutting API/domain lists use get-slice.' Includes a specific workflow hint about adding entries if get-slice is empty.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-project-architectureGet Project ArchitectureA

Returns vertical structure: project description, module list, dataFlow. Use for refactoring boundaries between components. For all HTTP endpoints or domain terms use get-sliceβ€”not this tool. For one module's files and examples use get-module-details. projectId from list-projects if unsure.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)

Output Schema

ParametersJSON Schema
NameRequiredDescription
architectureNo

TDQS

A4.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It only describes the return structure and usage context, but does not mention any side effects, required permissions, rate limits, or other behavioral traits. The description is safe but lacks transparency beyond the output format.

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 with three sentences that are front-loaded with the most important information (what the tool returns). Every sentence serves a purpose: return structure, usage context, differentiation from siblings, and parameter hint. No wasted words.

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 is a simple read operation with one optional parameter and an available output schema, the description covers all necessary context: what it returns, when to use it, and how to get the projectId. It also differentiates from many siblings. The information is complete for an agent to select and invoke 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?

The input schema already describes the projectId parameter with default behavior. The description adds value by noting 'projectId from list-projects if unsure', which provides practical guidance beyond the schema. Since schema coverage is 100%, the description enhances understanding without being redundant.

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 'Returns vertical structure: project description, module list, dataFlow' which includes a specific verb and resource. It also distinguishes itself from sibling tools get-slice and get-module-details by contrasting their use cases.

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?

Explicitly says 'Use for refactoring boundaries between components' and provides when-not-to-use with alternatives: 'For all HTTP endpoints or domain terms use get-sliceβ€”not this tool. For one module's files and examples use get-module-details.' Also advises using list-projects to obtain projectId if unsure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-sliceGet SliceA

Returns a horizontal project view: filtered entries transformed for agents. Empty slice = no entries with matching kind. Call list-slices first to pick sliceId. format=compact default; table for api/ui slice. Use offset/limit for pagination. Filter further by moduleName or tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
sliceIdYesBuilt-in id (api, ui, domain, persistence, …) or custom id from list-slices
moduleNameNoFilter by refs.moduleName
tagsNoFilter entries having any of these tags
queryNoFurther filter by substring in title, summary, kind, tags
formatNocompact=minimal list; detail=full entries; table=rows for API-like kinds (method/path columns)
limitNoMax items (default 50, max 200)
offsetNoSkip first N items after sort (default 0)
includeModuleContextNoIf true, attach module name+description from architecture when refs.moduleName is set

Output Schema

ParametersJSON Schema
NameRequiredDescription
sliceNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description should carry burden. Mentions format behavior and filtering, but does not explicitly state it's read-only or disclose any safety/cost implications. Adequate but not thorough.

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?

Two sentences, front-loaded with purpose, no redundancy. Every sentence adds meaning (empty slice, prerequisite call, pagination, filtering).

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?

With output schema present, return values are covered. Description includes key behavioral aspects: empty slice, prerequisite, pagination, filtering, format differences. Missing no critical info given complexity.

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%, but description adds value: clarifies default format, that sliceId can be built-in or custom, and gives examples. Enhances understanding beyond 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?

The description clearly states it 'Returns a horizontal project view: filtered entries transformed for agents.' Differentiates from siblings by referencing slices, and explains empty slice behavior.

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?

Explicitly instructs 'Call list-slices first to pick sliceId.' Provides pagination guidance and filtering options, implying when to use. Lacks explicit alternatives but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import-entriesImport EntriesA

Max 50 entries per bulk callβ€”split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Alias for replace-entries (mode=replace). Pass filter as scope; send up to 50 entries per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
modeYesOnly replace mode is supported (full slice sync)
filterYesScope filter (kind, moduleName, tags)
moduleNameNoDefault refs.moduleName for entries without refs.moduleName
upsertByNoMatch keys (default kind+title)
entriesYesImport batch (max 50 per call)
deleteOrphansNoDelete scope entries missing from this batch (default true; set false until final batch)

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
updatedYes
deletedYes
entryIdsYes
messageYes

TDQS

A4.5/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 of behavioral disclosure. It explains the batch limit, the replace-only mode, and the deleteOrphans parameter behavior (deletes scope entries missing from batch when true). It does not explicitly mention that the tool performs a destructive update (replacing entries), but the combination of 'mode=replace' and 'deleteOrphans' implies mutation, which is sufficiently transparent.

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 concise (two sentences) but the first sentence is dense, packing multiple pieces of advice. It efficiently conveys essential information without unnecessary words, though a slight restructuring could improve readability.

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?

Given the tool's complexity (7 parameters, nested objects, output schema exists), the description covers the key workflow and constraints (batch size, mode, deleteOrphans strategy, alias). It omits immediate return value details, but the output schema covers that. No major gaps for an AI agent to use the tool 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 description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining how to use parameters together (e.g., splitting batches, deleteOrphans=false until final batch, scope filter as filter object), providing context for effective invocation.

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 imports entries with a max of 50 per call, explicitly identifies it as an alias for replace-entries (mode=replace), and distinguishes it from siblings like delete-entries and set-entries by outlining different workflows for full re-import.

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 provides explicit guidance on when to use this tool (bulk import of up to 50 entries per call) and when to use alternatives (e.g., delete-entries + set-entries for full re-import, or replace-entries with deleteOrphans=false until final batch). It clearly specifies splitting large catalogs into batches and the deleteOrphans strategy.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-entriesList EntriesA

Returns the entry catalog (id, kind, title, tags, moduleName)β€”no payload. Supports kind/moduleName/tags filters and pagination (limit max 200). Unlinked entries lack moduleName; run validate after edits. For typed horizontal views use get-slice.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
kindNoFilter by exact kind, e.g. http-endpoint
moduleNameNoFilter by refs.moduleName
tagsNoFilter entries having any of these tags
queryNoCase-insensitive substring in title, kind, or tags
limitNoMax items (default 50, max 200)
offsetNoSkip first N matches (default 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
entriesYes
totalYes
returnedYes
offsetYes
hasMoreYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool returns metadata only ('no payload'), supports pagination with a max limit of 200, and notes that unlinked entries lack moduleName. Does not explicitly state it is read-only, but 'returns' implies a safe operation.

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?

Three compact sentences. First sentence states the main purpose and return fields. Second adds filter and pagination details. Third provides additional context about unlinked entries and a sibling alternative. No unnecessary 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?

Given the tool has 7 parameters and no annotations, the description covers the return shape, filters, pagination, and a sibling note. It does not explicitly mention the query, offset, or projectId parameters, but these are documented in the schema. For a listing tool with many siblings, it provides sufficient context to guide usage.

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 good descriptions for each parameter. The description adds value by summarizing supported filters (kind, moduleName, tags) and pagination limit (max 200), and provides context about unlinked entries and moduleName. This supplements the schema without duplicating.

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 the entry catalog with specific fields (id, kind, title, tags, moduleName) and explicitly mentions 'no payload'. It distinguishes from the sibling 'get-slice' by directing to that tool for typed horizontal views.

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?

Provides context for when to use validate ('run validate after edits') and contrasts with get-slice for typed horizontal views. Does not mention other siblings like search-entries or get-entry, but the guidance given is clear and useful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-modulesList All ModulesA

Lists module summaries from architecture (name, description)β€”vertical structure only. For horizontal facts (endpoints, tables, terms) use list-slices then get-slice. After edits run validate. Use module names in set-entry refs.moduleName.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)

Output Schema

ParametersJSON Schema
NameRequiredDescription
modulesYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It implies a read-only operation by stating 'Lists module summaries' and scopes to 'vertical structure only.' While it doesn't explicitly mention permissions or limits, the behavioral intent is clear and consistent, and the output schema covers return structure. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, directly followed by usage guidance and a hint about usage. No wasted words; every sentence contributes meaning. Excellent conciseness.

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 simple nature of the tool (one optional param, output schema present), the description is fully complete: it covers purpose, distinguishes from siblings, gives usage context, and even provides post-edit advice. Nothing essential 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% for the single parameter projectId, with good description in the schema. The tool description adds no additional meaning about this parameter beyond what the schema already provides. Baseline 3 is appropriate.

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 what the tool does: 'Lists module summaries from architecture (name, description)β€”vertical structure only.' It specifies the resource (modules) and the scope (vertical structure), and contrasts with horizontal facts tools like list-slices and get-slice, making the purpose unambiguous.

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?

Explicitly tells when to use this tool (for vertical structure) and when not to (for horizontal facts, use list-slices then get-slice). Also provides post-editing advice ('After edits run validate') and usage context for module names in set-entry refs, offering clear alternatives and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-projectsList ProjectsA

Lists all projects in ~/.mcp-architector with projectId, description, moduleCount, updatedAt, isCurrent. Call first when tools return empty/wrong projectβ€”the workspace path may normalize to a different id (e.g. _qs_my-app). Then pass projectId to other tools. Optional query filters by id or description.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFilter by substring in projectId or description

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It implies read-only behavior (listing) and mentions optional filtering. Does not explicitly state nondestructive nature, but the action is inherently safe. Lacks detail on rate limits or auth, but these are likely not needed for a local tool.

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?

Three sentences, each adding distinct value: purpose, usage guidance, optional filter. Front-loaded with primary action. No wasted words.

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 simple list tool with one optional parameter and an output schema, the description covers location, output fields, usage context, and filter behavior. No gaps identified given the tool's complexity.

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 covers 100% of parameters with descriptions. The description adds value by clarifying that the 'query' parameter performs a substring filter on projectId or description, which is more specific than the schema's 'filter by substring'.

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 ('Lists'), identifies the resource ('projects in ~/.mcp-architector'), and lists output fields. It clearly distinguishes from sibling tools which operate on entries, modules, or slices.

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?

Explicitly states when to call this tool ('Call first when tools return empty/wrong project') and why (workspace path normalization). Provides a concrete example. Does not explicitly mention when not to use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-slicesList SlicesA

Lists built-in and custom slice views (filters over entriesβ€”not separate stored data). Empty slice = no entries with matching kind, not a missing slice definition. Use before get-slice to pick sliceId (api, domain, persistence, …).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id

Output Schema

ParametersJSON Schema
NameRequiredDescription
slicesYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that slices are not stored data, but filters over entries, and explains the behavioral implication of an empty slice. This adds valuable context beyond the schema.

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 with three sentences, each serving a distinct purpose: stating the function, clarifying behavioral nuance, and providing usage advice. No extraneous 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 covers the core functionality, behavioral details, and usage context. However, it does not explain what happens when projectId is omitted (since it's not required) or specify the output format beyond having an output schema. Nonetheless, for a list tool with an output schema, this is adequate.

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% with a single parameter 'projectId' described simply as 'Project id'. The tool description does not add any additional meaning or context to this parameter, such as its effect on output or whether it's optional. It meets the baseline but provides no extra value.

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 that it lists built-in and custom slice views, clarifying that slices are filters over entries, not separate data. It also explains the meaning of empty slices, distinguishing from missing slice definitions. This effectively differentiates it from related tools like get-slice.

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 instructs to use this tool before get-slice to pick a sliceId, providing clear context. While it does not delineate when not to use it or list alternatives, the usage direction is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rebuild-data-flowRebuild Data FlowB

Rebuilds dataFlow for all modules from module file dependencies or existing dependsOn edges. Recomputes providesTo and optionally syncs module files. Use instead of editing architecture.json directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
sourceNoSource for dependsOn edges (default module-dependencies)
syncInverseNoRecompute providesTo (default true)
pruneOrphansNoRemove invalid module references (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
edgesAddedYes
edgesRemovedYes
modulesUpdatedYes
messageYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits. It mentions rebuilding from two sources and optionally syncing module files, but omits critical information: whether the operation is destructive (overwrites existing dataFlow), reversible, or idempotent. It also fails to mention authorization needs or error states. The 'pruneOrphans' parameter hints at deletion, but the description does not address this directly. This lack of transparency could lead to risky invocations.

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 exceptionally conciseβ€”two sentences totaling about 20 words. The first sentence states the core action and sources, and the second provides a usage recommendation. Every word is purposeful, with no redundancy or filler. The structure is front-loaded with the essential action, making it easy for an agent to quickly grasp the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, multiple source options, potential for side effects like pruning orphans), the description is incomplete. It does not address prerequisites (e.g., project must exist), safety implications (e.g., is it safe to run multiple times?), or fallback behavior. The presence of an output schema reduces the need to explain return values, but the lack of behavioral and contextual details leaves significant gaps for an AI agent to safely and correctly use this tool.

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?

Since the input schema has 100% coverage with descriptions for all 4 parameters, the description adds minimal extra value beyond repeating the schema's purpose. The description's mention of 'optionally syncs module files' maps to the 'syncInverse' parameter but is slightly vague. Overall, the description does not significantly enhance understanding of parameters beyond what the schema already provides, meeting the baseline expectation for high schema coverage.

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 clearly states the verb 'rebuilds' and the resource 'dataFlow for all modules', specifying two source types (module file dependencies or dependsOn edges) and the recomputation of providesTo. It also advises using this tool instead of editing architecture.json directly. However, it does not explicitly differentiate from sibling tools like 'set-module-data-flow' or 'refactor-architecture', leaving some ambiguity about when to prefer this over alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides one usage guideline: 'Use instead of editing architecture.json directly', which tells when not to use manual editing. It does not specify when to use this tool versus other sibling tools (e.g., for individual module updates use set-module-data-flow), nor does it mention prerequisites or conditions (e.g., project exists). The guidance is implied but not explicit enough for confident selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rebuild-entry-indexRebuild Entry IndexA

Rebuilds entries/index.json from entry files on disk. Use when list-entries or get-slice miss entries that exist as files (index drift). Does not modify entry bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemCountYes
messageYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully bears the burden. It discloses that the tool rebuilds an index from disk and does not modify entry bodies (non-destructive). It mentions the default for projectId ('normalized workdir'). However, it lacks details on possible side effects, error handling, or permission requirements.

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 long, front-loads the core purpose, and uses no unnecessary words. Every sentence serves a clear function: stating the action and providing usage guidance.

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?

Given the tool's simplicity (one optional parameter) and the presence of an output schema (per context signals), the description covers the essential context: what it does, when to use it, and a parameter default. It could be slightly more complete by mentioning error conditions or the effect of an invalid projectId, but it is adequate for a focused rebuild 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% with one parameter. The description adds value beyond the schema by stating 'defaults to normalized workdir,' which is not in the schema description. This gives the agent useful context not provided by the schema alone.

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 explicitly states 'Rebuilds entries/index.json from entry files on disk' with a specific verb and resource. It distinguishes from siblings by specifying the use case for index drift, which is unique among sibling tools like list-entries and get-slice.

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 clearly states when to use the tool: 'Use when list-entries or get-slice miss entries that exist as files (index drift).' It also provides an exclusion: 'Does not modify entry bodies,' helping the agent understand when not to use it or what alternatives might be needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refactor-architectureRefactor ArchitectureA

Preview or apply in-repo refactor sync to architector data (no workspace access). Default dryRun=true. Workflow: (1) scan with file/text to list hits, (2) build 1-3 mutation ops, (3) dryRun preview, (4) apply with dryRun=false and confirm=true. Mutations: move-file, replace-path-prefix, rename-text, patch-entry, merge-files, remove-file-ref. Orphan entries with empty refs.files and no entryIds are deleted. Does not change module names or dataFlow.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
operationsYesRefactor operations (max 10 per call)
scopeNoOptional filter: moduleName, kinds, tags
dryRunNoPreview only (default true). Set false with confirm=true to apply
confirmNoRequired true when dryRun=false
limitNoMax changes/hits per page (default 15, max 50)
offsetNoPagination offset (default 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dryRunYes
summaryYes
statsYes
hitsNo
changesYes
warningsYes
offsetYes
hasMoreYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and does so excellently. It discloses that orphan entries are deleted, module names and dataFlow are untouched, default dryRun behavior, and the types of mutations. No contradictions with metadata.

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 well-structured with a clear first sentence stating purpose, then workflow steps, then specifics. It is relatively concise for the complexity, though could be slightly tighter. Front-loaded with key information.

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?

Given the tool's complexity (multi-step refactor, many operation types), the description covers most aspects. It doesn't detail return values, but an output schema exists. The preview step is mentioned but not fully described in terms of response format. Still, it is largely complete.

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 baseline is 3. The description adds value by explaining the workflow ordering, relationship between dryRun and confirm, and operation constraints (max 10). This goes beyond the schema's descriptive fields.

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's purpose: 'Preview or apply in-repo refactor sync to architector data'. It lists specific mutation types (move-file, replace-path-prefix, etc.) and distinguishes from sibling CRUD tools by focusing on refactoring operations.

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 a clear 4-step workflow (scan, build ops, dryRun, apply) and explains the default dryRun=true and confirm requirement. While it doesn't explicitly contrast with siblings, the specialized purpose implicitly guides usage. The note 'no workspace access' provides context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace-entriesReplace EntriesA

Max 50 entries per bulk callβ€”split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Idempotent sync for up to 50 entries in scope; optionally delete orphans not in this batch. Match by upsertBy (default kind+title). For large catalogs use deleteOrphans=false on intermediate batches, true only on the last batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
scopeYesWhich existing entries participate in orphan deletion
moduleNameNoDefault refs.moduleName for entries without refs.moduleName
upsertByNoFields used to match existing entries (default kind+title)
entriesYesBatch slice for this scope (max 50; repeat calls for larger catalogs)
deleteOrphansNoDelete scope entries missing from this batch (default true; set false until final batch)

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
updatedYes
deletedYes
entryIdsYes
messageYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses max 50 entries, idempotency, matching by upsertBy, and deleteOrphans behavior. While annotations are absent, the description adds context beyond schema. Missing details on error handling or permissions but adequate given output schema existence.

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?

Three sentences with no redundancy. Key constraint (max 50) is front-loaded, followed by usage patterns and matching logic. Every sentence provides essential guidance.

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?

Covers main use case and batching strategy well. With 6 parameters, nested objects, and output schema, the description is comprehensive. Minor improvement: could explicitly state 'replace' action, but title suffices.

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?

With 100% schema coverage, baseline is 3. Description adds value by explaining batching strategy, deleteOrphans usage, and default upsertBy, enhancing semantic understanding beyond property 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?

Explicitly states it performs idempotent sync of entries with optional orphan deletion. Distinguishes from siblings like delete-entries and set-entries by batching limit and deleteOrphans parameter.

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?

Provides explicit guidance on when to use replace-entries vs alternatives (delete-entries + set-entries) and how to handle large catalogs with batching and deleteOrphans false/true pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-entriesSearch EntriesA

Compact navigation search over entries by title, summary, kind, and tags. Returns snippet, matchedIn, slices, and moduleName per hitβ€”use get-entry for full payload. Prefer get-slice when you know the category (api, domain). Filters (moduleName, kind, tags) narrow agent context. Default limit 10.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
queryYesSearch text
moduleNameNoExact filter on refs.moduleName
kindNoExact filter on entry kind
tagsNoFilter entries having any of these tags
limitNoMax results per page (default 10, max 50)
offsetNoSkip first N matches (default 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
summaryYes
totalYes
returnedYes
offsetYes
hasMoreYes
resultsYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses return fields (snippet, matchedIn, slices, moduleName) and default limit. Could add more details like case sensitivity, but sufficient for a search tool.

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?

Two sentences, front-loaded with key purpose, no wasted words. Efficiently conveys essential information.

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?

With output schema present, description only needs to indicate return fields, which it does. Covers search behavior and filter usage adequately; missing pagination details but schema handles that.

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 covers all 7 parameters (100% coverage). Description adds value by explaining search scope (fields: title, summary, kind, tags) and that filters narrow context, beyond the schema's 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 identifies the tool as a compact navigation search over entries, specifying searchable fields (title, summary, kind, tags) and distinguishing from siblings like get-entry and get-slice.

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 guidance is given: use get-entry for full payload, prefer get-slice when category known, and filters narrow agent context. Default limit is also stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-entriesSet EntriesA

Entries need vertical structure: create modules via set-project-architecture / set-module-details before or when adding entries. Set refs.moduleName to an existing module name from list-modules. Run validate after edits to find entries-without-modules, entry-unlinked, or empty slices. Max 50 entries per bulk callβ€”split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Set refs.moduleName per entry, or pass top-level moduleName as default. Prefer set-entries in 50-entry chunks over one huge replace-entries payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
moduleNameNoDefault refs.moduleName for entries that omit refs.moduleName
entriesYesFacts to upsert (max 50 per call; use multiple calls for larger catalogs)

Output Schema

ParametersJSON Schema
NameRequiredDescription
entriesCreatedYes
entriesUpdatedYes
entryIdsYes
messageYes
warningNo
reminderNo
suggestedModuleNamesNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully bears the burden of disclosing behavior. It covers the 50-entry limit, the need for prior module creation, the default moduleName propagation, and the recommended validation step. It also outlines the re-import strategy, which clarifies the tool's role in a multi-step workflow.

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 dense but not overly long. Every sentence provides unique guidance or constraint. It is front-loaded with the most critical requirement (modules must exist first). Minor redundancy: 'set-entries in 50-entry chunks' is repeated, but acceptable for emphasis.

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 3 parameters, no enums, and an output schema present, the description covers all necessary context. It explains prerequisites, constraints, post-actions (validate), and relationship to sibling tools. No gaps identified.

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%, but the description adds significant value: explains that top-level moduleName serves as default for refs.moduleName, that entries must have kind/title/summary required fields, and that max 50 entries per call. It also clarifies the relationship between moduleName and refs.moduleName, which is not explicit 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?

The description clearly states the tool's purpose: creating/upserting entries with vertical structure by associating them with modules via refs.moduleName. It distinguishes itself from siblings like replace-entries by explicitly mentioning when to prefer set-entries over replace-entries, and from set-entry by implying batch operation.

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?

Provides explicit when-to-use instructions: create modules first, set refs.moduleName to existing modules, run validate after edits. Gives clear alternative strategies: for full re-import, use delete-entries then set-entries in chunks; or replace-entries with deleteOrphans=false until final batch. Also advises splitting large catalogs into 50-entry chunks to avoid oversized payloads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-entrySet EntryA

Entries need vertical structure: create modules via set-project-architecture / set-module-details before or when adding entries. Set refs.moduleName to an existing module name from list-modules. Run validate after edits to find entries-without-modules, entry-unlinked, or empty slices. Creates or updates one canonical project fact (entry). Use when you discovered a concrete fact while working. Do not use for module structureβ€”use set-module-details. Do not copy module.description into summary; link via refs.moduleName only. Upsert: pass id to update, or omit id to match by kind+title or create new. Example: kind=http-endpoint, title='POST /orders', summary='Creates order', refs.moduleName='orders', refs.files=['src/OrderController.java'].

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id from list-projects if workspace path may differ; defaults to MCP_PROJECT_ID
idNoEntry uuid; omit to upsert by kind+title or create new
kindYesFree-form type: http-endpoint, glossary, entity, flow, script, godot-scene, etc. Builtin slice list-slices shows recommended kinds per sliceId
titleYesShort unique label for search, e.g. 'POST /orders' or 'Order'
summaryYes1-2 sentences; not a module essayβ€”only this fact
payloadNoKind-specific extra fields only, e.g. method/path for APIs, steps for flow
refsNo
tagsNoOptional labels for get-slice query filtering

Output Schema

ParametersJSON Schema
NameRequiredDescription
entryIdYes
messageYes
reminderNo
warningNo
suggestedModuleNamesNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes upsert behavior, linking constraints (refs.moduleName must exist), and warns against misusing fields (e.g., summary vs description). Could add more on permissions or side effects.

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?

Long but every sentence adds value; front-loads the critical prerequisite about module creation. Could be slightly more concise, but no wasted content.

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?

Covers prerequisites, post-actions, upsert behavior, parameter constraints, and common mistakes. Output schema exists, so return values are already described. Completes the picture for a complex tool with 8 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 high (88%), so baseline 3. Description adds semantic guidance beyond schema, e.g., explaining that refs.moduleName links by name, not summary, and giving an example of kind, title, summary usage.

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?

Explicitly states 'Creates or updates one canonical project fact (entry)' and distinguishes from sibling tools like set-module-details. Provides concrete examples (e.g., http-endpoint) and clear resource scope.

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?

Clearly specifies when to use ('discovered a concrete fact'), when not to ('do not use for module structure'), and alternatives ('use set-module-details'). Includes prerequisites and post-actions like 'Run validate after edits'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-module-data-flowSet Module Data FlowA

Patches dataFlow for one module (dependsOn is canonical; providesTo is recomputed). Syncs module file dependencies. Prefer over set-project-architecture for single-module graph edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
moduleNameYesModule name
dependsOnNoModules this module depends on
dataTransformationNoHow data is transformed between modules
syncInverseNoRecompute providesTo from dependsOn (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
moduleNameYes
messageYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that dependsOn is canonical and providesTo is recomputed, and that it syncs module file dependencies. However, it does not mention permissions, destructiveness, or other side effects, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words: the first states the core action and key behavioral notes, the second adds side effects and usage guidance. Front-loaded and efficient.

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?

Given the tool's complexity (5 parameters, 1 required, no enums, has output schema), the description covers the main behavioral aspects. It could mention the default for syncInverse (true), but the schema already does. Adequate for an AI agent.

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 schema has 100% coverage, but the description adds meaningful context: it explains that dependsOn is the canonical input and providesTo is recomputed, which clarifies the syncInverse parameter's effect. This goes beyond the schema's 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 patches dataFlow for one module, explains that dependsOn is canonical and providesTo is recomputed, and distinguishes it from set-project-architecture for single-module graph edits.

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 using this tool over set-project-architecture for single-module edits, providing clear context for when to use it. It does not include explicit 'when not to use' scenarios, but the alternative is clearly named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-module-detailsSet Module DetailsA

Creates or updates one vertical module (files, dependencies, dataFlow sync). IMPORTANT: Slices (api, domain, persistence) are built from entries, not from module text. When adding or updating a module, also add entries this module owns: pass facts[] (http-endpoint, entity, glossary, …) in this call (max 50 per call), or call set-entry / set-entries in 50-entry batches with refs.moduleName=. Max 50 entries per bulk callβ€”split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Without entries, get-slice will be empty for this module. After edits call validate to verify links. Does not replace other modules. Prefer over set-project-architecture for single-module edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
nameYesModule name
descriptionYesDetailed description of the module
inputsYesWhat the module accepts as input
outputsYesWhat the module produces as output
dependenciesNoList of module dependencies
filesNoFiles belonging to this module; add matching entry kinds per Controller/Repository
factsNoHorizontal facts for this module (APIs, entities, terms). Max 50 per call; use set-entries for more. Each becomes an entry with refs.moduleName set automatically.
usageExamplesNoUsage examples for this module
notesNoAdditional notes or comments

Output Schema

ParametersJSON Schema
NameRequiredDescription
moduleIdYes
messageYes
entriesCreatedNo
entriesUpdatedNo
entryIdsNo
reminderNo
suggestedKindsNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses the max 50 facts per call, automatic setting of refs.moduleName, and the emptiness of get-slice without entries. Could be more explicit about overwrite vs merge behavior on updates.

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?

Single paragraph with clear front-loading of core purpose, followed by important constraints and alternatives. Uses caps for emphasis. Slightly dense but efficient.

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?

Given 10 parameters, high schema coverage, and presence of output schema, the description covers the essential use cases, batching, and relationships. Lacks details on projectId defaulting and exact update semantics, but overall sufficient.

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 meaning beyond schema: explains the relationship between facts and entries, the 50-item limit, and that refs.moduleName is set automatically. Provides usage context for parameters.

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 starts with a clear verb and resource: 'Creates or updates one vertical module.' It distinguishes from siblings by noting 'Prefer over set-project-architecture for single-module edits.' Also explains what slices are built from, showing specific scope.

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?

Explicitly states when to use this tool vs alternatives like set-entries. Provides batch splitting guidance, re-import strategy using delete-entries and replace-entries, and warns about the consequences of missing entries. This is comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-project-architectureSet Project ArchitectureA

Creates or updates vertical module structure (components and dataFlow)β€”not horizontal facts. By default merges modules and dataFlow by name; omit dataFlow to keep existing flow. Use replaceModules or replaceDataFlow for full replace. For one module use set-module-details or set-module-data-flow. For bulk flow rebuild use rebuild-data-flow. Each new module still needs entriesβ€”use set-module-details with facts[] or set-entries after bulk structure. For APIs, domain terms, scripts use set-entry + get-sliceβ€”not this tool. If projectId is wrong, call list-projects first. Do not duplicate entry text in module descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
descriptionYesOverall project description
modulesYesList of modules in the project
dataFlowNoData flow between modules; omit to preserve existing
replaceModulesNoReplace entire modules list (default false = merge by name)
replaceDataFlowNoReplace entire dataFlow (default false = merge by module name)

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectIdYes
messageYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains merge vs replace behavior, that dataFlow can be omitted to preserve existing, and warns that new modules still need entries. Could be more explicit about destructiveness and permissions, but covers key behavioral traits.

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?

Description is appropriately sized for the complex tool, front-loading purpose and usage, then covering parameter behavior. Some redundancy but well-structured overall.

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?

Given the tool's complexity (6 params, nested schema, output schema exists), the description covers main use cases, parameter interactions, and provides context about projectId validation and subsequent steps. Minor gaps in return value description but compensated by output schema.

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. Description adds meaning by clarifying the merge/replace semantics for modules and dataFlow parameters, and the purpose of each parameter beyond schema 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 the tool creates or updates vertical module structure (components and dataFlow), distinguishing it from horizontal facts. It uses specific verb+resource and differentiates from sibling tools like set-module-details and set-entry.

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 guidance on when to use this tool vs alternatives: 'For one module use set-module-details or set-module-data-flow. For bulk flow rebuild use rebuild-data-flow.' Also advises against using for APIs/scripts and provides fallback for wrong projectId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-sliceSet SliceA

Saves a custom slice definition (filter onlyβ€”no items). Items always live in entries. Use when built-in slices (api, domain, …) are not enough, e.g. filter kinds godot-scene + tag gameplay. Do not store duplicate entry text here. get-slice reads entries through this filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
idYesCustom slice id (avoid colliding with built-in: api, domain, persistence, …)
titleYesHuman-readable slice name
descriptionNoWhen an agent should use this slice
kindsNoInclude entries with any of these kind values
tagsNoInclude entries having any of these tags

Output Schema

ParametersJSON Schema
NameRequiredDescription
sliceIdYes
messageYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry the burden. It clearly states the slice is filter-only and items live in entries. It warns against storing duplicate entry text. However, it does not disclose if the tool overwrites existing slices or require permissions.

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?

Four sentences, each adding value. Front-loaded with core purpose. No fluff or redundant information.

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?

Given 27 sibling tools, description distinguishes from get-slice and mentions built-in slices. It covers main use case and constraints. Lacks details on overwrite behavior or relationship with other slice tools.

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 baseline is 3. Description adds value by explaining the slice is a filter and giving usage context for kinds and tags. It does not detail each parameter but reinforces overall semantics.

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 saves a custom slice definition (filter only, not items). It distinguishes from built-in slices and provides an example. The verb 'saves' and resource 'custom slice definition' 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 says 'Use when built-in slices are not enough' and gives an example, implying when to use. It also warns against storing duplicate entry text. However, it does not explicitly state when not to use or list all alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validateValidate ProjectA

Run after set-project-architecture, set-module-details, set-entry, or set-entries. Returns a compact report (summary, stats, issues by kind)β€”no need to load the full project in the agent. Checks only known rules: dataFlow consistency, module↔entry links, module detail files, entry index drift, empty api/domain/persistence slices, entry slice coverage, optional module-too-few-entries when moduleEntryMin is set. Fix issues[] then call validate again.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
checkInverseNoCheck providesTo vs dependsOn inverse (default true)
checkModuleDepsNoCheck module.dependencies vs dataFlow.dependsOn (default true)
checkEntryCoverageNoCheck modules vs entries linkage (default true)
checkStorageNoCheck module files on disk and entry index drift (default true)
checkEmptySlicesNoWarn when api/domain/persistence slices have zero entries but modules exist (default true)
checkSliceCoverageNoCheck entries match at least one built-in or custom slice (default true)
checkModuleEntryCountsNoCheck module-too-few-entries when moduleEntryMin is set (default true)
moduleEntryMinNoMin entries per module when count > 0; omit to disable module-too-few-entries

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectIdYes
validYes
issueCountYes
summaryYes
statsYes
issuesByKindYes
issuesYes
coverageNo
checksRunYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses that it returns a compact report (summary, stats, issues by kind), lists all checks, and notes that it avoids loading the full project. Does not explicitly state read-only nature, but implied.

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 efficient, front-loading purpose and usage. It is slightly lengthy due to listing checks, but each sentence adds value. Could be more concise, but overall well-structured.

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?

Given the 9 parameters, output schema exists, and no annotations, the description adequately covers usage context, behavioral traits, and parameter roles. It provides sufficient guidance for correct invocation.

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?

All 9 parameters have full schema descriptions (100% coverage). The tool description adds context by listing the checks corresponding to boolean parameters and explaining moduleEntryMin, but does not significantly enhance the parameter semantics beyond 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?

The description clearly states the tool validates a project after specific setup steps and returns a compact report. It lists the checks performed, differentiating it from sibling tools like validate-architecture and validate-import.

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?

Explicitly mentions when to run the tool (after set-project-architecture, etc.) and suggests iterative use ('Fix issues[] then call validate again'). Does not explicitly state when not to use it, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate-architectureValidate ArchitectureA

Alias for validate with the same checks. Prefer validate after edits. Legacy name kept for compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject ID (defaults to normalized workdir)
checkInverseNoCheck providesTo vs dependsOn inverse (default true)
checkModuleDepsNoCheck module.dependencies vs dataFlow.dependsOn (default true)
checkEntryCoverageNoCheck modules vs entries linkage (default true)
checkStorageNoCheck module files on disk and entry index drift (default true)
checkEmptySlicesNoWarn when api/domain/persistence slices have zero entries but modules exist (default true)
checkSliceCoverageNoCheck entries match at least one built-in or custom slice (default true)
checkModuleEntryCountsNoCheck module-too-few-entries when moduleEntryMin is set (default true)
moduleEntryMinNoMin entries per module when count > 0; omit to disable module-too-few-entries

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectIdYes
validYes
issueCountYes
summaryYes
statsYes
issuesByKindYes
issuesYes
coverageNo
checksRunYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry the burden. It only says 'same checks' but does not describe whether the tool is read-only, destructive, or any side effects. The name suggests validation, but the description lacks explicit behavioral context.

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?

Two concise sentences with front-loaded information: alias identification and usage guidance. No wasted words, but could include a brief summary of checks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description fails to explain what the tool does beyond being an alias. With 9 parameters, the lack of context on the actual validation process makes it incomplete for an agent to understand its behavior.

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% with all parameters described. The description adds no meaning beyond the schema, so baseline 3 is appropriate.

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 clearly states it is an alias for validate with the same checks, distinguishing it from siblings by advising to prefer the primary validate tool. The purpose as a legacy alias for architecture validation is clear.

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?

Explicitly says 'Prefer validate after edits. Legacy name kept for compatibility.' This directly tells when to use this tool (for compatibility) and when not (prefer validate), with the alternative named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate-importValidate ImportA

Dry-run validation for a proposed import batch (max 50 entries). Max 50 entries per bulk callβ€”split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Checks duplicate upsert keys and unknown moduleName refs without writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id
entriesYesProposed entries to validate (max 50)
upsertByNoMatch keys (default kind+title)
checkDuplicatesNoDetect duplicate keys in batch (default true)
checkModuleExistsNoWarn on unknown refs.moduleName (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
warningCountYes
warningsYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description covers behavioral traits: it is a dry-run ('without writing'), checks duplicate upsert keys and unknown moduleName refs, and enforces a max 50 entries. This fully informs the agent of what the tool does and does not do.

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, front-loaded with the core purpose, and every sentence provides essential guidance. No unnecessary words or repetition.

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 output schema exists (context signal), the description does not need to explain return values. It adequately covers purpose, usage, parameter behavior, and constraints, making it complete for the agent to invoke 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 baseline is 3. The description adds context by linking parameters to behavior (e.g., 'Checks duplicate upsert keys' relates to checkDuplicates, 'unknown moduleName refs' to checkModuleExists) and by noting the max 50 entries, which corresponds to the entries array maxItems.

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 performs 'dry-run validation for a proposed import batch (max 50 entries)', specifying the verb (validate), resource (import batch), and scope (dry-run, max 50). It distinguishes from sibling tools like set-entries and replace-entries by emphasizing no writing.

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?

Provides explicit when-to-use (before actual import) and alternatives: 'For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true).' Also advises splitting large catalogs into batches of ~50 to avoid oversized payloads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation4/5

Tools are well-described with distinct purposes, but the large number of entry manipulation tools (set-entry, set-entries, replace-entries, import-entries, delete-entry, delete-entries) could lead to confusion. However, descriptions clearly specify when to use each, making disambiguation possible with careful reading.

Naming Consistency5/5

All tools use a consistent verb_noun pattern in snake_case (e.g., list-entries, set-module-details, delete-slice). Related operations share prefixes (set-*, delete-*, list-*, get-*, validate-*), making the API predictable and easy to navigate.

Tool Count4/5

With 28 tools, the count is high but justified by the complexity of the domain (managing entries, modules, slices, projects, imports, validation, and bulk operations). Some redundancy (e.g., import-entries as alias for replace-entries) could be trimmed, but overall the tool set is well-scoped for a comprehensive architecture management server.

Completeness5/5

The tool set covers all essential operations: CRUD for entries, modules, slices, and projects; listing, searching, validation, bulk imports, data flow management, and refactoring. No obvious gaps are apparent; even edge cases like index drift and slice definition are addressed.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server providing persistent memory for AI coding assistants by storing and searching architectural decisions, patterns, and solutions. It also includes tools for git automation and mapping codebase expertise based on project history.
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A local-first MCP server that provides AI agents with safe codebase access through file discovery, hybrid lexical-semantic search, and project introspection. It features durable local memory and semantic indexing while keeping all data and processing entirely on your local machine.
    74
    29
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides persistent memory and contextual awareness to language models, enabling project onboarding, recall of architectural rules, and code consistency across sessions.
    32
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A local-first MCP server providing secure workspace file operations, offline full-text search, and web search/fetch capabilities without requiring API keys.
    10

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/theSharque/mcp-architect'

If you have feedback or need assistance with the MCP directory API, please join our Discord server