GetItDone MCP

Create, update and track tasks and projects across your GetItDone team workspaces. Remote server with OAuth sign-in.

Hosted MCP Server

npx add-mcp 'https://app.nowgetitdone.com/api/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

The remote GetItDone MCP server: connect Claude, Claude Code, Cursor or any MCP client by signing in or with an API key. Endpoint, setup and full tool list.

GetItDone runs a remote Model Context Protocol (MCP) server, so AI assistants like Claude can list, create, update, and archive your tasks — with the same rich context the product itself has, including task images and extracted video frames.

Any MCP client that speaks remote servers can connect: no local install, no sidecar process. There are two ways to authenticate — pick whichever your client supports:

  • Sign in (OAuth) — paste the server URL into the client, sign in to GetItDone, and approve access. No key to create or store. Best for Claude (claude.ai, Claude Desktop, Claude Code).
  • API key — send a gid_ key in a header. Best for clients that take a JSON config with headers (Cursor, scripts, CI).

Step-by-step for one assistant: Use GetItDone in Claude.

Endpoint

URLhttps://app.nowgetitdone.com/api/mcp
TransportStreamable HTTP
AuthOAuth 2.1 sign-in, or Authorization: Bearer <gid_ API key>

Sign in with OAuth — no API key

The server implements the MCP authorization spec: an unauthenticated request gets a 401 pointing at https://app.nowgetitdone.com/.well-known/oauth-protected-resource, and clients register themselves (dynamic client registration) and sign you in with OAuth 2.1 + PKCE. In practice:

  1. Add https://app.nowgetitdone.com/api/mcp as a remote MCP server in your client.
  2. Your browser opens GetItDone — sign in if you are not already.
  3. The consent screen lists exactly what the assistant is asking for (for example Read tasks, Write tasks). Choose Allow access.

To disconnect later, open your profile in GetItDone → Connected Apps and revoke the app. Revoking stops the app from getting new access at once; an access token it already holds expires within an hour.

Get an API key

  1. Sign in at app.nowgetitdone.com.
  2. Go to Settings → API Keys (app.nowgetitdone.com/settings/api-keys).
  3. Create a key — keys start with gid_ and are shown once, so store them safely.

The same key authenticates the public /v1 REST API; test keys are prefixed gid_test_.

Connect your client

Claude and Claude Desktop

Claude (claude.ai and Claude Desktop): add a custom connector with the server URL and sign in — see Use GetItDone in Claude.

Claude Code

Claude Code, signing in (then run /mcp inside Claude Code and follow the browser sign-in):

claude mcp add --transport http getitdone https://app.nowgetitdone.com/api/mcp

Claude Code with an API key instead:

claude mcp add --transport http getitdone https://app.nowgetitdone.com/api/mcp \
  --header "Authorization: Bearer gid_YOUR_API_KEY"

Cursor and other JSON-config clients

Claude Desktop, Cursor, or any remote-MCP client that takes JSON config:

{
    "mcpServers": {
        "getitdone": {
            "url": "https://app.nowgetitdone.com/api/mcp",
            "headers": {
                "Authorization": "Bearer gid_YOUR_API_KEY"
            }
        }
    }
}

Tools

