# GetItDone for AI agents

How AI assistants and agents read and build against GetItDone: llms.txt, Markdown twins of every docs page, the MCP server, and agent guidelines.

Everything an AI assistant or agent needs to read our docs and build against
the API — in machine-friendly formats.

## Machine-readable indexes

- [`llms.txt`](https://nowgetitdone.com/llms.txt) — a compact index of the site and developer surface.
- [`llms-full.txt`](https://nowgetitdone.com/llms-full.txt) — the entire developer docs set as one Markdown document.
- [`openapi.json`](/docs/api/openapi.json) — the OpenAPI 3.1 document for the whole `/v1` surface.

## Markdown twins

Append `.md` to any developer docs URL to get its Markdown source — ideal for
feeding a page straight into a model.

```text
https://nowgetitdone.com/docs/api.md
https://nowgetitdone.com/docs/ai.md
https://nowgetitdone.com/docs/api/webhooks.md
https://nowgetitdone.com/docs/api/problems/rate-limited.md
```

## Connect over MCP

The GetItDone MCP server lets an assistant work with tasks directly —
including image and video-frame context. Endpoint:

```text
https://app.nowgetitdone.com/api/mcp
```

[MCP server setup →](/docs/connecting-ai-assistants)

## One platform: REST + SDK + MCP

The REST API, the TypeScript SDK, and the MCP server are three doors into the
SAME platform — one credential, one set of scopes, one docs surface. The SDK
is a typed client over the REST API, so its capabilities track REST exactly.
The MCP server is a focused, agent-facing subset plus one capability
REST deliberately does not expose.

| Capability                                                             | REST /v1 | SDK | MCP |
| ---------------------------------------------------------------------- | -------- | --- | --- |
| Tasks — list, create, update, archive                                  | Yes      | Yes | Yes |
| Task full content + attachment URLs (read)                             | Yes      | Yes | Yes |
| Workspaces / organizations (read)                                      | Yes      | Yes | Yes |
| Task history / versions                                                | Yes      | Yes | No  |
| Daily plan                                                             | Yes      | Yes | No  |
| Projects                                                               | Yes      | Yes | No  |
| Members                                                                | Yes      | Yes | No  |
| Attachments — upload / download                                        | Yes      | Yes | No  |
| Outbound webhooks                                                      | Yes      | Yes | No  |
| Usage & quota                                                          | Yes      | Yes | No  |
| Video-frame task context <br /> _MCP-only by design (see divergences)_ | No       | No  | Yes |
| Docs search <br /> _Agent convenience over the public docs pages_      | No       | No  | Yes |

### Documented divergences

- `get_task_video_context` is intentionally MCP-only. Extracting frames from a
  task's videos so an agent can see them is an MCP-native rich-context
  capability; exposing raw extracted frames over REST is deliberately out of
  scope for v1. This is a documented divergence, not a missing feature.
- The GitHub integration tools are copilot-only. They power the in-app AI
  copilot and have no public REST surface; adding GitHub actions to `/v1` is a
  deliberate, owner-gated scope expansion — not a gap v1 intends to fill.

## REST quickstart

Authenticate with a `gid_` key over Bearer auth:

```bash
curl https://app.nowgetitdone.com/v1/organizations \
  -H "Authorization: Bearer gid_YOUR_API_KEY"
```

[Full API docs →](/docs/api)

## TypeScript SDK

A typed client is available — `npm install @nowgetitdone/sdk`
([source on GitHub](https://github.com/DevinoSolutions/getitdone-sdk)).

## Agent behavior guidelines

- Respect the scopes on the credential — request only what you need, and
  expect `403 insufficient_scope` otherwise.
- Send an `Idempotency-Key` on consequential POSTs so retries are safe.
- Back off on `429` responses, honoring the `Retry-After` header.
- Switch on the stable `code` in problem responses, never the human title.
