Docs · MCP Integration

Call IterateCode from your editor.

If you use Cursor, Claude Code, Xcode 26, or Claude Desktop, you already have an MCP client. Point it at IterateCode's MCP server and get build-and-ship, business lookups, and cost-routed model generation as tools you can call from your existing workflow — without switching apps.

POST https://api.iteratecode.dev/mcp

Five tools available today

Every one of these is a real capability, not a stub. The build-and-ship pipeline that ships IterateCode's own products is what you get.

build_and_ship

Compile, sign, and install a native app on a real device. Enqueues a job that a registered runner (Mac IDE, CLI, or a future cloud worker) picks up.

Requires auth
generate_ui

Generate a native UI screen from a text description. Cost-routed across seven models, from DeepSeek to Claude Opus.

Requires auth
deploy_website

Push generated files to Vercel and get back a live URL. Uses your stored token or one you pass with the call.

Requires auth
lookup_business

Look up a real business by Google Maps URL or name. Returns hours, address, phone, rating. The engine behind the SMB workflow.

Anonymous OK
route_model

Given a task, return which of the seven catalog models the router would pick and why. Non-billable — pure classification.

Anonymous OK

Setup — pick your editor

The exact config location differs, but every example below uses the same endpoint. Copy the config, restart the editor, and the tools appear in your MCP palette.

Cursor

Cursor 3.5+ supports MCP servers via ~/.cursor/mcp.json. Add the IterateCode entry:

{
  "mcpServers": {
    "iteratecode": {
      "url": "https://api.iteratecode.dev/mcp",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer YOUR_ITERATECODE_JWT"
      }
    }
  }
}

Get your JWT from the Cursor menu → MCPAdd server, or by hitting /auth/login on the backend. After restart, the tools appear when you type @iteratecode in the chat panel.

Claude Code

Claude Code reads from ~/.claude/mcp_servers.json. Add:

{
  "iteratecode": {
    "url": "https://api.iteratecode.dev/mcp",
    "transport": "http",
    "auth": {
      "type": "bearer",
      "token": "YOUR_ITERATECODE_JWT"
    }
  }
}

Then in any Claude Code session, tools like iteratecode.build_and_ship are available for the model to call.

Claude Desktop

Claude Desktop's MCP config lives at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.

{
  "mcpServers": {
    "iteratecode": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-http",
        "https://api.iteratecode.dev/mcp"
      ],
      "env": {
        "MCP_AUTH_TOKEN": "YOUR_ITERATECODE_JWT"
      }
    }
  }
}

Claude Desktop uses a stdio bridge because it doesn't natively speak Streamable HTTP yet. The @modelcontextprotocol/server-http npm bridge is the standard workaround.

Xcode 26

Xcode 26's agentic assistant supports MCP servers via Xcode → Settings → Assistant → MCP Servers. Add a new entry:

  • Name: iteratecode
  • Transport: Streamable HTTP
  • URL: https://api.iteratecode.dev/mcp
  • Authorization: Bearer YOUR_ITERATECODE_JWT

Once added, the tools appear in the Xcode assistant. Use them for cross-platform builds when Xcode alone can't reach Android or Web targets.

Verifying the connection

Before wiring an editor, hit the discovery endpoint from your terminal — no auth required for GET:

# Returns the server's protocol version, tool count, and tool names.
curl https://api.iteratecode.dev/mcp

# You should see:
#   { "protocol": "Model Context Protocol",
#     "version": "2025-06-18",
#     "tools_count": 5, ... }

Then confirm a real JSON-RPC handshake works from your editor's origin:

curl -X POST https://api.iteratecode.dev/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0", "id":1, "method":"initialize",
    "params":{
      "protocolVersion":"2025-06-18",
      "capabilities":{},
      "clientInfo":{"name":"test","version":"0.1"}
    }
  }'

Authentication

Public tools (lookup_business, route_model) work without auth. Any tool that creates a job, deploys, or generates AI output requires a JWT from your IterateCode account:

curl -X POST https://api.iteratecode.dev/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"YOUR_PASSWORD"}'

# Returns { "token": "eyJ..." } — that's your JWT.

Pass the token in the Authorization: Bearer <token> header for every MCP request. The MCP endpoint is CORS-open, so any origin can reach it — access is controlled by the token, not by where the request came from.

Known limitations

Everything below is real and fixed before public launch — writing it here so you know what you're getting.

build_and_ship needs a runner.

The tool enqueues a job into the async agents queue. Without a registered runner (Mac IDE, CLI, or cloud worker), the job stays queued indefinitely. Register a runner via POST /api/agents/runners first, or wait for the cloud-runner beta.

generate_ui gated on ANTHROPIC_API_KEY.

If the backend doesn't have an Anthropic key configured, the tool returns an honest "unavailable" instead of silently failing. Set the key server-side or route through your own Anthropic account.

Rate limits apply.

The MCP endpoint is protected by the standard IterateCode rate limits (300 req/min per IP, 20/min for expensive routes). If you need higher throughput, get in touch — enterprise limits are configurable per account.

Design goal

IterateCode's build-and-ship pipeline is the moat. Exposing it as an MCP server means your existing editor becomes the shipping surface, not something to displace. If a tool is missing that would make your workflow better, tell us — the MCP catalog is versioned and additive.