edit.pink
Pink Editor docs
MCP server

Connect a client

Every way to connect an MCP client to Pink Editor, and what the server speaks.

API v1

Pink Editor's MCP server is reachable two ways. Both serve the same tools.

TransportEndpointAuthBest for
Remote (Streamable HTTP)https://app.edit.pink/api/mcpOAuth sign-in, or Authorization: Bearer cm_live_…claude.ai, ChatGPT, Claude Code, Cursor, your own client
Remote, key in URLhttps://app.edit.pink/api/mcp/cm_live_…The key in the pathClients with no header setting
stdio bridgenpx -y @editpink/mcp (or the Claude Desktop .dxt)Device sign-in on first call, or EDITPINK_API_KEYClaude Desktop, Windsurf

The remote endpoint is the one to prefer: nothing to install, and it never goes out of date. The stdio bridge is a small local program that forwards to the same server; it needs Node 18 or later.

To pin the API version, add ?api_version=1 to the connector URL (https://app.edit.pink/api/mcp?api_version=1) or send the header Pink-Version: 1. Without either you get version 1.

Per client

The signed-in Connect page builds every snippet below for you, with or without a key.

claude.ai and ChatGPT

Add a custom connector with the URL https://app.edit.pink/api/mcp. The client discovers the sign-in on its own and asks you to approve once.

With an API key instead: use https://app.edit.pink/api/mcp/cm_live_YOUR_KEY as the URL. There is no sign-in, but the URL is now a secret.

Claude Desktop

Download editpink.dxt and open it; Claude Desktop installs it as an extension. Ask Claude for your Pink sites: the first call opens a browser tab to approve a code. Approve it, then ask again.

Or skip the install and add https://app.edit.pink/api/mcp as a custom connector, as for claude.ai.

With an API key, merge this into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) and restart Claude Desktop:

{
  "mcpServers": {
    "pink": {
      "command": "npx",
      "args": ["-y", "@editpink/mcp"],
      "env": {
        "EDITPINK_API_URL": "https://app.edit.pink",
        "EDITPINK_API_KEY": "cm_live_YOUR_KEY"
      }
    }
  }
}

Claude Code

claude mcp add --transport http --scope user pink https://app.edit.pink/api/mcp

--scope user makes Pink available in every project. On the first call Claude Code asks you to sign in. With a key, append it to the URL: …/api/mcp/cm_live_YOUR_KEY.

Cursor

Merge into ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pink": {
      "url": "https://app.edit.pink/api/mcp",
      "headers": { "Authorization": "Bearer cm_live_YOUR_KEY" }
    }
  }
}

Leave out headers to sign in on first use instead.

Windsurf

Merge into ~/.codeium/windsurf/mcp_config.json the same npx block as Claude Desktop above. Without EDITPINK_API_KEY, the first tool call opens a browser tab to sign in.

Your own client

Any MCP client that speaks Streamable HTTP works. Send JSON-RPC 2.0 requests as POST to https://app.edit.pink/api/mcp with your key as a bearer token:

curl https://app.edit.pink/api/mcp \
  -H "Authorization: Bearer cm_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

What the server speaks

Protocol versions2025-06-18 (latest), 2025-03-26, 2024-11-05. The server answers initialize with the version you asked for when it supports it, otherwise 2025-06-18. An unsupported MCP-Protocol-Version header is a 400.
Methodsinitialize, ping, tools/list, tools/call, prompts/list, prompts/get
Capabilitiestools, prompts. No resources, sampling or list-changed notifications.
BatchesJSON-RPC batches are accepted. Notifications get 202 with no body.
CORSAllowed from any origin, so a browser-based client can connect.
Server instructionsSent in the initialize response; they tell the model how to start a session (see Sessions).

The pink prompt

The server registers one prompt, pink, with an optional task argument. Clients show it as a slash command (/pink in Claude Desktop). It tells the model to start a session: list_sites, select_site, then load the pink-core playbook.

The stdio bridge

VariableDefaultMeaning
EDITPINK_API_URLhttps://app.edit.pinkThe server to talk to
EDITPINK_API_KEYunsetYour key. Unset: the bridge signs in with a device code on first use and keeps the key in ~/.editpink-mcp-state.json.

The bridge refreshes its tool list and instructions from the server in the background; a change takes effect the next time the client starts it. An outdated bridge is told to update; see Versioning.

Check it works

Ask your AI to list my Pink sites. If that fails, see Responses and errors.

On this page