Skip to main content
Glama

Archforge MCP

Describe an application in your IDE's AI chat. Archforge interviews you, calculates capacity, and writes a complete High-Level Design (HLD) and Low-Level Design (LLD) with diagrams — a blueprint you can build the app from.

Archforge is an MCP server: a small local Node.js program that AI-capable IDEs (VS Code, Claude Code, Cursor, Windsurf, JetBrains, Claude Desktop, …) start in the background and whose tools the AI chat can call. It is not a web app, not a hosted service and not an IDE-specific extension.

Archforge architecture

(Editable vector version: docs/images/archforge-architecture.svg)


Contents

  1. What you get

  2. Requirements

  3. Quick start

  4. Using it day to day

  5. How it works

  6. Who writes the documents? (LLM options)

  7. How the questions are shown

  8. Tools reference

  9. Output files

  10. Configuration

  11. Troubleshooting

  12. Security and privacy

  13. Limitations

  14. Customizing

  15. Development

  16. FAQ

More detail lives in docs/: ARCHITECTURE · CONFIGURATION · TROUBLESHOOTING · QUESTIONS · SECTIONS


Related MCP server: need-overthink

What you get

  • An adaptive requirements interview — 33 questions in 4 rounds (product → scale → platform → security). 25 are always asked; 8 are follow-ups that appear only when your answers call for them (payments → card-data handling, B2B → tenancy model, real-time → connection counts, uploads → storage size, high availability → disaster-recovery level, data residency → regions, …).

  • Capacity numbers calculated by code, not by an LLM — design RPS, read/write RPS, storage, instance counts, allowed downtime, plus consistency warnings such as "99.99% availability on a $500 budget".

  • 23 written sections (12 HLD + 11 LLD): architecture style, components, data architecture, key flows, cloud mapping, scaling & DR, security, operations, project structure, ER diagram, API design, class design, sequence diagrams, state machines, async/events, caching & consistency, validation & RBAC, testing & deployment, and an ordered build plan.

  • Diagrams in Mermaid (flowcharts, sequence, ER, class, state), checked automatically before they are saved.

  • Honest assumptions — anything you leave on a default is listed as an assumption in the exported README.

  • Resumable, revisable — projects are saved after every step; change an answer and the affected sections are flagged stale; revise any single section with feedback.

It designs; it does not write application code.

Requirements

  • Node.js 18 or newer (developed and tested on Node 22). Check with node -v.

  • An MCP-capable IDE or agent (see the table below).

  • No API key is required. By default the AI chat in your IDE writes the documents. You can optionally use the Claude API, a local Ollama model, or any OpenAI-compatible service instead.


Quick start

1. Install and build

Unzip the project, open a terminal inside the folder that contains package.json, then:

Windows (PowerShell) — run the lines one at a time; Windows PowerShell 5 does not accept &&:

node -v
npm install
npm run build
node dist\index.js print-config

macOS / Linux

node -v
npm install
npm run build
node dist/index.js print-config

(scripts/setup.ps1 and scripts/setup.sh run the same steps.)

print-config prints ready-to-paste configuration snippets containing the real absolute path to dist/index.js on your machine.

Unzipped into a nested folder? If npm install says it cannot find package.json, you are one level too high — cd into the inner archforge-mcp folder.

2. Connect it to your IDE

Add a server entry named archforge that runs node <path-to>/dist/index.js. The file name and top-level key differ per tool — using the wrong one is the most common reason the server does not appear:

IDE / agent

Config file

Top-level key

Notes

Claude Code

.mcp.json in your project folder (note the leading dot), or claude mcp add archforge -- node <path>/dist/index.js

mcpServers

Approve the server if prompted; verify with /mcp.

VS Code (GitHub Copilot Chat)

.vscode/mcp.json, or MCP: Open User Configuration

servers (plus "type": "stdio")

Click Start above the entry; use Agent mode; check the tools list.

Cursor

.cursor/mcp.json (project) or ~/.cursor/mcp.json

mcpServers

Windsurf, Claude Desktop and most other clients

the tool's MCP settings page / config file

mcpServers

Claude Desktop: Settings → Developer → Edit Config.

Examples for each format are in examples/. The minimal Claude Code / generic form:

{
  "mcpServers": {
    "archforge": {
      "command": "node",
      "args": ["C:\\path\\to\\archforge-mcp\\dist\\index.js"]
    }
  }
}

and the VS Code form:

{
  "servers": {
    "archforge": {
      "type": "stdio",
      "command": "node",
      "args": ["C:\\path\\to\\archforge-mcp\\dist\\index.js"]
    }
  }
}

Watch out: a file called mcp-config.json inside ~/.copilot belongs to the GitHub Copilot command-line tool, not to VS Code chat or Claude Code.

