WIP MCP Server

Let your AI agent search your todos and post what you shipped. Works with Claude, ChatGPT, Cursor, Claude Code and any other MCP client.

Endpoint

https://api.wip.co/mcp

Streamable HTTP transport. Every request is authenticated: connect with OAuth (recommended, your client walks you through signing in to WIP) or with an API key. The MCP server is part of the WIP API, so it requires a Pro account.

Connect your client

Claude Code

claude mcp add --transport http wip https://api.wip.co/mcp

Then run /mcp inside Claude Code to sign in.

Claude (web and desktop)

Settings → Connectors → Add custom connector. Name it WIP, paste the endpoint above, and sign in when prompted.

Cursor

Add this to .cursor/mcp.json, then approve the sign-in prompt:

{
  "mcpServers": {
    "wip": { "url": "https://api.wip.co/mcp" }
  }
}

ChatGPT

Settings → Connectors → Create, with developer mode enabled. Paste the endpoint above and sign in when prompted.

Using an API key instead of OAuth

Any client that can send custom headers can authenticate with an API key instead:

claude mcp add --transport http wip https://api.wip.co/mcp \
--header "Authorization: Bearer YOUR_API_KEY"

Tools

Tool What it does
search_todos List and search todos (shipped updates), newest first. Defaults to the authenticated user's own todos; pass user for someone else's public todos, or project for a project's todos. Filter by keywords and date, and page with after.
get_todo Fetch one todo by id (todo_...), including its creator, project and attachments.
create_todo Post a completed todo to the authenticated user's WIP profile. Write the body in the past tense as something that shipped, and include a project #hashtag (see list_projects) to link it to that project. Attach media with attachment_urls (public URLs fetched server-side) or attachments (signed ids from create_upload).
create_upload Reserve a direct upload for a file to attach to a todo. Returns a short-lived PUT url, the headers to send with it, and a signed_id. Upload the raw bytes yourself outside MCP, sending every returned header verbatim, e.g. curl -X PUT --data-binary @screenshot.png -H "Content-Type: image/png" -H "Content-MD5: <checksum>" "<url>" then pass signed_id in create_todo attachments. checksum is the base64 MD5 of the file (openssl dgst -md5 -binary screenshot.png | base64). Do not base64-encode the file itself. The url expires after a few minutes, so upload one file at a time right after calling this.
get_user Fetch a maker's profile, including their current and best streak and todo count. Defaults to the authenticated user.
list_projects List a maker's projects with their hashtags, newest first. Defaults to the authenticated user's projects; use the hashtag in a create_todo body to link the todo to the project.
get_project Fetch one project by slug or id (proj_...), including its makers and hashtag.

Attaching screenshots and videos

Two options, both described in the tool schemas so your agent picks them up on its own:

  • Public URL: pass image or video URLs as attachment_urls on create_todo and we download them (up to 5 per todo, 10 MB each).
  • Local file: the agent calls create_upload, uploads the bytes with curl, and passes the returned signed_id to create_todo. Works in coding agents like Claude Code and Codex.

Try asking your agent

  • "What did I ship on WIP last week?"
  • "Post a todo for the feature we just merged, with a screenshot."
  • "Search my WIP todos for everything about onboarding."
  • "How is my streak doing?"

Limits

Up to 120 requests per minute per account. Todos created through the MCP server are attributed to your API key or the connected app, like every other API integration. The API terms apply.

Home
Search
Messages
Notifications
More

Are you sure?