> ## Documentation Index
> Fetch the complete documentation index at: https://docket.hypertext.studio/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Developer overview

> Docket's MCP server, REST API, and OAuth apps, and which one fits what you are building.

Three ways in, one domain model. Every call runs as a real person, under that person's grants.

<CardGroup cols={3}>
  <Card title="MCP server" icon="robot" href="/docs/developers/connect-an-agent-mcp">
    Point an agent at `/mcp` for 25 tools over Streamable HTTP. **The most complete way in.**
  </Card>

  <Card title="REST API" icon="code" href="/docs/developers/rest-api">
    More than 470 operations under `/v1`. Read them at `/v1/docs`.
  </Card>

  <Card title="OAuth apps" icon="key" href="/docs/developers/authentication">
    Register a client, ask for `work:read`, call as the person who consents.
  </Card>
</CardGroup>

<Warning>
  Docket's public API is **in early access**. There is no SDK, and the API is unversioned. Read
  [Platform status](/docs/developers/platform-status) first.
</Warning>

## MCP, REST, or an OAuth app

| You are building                      | Use                                                           |
| ------------------------------------- | ------------------------------------------------------------- |
| An AI agent that works in Docket      | [MCP](/docs/developers/connect-an-agent-mcp)                       |
| A script that syncs something nightly | [REST](/docs/developers/rest-api)                                  |
| A product other Docket users install  | [OAuth app](/docs/developers/authentication) + MCP or REST         |
| An integration that reacts to changes | REST plus the [SSE stream](/docs/developers/rest-api#live-updates) |

Call `capture` and "email the caterer by Friday" becomes a task. `organize` writes a twelve-item
plan in one call, and a second run creates no duplicates.

## The model in one screen

Docket scopes every row to one **Organization**, the tenant boundary.

```
Organization
  ├─ Team          owns workflow states, cycles, and a triage queue
  ├─ Initiative    a theme; no work of its own; links to Programs and Projects
  ├─ Program       ongoing operations; contains Projects and Tasks
  ├─ Project       a bounded effort; contains Tasks and Milestones
  └─ Task          the atomic unit; subtasks, acyclic dependencies, attachments, labels
```

Use a Program for work that never finishes, like customer support. Use a Project for "Launch v2",
which closes when it ships. Cycles schedule Tasks into a team's two-week window without containing
them. Updates set health: `on_track`, `at_risk`, `off_track`.

Two kinds of edge:

| Kind            | What it is                                                                                                                    |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Containment** | A hard parent-to-child edge. Grant someone `contribute` on a Program and it applies to every Project and Task in it.          |
| **Association** | A soft link. Delete it and both sides remain. An Initiative themes a Project, a Cycle schedules a Task, a Task blocks a Task. |

<Note>
  Workspaces relabel these words: a Cycle may display as a Season. **The API always uses the default
  names.** See [Terminology](/docs/guides/concepts/terminology).
</Note>

## Conventions every call follows

|                   |                                                                                                             |
| ----------------- | ----------------------------------------------------------------------------------------------------------- |
| **Identifiers**   | 26-character ULIDs. They sort. Never parse them.                                                            |
| **Pagination**    | Pass `cursor` and `limit`. Read `nextCursor`.                                                               |
| **Errors**        | RFC 9457 problem documents. Branch on `code`, such as `dependency_cycle`. See [Errors](/docs/developers/errors). |
| **Idempotency**   | Send an `Idempotency-Key` header on unsafe operations.                                                      |
| **Authorization** | `view < comment < contribute < assign < manage`. Reassigning a task needs `assign`.                         |

## What a token can do

**A token never grants more than the human behind it has.** Docket checks the scope first, then
that person's own grants. Someone with `view` on "Launch v2" cannot write to it with a `work:write`
token.