Reload the IDE window (or reconnect the server) after saving.

3. Verify the connection

In the chat, type:

Run archforge_config

Approve the tool call if asked (choose "always allow" for the archforge tools — a design uses about twenty calls). You should see something like:

IDE/client: claude-code 2.x
Popup forms (elicitation): supported
IDE model access (sampling): not supported
Documents will be written by: the IDE's chat model (host authoring)
Questions will be shown as: popup forms

Whatever your IDE supports, Archforge detects it and picks the best available behavior automatically.

4. Design your first application

Open the folder where you want the design saved (documents are written to docs/architecture/ inside the open folder), then type:

Design an app for <your idea in 2–4 sentences>. Use the archforge tools.

Mention anything you already know — cloud, expected users, compliance, team size, mandatory technologies. The chat model pre-fills those answers as suggestions, and you still confirm them.


Using it day to day

What happens in a session

  1. The chat model creates a project (archforge_start_project) and may pre-fill answers your idea clearly implies, marked as inferred.

  2. You answer the interview — popup forms (or chat questions). Say "use defaults" for any or all questions. The chat model must never answer on your behalf.

  3. Capacity numbers are computed.

  4. The sections are written in batches of three or four, each one validated (a few minutes in total; many tool calls scrolling by is normal).

  5. The documents are exported into your workspace and the chat model summarizes the key decisions and assumptions.

Handy things to say

Goal

Say

Start with a slash command

Claude Code: /mcp__archforge__design_app "<idea>" — in other IDEs type / and pick design_app

See your projects and progress

Run archforge_status / Run archforge_status for project <id>

Resume after closing the IDE

Continue the archforge design for project <id>

Put the files somewhere specific

Export to <absolute path>

Revise one section

Regenerate hld.cloud for project <id> with feedback: use GCP

Rewrite everything with a new model

Regenerate all archforge sections for project <id>

Refresh after changing answers

Regenerate stale sections for project <id>

Restart a form-based interview in chat

Ask me the archforge questions in chat

Bring popups back

Run archforge_ask with mode elicit

Check or change the model

Run archforge_config with test:true

Putting hard constraints into the design

Anything you write in the idea and in the free-text answers (Core features, Tech preferences, Existing systems) is passed to every section. Put non-negotiable rules there — for example "PostgreSQL 15 only, hosted in an India region, Entra ID for login, rule BR-01 must never be bypassed" — and ask the chat model to treat them as constraints in the requirements and decisions sections. The 99.5% availability option exists for typical business-system targets; if your target is more specific (for example business hours only), state it in the free text too.


How it works

Archforge is an orchestrator and validator that is independent of any particular LLM. It owns the parts that must be reliable (the questions, the maths, the structure, the checks, the files) and delegates only the writing to whichever model is available.

Step

Component

What it does

①

You

Describe the idea; answer questions

②

AI chat (MCP client)

Calls Archforge's tools over MCP (JSON-RPC on stdio)

③

Interview engine

33-question bank; follow-ups depend on earlier answers; validates input; records defaults as assumptions

④

Capacity calculator

Deterministic formulas for load, storage, compute and availability, plus consistency warnings

⑤

Design generator

23 section definitions; builds a context pack and instructions per section; tracks which sections are stale

⑥

LLM router

Decides who writes the text (your provider → IDE sampling → chat model)

⑦

Validator

Checks required diagrams, Mermaid syntax patterns, placeholders; auto-repairs or sends back

⑧

Exporter

Writes Markdown, diagrams and a browser viewer into your workspace

State is stored as JSON in ~/.archforge/projects/ after every step. The full technical description, with sequence diagrams and data structures, is in docs/ARCHITECTURE.md.


Who writes the documents? (LLM options)

With the default setting (auto), Archforge picks the first option that is available:

Order

Mode

When it is used

API key

1

Provider — Claude API, Ollama or any OpenAI-compatible server

You configured one

Claude/OpenAI: environment variable. Ollama: none

2

Sampling — the IDE's own model, requested by the server

The IDE supports MCP sampling

None

3

Host authoring — the AI chat model writes each section from a brief and submits it

Always works

None

Every mode passes through the same validation. Provider and sampling modes also repair invalid output automatically (up to 2 retries); in host mode the problems are returned to the chat model to fix.

Using the Claude API

setx ANTHROPIC_API_KEY "sk-ant-..."     # Windows; then fully restart the IDE
"env": { "ARCHFORGE_LLM_PROVIDER": "anthropic", "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}" }

Using a local model with Ollama

ollama pull qwen2.5:14b
"env": { "ARCHFORGE_LLM_PROVIDER": "ollama", "ARCHFORGE_LLM_MODEL": "qwen2.5:14b" }

