Intervals.icu MCP Server
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool has a clearly distinct purpose with no overlap: get_activities retrieves individual activity records, get_grouped_activities provides aggregated activity summaries, get_wellness fetches individual wellness metrics, and get_grouped_wellness offers aggregated wellness trends. The descriptions explicitly differentiate between individual data retrieval and grouped analysis for both domains.
Naming Consistency5/5All tools follow a perfectly consistent verb_noun pattern with clear prefixes: get_activities, get_grouped_activities, get_wellness, get_grouped_wellness. The naming convention is uniform throughout, using snake_case consistently and maintaining parallel structure between activity and wellness domains.
Tool Count4/5Four tools is reasonable for a fitness/wellness data server, covering the core domains of activities and wellness with both individual and grouped variants. However, the count feels slightly minimal - there might be room for additional operations like creating or updating records, though the current set adequately serves basic retrieval and analysis needs.
Completeness3/5The toolset provides excellent read/analysis coverage for activities and wellness data, but lacks any write operations (create, update, delete). For a fitness tracking platform where users might want to log new activities or update wellness metrics, this represents a notable gap. The surface is complete for retrieval and analysis but incomplete for full CRUD lifecycle management.
Average 4.6/5 across 4 of 4 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.
If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.
MCP servers without a LICENSE cannot be installed.
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
- 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 effectively describes key behaviors: it's a read operation (implied by 'fetching'), includes constraints (date format requirements, warnings about large date ranges), error handling (raises ValidationError and IntervalsError), and return structure. It doesn't mention rate limits or authentication needs, but covers most critical aspects for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness3/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Best for, Not recommended, etc.), but it's verbose with redundant elements. The 'Prompt Example' and 'Usage Example' are somewhat repetitive, and the 'Parameters' and 'Returns' sections duplicate information that could be inferred from the schema. It's front-loaded with key info but includes unnecessary detail.
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 tool's complexity (2 parameters, no annotations, but with output schema), the description is highly complete. It covers purpose, usage guidelines, behavioral traits, parameter semantics, error handling, and relationships with sibling tools. The output schema exists, so the description appropriately explains return values without over-documenting them. No significant gaps remain for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully documents both parameters: oldest_date (required, YYYY-MM-DD format) and newest_date (optional, same format, with default behavior if not provided). The description adds essential meaning beyond the bare schema, including format requirements and behavioral details like 'no upper date limit' for missing newest_date.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches wellness data from intervals.icu for a configured athlete, specifying the resource (wellness data) and source (intervals.icu). It distinguishes from sibling tools by mentioning get_grouped_wellness for trend analysis, though it doesn't explicitly differentiate from get_activities or get_grouped_activities. The purpose is specific but not fully sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not recommended for' sections, detailing use cases (daily wellness metrics, health trends) and exclusions (real-time monitoring, medical diagnosis). It also names an alternative tool (get_grouped_wellness) for trend analysis, offering clear when-to-use and when-not-to-use advice.
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 effectively describes key behaviors: it's a read operation (implied by 'fetching'), warns about potential timeouts with large date ranges, specifies date format requirements, and outlines error conditions (ValidationError, IntervalsError). However, it doesn't explicitly mention rate limits, authentication needs, or pagination details, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Best for, Not recommended for, Common mistakes, Prompt Example, Usage Example, Tool Relationships, Returns, Parameters, Raises), making it easy to scan. While comprehensive, it's slightly verbose with some redundancy (e.g., date format repeated multiple times), but every section adds value, so it's appropriately sized for the tool's complexity.
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 tool has 2 parameters with 0% schema coverage, no annotations, but has an output schema, the description provides excellent contextual completeness. It fully documents parameters, usage guidelines, behavioral traits (timeouts, errors), relationships with sibling tools, and includes examples. The output schema handles return values, so the description's Returns section is sufficient without needing to detail every field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must fully compensate. It does so excellently: it clearly documents both parameters (oldest_date, newest_date), specifies required vs. optional status, explains format (YYYY-MM-DD), describes default behavior (no upper limit if newest_date not provided), and includes prompt and usage examples that illustrate parameter usage. This adds substantial meaning beyond the bare 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 explicitly states the tool's purpose as 'fetching activities from intervals.icu for the configured athlete' and distinguishes it from siblings by noting it's the 'Primary tool' for getting a 'complete list of activities within a date range'. It clearly specifies the verb (fetching/getting), resource (activities), and scope (date range, configured athlete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with dedicated sections: 'Best for:' lists specific use cases (complete list, analyzing training history, exporting), 'Not recommended for:' warns against large date ranges without pagination and real-time tracking, and 'Tool Relationships:' directs to sibling tools (get_grouped_activities for aggregated analysis, get specific details as needed). This covers when to use, when not to use, and alternatives.
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 effectively describes the tool's purpose, common mistakes (e.g., invalid group_by values), and return structure, though it lacks details on rate limits, authentication needs, or error handling beyond the 'Raises' section. It adds significant value beyond the input schema without contradicting any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Best for, Not recommended, Parameters, Returns, etc.), but it includes redundant elements like the JSON usage example and prompt examples that could be condensed. Most sentences earn their place by providing useful information, though some formatting adds bulk without proportional value.
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?
For a tool with 4 parameters, 0% schema coverage, no annotations, but an output schema, the description is highly complete. It covers purpose, usage guidelines, parameters, returns, errors, and relationships with sibling tools, providing all necessary context for an agent to understand and invoke the tool correctly without relying on structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description compensates fully by detailing all parameters in the 'Parameters' section, including their purposes, formats, defaults, and optionality. It explains 'oldest_date' as the oldest date to fetch from, 'newest_date' as an optional upper limit, 'group_by' options, and 'include_details' effect, adding crucial meaning beyond the bare 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 'fetches and groups activities to reduce data volume and show patterns,' which is a specific verb+resource combination. It distinguishes from sibling tools like 'get_activities' by emphasizing grouping and summarization rather than individual activity retrieval, making the purpose unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not recommended for' sections, clearly outlining when to use this tool versus alternatives. It mentions using it after 'get_activities' for analysis or directly for summarized data, and warns against using it for individual details or real-time tracking, offering comprehensive usage context.
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 effectively describes the tool's behavior: it groups data over time periods, returns averages and statistics, and includes warnings about common mistakes (e.g., invalid group_by values). However, it lacks details on error handling beyond the 'Raises' section, such as rate limits or authentication needs, which could be more explicit 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.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (e.g., 'Best for:', 'Parameters', 'Returns'), but it is somewhat lengthy due to including examples and detailed parameter info. Every sentence adds value, such as usage examples and tool relationships, but it could be more front-loaded by emphasizing key points earlier to improve efficiency.
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 complexity of the tool (4 parameters, no annotations, schema coverage 0%), the description is highly complete. It covers purpose, usage guidelines, parameters, returns (with an output schema provided), and error handling. The presence of an output schema reduces the need to explain return values in detail, and the description supplements this adequately with examples and contextual info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate fully. It does so by providing detailed parameter semantics in the 'Parameters' section, including data types, formats (e.g., YYYY-MM-DD), optionality, default values, and allowed options for 'group_by' (e.g., 'week', 'month', 'all'). This adds significant meaning beyond the basic input 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 purpose: 'fetching and grouping wellness data to show trends and patterns.' It uses specific verbs ('fetching,' 'grouping') and distinguishes from sibling tools by mentioning 'get_wellness' for individual records versus this tool for trend analysis. The title is null, so the description fully carries this burden.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for:' and 'Not recommended for:' sections, clearly stating when to use this tool (e.g., analyzing trends over time) versus alternatives (e.g., individual day analysis). It also includes 'Tool Relationships' that references sibling tools like 'get_wellness' for context on when to use this tool directly or after others.
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/VSidhArt/intervals-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server