Everything an assistant needs to run a real task workflow — discovery, deep reads, and writes. Each tool names the API scope a key must hold: without it the tool never appears in tools/list and a call is refused.

  • list_workspaces — read · workspaces:read — List the workspaces (organizations) the current user belongs to, with their ids. Pass a returned id as workspaceId on the other tools to target a specific workspace when the user has more than one.
  • list_projects — read · projects:read — List the projects in the workspace with their ids — the same grouping the board shows down the side of the task list. Call this BEFORE filing work under a project: pass a returned id as projectId on create_task or update_task, or as a filter on list_tasks. If the project the user named is not in this list it does not exist, so say so rather than inventing it or writing its name into a task.
  • list_tasks — read · tasks:read — List tasks for the current user in their organization. Can filter by status, priority and project. Returns the latest version of each task — including the projects it is filed under, whether it is currently BLOCKED and how many tasks it blocks — so you can tell what is actually actionable right now and where it belongs.
  • get_task_details — read · tasks:read — Get the FULL content of a single task: its rich-text notes, every attachment (image, video, document) with short-lived URLs the AI can fetch to read the actual content, and its dependency chain — which tasks are blocking it and which tasks it blocks. Use this after list_tasks when you need to see what is inside a task or why it cannot be started. Identify the task by short ID (e.g. 123 for T-123) or task version ID.
  • get_task_video_context — read · tasks:read — Pull visual context from a task's videos: extracts a few evenly-spaced frames from any uploaded video (screen recording etc.) in the task's notes or attachments so you can understand what it shows, and surfaces any YouTube/Vimeo links found in the notes. Use when a task references a video/screen recording. Identify the task by short ID (e.g. 123 for T-123) or task version ID.
  • create_task — write · tasks:write — Create a new task for the current user in their organization. Set a start date when the task cannot be worked on until a given day (defer-until). File it under a project by passing a project id from list_projects. Set a recurrence to make it a repeating habit or routine ("every weekday", "every other Monday", "the 1st of each month", "every 3 days after I finish it") — each day is completed independently.
  • update_task — write · tasks:write — Update an existing task. You can update the name, status, priority, start date, due date, notes, story points, its project (pass a project id from list_projects to move it, or null to remove it from every project), or its repeat schedule (pass a recurrence to start/replace it, or null to stop it repeating). Identify the task by its short ID (e.g. T-123) or task version ID.
  • complete_task_occurrence — write · tasks:write — Mark one DAY of a repeating task done. This is per-day: completing Monday leaves Tuesday untouched. The day can be in the PAST ("I brushed my teeth yesterday") or a scheduled FUTURE day finished early — neither breaks the chain, and neither is something a task-manager MCP normally lets you say. Identify the task by short ID (e.g. 123 for T-123) and the day as YYYY-MM-DD; omit the day for today.
  • link_task_dependency — write · tasks:write — Record that one task is BLOCKED BY another (finish-to-start), or remove that link. Use it whenever the user says one piece of work is waiting on, depends on, or is held up by another. The blocked task is then reported as blocked until every blocker is completed, so you can answer "what is blocking this?" with the real chain instead of a flat list. Identify both tasks by short ID (e.g. 123 for T-123); pass action "remove" to unlink. Links that would create a loop are rejected.
  • archive_task — write · tasks:write — Archive or unarchive a task. Archived tasks are hidden from the main task list. Identify the task by its short ID (e.g. T-123).
  • search_docs — read · workspaces:read — Search the GetItDone developer documentation — REST API operations, error/problem codes, and guide pages — and return ranked results with their public URLs. Guide and error pages also return a Markdown-twin URL (the page URL plus '.md') the agent can fetch to read the full page as plain text. Use when you need to know how a /v1 endpoint works, what an error code means, or where a capability is documented.

Context other task tools don't give an AI

Most task-management MCP integrations stop at text and metadata. GetItDone treats the AI as a first-class user and hands it the same rich context a teammate would get:

  • Full task contents, attachments included. get_task_details returns a task's rich-text notes plus every attachment — images, videos, documents — each with a short-lived URL the assistant can fetch to read the actual content, not just a filename.
  • Blocked-by chains the assistant can read and write. list_tasks reports whether each task is currently blocked and how many tasks it blocks, get_task_details returns the chain in both directions, and link_task_dependency records or removes a blocker — so "what can I actually start today?" is answered from the real graph, and a link that would create a loop is refused rather than stored.
  • Video-frame extraction, server-side. get_task_video_context samples evenly-spaced frames from screen recordings and other videos attached to a task and returns them as images the AI can see — so "watch the bug repro and fix it" actually works. YouTube and Vimeo links in the notes are surfaced too.

Quotas

The MCP server works on every plan, including Free. MCP calls are metered against the same workspace API-call quota as the REST API — the per-plan numbers are in Rate limits & quotas, and checkout is on the pricing page.

FAQ

What is the GetItDone MCP server?

It is a remote Model Context Protocol server at https://app.nowgetitdone.com/api/mcp. AI assistants use it to list, create, update, complete and archive your GetItDone tasks, and to read what is inside them: notes, attachments and frames from screen recordings. There is nothing to install.

Which AI assistants can connect to GetItDone?

Any MCP client that supports remote servers over Streamable HTTP. Claude (claude.ai and Claude Desktop) and Claude Code connect by signing in. Cursor and other clients that take a JSON config connect with an API key in a header.

Do I need an API key to connect an AI assistant?

Not if your client can sign in. Claude and Claude Code use OAuth: you approve access on a GetItDone consent screen and never handle a key. Create a gid_ key under Settings → API Keys only for clients that take a JSON config with headers.

Is the GetItDone MCP server free?

Yes. It works on every plan, including Free. MCP calls count against your workspace's API-call quota, the same quota as the REST API.

Can an AI assistant delete my tasks?

No. There is no delete tool. With write access an assistant can create, update, complete, link and archive tasks, and an archived task can be unarchived.

What can an AI see in GetItDone that other task tools don't show it?

The contents of a task, not just its title: rich-text notes, every attachment through a short-lived URL, frames extracted from screen recordings, and the blocked-by chain between tasks. See Context other task tools don't give an AI.

Read this page as Markdown — plain text for AI agents. Every guide at once: llms-full.txt.

[

Browser extension

Save any page, selection or screenshot as a GetItDone task from Chrome or Edge.

](https://nowgetitdone.com/docs/browser-extension)[

Use GetItDone in Claude

Connect Claude, Claude Desktop or Claude Code to your GetItDone tasks through the remote MCP server. Sign in with OAuth, no API key needed.

](https://nowgetitdone.com/docs/use-getitdone-in-claude)