Software Factory

MCP

Programmatic access to the factory — tasks, releases, the agent diary — over a bearer-token MCP connection. Any MCP client can read and act on your account exactly as the web UI does, gated the same way (reviewer-only actions stay reviewer-only).

Endpoint

https://factory.featured.com/api/mcp

Streamable HTTP only — there is no SSE endpoint.

Authentication

Every request carries a bearer API key in the Authorization header. Mint a key from your account settings — the secret is shown once, right after creation.

Authorization: Bearer <your-api-key>

Connect

Claude Code

claude mcp add --transport http factory https://factory.featured.com/api/mcp --header "Authorization: Bearer <your-api-key>"

Other clients (generic JSON config)

{
  "mcpServers": {
    "factory": {
      "url": "https://factory.featured.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}

Tools

  • task_list

    List factory tasks across every repo, newest-updated first. Optionally filter by status and/or kind.

  • task_get

    Get a single task's full spec plus a recent thread digest (last 20 events, oldest first).

  • task_create

    Create a draft task on a repo. Omit `kind` to leave classification to the agent at TASK_READY (recorded as kind_source=agent); pass it explicitly to pick build/dogfood yourself (kind_source=user).

  • task_ready

    Move a task to ready from draft or refining (a draft is walked through refining first), dispatching the same TASK_READY turn the web UI's ready button sends.

  • task_update

    Move a task to a new status as a human — the exact same legal hops the web UI's status buttons offer (actor "user"), with a clean error on an illegal one. Use this to lift a block, send an in_review task back to in_progress, or mark it done — from a local session with no browser open.

  • task_comment

    Post a comment to a task's thread. Moves a draft task to refining on its first comment, same as the web UI.

  • task_answerreviewer-gated

    Answer a pending input.requested approval card by its requestId — an `optionId` for a button click or `text` for freeform input, plus a human-readable `label` that lands in the thread as the durable record. Reviewer-gated exactly like the web UI's answer route.

  • release_list

    List release notes (drafts and published), newest-created first.

  • release_publishreviewer-gated

    Publish a draft release note. Reviewer-gated exactly like the web UI — a non-reviewer key is rejected.

  • diary_recent

    Read the latest agent diary entries (lessons/missteps/improvements/observations), optionally filtered by category.

  • migrations_status

    Compare this build's bundled migration journal against the live database ledger: the mode (manual/auto), pending migration tags in order, and the backwards-journal guard state.

  • migrations_apply

    Apply every pending bundled migration to the live database — the exact same path as the web UI's Apply now button (advisory lock, backwards-journal guard, audit event recording the key's user with trigger "mcp"). Only reviewed, merged migration files can ever run; there is no arbitrary-SQL surface.

Scoped to the factory’s data layer only — no sandbox or engine-run access. OAuth isn’t supported; bearer keys only.

For the rest of what the factory does, see /features.