Using OpenAI, OpenRouter, LM Studio, vLLM, …

"env": {
  "ARCHFORGE_LLM_PROVIDER": "openai-compatible",
  "ARCHFORGE_LLM_BASE_URL": "https://api.openai.com/v1",
  "ARCHFORGE_LLM_MODEL": "<model name>",
  "OPENAI_API_KEY": "${OPENAI_API_KEY}"
}

Put the env block inside the archforge entry of your MCP config, reload, then run archforge_config with test:true — it sends a tiny request and tells you whether the provider works. Full recipes, defaults and the settings reference are in docs/CONFIGURATION.md. Local models smaller than about 14B parameters tend to produce thinner designs and more diagram errors.


How the questions are shown

Your IDE supports

You see

MCP elicitation

Native popup forms, one per round, pre-filled with defaults or suggestions. Follow-up forms appear automatically.

No elicitation

A structured chat questionnaire; the chat model shows it to you and passes your replies on as validated answers.

You decline or cancel a form

Archforge keeps your progress and continues in chat for that project.

Values you did not choose are recorded as assumed defaults; values the chat model deduced from your description are inferred and must be confirmed by you. Both are listed in the exported README under Assumptions to confirm. The complete list of questions is in docs/QUESTIONS.md.


Tools reference

You normally never call these yourself — the chat model does. They are listed so you know what exists.

Tool

Purpose

archforge_start_project

Create a project from the idea; returns the question catalog so answers can be pre-filled

archforge_ask

Run or resume the interview (popup forms or chat questionnaire)

archforge_submit_answers

Record answers, inferred answers, "use defaults", or confirmation of inferred values

archforge_capacity

Show the capacity estimate and consistency warnings

archforge_generate_design

Write sections (server-side) or return briefs for the chat model; supports scope, sectionIds, feedback, regenerate

archforge_submit_sections

Validate and store sections written by the chat model

archforge_status

List projects, or show interview progress and per-section status

archforge_export

Write the documents into the workspace

archforge_config

Show diagnostics or change settings; test:true verifies the model

Plus one MCP prompt, design_app, that starts the whole flow from an idea.


Output files

archforge_export writes to docs/architecture/ inside your open folder (or the path you give):

File

Contents

hld.md

High-Level Design — 12 sections with a table of contents

lld.md

Low-Level Design — 11 sections

README.md

Index, captured requirements, assumptions to confirm, anything not yet generated

viewer.html

Browser viewer that renders the Markdown and Mermaid diagrams (needs internet for two CDN scripts)

requirements.json

Your raw answers, machine-readable

