Live technical MCP reference
The canonical list of the tools your AI agent can call on Protocol — 18 intent verbs grouped by access level, the entities they read and write, and the connection facts (MCP standard, connector URL, server version). For power users and developers wiring up an MCP client.
Advanced This page is the technical reference for the tools your connected assistant actually has. The other AI agent guides explain the feature in plain language; this one lists the exact verbs (MCP tools) Protocol exposes, what each reads or writes, and the connection facts you’d want when wiring up a developer MCP client. If you just want to use the feature, start with Connecting your assistant — you don’t need anything here.
The surface is deliberately small. Protocol exposes 18 intent verbs, not hundreds of CRUD endpoints. Each verb is a high-level coaching action (“build a workout,” “review this client,” “schedule something”) that does the right thing under the hood. A small, sharp surface is easier for an AI to use well — and easier for you to reason about. This list is generated from the same definitions the live server serves, so it stays true to the product.
Connection facts
| Protocol | speaks the open MCP (Model Context Protocol) standard — any MCP-capable client can connect |
| Connector URL | shown on the AI Agent page (open it from your profile menu); ends in /mcp |
| Auth | browser sign-in & approve (OAuth-style), or a manual key (pk_…) as the bearer token |
| Server name / version | protocol · 1.0.0 |
| Transport | remote MCP over HTTP |
| Tools served | 18 verbs, filtered by the access level you granted (read / write / send) |
Every connecting client also receives a short server instruction that tells the assistant to write like a thoughtful human coach (realistic, round real-world numbers — never calculator-perfect fractions), to mirror your existing style, and — when it hits a wall — to tell you plainly and offer to file a note to Protocol’s developers rather than fake a result.
The 18 verbs at a glance
Verbs are grouped by the lowest access level that can call them. Access is cumulative — a
send key can call everything; a write key can call read + write; a read key can call only the
reads. (How you pick a level: Safety, scopes & privacy.)
| Access level | Verbs |
|---|---|
| Read (4) | find · get · review_client · message |
| Write (12) | manage_client · build_program · assign_program · build_workout · build_nutrition · record_progress · manage_library · manage_forms · manage_tasks · review_inbox · manage_media · report_to_developers |
| Send (2) | schedule · manage_automations |
Read verbs
Never mutate anything — safe for a research-only connection.
| Verb | What it does | Key inputs |
|---|---|---|
find |
List or search any kind of entity (the polymorphic list verb). | kind (required) + filters: query, clientId, formId, isTemplate, status, limit |
get |
Fetch one entity by id, in full detail. | kind (required), id (required) |
review_client |
One call returns a whole client context bundle — profile, programs, nutrition, recent progress, upcoming appointments, open tasks, and insights. | clientId (required) |
message |
Read conversations and their messages. Read-only — it can never send a client a message. | conversationId (messages in a thread) or clientId (filter the list), limit |
Entity kinds for find and get
find and get both take a kind. Most kinds support both; a few are list-only.
| Kind | find |
get |
|---|---|---|
client |
✓ | ✓ |
program |
✓ | ✓ |
workout |
✓ | ✓ |
nutrition |
✓ | ✓ |
exercise |
✓ | ✓ |
food |
✓ | ✓ |
appointment |
✓ | ✓ |
form |
✓ | ✓ |
task |
✓ | ✓ |
board |
✓ | ✓ |
automation |
✓ | ✓ |
progress |
✓ | ✓ |
purchase |
✓ | ✓ |
media |
✓ | ✓ |
report |
✓ | ✓ |
submission |
✓ | ✓ |
transcript |
✓ | ✓ |
conversation |
✓ | — |
lifecycle_stage |
✓ | — |
lab |
✓ | — |
health_metric |
✓ | — |
The four list-only kinds (conversation, lifecycle_stage, lab, health_metric) are read in
context — through message, review_client, or a client’s bundle — rather than fetched one-by-id.
Write verbs
Direct, live writes — there’s no draft queue and no Apply step. They’re the reversible, everyday kind of change (you can edit or undo them in the dashboard). No verb permanently deletes.
| Verb | What it does | Notable inputs / actions |
|---|---|---|
manage_client |
Create or update a client in one call — core details, the three profiles (health / fitness / nutrition), lifecycle stage, trainer assignment, and the tenant’s stage list. | create {…}, clientId, healthProfile, fitnessProfile, nutritionProfile, lifecycleStageId, assignTrainerId; nested lifecycleStage action: create · update · reorder |
build_program |
Create or edit a program’s structure (sections, phases, content). Never copies — that’s assign_program. |
programType: WORKOUT · NUTRITION · FULL; name, sections, phases, importWorkoutId |
assign_program |
Lifecycle & assignment on a program — deep-copies a template onto a client, activates, etc. | action: assign · activate · deactivate · move · unlink; copyFromProgramId, userId, startDate |
build_workout |
Create or edit a workout — as a reusable template or straight onto a client. | difficulty: EASY · MODERATE · HARD · VERY_HARD; goal: WEIGHT_LOSS · MUSCLE_GAIN · STRENGTH · ENDURANCE · FLEXIBILITY · SPORT_SPECIFIC · GENERAL_FITNESS · REHABILITATION; exercises, isTemplate |
build_nutrition |
Create or edit a nutrition template; macros are computed from the items. | name, items (meal headers + food rows), userId |
record_progress |
Record a progress entry, draft/approve a progress report, or add a meeting note. | action: entry · report · note; report sub-action: update · approve · discard |
manage_library |
Tenant library — create/update an exercise, or resolve food names to library foods. | action: create_exercise · update_exercise · resolve_foods |
manage_forms |
Create or update a form (questions, theme, settings). | action: create · update; presentationType: SINGLE_PAGE · MULTI_PAGE · HABIT_TRACKING · PROGRESS_TRACKING |
manage_tasks |
The whole kanban surface — tasks, subtasks, boards, columns, labels. | action (16): create_task, update_task, complete_task, move_task, archive_completed, create_subtask, update_subtask, toggle_subtask, reorder_subtasks, create_board, update_board, create_column, update_column, reorder_columns, create_label, update_label |
review_inbox |
The coach’s “what needs me” bundle (dashboard, notifications, unread count, insights) plus triage. | action: overview · mark_read · mark_all_read · dismiss_insight · mark_insight_read |
manage_media |
Media library — register a hosted URL, manage categories, and shares. Never emails. | action: attach · update · create_category · update_category · share · update_share |
report_to_developers |
Escalate a gap to Protocol’s developers (internal inbox; never reaches a client). | summary (required), goal, toolOrArea, error |
Send verbs
The only two verbs with an outward, client-facing path. They need the highest access level
(read + write + send) so reaching a client is always a deliberate choice.
| Verb | What it does | The outward action |
|---|---|---|
schedule |
Calendar — create / update / cancel appointments, configure booking, and manage reminders. | action: create · update · cancel · reminder · booking_config · gcal_disconnect · send_reminder — send_reminder fires a client reminder now |
manage_automations |
Build and operate automations. | action: create · update · activate · pause · archive · run — run dispatches an execution |
What’s deliberately not in the surface
- The legacy CRUD tools. Under the hood these 18 verbs delegate to a larger internal library of fine-grained operations. Those are an implementation detail — they’re not exposed to your assistant, by design. You drive intent; Protocol composes the steps.
- The four hard limits, at any access level. No verb exists to message a client, touch billing, permanently delete a record, or generate with Protocol’s own AI. These have no tool at all — no access level unlocks them. See Safety, scopes & privacy.
Stability
The verb names, kinds, and actions above are the stable contract your assistant builds against. We
add capability inside existing verbs (new kinds, new actions) far more often than we add new
verbs — so a client written against this surface keeps working. This page is bumped whenever the
surface changes; the last-reviewed date at the top tells you when it last matched the live server.
Back to: AI agent overview · Connecting your assistant · Safety, scopes & privacy