fitbot-mcp
Server Quality Checklist
Latest release: v0.1.4
- Disambiguation5/5
Each tool addresses a distinct operation: listing boxes, listing classes, booking, canceling, and viewing attendees. There is no overlap in purpose, and the role restriction on class_attendees does not create ambiguity.
Naming Consistency4/5Most tools follow a verb_noun pattern (list_boxes, list_classes, book_class, cancel_class), but class_attendees is a noun phrase rather than an imperative verb, deviating slightly from the otherwise consistent style.
Tool Count5/5Five tools is well-scoped for a fitness class booking domain. Each tool is necessary and covers the core user flow without redundancy.
Completeness4/5Core operations (view schedule, book, cancel) are covered, but there is no direct way to list a user's own upcoming bookings across days, requiring agents to call list_classes repeatedly. This is a minor gap that can be worked around.
Average 4.2/5 across 5 of 5 tools scored. Lowest: 3.6/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 17 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It implicitly signals a read-only operation ('Lista') and adds useful context about returned fields, but it does not explicitly state that no changes are made, nor does it address dates, auth, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose and lists the key returned data. Every word adds value and there is no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with a well-described schema and no output schema, the description manages to convey the return context (schedule, coach, occupancy, enrollment status). It lacks explicit sibling differentiation, but that gap is largely covered by the clear purpose statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the date parameter is described with format and default behavior, and boxId is described with its conditional need. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lista' with resource 'clases de un día concreto' and enumerates useful output details (horario, coach, plazas ocupadas, inscripción). This clearly distinguishes it from sibling tools like book_class, cancel_class, and class_attendees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus siblings. It does not mention that class_attendees is for viewing attendees of a specific class or that book_class/cancel_class are for actions. The only conditionality noted is the boxId parameter, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the waiting-list behavior via insist=true and the disambiguation logic, but doesn't mention important traits like idempotency, confirmation responses, or authorization requirements. Some transparency is present, but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: action, identification method, disambiguation rule, and waiting-list option. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 6 optional parameters and no output schema, the description covers the main booking flow and edge cases (multiple classes, full class). It omits return-value details and prerequisites, but for a booking tool the core behaviors are addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining how parameters relate: time or classId for identification, name for disambiguation, insist for waiting list. This clarifies semantics beyond the individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Reserva una clase' (Book a class), a clear verb+resource statement. It distinguishes from siblings like cancel_class and list_classes by specifying the booking action and how to identify the class (time or classId).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage guidance: identify by start time or classId, add 'name' to disambiguate when multiple classes overlap, and use insist=true for waiting list. It doesn't explicitly exclude alternatives but gives clear context for when to use the tool and how to handle ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently notes the role-based restriction and the distinct behavior for client accounts (returning an informative note). This goes beyond the basic purpose and adds useful behavioral context, though it does not detail other behaviors like error handling or output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: one sentence states the primary purpose, and a second sentence provides a critical usage note. Every word earns its place, and the important role restriction is highlighted clearly without unnecessary padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has five optional parameters and no output schema, the description delivers the essential context: what the tool does and who can use it. It does not explain how to specify which class (leaving that to the schema), but the role restriction is crucial and well covered. This is reasonably complete for a read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all five parameters with descriptions, so the baseline score is 3. The description itself adds no additional parameter semantics beyond what the schema already provides, leaving parameter interpretation to the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Lista quién se ha apuntado a una clase' (lists who signed up for a class). This unambiguously distinguishes it from sibling tools like list_classes, book_class, cancel_class, and list_boxes, as it focuses specifically on attendees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-not scenario: it notes that only coach/administrator accounts can view the list, while client accounts receive an informative note instead. This gives practical usage guidance, though it does not explicitly mention alternative tools or contrast with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It mentions that late cancellation may incur a penalty depending on the box, which is a meaningful side effect. However, it does not describe other outcomes like confirmation or reversibility, but the primary effect (cancellation) is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences that are front-loaded with the core action and followed by essential usage details. There is no redundancy or filler, and every word contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has six optional parameters and no output schema, the description is reasonably complete. It covers the main usage scenario (identifying and canceling a reservation) and mentions the late penalty. However, it does not explicitly state that at least one of time or classId is required, and it does not hint at the response format. These minor gaps are partially mitigated by the schema's parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all six parameters (100% coverage). The description adds value by linking parameters together: it explains that you can identify the reservation via 'time' or 'classId', and clarifies the purpose of 'late'. This goes beyond the schema's individual parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Cancela tu reserva en una clase' (Cancel your reservation in a class). It also specifies how to identify the reservation (by start time or classId), making it distinct from sibling tools like book_class. The verb and resource are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage instructions: identify the reservation by start time or classId, and use late=true for cancellations outside the deadline. It does not explicitly compare with alternatives, but the context of a cancellation tool alongside book_class makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'muestra' (shows) implies a read-only operation, and the phrase 'asociados a tu cuenta' indicates data is scoped to the authenticated user. Since there are no annotations, this description provides the necessary behavioral context for a safe listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence in Spanish that directly states what the tool does and returns. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (0 parameters, no output schema), the description adequately covers the tool's purpose and output. It mentions the returned field (boid), making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the description has nothing to add. The baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool lists the boxes (gyms) associated with the account and includes their boid. This is a specific verb+resource that clearly distinguishes it from the sibling class-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case of retrieving one's own gym boxes and their IDs. It does not explicitly mention alternatives or when-not-to-use, but the context is clear given the sibling tools are about classes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/alliso/fitbot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server