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

# MCP: Project To-dos and Quizzes

> Eleven MCP tools for safe Project To-do and quiz management: no-write preflights, mandatory audiences, and signed broad-assignment receipts.

The OpenTrain MCP server manages the same Project To-dos list employers and AI trainers see in the product. These tools are available in local stdio package `@opentrain-ai/mcp` **0.5.2 or later** and on the hosted endpoint at `https://app.opentrain.ai/mcp`.

All tools follow the [Project To-dos safety contract](/docs/developers/concepts/project-todos): explicit audiences, strict `SELECTED` validation, signed preflight receipts for broad assignments, and request-bound idempotency.

The configured account must have the default-off Project To-dos agent surface
enabled. A full-access key supplies the scopes below but does not bypass that
account gate; `AGENT_SURFACE_DISABLED` is an enablement error, not a reason to
rotate the key.

## Tools

| Tool                                               | What it does                                                                                                                                                                                                   |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `opentrain_list_project_todos`                     | Read the catalog, roster, assignments, and summary for a job or contract.                                                                                                                                      |
| `opentrain_export_project_todos_csv`               | Download per-person statuses as CSV (emails redacted).                                                                                                                                                         |
| `opentrain_preflight_project_todo`                 | NO-WRITE preview of a create, update+reissue, assign, or archive: masked recipients, exact counts, due/blocking behavior, duplicate warnings, archive effects, and the signed receipt broad audiences require. |
| `opentrain_create_project_todo`                    | Create one item and its assignments atomically. `audience` is mandatory; broad audiences require the matching receipt.                                                                                         |
| `opentrain_assign_project_todo`                    | Assign an existing item to a stated audience.                                                                                                                                                                  |
| `opentrain_archive_project_todo`                   | Archive with a mandatory audited reason after previewing the exact open assignments that will close.                                                                                                           |
| `opentrain_manage_project_todo`                    | Advanced action union for the remaining actions (enable/disable, categories, transitions, review).                                                                                                             |
| `opentrain_read_project_todo_quizzes`              | Quiz reads: forms, one form, results, one attempt, roster, CSV.                                                                                                                                                |
| `opentrain_preflight_project_todo_quiz_assignment` | NO-WRITE preview of one quiz assignment, mirroring every live gate, with the receipt for broad audiences.                                                                                                      |
| `opentrain_assign_project_todo_quiz`               | Create and assign a quiz to-do pinned to one immutable published version.                                                                                                                                      |
| `opentrain_manage_project_todo_quiz`               | Advanced quiz union: authoring, publishing, grading, release, and retakes.                                                                                                                                     |

## Safety behavior

* `create_item` and `assign` refuse to run without an explicit `audience` — in the focused tools and in both generic unions — before any request is sent. OpenTrain never defaults to all active workers.
* The generic unions cannot bypass recipient preview: fan-out and quiz-assignment bodies are redirected to the focused preflight-then-mutate tools.
* Receipts are minted by the preflight tools, live about 15 minutes, and die early if the roster or the exact payload changes.
* Retries with the same `idempotencyKey` converge; a replay reports itself and never widens the original fan-out. `update_item` is the exception — it publishes a new immutable version per call and must not be blind-retried.

## Permissions

Reads require `project_todos:read`; every mutation requires `project_todos:write` and a claimed account. See [Scopes and capabilities](/docs/developers/concepts/scopes-and-capabilities), the [API reference](/docs/developers/api-reference/project-todos/overview), and the [quiz surface](/docs/developers/api-reference/project-todos/quizzes/overview).
