MCP server (AI assistants)
The MCP server lets Claude — or any Model Context Protocol client — read and run your studio in plain language. Ask "what's on next week's schedule?", "add a Tuesday 7pm vinyasa class with Sam", or "invite this member", and the assistant calls the same scoped operations as the Management API on your behalf. Every tool is gated by a scope, so an assistant can only do what you allow.
Endpoint
https://flow-management-api.massimo.click/mcp
It speaks Streamable HTTP MCP. Connect it two ways — pick whichever your client supports.
Connect with one-click sign-in (OAuth)
Best for interactive clients (Claude Desktop, the Claude apps, IDE assistants). The client discovers the server, registers itself automatically, and opens a browser window where you sign in to your studio and approve access — no keys to copy. The assistant then connects with your own permissions, and you can disconnect any time from your AI assistant's settings.
- In your assistant, add a connector / MCP server with the endpoint above.
- A browser window opens — sign in to your studio and approve.
- The assistant is connected. That's it.
Connect with a secret key
Best for automated or headless clients. Create a secret key (flow_sk_…) on
the Developer page in your studio settings, grant it the
scopes you want the assistant to have, and present it as a bearer token:
Authorization: Bearer flow_sk_your_secret_key
Keep secret keys server-side — never paste one into a public or shared place. Rotate or revoke it any time; the assistant loses access immediately.
Scopes the tools use
The tools below require these scopes. Grant a key only the ones you need —
read-only scopes (…:read) let an assistant look but not change anything; write
scopes (…:write) let it make changes.
classes:read, classes:write, content:read, content:write, coupons:read, coupons:write, instructors:read, instructors:write, locations:read, locations:write, members:read, members:write, plans:read, plans:write, programs:read, programs:write, schedule:read, schedule:write
Add it to Claude Desktop
Claude Desktop connects to a remote MCP server through the mcp-remote bridge.
Add this to your claude_desktop_config.json (Settings → Developer → Edit
Config), then restart Claude Desktop:
{
"mcpServers": {
"flowstate": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://flow-management-api.massimo.click/mcp"]
}
}
}
On first use a browser window opens for one-click sign-in. To connect with a secret key instead, pass it as a header:
{
"mcpServers": {
"flowstate": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://flow-management-api.massimo.click/mcp",
"--header",
"Authorization: Bearer flow_sk_your_secret_key"
]
}
}
}
Any other MCP client
For clients that accept a server URL directly (no bridge), add the endpoint as a remote MCP / Streamable-HTTP server:
https://flow-management-api.massimo.click/mcp
Then choose one-click sign-in or paste a secret key as a bearer token, exactly as above.
Tool catalog
These are the tools an assistant can call. Each maps to a Management API capability and is gated by the same scope, so an assistant can never reach something its key (or your approval) didn't grant. The list grows as new tools ship — read-only tools are safe to grant broadly; write tools change your studio's data.
| Tool | What it does | Access | Required scope |
|---|---|---|---|
list_classes |
List classes | Read | classes:read |
list_members |
List members | Read | members:read |
list_schedule |
List scheduled sessions | Read | schedule:read |
list_content |
List on-demand videos | Read | content:read |
list_plans |
List plans | Read | plans:read |
list_instructors |
List instructors | Read | instructors:read |
list_locations |
List locations | Read | locations:read |
list_coupons |
List coupons | Read | coupons:read |
list_programs |
List programs | Read | programs:read |
create_class |
Create a class | Write | classes:write |
cancel_class |
Cancel a class | Write | classes:write |
reschedule_occurrence |
Reschedule a session | Write | schedule:write |
invite_member |
Invite a member | Write | members:write |
update_content |
Update a video's details | Write | content:write |
create_plan |
Create a plan | Write | plans:write |
update_plan |
Update a plan | Write | plans:write |
archive_plan |
Archive a plan | Write | plans:write |
create_instructor |
Create an instructor | Write | instructors:write |
update_instructor |
Update an instructor | Write | instructors:write |
create_location |
Create a location | Write | locations:write |
update_location |
Update a location | Write | locations:write |
delete_location |
Delete a location | Write | locations:write |
create_room |
Create a room | Write | locations:write |
update_room |
Update a room | Write | locations:write |
delete_room |
Delete a room | Write | locations:write |
update_member |
Update a member's role | Write | members:write |
cancel_membership |
Cancel a membership | Write | members:write |
create_coupon |
Create a coupon | Write | coupons:write |
archive_coupon |
Archive a coupon | Write | coupons:write |
create_program |
Create a program | Write | programs:write |
update_program |
Update a program | Write | programs:write |
Good to know
- Least privilege. A tool runs only if the connection carries its required scope; otherwise the assistant is told it isn't authorized, and nothing changes.
- Writes are safe to retry. Create and change tools accept an idempotency key, so an assistant retrying the same request won't duplicate it.
- Your data stays yours. A connection only ever sees and changes your studio — the same boundary as your own sign-in.