mindbody-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mindbody-mcpshow me classes for next Monday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mindbody-mcp
MCP server for Mindbody, the vertical CRM for wellness, fitness, and beauty studios (yoga, gyms, salons, spas, training studios). 5 tools for AI agents to fetch client info, query class schedules, book clients into classes (env-gated), book appointments (env-gated), and complete shopping cart checkout (payment-gated).
As of May 2026, Mindbody does not ship an official MCP server. Multiple community attempts exist but are unofficial and self-hosted. This is the production-quality, install-ready Python rail. Shipped same-day as Mindbody's May 28 2026 Bilt Rewards distribution partnership.
The 5 tools
Tool | Purpose | Gated? |
| Fetch detailed client profile by ID | No, safe |
| Query class schedules within a date range | No, safe |
| Enroll a client into a class | YES, |
| Schedule a wellness or training appointment | YES, |
| Process payment for passes, services, or products | YES, |
Related MCP server: meetergo-mcp
Install
pip install mindbody-mcpConfigure
export MINDBODY_API_KEY="your-mindbody-developer-api-key"
export MINDBODY_SITE_ID="your-mindbody-site-id-integer" # use -99 for sandbox
export MINDBODY_USER_TOKEN="your-mindbody-staff-user-token" # optional but required for client + write actions
export MINDBODY_ALLOW_BOOKINGS="false" # set to "true" to enable booking writes
export MINDBODY_ALLOW_CHECKOUT="false" # set to "true" to enable payment processing (separate flag for safety)Get an API key in your Mindbody Developer account. The user token is obtained via staff login flow; check the Mindbody Public API V6 docs for details.
Use with Claude Desktop
{
"mcpServers": {
"mindbody": {
"command": "mindbody-mcp",
"env": {
"MINDBODY_API_KEY": "your-mindbody-developer-api-key",
"MINDBODY_SITE_ID": "your-mindbody-site-id-integer",
"MINDBODY_USER_TOKEN": "your-mindbody-staff-user-token",
"MINDBODY_ALLOW_BOOKINGS": "false",
"MINDBODY_ALLOW_CHECKOUT": "false"
}
}
}
}Restart Claude Desktop. The 5 Mindbody tools are now available.
Use case: AI front-desk + AI personal scheduler
Read-only flow (safe, default):
Call
get_client_info(client_id)to load the caller's profileCall
list_classes(start_datetime, end_datetime)to surface available classes
Booking-enabled flow (after setting MINDBODY_ALLOW_BOOKINGS=true):
Call
book_client_to_class(client_id, class_id)to enroll the callerCall
book_appointment(client_id, staff_id, session_type_id, start_datetime)for 1-on-1 sessions
Payment-enabled flow (after setting MINDBODY_ALLOW_CHECKOUT=true):
Call
checkout_shopping_cart(client_id, item_id, item_type, quantity)to process payment
Safety note: two separate flags for write actions and payment
MINDBODY_ALLOW_BOOKINGSgates the two booking writes (class enrollment + appointment scheduling). Bookings create real reservations on the studio's calendar.MINDBODY_ALLOW_CHECKOUTgates the payment action. Checkout actually charges the client's payment method. This is intentionally a SEPARATE flag so studio owners can enable AI agent bookings without also enabling AI agent purchasing. Two-step opt-in keeps real money out of an over-eager agent's reach by default.
Billing note
Since October 1, 2023, Mindbody charges $0.002 per API call in production environments. Operators should cache responses where possible to control billing overhead. This MCP does not cache responses; caching is the operator's responsibility per workflow.
Architecture
Public MIT-licensed wrapper around the Mindbody Public API V6
Async HTTP via
httpxpydantic v2 input validation
Three-header auth:
Api-Key,SiteId, optionalAuthorization(user token)Rate-limit aware (429 returns a clean error)
Write actions gated by env flag
Payment action gated by a SEPARATE env flag
Development
git clone https://github.com/NoBanks/mindbody-mcp.git
cd mindbody-mcp
pip install -e ".[dev]"
pytestLicense
MIT. See LICENSE.
Author
Ryan Hammer (NoBanks). Solo founder + engineer. Built this and 15 other MCP servers as part of a sprint to expose AI agent rails for the products and platforms shipping daily. Built mindbody-mcp specifically as a same-day reply to Mindbody's May 28 2026 Bilt Rewards distribution partnership.
GitHub: @NoBanks
X/Twitter: @livingagentic
Open to AI engineering roles, contract or full-time, remote-only.
Available Tools
5 toolsbook_appointmentA
Schedule a single wellness or training appointment for a client with a specific staff member at a specific time. GATED behind MINDBODY_ALLOW_BOOKINGS. Returns an error if not enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | ||
| staff_id | Yes | The staff member ID providing the service | |
| session_type_id | Yes | The session type ID (massage, training, etc.) | |
| start_datetime | Yes | ISO 8601 appointment start |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the gated feature and error condition but does not describe side effects, permissions needed, or expected success response. For a creation tool, more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences that front-load the purpose and add a critical gating condition. No unnecessary words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required parameters, no output schema, and no annotations, the description lacks important context such as what the tool returns on success, prerequisites (e.g., checking availability), and any rate limits. The gating information is helpful but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (client_id missing description). The tool description does not add any parameter-level information beyond what the schema provides. While the schema itself is reasonably descriptive, the missing client_id description is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool schedules a single wellness or training appointment for a client with a specific staff member at a specific time. It distinguishes itself from sibling tools like book_client_to_class (books a class) and checkout_shopping_cart (checkout process).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the gating condition (MINDBODY_ALLOW_BOOKINGS) and error return if not enabled, but does not provide explicit guidance on when to use this tool versus alternatives like book_client_to_class. The context is implied but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_client_to_classA
Enroll a client into an upcoming studio class. GATED behind MINDBODY_ALLOW_BOOKINGS env var. Returns an error if not enabled. This action results in a real reservation.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | ||
| class_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the gating condition and that the action results in a real reservation, but lacks details on idempotency, side effects, or whether the booking is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three sentences, each serving a purpose: stating the action, noting the gating condition, and clarifying the real-world impact. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters and no output schema, the description covers the core purpose and a key constraint (env var gating), but omits details about parameter validation, failure modes like full classes, or expected behavior when successful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fails to explain the parameters 'client_id' and 'class_id' beyond the implied meaning from the action. No details on format, source, or constraints are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: enrolling a client into an upcoming studio class. The verb 'enroll' and the resource 'client into class' are explicit. It distinguishes itself from sibling tools like 'book_appointment' which likely books appointments, not classes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is gated behind an environment variable and returns an error if not enabled, but does not provide explicit guidance on when to use this tool versus alternatives like 'book_appointment' or scenarios where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkout_shopping_cartA
Process purchases and complete payment checkout for passes, services, or products. GATED behind MINDBODY_ALLOW_CHECKOUT env var. This action TAKES PAYMENT from the client. Returns an error if not enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | ||
| item_id | Yes | The Mindbody item ID to purchase | |
| item_type | Yes | Type of cart item | |
| quantity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavior. It states it takes payment and is gated, but lacks details on side effects (e.g., inventory changes, confirmation). It is reasonably transparent but not fully exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences effectively convey purpose, gate condition, and payment action. No wasted words; front-loaded with key intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the action (payment checkout) and a key prerequisite (env var). Missing details like confirmation or error scenarios, but sufficient for a payment trigger tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with descriptions for item_id and item_type. The description mentions 'passes, services, or products' which aligns with item_type enum, but does not add significant new meaning beyond schema. A baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it processes purchases and completes payment checkout for passes, services, or products. This contrasts well with sibling tools that focus on booking or client info, making its unique purpose evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions being gated behind an environment variable and warns that it takes payment and returns an error if disabled. While it doesn't explicitly list when not to use, the context strongly implies it is for payment only, distinct from booking tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_client_infoB
Fetch detailed profile information for a Mindbody client. Used by AI front-desk agents to ground responses in customer history.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The Mindbody client ID to query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'Fetch detailed profile information', omitting any behavioral traits such as read-only nature, authentication needs, error behavior, or side effects. This is insufficient for a tool without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the key action and resource, and no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though the tool is simple with one parameter and no output schema, the description fails to explain what 'detailed profile information' includes, which is critical for an AI agent to ground responses. Without output schema or description of return data, the tool is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning beyond the schema's description of 'client_id'. No additional context is provided about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'detailed profile information for a Mindbody client'. It also provides context ('Used by AI front-desk agents to ground responses in customer history'), which distinguishes it from sibling tools like book_appointment or list_classes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for grounding customer responses but does not explicitly state when to use this tool versus alternatives or provide exclusions. The sibling tools are functionally distinct, so the context is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_classesA
Query class schedules and active class lists within a date range. Used by AI scheduling agents to surface available classes to a caller.
| Name | Required | Description | Default |
|---|---|---|---|
| start_datetime | No | ISO 8601 start of window | |
| end_datetime | No | ISO 8601 end of window |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'Query class schedules and active class lists within a date range' without details on return format, pagination, or behavior when parameters are omitted. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, directly to the point, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should clarify what the tool returns. It only mentions a query action but omits result format, limiting the agent's understanding of how to use the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond the schema's ISO 8601 format specification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it queries class schedules and active class lists within a date range, specifically for AI scheduling agents. This distinguishes it from sibling tools like book_appointment or book_client_to_class.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Context is provided for AI scheduling agents to surface available classes, implying when to use. However, it does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
book_appointment - First observed
book_client_to_class - First observed
checkout_shopping_cart - First observed
get_client_info - First observed
list_classes
TDQS
Each tool targets a distinct action: booking an appointment, booking a class, processing payment, fetching client info, and listing classes. No functional overlap.
All tools use consistent snake_case verb_noun pattern (book_appointment, book_client_to_class, checkout_shopping_cart, get_client_info, list_classes).
5 tools is well within the ideal 3-15 range and covers core scheduling and client operations without feeling sparse or bloated.
Covers basic booking and client info but lacks cancel/modify appointments, staff listing, or class search beyond listing. Notable gaps for full lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Housecall Pro, providing 5 tools for AI agents to register customers, schedule jobs, create estimates, log leads, and generate invoices (env-gated).5MIT
- AlicenseAqualityCmaintenanceMCP server that exposes meetergo's scheduling and CRM API as tools for AI assistants, enabling Proton Calendar-backed booking management and contact operations without Google Workspace.37BSD 3-Clause
- AlicenseAqualityCmaintenanceMCP server for CourtReserve racquet-sports club management, enabling AI clients to manage members, reservations, events, and transactions via natural language.29MIT
- AlicenseNot gradedqualityCmaintenanceMCP server wrapping Monday.com GraphQL API to enable AI agents to interact with Monday.com boards, items, and workspaces through natural language or tool calls.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NoBanks/mindbody-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server