Skip to content
SkeletIQ

Docs · MCP server

SkeletIQ MCP server reference

The MCP server your coding agent uses to read a released SkeletIQ design, build it in order, and report what it built. Runs on your machine over stdio. MIT-licensed.

Package
@skeletiq/mcp
MCP registry
com.skeletiq/mcp
Source
Source

Install

Put your token in place of the placeholder. The server reads it from SKELETIQ_API_KEY.

Claude Code
claude mcp add skeletiq --env SKELETIQ_API_KEY=skq_your_token_here -- npx -y @skeletiq/mcp
Any MCP host (stdio)
SKELETIQ_API_KEY=skq_your_token_here npx -y @skeletiq/mcp

opencode's default timeout kills a healthy generation. Keep this one.

opencode — needs a longer timeout
{
  "mcp": {
    "skeletiq": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@skeletiq/mcp"
      ],
      "environment": {
        "SKELETIQ_API_KEY": "{env:SKELETIQ_API_KEY}"
      },
      "timeout": 600000
    }
  }
}

Token and scopes

Design a system in SkeletIQ and release it. Then mint a token under Settings → Agent access — shown once, stored hashed, revocable instantly.

A token grants only what you tick

  • Read designs — Projects, designs, briefs, build order, readiness, gaps.
  • Run generations — Generations, which spend credits. Payload critique, which is free.
  • Report build progress — Drift checks; never changes the design. Grant it with Read designs — a drift check looks the design up first.

Whatever it carries, it can never:

  • Mint another token
  • Read or change your provider keys
  • Touch billing
  • Delete the account
  • Resolve an open question — those go to a person
  • Write back to the design
  • Look at your code — drift is what the agent reports it built

Tools

Every tool the server registers, and what it does. For get_design, the modes a session walks through.

ToolModes walkedWhat it does
list_projects—Your agent names the project and writes the brief into AGENTS.md as a managed block. A refresh replaces it whole.
get_designbriefgapsbuild_ordercomponentYour agent names the project and writes the brief into AGENTS.md as a managed block. A refresh replaces it whole.
check_drift—The agent reports what it built and hears what is missing, half done, or not in the design. It never writes back — you revise and release again.
generate_architecture—Designs a system from a prompt. Spends credits and takes minutes.
get_generation_status—Polls a generation started in the background.
critique_architecture—Scores a design the agent drafted itself. Deterministic: no model call, no credits, nothing stored.
request_decision_change—Asks a person to change a design decision. Nothing changes until they accept.

A session

Ask your agent to build from a SkeletIQ design by name. A session runs in this order.

  1. Step 01

    Orient

    list_projectsget_design · brief

    Your agent names the project and writes the brief into AGENTS.md as a managed block. A refresh replaces it whole.

  2. Step 02

    Ask, don't guess

    get_design · gaps

    What the design left undecided comes back as questions for you. The agent cannot answer them through the server.

  3. Step 03

    Build in order

    get_design · build_orderget_design · component

    Stores first, then queues, services and the edge — each component read as it is reached.

  4. Step 04

    Report drift

    check_drift

    The agent reports what it built and hears what is missing, half done, or not in the design. It never writes back — you revise and release again.

The brief block

get_design in brief mode returns a managed block your agent writes into AGENTS.md. It opens with this comment, taken unedited from a released design:

<!-- skeletiq:brief:start project=9bd3b18c-a31f-4faf-9a01-eaec4fed0447 version=2 released=true generated=2026-09-30T07:17:14.459802+00:00
     Managed by SkeletIQ. A refresh replaces this whole block, opening fence to closing
     fence — never append a second one, and edit the design rather than this text.
     Refresh with the SkeletIQ MCP server: get_design(mode="brief").
-->

The opening fence names the project, the version, whether that version is released, and when the brief was generated: project=, version=, released= and generated=.

The brief follows, and the block ends with:

<!-- skeletiq:brief:end -->

A refresh replaces the whole block, opening fence to closing fence, so never edit inside it and never append a second one.