diagrams/*.mmd

Every diagram as a standalone Mermaid file

Preview Markdown in VS Code with Ctrl+Shift+V. If diagrams show as code, open viewer.html instead. If the IDE exposes no workspace folder, files go to ~/.archforge/exports/<project-id>/ and the chat model tells you.

Exports are regenerated from the stored project every time. Edits you make to exported .md files are overwritten by the next export — copy the documents elsewhere before hand-editing, or ask the chat model to revise sections instead.


Configuration

Settings come from three layers (later wins): built-in defaults → ~/.archforge/config.json → ARCHFORGE_* environment variables.

Environment variable

Meaning

ARCHFORGE_LLM_MODE

auto (default), provider, sampling, host

ARCHFORGE_LLM_PROVIDER

anthropic, ollama, openai-compatible

ARCHFORGE_LLM_MODEL

Model name (Claude default: claude-sonnet-5-5; required for Ollama / OpenAI-compatible)

ARCHFORGE_LLM_BASE_URL

Override the API address (Ollama default http://localhost:11434)

ARCHFORGE_LLM_API_KEY_ENV

Name of the variable holding the key, if not the default

ARCHFORGE_QUESTION_MODE

auto, elicit, chat

ARCHFORGE_HOME

Where projects and config are stored (default ~/.archforge)

Change settings from chat (Run archforge_config with llmMode: host) or from the terminal:

node dist/index.js config --mode provider --provider ollama --model qwen2.5:14b
node dist/index.js config            # show current settings

API keys are never written to Archforge's files. See docs/CONFIGURATION.md for every setting.


Troubleshooting

Symptom

Most likely fix

&& is not a valid statement separator (PowerShell)

Run the commands on separate lines

unzip is not recognized (Windows)

Expand-Archive .\archforge-mcp.zip -DestinationPath .

npm error ENOENT … package.json

You are in the wrong folder — go into the inner archforge-mcp folder

Scripts are disabled on this system

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned, or use npm.cmd

Server not listed in /mcp (Claude Code)

File must be named .mcp.json with key mcpServers; reload the window; approve the server

Server not in VS Code's tools list

.vscode/mcp.json with key servers; click Start; switch chat to Agent mode

Server shows failed

Run node dist/index.js in a terminal — it should print [archforge] … ready. Check the path (doubled \\) and Node ≥ 18

Popup form was declined/cancelled

Archforge continues in chat. Bring forms back with archforge_ask mode elicit

Chat model answers the questions itself

Say: "Stop. Ask me the questions and wait for my answers."

Provider errors (NOT set, 401, unreachable, model not found)

Run archforge_config with test:true and follow the message

A diagram does not render

Ask for a revision of that section with feedback; or open viewer.html

Files are not where you expected

Tell the chat model an absolute outDir when exporting

The complete list, with causes, is in docs/TROUBLESHOOTING.md.


Security and privacy

  • Runs locally. The server is a child process of your IDE: no network listener, no telemetry, no accounts.

  • Network calls happen only if you configure a provider (Claude API / OpenAI-compatible / Ollama), plus a localhost check of Ollama in diagnostics. viewer.html loads two scripts from a CDN when you open it in a browser.

  • Your requirements leave your machine only through the model that writes the documents. With the default modes that is your IDE's own model, under your IDE's data policy. For confidential specifications use a local Ollama model or confirm that your IDE's model policy is acceptable.

  • API keys are read from environment variables and never stored by Archforge.

  • Stored data: project JSON (including your idea text and answers) in ~/.archforge/projects/, protected by your operating system's normal file permissions. Delete the files to delete the data.

  • Section text, once generated, is passed back into later prompts; do not paste secrets into the idea or free-text answers.

Limitations

  • Mermaid validation is a heuristic lint, not the real Mermaid parser. It catches the usual model mistakes but a diagram can still occasionally fail to render; ask for a fix on that section.

  • Capacity numbers are rules of thumb (every assumption is printed in the report). Replace them with load-test data when you have it.

  • Design quality depends on the model that writes it. Treat the output as a strong first draft to review — especially security, compliance and cost statements. Cost figures are labeled estimates.

  • It does not read your documents or code itself. To use an existing spec, ask the chat model to read it first and pass the relevant facts in the idea and free-text answers.

  • MCP feature support varies by IDE and version (popup forms, IDE-model sampling, workspace roots). Archforge detects what is available and falls back automatically.

  • There is no multi-user collaboration; projects are local to one machine.

Customizing

To change…

Edit

Then

Questions, options, defaults, follow-up rules

src/questions/bank.ts

npm run docs (regenerates the catalog), reconnect the server

What each document section must contain, required diagrams

src/design/sections.ts

npm run docs, reconnect

Capacity formulas and constants

src/capacity.ts

npm run build, reconnect

Diagram checks

src/design/diagrams.ts

npm test

Add another LLM provider

src/llm/ (see ollama.ts as a template) and src/llm/index.ts

npm test

After any change: npm run build, then reconnect the server (/mcp in Claude Code, or reload the IDE window).

Development

npm install
npm run build        # compile TypeScript to dist/
npm test             # build + end-to-end smoke test
npm run docs         # regenerate docs/QUESTIONS.md and docs/SECTIONS.md
node dist/index.js help

The smoke test spawns the real server over stdio and plays the role of an IDE in three ways: popup forms plus IDE-model sampling; a bare client with neither (chat questions plus host authoring); and mock Ollama / Claude API servers, including automatic repair of an invalid diagram. All 22 checks must pass.

src/
  index.ts            CLI entry (serve, config, print-config, help)
  server.ts           MCP tools, prompt and orchestration
  config.ts store.ts  settings and project persistence
  capacity.ts         deterministic capacity maths
  questions/          bank.ts (question catalog) · engine.ts (pending/follow-up/defaults logic)
  design/             sections.ts · prompts.ts · diagrams.ts (lint) · render.ts (export)
  llm/                anthropic · ollama · openai · sampling · index (router)
  ui/interview.ts     popup-form schema and chat questionnaire formatting
docs/                 architecture, configuration, troubleshooting, generated catalogs, images
examples/             ready-to-copy MCP configuration files
scripts/              setup helpers and docs generator
test/smoke.mjs        end-to-end test

FAQ

Is it a plugin, an MCP server, or an app? An MCP server — the standard plugin format for AI IDEs. Your IDE launches it; you interact through the AI chat.

Does it need the internet? Not by itself. With the default modes it only needs whatever your IDE's chat model needs. With Ollama it can run fully offline.

Does it work in my IDE? If the IDE can add an MCP server that runs a local command over stdio, yes. Which extras (popup forms, sampling) you get depends on the IDE; archforge_config tells you.

Does it write code? No. It produces design documents and a build plan.

Where are my projects? ~/.archforge/projects/<id>.json (Windows: C:\Users\<you>\.archforge\projects). Use archforge_status to list them.

Can I design several apps? Yes; each is its own project with its own id.

How do I update to a new version? Replace the project folder with the new one, run npm install and npm run build, then reconnect. Your projects and settings in ~/.archforge are kept.

How do I reset everything? Delete the ~/.archforge folder.

Which model gives the best results? A strong general model (a current Claude model via the chat or the API). Small local models work but need more review.

License

MIT — see LICENSE.

Available Tools

9 tools
archforge_askInterview the userA

Run or resume the requirements interview. If the IDE supports popup forms (MCP elicitation) the questions appear as native forms and this call returns when the user has answered; otherwise it returns a chat questionnaire you must show to the user, then submit their replies with archforge_submit_answers. Questions adapt to earlier answers (cloud, concurrent users, throughput, availability, compliance, …).

NameRequiredDescriptionDefault
modeNoForce popup forms or chat questions. Default: auto.
projectIdYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does real work: it discloses two execution modes, that the elicit path is blocking, and that the chat path returns payload the agent must relay and then submit back. It omits state side effects (whether an interview record/draft is created or how resume is detected), which keeps it short of a 5.

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?

Four sentences, front-loaded with the core action, then the conditional execution paths, then the adaptivity note; nothing is redundant. The parenthetical example list (cloud, throughput, availability, compliance, …) is mildly noisy but justifies the tool's value.

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?

For an interactive tool with no annotations and no output schema, the two execution paths and the hand-off to archforge_submit_answers cover the main things an agent must know. Gaps around resume semantics and prerequisite state keep it at 4 rather than 5.

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 50%: mode has an enum with a description, while projectId is undocumented in both schema and description. The description implies the elicit-vs-chat distinction that mode controls ("If the IDE supports popup forms"), but never maps mode values to behavior or explains what projectId must reference, so it adds only marginal meaning.

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?

"Run or resume the requirements interview" gives a specific verb plus resource and names archforge_submit_answers as the follow-on, so it is distinguishable from that sibling. It does not clarify its relationship to archforge_start_project (whether a project must exist first), leaving one adjacency to inference.

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 clearly branches usage: when MCP elicitation is available the questions arrive as native forms and the call blocks until answered; otherwise the agent must show the returned chat questionnaire and submit replies via archforge_submit_answers. That is actionable conditional guidance, though it never states the prerequisite project state or when to prefer this over archforge_status.

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

archforge_capacityCapacity estimateB
Read-only

Show the deterministic capacity estimate (RPS, storage, instances, availability budget, consistency warnings) for the answers collected so far.

NameRequiredDescriptionDefault
projectIdYes

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful context by calling the estimate 'deterministic' and listing its output components, but it says nothing about behavior when the project has no answers yet, whether the estimate is persisted, or any access 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?

A single dense sentence that front-loads the core action and then enumerates the concrete outputs. Nothing is wasted and no re-reading is required.

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?

For a simple read-only, one-parameter tool with no output schema, the description does the essential work of specifying what the result contains. The main residual gap, given the absent output schema, is not explaining edge-case behavior when answers are incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions the single parameter, projectId, or what it identifies. The parameter name is largely self-explanatory, but the description fails to compensate for the documentation gap in the schema.

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 gives a specific verb ('Show') and resource ('capacity estimate') and enumerates exactly what the estimate contains (RPS, storage, instances, availability budget, consistency warnings). This makes it distinguishable from siblings like archforge_generate_design or archforge_status, though it never names those siblings explicitly.

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 phrase 'for the answers collected so far' implies the prerequisite that answers must already be submitted (e.g., via archforge_submit_answers), which is useful implied usage context. However, there is no explicit statement of when to choose this over archforge_generate_design or archforge_status, nor any note about calling it before answers are complete.

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

archforge_configConfigure / diagnoseA

Show diagnostics (what this IDE supports, which model will write the documents, how questions are shown) or change settings. API keys are never accepted here: set the environment variable named by apiKeyEnv in the IDE's MCP server config. With test:true a tiny request is sent to the resolved model.

NameRequiredDescriptionDefault
testNoSend a tiny test request to the resolved model.
modelNo
baseUrlNo
llmModeNoauto = configured provider → IDE sampling → IDE chat model.
providerNo
apiKeyEnvNoNAME of the environment variable that holds the API key.
outputDirNo
questionModeNo
sectionsPerCallNo

TDQS

A3.6/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 behavioral burden. It discloses two useful traits: API keys are rejected and test:true sends a tiny request to the resolved model. However, it does not say whether settings changes persist, require restart, are validated, or what the diagnostics output includes, leaving gaps for a mutation-capable tool.

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

Conciseness4/5

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

Three sentences, front-loaded with the primary purpose and then key constraints, with little waste. The sentence about test:true is well-placed at the end, though the parenthetical diagnostics list is slightly dense.

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

Completeness3/5

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

For a 9-parameter, zero-required configuration tool with no annotations and no output schema, the description covers the core purpose, API key exclusion, and test behavior. It still omits what diagnostics return, what each setting affects, persistence behavior, and how the model/provider resolution interacts with llmMode, so an agent lacks enough context to call it optimally.

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 only 33%, so the description must compensate. It adds meaning for test, apiKeyEnv, and partially for model and question mode, but leaves baseUrl, llmMode, provider, outputDir, and sectionsPerCall unexplained beyond the schema's sparse enum hints. The description helps but does not fully close the coverage gap.

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 states a specific dual purpose: show diagnostics (IDE support, model selection, question display) or change settings. This clearly distinguishes it from sibling tools like archforge_start_project or archforge_status, though 'change settings' is broad enough that an agent may still have to infer which settings are mutable.

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

Usage Guidelines4/5

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

It explicitly scopes usage by saying API keys are never accepted here and pointing to the environment variable named by apiKeyEnv, which is a valuable when-not-to-use hint. It also distinguishes diagnostics from configuration changes, but it does not name alternative sibling tools or state prerequisites for changing settings.

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

archforge_exportExport documentsB

Write hld.md, lld.md, README.md (index + assumptions), requirements.json, a viewer.html and every Mermaid diagram as .mmd into the workspace (default docs/architecture). Partial exports are allowed; missing sections are marked.

NameRequiredDescriptionDefault
outDirNoOutput directory (relative to the workspace root, or absolute). Default: docs/architecture.
projectIdYes

TDQS

B3.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 behavioral burden. It usefully discloses that partial exports are permitted and that missing sections are marked, but it never says whether existing files in the target directory are overwritten or preserved — a critical unknown for a write operation — nor does it mention permissions or any return confirmation.

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 tight sentences, front-loaded with the concrete artifact list and followed by the behavioral caveat. The dense file enumeration is justified because it tells the agent exactly what lands on disk. No filler wording.

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

Completeness3/5

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

For a multi-artifact write tool with no output schema and no annotations, the description covers what is produced and the partial-export rule but omits overwrite semantics, prerequisites relative to sibling generation tools, and any success/failure signal. Adequate to invoke, incomplete for predicting side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: outDir is documented in the schema, while projectId has no description anywhere. The description restates the default directory already present in the schema but adds no meaning for projectId (e.g., whether it scopes the source design or the output folder), so it does not compensate for the coverage gap.

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 names a specific verb ('Write') and enumerates the exact artifacts produced (hld.md, lld.md, README.md, requirements.json, viewer.html, .mmd diagrams) plus the default location. That makes the action concrete and distinct from generation-oriented siblings like archforge_generate_design. It stops short of explicitly naming which sibling precedes it, so differentiation is implied rather than stated.

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?

No explicit when-to-use or when-not-to-use guidance and no named alternatives; the agent must infer that this is the post-generation step that persists artifacts to disk. The 'partial exports are allowed' clause hints at a valid condition for calling, but preconditions (e.g., whether a design must exist first) are never stated.

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

archforge_generate_designGenerate HLD / LLDA

Generate the design sections. Depending on configuration and IDE support, either the server writes them using the configured model (Claude API / Ollama / the IDE's model via sampling), or — in host-authoring mode — it returns section briefs for YOU to write, which you then submit with archforge_submit_sections. Each call handles a few sections; keep calling with the same arguments until it says everything is complete. Use sectionIds + feedback to revise specific sections.

NameRequiredDescriptionDefault
forceNoProceed even though interview questions are unanswered (defaults are used and listed as assumptions).
scopeNoDefault "all".
feedbackNoUser feedback to apply when regenerating sectionIds.
projectIdYes
regenerateNo"missing" (default): only unwritten sections; "stale": also those written before the requirements changed; "all": rewrite everything in scope.
sectionIdsNoRegenerate exactly these sections (e.g. ["hld.cloud"]).

TDQS

A3.9/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, and it does well: it discloses the dual execution model (server-side model generation vs host-authoring mode returning section briefs), the iterative batching behavior ('a few sections' per call), and the completion signal. It does not mention permissions, cost, or rate limits, keeping it short of a 5.

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

Conciseness4/5

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

Front-loaded with the primary action and execution modes, then moves to the iteration loop and revision path. It is dense but every sentence adds operational value; the conditional mode explanation is slightly tangled but not wasteful.

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?

For a multi-mode, iterative generation tool with no output schema, the description explains both execution paths, the looping protocol, and the revision mechanism - the essentials an agent needs to call it correctly. It leaves the return payload shape and how 'complete' is signaled largely implicit.

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 83% with all parameters described, so the baseline is 3. The description adds meaning for sectionIds and feedback (used to revise specific sections) and implies the loop semantics of repeated calls, but adds little beyond the schema's own regenerate and scope documentation.

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 states a specific verb+resource ('Generate the design sections') and distinguishes it from archforge_submit_sections by explaining the host-authoring handoff. It doesn't fully clarify how HLD vs LLD generation is selected, though the scope enum in the schema covers that.

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 clear operational guidance: call repeatedly with the same arguments until completion, and use sectionIds + feedback to revise specific sections. The reference to archforge_submit_sections names the relevant sibling, but the trigger conditions among siblings (e.g., when to start vs regenerate) are only implied.

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

archforge_start_projectStart an architecture projectA

Create a new architecture-design project from the user's app idea. Returns the project id and the catalog of interview question ids so you can pre-fill answers the idea clearly implies. Follow with archforge_ask.

NameRequiredDescriptionDefault
nameYesShort project name, e.g. "FoodDash".
descriptionYesThe user's idea / requirements in their own words (keep their wording; include every detail they gave).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the load and does disclose non-obvious behavior: it creates persistent state and returns both a project id and an interview-question catalog used for pre-filling. It omits permission/auth requirements and what happens on duplicate names, but the mutation and return shape are clear.

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 short sentences, front-loaded with the action, then the return value, then the next step. Nothing is repeated or wasted.

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 two-parameter creation tool with no output schema, the description covers the action, the inputs' intent, and the return payload, which is everything an agent needs to invoke it and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema; the description adds only the framing that the description field is the user's idea driving the project and downstream pre-fill. That is marginal added meaning, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new architecture-design project') and grounds the input ('from the user's app idea'), which cleanly separates it from siblings like archforge_generate_design or archforge_ask.

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?

Gives explicit sequencing ('Follow with archforge_ask') and implies this is the entry point of the workflow. It does not state when-not to use it (e.g., resuming an existing project via archforge_status), so it stops short of full routing guidance.

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

archforge_statusProject statusA
Read-only

Without projectId: list all projects. With projectId: interview progress, which sections are written / stale / missing, how documents will be written, and the next step.

NameRequiredDescriptionDefault
projectIdNo

TDQS

A3.7/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description carries a lower burden. It does add value by enumerating the payload: interview progress, per-section written/stale/missing states, how documents will be written, and the next step. It stops short of describing output shape, ordering, or what 'stale' means operationally.

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 conditional clauses, front-loaded by mode, with no filler. Every phrase maps to a distinct piece of behaviour or returned 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?

For a read-only tool with one optional parameter and no output schema, the description covers both call modes and the kinds of content returned, which is enough to invoke it correctly. The remaining gap is conceptual (what 'how documents will be written' actually contains), which is minor given the tool's simplicity.

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 0%, so the description has to carry the meaning of the single optional projectId, and it does: absence means list all projects, presence means per-project detail. That is the key semantic an agent needs. It doesn't say what format a projectId takes or what happens if an unknown id is supplied.

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 splits the tool into two clearly named modes: a bare call lists all projects, and a call with projectId returns interview progress plus section states (written/stale/missing) and the next step. That is specific enough to distinguish it from siblings such as archforge_capacity or archforge_config, though it never names a verb for the tool itself and relies on its title 'Project status' for the framing.

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?

It states the condition that changes behaviour (projectId present or absent), which effectively tells the agent when each mode applies. However, it gives no guidance on when to choose this tool over siblings such as archforge_capacity for progress metrics or archforge_config for settings, so tool selection is left to inference.

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

archforge_submit_answersSubmit interview answersA

Record the user's answers (chat mode), pre-fill inferred answers, or accept defaults. Returns the next batch of questions (or announces that the interview is complete). Only submit values the user actually gave; use source "inferred" for values you deduced from their idea.

NameRequiredDescriptionDefault
sourceNo"inferred" = deduced from the idea, the user will confirm. Default "user".
answersNo
projectIdYes
useDefaultsForNoQuestion ids for which the user said "use the default / you decide".
confirmInferredNoThe user confirmed all inferred/pre-filled values as correct.
acceptAllDefaultsNoThe user asked to accept defaults for everything remaining.

TDQS

A3.6/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, and it does disclose the return behavior (next question batch vs. completion announcement), which matters because there is no output schema. It says nothing about mutation effects, whether submission is idempotent, what happens to unsupplied questions, or how errors on bad question ids surface.

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?

Three tight sentences, front-loaded with the action and the mode list, with the constraint rule last. No filler, though the three-mode clause is dense enough that the user/inferred distinction has to be re-read against the final sentence.

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

Completeness3/5

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

For a 6-parameter mutation tool with no annotations and no output schema, the description covers purpose, return shape, and one key constraint. It is still missing failure behavior (unknown question id), partial-submission semantics, and how the four answer-transport parameters interact, which an agent needs to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, so the schema already documents source, answers.id/value, useDefaultsFor, confirmInferred and acceptAllDefaults. The description restates the 'inferred' meaning and gestures at defaults, but leaves the risky ambiguity unresolved: when to use answers vs useDefaultsFor vs acceptAllDefaults vs confirmInferred, and whether these can be combined in a single call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and object ("record the user's answers", "pre-fill inferred answers", "accept defaults") and states what comes back ("next batch of questions... or the interview is complete"). It is clearly distinguishable from a read/query sibling, but it never names a sibling such as archforge_ask or archforge_submit_sections to route between them.

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

Usage Guidelines4/5

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

It gives an explicit behavioral rule for when to use which mode: "Only submit values the user actually gave; use source 'inferred' for values you deduced from their idea." That is real usage guidance, but there is no when-not guidance, no mention of when to call archforge_ask instead, and no prerequisites (e.g. must a project exist first?).

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

archforge_submit_sectionsSubmit written sections (host authoring)A

Submit design sections you wrote from archforge_generate_design briefs. The server cleans headings, validates Mermaid diagrams and required content, stores accepted sections and returns problems for the rest.

NameRequiredDescriptionDefault
forceNoStore sections even if validation reports problems (use only if a reported issue is a false positive).
sectionsYes
projectIdYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does real work: it discloses server-side heading cleanup, Mermaid and required-content validation, partial storage semantics, and problem reporting. Gaps remain on permissions/auth requirements, whether resubmission overwrites existing sections, and the shape of the returned problems, which keeps it below 5.

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 the action and its source, followed by the server-side behavior. Every clause carries information about validation or storage outcomes; nothing is redundant.

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?

For a mutation tool with no annotations and no output schema, the description covers the critical behavior: validation, partial acceptance, and problem reporting as the return channel. It could go further on auth/idempotency and on how the force flag interacts with the validation story described, but nothing essential is missing for a correct first call.

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 only 33%, and the description never mentions projectId or the important force flag, leaving the agent to rely on the schema alone for those. It does add meaning for sections' content by implying the body is markdown that will be heading-cleaned and Mermaid-validated, which is genuine added value, but the coverage gap is only partly compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Submit design sections') and ties the input to a named sibling, archforge_generate_design briefs, which separates it from archforge_submit_answers. It stops short of explicitly naming which sibling it is not, so a 4 rather than a 5.

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

Usage Guidelines4/5

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

Clear upstream context: use this after obtaining briefs from archforge_generate_design. It also explains the partial-acceptance outcome (accepted sections stored, problems returned for the rest), which tells the agent how to react to a mixed result. No explicit when-not-to-use guidance or mention of the force escape hatch, so not a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedarchforge_ask
    • First observedarchforge_capacity
    • First observedarchforge_config
    • First observedarchforge_export
    • First observedarchforge_generate_design
    • First observedarchforge_start_project
    • First observedarchforge_status
    • First observedarchforge_submit_answers
    • First observedarchforge_submit_sections

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Each tool maps to a distinct pipeline stage (start, interview, capacity, generate, submit, status, export, config), and descriptions clarify the ask/submit_answers and generate_design/submit_sections pairs. The only real confusion risk is the generate/submit split in host-authoring mode, but the descriptions explain when each applies.

Naming Consistency4/5

All tools share a consistent archforge_ prefix and snake_case formatting. Most are verb_noun (start_project, submit_answers, generate_design) while a few are bare nouns (capacity, status, config, export), which is a minor but readable deviation.

Tool Count5/5

Nine tools is well within the ideal 3-15 range and each one maps to a necessary step of the architecture-design workflow. No redundant or filler tools are present.

Completeness4/5

The surface covers the full lifecycle: project creation, adaptive requirements interview, capacity estimation, design generation/authoring, status inspection, and multi-format export. Minor gaps exist (no project deletion/archival or explicit project switching beyond status listing), but agents can work around these.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI clients and agents to turn a new idea into a structured set of clarifying questions, technology options, upward design breakdowns, reverse reasoning, and risk assessments so users can steer top-level design decisions. It also supports saving insights and building a bidirectional design tree of concepts and their implementations.
    19
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI coding agents to retrieve mode and stage guidance so they can lead users through a 9-stage design workflow, including questions, required artifacts, exit criteria, dependencies, pitfalls, rollback impact, and environment requirements. It helps non-designers turn ideas into buildable HTML/WPF design specs while keeping the human in control of confirmation and revisions.
    2
    MIT