Skip to main content
Glama

Am I recovered? Did my fueling work? What should change next week? The only MCP combining MacroFactor nutrition with Garmin training data.

MacroFactor MCP is a local Fueling & Recovery Decision Engine. Give your MCP client a MacroFactor export, optionally add Garmin, and ask for a decision instead of manually comparing nutrition, sleep, body, and training screens.

Quickstart

Install uv, then confirm the packaged server starts:

uvx macrofactor-mcp

Export your data from MacroFactor, put the .xlsx file in one local directory, and add this to your MCP client configuration. Use absolute paths.

{
  "mcpServers": {
    "macrofactor": {
      "command": "uvx",
      "args": ["macrofactor-mcp"],
      "env": {
        "MACROFACTOR_DATA_DIR": "/absolute/path/to/macrofactor-exports",
        "MACROFACTOR_DB_PATH": "/absolute/path/to/macrofactor.duckdb"
      }
    }
  }
}

Restart the MCP client. The server imports new workbooks on startup. Run setup_check, then ask one of the questions below. If a desktop client cannot find uvx, replace "uvx" with the absolute path returned by which uvx.

Related MCP server: DkwtMCP

Four flagship workflows

All examples below use synthetic data.

recovery_check — Am I recovered?

Combines last night's sleep, HRV, body battery, training load, and yesterday's fueling into a readiness view.

Recovery Check: 2026-07-08
Sleep: 7h 38m, score 82; HRV +4 vs 7-day average
Training load: ACWR 1.08 (optimal)
Yesterday: 96% calorie target; 101% protein target
Overall: All systems go — 4 positive signals.

daily_briefing — What do today's signals say together?

Shows the day as one picture instead of separate nutrition and training logs.

Daily Briefing: 2026-07-08
Intake: 2,340 kcal (P 171g / F 72g / C 248g)
Adherence: 98% calories | 101% protein
Body Battery: 28 → 83 | Sleep: 7h 38m, score 82
Training: Productive | Load 612/568 (ACWR 1.08)

weekly_report — What should change next week?

Reviews seven days of nutrition, weight, workouts, sleep, and training load.

Weekly Report: 2026-07-02 to 2026-07-08
Average: 2,315 kcal | 168g protein
On target: calories 6/7 days | protein 7/7 days
Training: 4 sessions | Sleep: 7h 26m average
Next-week signal: fueling was consistent; protect sleep before adding load.

nutrition_performance_correlation — Did my fueling work?

Compares nutrition with next-day Garmin recovery signals. It reports sample sizes so small or missing datasets stay visible.

Nutrition → Performance Correlation: 28 paired days
Protein >=90% target: next-day HRV 51 vs 45 (+6)
Protein >=90% target: sleep score 81 vs 76 (+5)
Energy deficit days: body battery 68 vs 75 (-7)
Observation: higher-protein days tended to precede better recovery.

MacroFactor-only or MacroFactor + Garmin

Mode

Decisions available

MacroFactor only

Nutrition, weight, workouts, daily_briefing, and weekly_report. Recovery output uses the nutrition signals that exist.

MacroFactor + Garmin

All four flagship workflows, including sleep, HRV, body battery, activities, and training load.

Garmin is optional. To enable it, point GARMINTOKENS at an existing local Garth/Garmin token directory, then run sync_garmin.

Platform support

  • macOS and Linux

  • Windows is untested

  • Python 3.10 or newer

Limitations

  • v0.1 requires a manual MacroFactor export; it does not connect to a MacroFactor API.

  • Garmin correlation workflows need overlapping MacroFactor and Garmin dates.

  • Correlations are observational, not proof that one behavior caused another outcome.

  • Import support follows the current MacroFactor Quick Export and All-Time Data workbook layouts.

Privacy

Raw nutrition, body, workout, and Garmin data stays in the local DuckDB database. The server does not upload that database. However, MCP tool results are sent to whatever model or client the server is connected to. Review that client's data policy and avoid requesting more detail than you want to share.

Disclaimer

This is an unofficial project. It is not affiliated with, endorsed by, or supported by MacroFactor or Stronger By Science. It is not medical advice and must not replace care from a qualified health professional.

Released under the MIT License.

mcp-name: io.github.NasserAlbusaidi/macrofactor-mcp

Available Tools

29 tools
analyze_meal_patternsA

Analyze meal timing, frequency, and which foods correlate with hitting targets.

Shows when you eat, how many meals per day, most frequent foods, and which
foods appear most on days where you hit your calorie and protein targets.

Args:
    start_date: Start date (YYYY-MM-DD). Default: 30 days ago.
    end_date: End date (YYYY-MM-DD). Default: today.
    limit: Max foods to show per category (default 15).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral transparency. It does not disclose whether the tool is read-only, requires authentication, or has any side effects. For an analysis tool, it likely does not modify data, but this is not stated, leaving uncertainty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a clear first sentence summarizing the tool, a second line listing outputs, and an Args section. Every sentence adds value, and the format is front-loaded for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (not shown), the description appropriately does not detail return values. It covers the main analysis categories. However, it could mention the date range defaults or that it works with logged meals, but overall it is sufficiently complete for a read-only analysis tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description's Args section provides full meaning for all three parameters: start_date (default 30 days ago), end_date (default today), and limit (max foods per category, default 15). This adds significant value beyond the schema's bare property definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: analyzing meal timing, frequency, and food correlations with hitting calorie/protein targets. It lists specific outputs (when you eat, meals per day, frequent foods, foods on hit-days), making it distinct from sibling tools like get_food_log or get_nutrition_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly provide when or when not to use this tool versus alternatives. While the function is clear, there is no guidance on distinguishing it from similar analysis tools like nutrition_performance_correlation or get_insights. Usage is implied but not advised.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

body_comp_trendA

Track body composition over time — weight, body fat, training volume, energy balance.

Answers: am I gaining muscle or fat? Combines weight trend with body fat,
training volume, and calorie surplus/deficit.

Args:
    start_date: Start date (YYYY-MM-DD). Default: 90 days ago.
    end_date: End date (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explains the data combined (weight, body fat, training volume, calorie balance) and default date ranges, but omits behavioral traits like destructive potential, authentication needs, or rate limits. It is adequate but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a summary sentence, a question, and an args list. It is front-loaded with the key purpose and contains no wasted words. Minor improvement could be more structured bullet points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown), the description does not need to explain return values. It covers the tool's purpose, parameters, and default behavior. It is fairly complete for a trend analysis tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully explains both parameters in the Args section: format (YYYY-MM-DD) and defaults (90 days ago, today). This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it tracks body composition over time (weight, body fat, training volume, energy balance) and answers the specific question 'am I gaining muscle or fat?'. It uses a specific verb ('track') and distinguishes itself from sibling tools like get_weight_trend or get_workout_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when wanting to understand overall body composition trends, but does not explicitly state when not to use it or mention alternative tools. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_dataA

Clear all imported data so you can reimport fresh exports.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states the action ('clear all imported data') but does not mention that the operation is destructive, irreversible, or if any confirmation is needed. For a mutation tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no extraneous information. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description is adequate for a simple clear operation. It could mention the irreversible nature but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema description coverage is 100%. The description adds meaning by clarifying the scope ('all imported data') beyond the schema's empty object, earning a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Clear') and resource ('all imported data'), clearly stating the tool's function. It distinguishes from siblings like 'import_export' which handle importing/exporting but not clearing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (before reimporting fresh exports) but does not explicitly state when not to use or provide alternatives. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

daily_briefingA

Complete day view combining MacroFactor nutrition + Garmin health data.

The cross-data tool — shows nutrition, adherence, body, activity,
sleep, and training in one view. No API calls — reads from DuckDB.

Args:
    date_str: Date in YYYY-MM-DD format. Empty = today.
ParametersJSON Schema
NameRequiredDescriptionDefault
date_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
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. It clearly states 'No API calls — reads from DuckDB', indicating read-only, local behavior. This is sufficient behavioral context for an agent, though additional details about idempotency or speed could be added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: first states purpose, second elaborates components, third explains parameter. No redundant information, well-structured, and front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (not shown), the description need not detail return values. It adequately describes the data sources (MacroFactor, Garmin) and sections, and the parameter behavior. It is complete for a daily summary tool, though it could explicitly mention that only the specified date's data is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% coverage (minimal title and default), but the description adds critical meaning: 'Date in YYYY-MM-DD format. Empty = today.' This fully compensates for the schema's lack of detail, making parameter usage clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides a 'complete day view combining MacroFactor nutrition + Garmin health data'. It lists specific sections (nutrition, adherence, body, activity, sleep, training) and positions itself as the cross-data tool, distinguishing it from sibling tools that focus on individual data sources or metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a holistic daily summary ('complete day view'), but does not explicitly state when to use this tool versus alternatives like get_food_log or get_weight_trend. It lacks explicit when-not-to-use guidance or comparisons with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

data_statusA

Check what data is currently loaded — date ranges, row counts, last import.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully convey behavioral traits. It states a read-only check, but does not disclose any side effects, authentication requirements, rate limits, or other operational details beyond the basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that efficiently communicates the tool's purpose without unnecessary words. It is well-structured and front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of parameters and the presence of an output schema, the description adequately explains that the tool returns data about loaded data including date ranges, row counts, and last import. It is sufficiently complete for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters (0 params, schema coverage 100%), so the description does not need to explain parameter meanings. The baseline for 0 parameters is 4, and the description successfully clarifies the tool's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Check' and the resource 'what data is currently loaded', with concrete details (date ranges, row counts, last import). It effectively distinguishes itself from sibling tools that focus on specific analyses or imports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking data status, but provides no explicit guidance on when to use this tool versus alternatives or any exclusions. No mention of when not to use or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_phasesA

Auto-detect cut/bulk/maintenance phases from weight trend and energy balance.

Analyzes the full history and identifies distinct phases based on trend weight
direction and caloric balance. Each phase shows duration, weight change, and
average deficit/surplus.

Args:
    min_days: Minimum days for a phase to be reported (default 14).
ParametersJSON Schema
NameRequiredDescriptionDefault
min_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden. It transparently describes the analysis (full history, trend direction, caloric balance) and outputs (duration, weight change, deficit/surplus). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences in the main body plus a clear args section. No redundant or unnecessary information. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter) and presence of an output schema, the description adequately covers what the tool does and what it returns. Missing edge cases but appropriate for the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (min_days) has a default of 14. The description explains its purpose: 'Minimum days for a phase to be reported.' This adds value beyond the schema, which has empty descriptions (0% coverage).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Auto-detect cut/bulk/maintenance phases from weight trend and energy balance.' It uses specific verb ('auto-detect') and resource ('phases'), distinguishing it from siblings like body_comp_trend or get_weight_trend.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for phase detection by mentioning analysis of full history, but it does not explicitly state when to use this tool over alternatives like get_insights or get_weight_trend. No exclusion criteria or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

garmin_statusA

Quick Garmin health snapshot for a date. No API calls — reads from synced DuckDB data.

Combines daily stats, sleep, and training status in one view.
Run sync_garmin first to populate data.

Args:
    date_str: Date in YYYY-MM-DD format. Empty = today.
ParametersJSON Schema
NameRequiredDescriptionDefault
date_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses read-only nature ('No API calls — reads from synced DuckDB data') and combined output, but lacks details on error handling or stale data scenarios.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus argument description. Front-loaded with purpose, no wasted words. Highly concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present, description adequately covers key aspects: data source, combined view, and parameter usage. Sufficient for a simple snapshot tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (date_str) with schema coverage 0%. Description adds format guidance ('YYYY-MM-DD') and default behavior ('Empty = today'), providing meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb+resource: 'Quick Garmin health snapshot for a date'. It specifies scope (daily stats, sleep, training status) and distinguishes from sibling tools like sync_garmin (data population) and others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states prerequisite: 'Run sync_garmin first'. Also explains parameter default behavior. No explicit when-not to use, but sufficient for a snapshot tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_combined_dataA

Unified cross-domain query — returns merged nutrition + health data by date.

One call replaces multiple tool calls. Returns all requested domains in one payload.

Args:
    start_date: Start date (YYYY-MM-DD). Default: 7 days ago.
    end_date: End date (YYYY-MM-DD). Default: today.
    domains: List of domains to include. Options: nutrition, weight, sleep,
             training, activity, workouts. Default: all.
ParametersJSON Schema
NameRequiredDescriptionDefault
domainsNo
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
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 explains the tool returns merged data by date and lists parameters, but does not discuss behavioral traits like data freshness, rate limits, or whether the operation is read-only. Transparency is adequate but not deep.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using a clear header, bullet points, and no filler. Every sentence adds value, and the structure is front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 optional parameters) and the presence of an output schema, the description is largely complete. It covers all parameters, defaults, and domain options. It could mention case-sensitivity or data boundaries, but is sufficient for use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description's Args section compensates by explaining each parameter's purpose, default values, and acceptable options (e.g., domains list). This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a unified cross-domain query that returns merged nutrition and health data by date. It explicitly says 'One call replaces multiple tool calls' and lists the domains it can return, making its purpose distinct from sibling tools that focus on single domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when multiple domains are needed ('One call replaces multiple tool calls'), but it does not provide explicit when-not-to-use scenarios or list alternatives. The context is clear enough for effective selection given the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_compliance_reportB

Compare actual intake vs targets over a date range. Shows adherence.

Args:
    start_date: Start date (YYYY-MM-DD)
    end_date: End date (YYYY-MM-DD)
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It does not disclose behavioral traits such as required permissions, data dependencies, output format, or edge cases (e.g., missing data). Only the comparison purpose is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and front-loaded with two clear lines of purpose followed by parameter documentation. No redundant information, though formatting is somewhat informal (Python docstring style).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 params and an output schema, the description covers basic purpose and parameter formats. However, it omits details about target definition, error handling, and data freshness expectations, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It adds format hints (YYYY-MM-DD) not in schema, but does not explain parameter semantics like whether dates are inclusive or time zone handling. Baseline for 0% coverage is low, but some value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares actual intake vs targets over a date range and shows adherence, using a specific verb and resource. It distinguishes itself from sibling tools like 'get_nutrition_summary' which summarize rather than compare.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'get_nutrition_range' or 'get_insights'. The description lacks when-not-to-use or sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_digestA

Get a comprehensive weekly or monthly digest combining nutrition, weight, training, and adherence.

One call instead of five — gives a complete picture of a period.

Args:
    period: "week" (last 7 days) or "month" (last 30 days).
    end_date: End date (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoweek
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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 explains that the tool merges data from multiple sources, but does not disclose behaviors like error handling, data availability, or performance characteristics. Adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus an Args section. The main purpose is front-loaded, and every word adds value. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (handling return values), the description sufficiently covers the tool's purpose, parameters, and benefit. It could mention that it is a read-only operation, but overall it is complete for a combined digest tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining period options ('week' or 'month') and end_date format ('YYYY-MM-DD') with default values. This adds meaning beyond the schema's type-only definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a comprehensive weekly or monthly digest combining nutrition, weight, training, and adherence.' It uses a specific verb ('Get') and resource ('digest'), and the combination aspect distinguishes it from sibling tools that focus on individual metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'One call instead of five' which implies use this for a holistic view, but it does not explicitly state when not to use it or name specific alternatives. Guidance is implied but not explicit enough for an agent to decide between this and other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exercise_progressB

Track progress for a specific exercise over time.

Args:
    exercise: Exercise name (case-insensitive, partial match).
    metric: One of: estimated_1rm, estimated_3rm, estimated_10rm,
            total_volume, best_set_volume, heaviest_weight,
            total_reps, best_set_reps, total_sets,
            total_duration, best_set_duration,
            total_distance, best_set_distance.
    limit: Max data points to return (default 20, most recent).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricNototal_volume
exerciseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for behavioral disclosure. It only states the tool 'tracks progress' without detailing return format, pagination, error handling, data freshness, or any side effects. The existence of an output schema is not referenced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a one-line purpose followed by clear parameter documentation. Every sentence adds value. The docstring style is efficient, though the purpose line could be slightly more specific about what 'track progress' means (e.g., returns a list of progress data points).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated), the description needn't explain return values. However, it lacks any mention of prerequisites, usage context, or edge cases. For a tool that returns progress data, the description is adequate for basic use but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaning for all three parameters: 'exercise' is case-insensitive and partial match, 'metric' lists valid values (though not as an enum in schema), and 'limit' clarifies default and recency. This compensates well for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Track progress for a specific exercise over time,' which specifies the verb (track) and resource (progress for exercise). Among sibling tools like list_exercises, get_workout_history, and get_muscle_group_summary, this tool is uniquely focused on per-exercise progress over time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or which sibling tools might be more appropriate for different use cases (e.g., get_workout_history for full workout logs).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_food_logA

Get all foods logged on a specific date.

Args:
    date_str: Date (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
date_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates a read operation but does not disclose behavioral traits such as pagination, rate limits, or whether it returns detailed food info. The description is sparse on behavior beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the purpose. Every sentence earns its place, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to explain return values. However, it lacks context about sorting, limits, or time range handling. It is minimally complete but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. It explains the date_str format (YYYY-MM-DD) and notes the default is today, which adds value beyond the raw schema. However, it could be more explicit about the default behavior when no argument is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all foods logged on a specific date. It uses a specific verb (Get) and resource (food log), and distinguishes itself from siblings like search_food and get_nutrition_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need a list of foods for a date) but provides no explicit guidance on when to use this tool versus alternatives like search_food. No when-not or exclusion criteria are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_insightsA

Get personalized insights based on your nutrition, training, sleep, and recovery data.

Analyzes cross-domain patterns specific to YOUR data. Includes:
- Current state (phase, weight trajectory, weekly nutrition pacing)
- Trend alerts (sleep, HRV, body battery, compliance changes)
- Personal correlations (what actually affects YOUR recovery)
- Actionable recommendations prioritized by urgency
- Sparkline trends for key metrics

Works best with both MacroFactor and Garmin data synced.
No arguments needed — analyzes everything automatically.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility. It lists the types of insights provided (state, trends, correlations, recommendations) but does not mention potential latency or data freshness. Generally transparent for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with bullet points and front-loaded main purpose. A bit lengthy but every bullet adds value; could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description fully explains what the tool does, what it includes, and prerequisites. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. Description adds no parameter details but baseline is 4 per rules for 0-param tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides personalized insights from cross-domain data, distinguishing it from sibling tools like sleep_analysis or weekly_report that focus on single domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions it works best when both MacroFactor and Garmin data are synced, and that no arguments are needed. However, it does not explicitly state when to use alternatives or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_muscle_group_summaryB

Get muscle group sets and volume summary. Defaults to last 7 days.

Args:
    start_date: Start date (YYYY-MM-DD)
    end_date: End date (YYYY-MM-DD)
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description provides only the default date range behavior. It does not disclose read-only nature, aggregation method, or other traits, leaving significant gaps for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence plus parameter list, front-loaded with purpose and default. Every sentence is essential, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description covers basic usage for date parameters. However, it lacks explanation of what 'sets and volume summary' entails and how to interpret results, making it minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds value by specifying date format (YYYY-MM-DD) and default 7-day range. However, it does not explain behavior when parameters are omitted or the relationship between start and end dates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves 'muscle group sets and volume summary', identifying the specific resource and action. It is distinct from siblings like get_workout_history, though it does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description only mentions default date range, lacking context on when to prefer this over other workout-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nutrition_rangeB

Get daily nutrition data for a date range.

Args:
    start_date: Start date (YYYY-MM-DD)
    end_date: End date (YYYY-MM-DD)
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only lists parameters without disclosing behavioral traits such as what nutrition data is returned (e.g., calories, macros), authentication needs, rate limits, or whether data is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very concise: three lines, no fluff. However, it could be improved by front-loading the purpose and adding a usage note. Still, it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained. But the description lacks details on the scope of 'nutrition data' (e.g., which metrics). Compared to siblings, it is unclear how this differs from get_nutrition_summary. Adequate but minimal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description adds only the date format (YYYY-MM-DD) beyond the schema. No constraints like valid ranges, ordering, or relationship between dates are provided. Minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get daily nutrition data for a date range,' specifying the verb (get), resource (nutrition data), and scope (daily, date range). This distinguishes it from sibling tools like get_nutrition_summary or analyze_meal_patterns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention when not to use, prerequisites, or compare to siblings like get_food_log or get_nutrition_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nutrition_summaryC

Get nutrition summary for a specific date.

Args:
    date_str: Date in YYYY-MM-DD format. Empty = today.
ParametersJSON Schema
NameRequiredDescriptionDefault
date_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description does not disclose any behavioral traits (e.g., whether it is read-only, what the summary contains, or any side effects). The agent gains no insight beyond the existence of the 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences, no redundancy, and no unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (but is not shown), the description still omits context about what the nutrition summary includes, any limits, or how it relates to the logged data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context for the 'date_str' parameter by specifying the format (YYYY-MM-DD) and the default behavior (empty = today), which is not present in the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get nutrition summary for a specific date' but does not differentiate it from sibling tools like 'get_nutrition_range' or 'get_food_log'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites or scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_weight_trendB

Get weight trend data. Defaults to last 30 days.

Args:
    start_date: Start date (YYYY-MM-DD). Default: 30 days ago.
    end_date: End date (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions default behavior (last 30 days) but contradicts the input schema which has no default values for start_date and end_date. No annotations exist to provide further behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise (two sentences plus parameter list) and front-loaded with the main action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameters and presence of an output schema, the description adequately states purpose and defaults but lacks details about return structure or data granularity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to parameters by specifying YYYY-MM-DD format and defaults (30 days ago, today), which are missing from the schema. Schema coverage is 0%, compensating well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves weight trend data with default date range. However, it does not differentiate from siblings like body_comp_trend or get_combined_data, which could overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description only states defaults and parameter formats, not context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workout_historyA

Get a summary of all workouts in a date range. Defaults to last 30 days.

Args:
    start_date: Start date (YYYY-MM-DD)
    end_date: End date (YYYY-MM-DD)
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits (e.g., read vs. write, authentication requirements, rate limits, or side effects). For a tool that appears to be a read operation, this lack of transparency is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences plus a clear parameter list. It front-loads the purpose and provides necessary details without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values are presumably documented. However, the description lacks information on output structure, pagination, or limits. With numerous sibling tools, more differentiation context would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema description coverage is 0%, the description adds meaning by specifying the date format (YYYY-MM-DD) and default behavior (last 30 days). This compensates for the schema's lack of parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets a summary of all workouts within a date range, using specific verb 'Get' and resource 'summary of workouts'. This distinguishes it from sibling tools like get_workout_log which likely returns detailed logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_workout_log or get_exercise_progress. The description only notes the default date range but does not provide usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workout_logB

Get workout details for a specific date.

Args:
    date_str: Date (YYYY-MM-DD). Default: most recent workout.
ParametersJSON Schema
NameRequiredDescriptionDefault
date_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the default behavior (most recent workout) but lacks details on side effects, required permissions, rate limits, or data boundaries. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences immediately convey the purpose and parameter details. No extraneous words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, the description does not need to detail return values. However, it lacks context about when to prefer this over sibling tools like 'get_workout_history' or 'get_workout_log' variants, leaving some incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful semantics to the single parameter 'date_str' by specifying the format (YYYY-MM-DD) and default behavior (most recent workout), which goes beyond the schema's generic type and title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'workout details for a specific date', which aligns with the tool name. It distinguishes from the sibling 'get_workout_history' by implying per-date granularity, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_workout_history' or other date-specific tools. The description only describes what it does, not the context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_exportA

Import a MacroFactor .xlsx export file into the database.

Supports both Quick Export and All-Time Data formats.
If filename is empty, auto-detects the most recent .xlsx in the data directory.

Args:
    filename: Path to .xlsx file, or empty to auto-detect.
ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It fails to disclose critical behavioral traits such as whether the import overwrites or appends data, or any destructive potential. The only behavioral detail is auto-detection of files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with four sentences, no redundant information, and the core purpose is stated first. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is an output schema (not shown), return values are assumed covered. However, the description lacks details on import behavior (e.g., merge vs replace, success/failure conditions) and prerequisites (file permissions, directory existence). It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It adds meaning by explaining the parameter as a path or empty for auto-detection, and specifying the file type (.xlsx). This provides useful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool imports a MacroFactor .xlsx file into the database, distinguishing it from all sibling tools that are read-only, analysis, or synchronization operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains supported formats (Quick Export and All-Time Data) and the auto-detection feature when filename is empty, providing context for usage. However, it does not specify when not to use the tool or compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exercisesA

List all tracked exercises with available metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It describes a read operation with no side effects, but lacks details on ordering, pagination, or data freshness. For a tool with no parameters, this is minimally acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is efficient and front-loaded. Could be slightly more descriptive about the available metrics, but overall well-structured and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters and an output schema, the description is brief but sufficient for a simple list. However, it does not differentiate from siblings like get_workout_history or explain the meaning of 'available metrics', leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100% trivially. Per calibration, baseline is 4 for 0-param tools. Description adds no parameter info but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (List), resource (exercises), and scope (all tracked) with available metrics. It distinguishes from siblings like get_exercise_progress or get_workout_history by indicating a comprehensive list rather than a specific progress or history view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., get_exercise_progress, get_workout_log). No context about prerequisites or typical use cases is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nutrition_performance_correlationA

Correlate nutrition intake with next-day training metrics.

Shows whether protein/calorie intake patterns affect next-day body battery,
HRV, and workout performance. Splits days into high/low intake buckets.

Args:
    start_date: Start date (YYYY-MM-DD). Default: 30 days ago.
    end_date: End date (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It explains the logic (correlation, splitting into high/low buckets) but does not disclose operational details like read-only nature, required data availability, or handling of missing data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences plus an Args block, front-loaded with a verb, and every sentence adds value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (correlation analysis with bucket splitting) and the presence of an output schema, the description covers inputs and high-level logic. It lacks detail on edge cases or prerequisites but is sufficient for most agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds format (YYYY-MM-DD) and sensible defaults (30 days ago, today) for both parameters, which is valuable beyond the bare schema types. However, there is a slight mismatch with schema defaults (empty strings).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it correlates nutrition intake with next-day training metrics, specifically protein/calorie patterns affecting body battery, HRV, and workout performance. It distinguishes itself from siblings like analyze_meal_patterns by focusing on correlation and splitting days into buckets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to see correlation between diet and performance) but does not explicitly state when not to use or recommend alternatives among the many sibling tools like get_insights or analyze_meal_patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queryA

Run a custom SQL query against the MacroFactor database.

Available tables:
  - daily: date, calories, macros, targets, weight, expenditure, steps, micros
  - food_log: date, time, food details (from Quick Export)
  - workouts: date, exercise, sets, reps, weight (from Quick Export)
  - muscle_sets: date, muscle_group, sets
  - muscle_volume: date, muscle_group, volume_kg
  - exercise_tracking: date, exercise, metric, value (from All-Time)
  - body_metrics: date, metric, value
  - custom_foods: food_name, nutrition info
  - nutrition_targets: program_date, weekday, targets
  - food_log_notes: date, name, note
  - garmin_daily_stats: date, steps, calories, HR, stress, body battery
  - garmin_activities: activity_id, date, type, duration, distance, HR, power
  - garmin_sleep: date, sleep phases, score, HRV, SpO2
  - garmin_training_status: date, status, VO2max, training load, FTP
  - garmin_body_fat: date, body_fat_pct
  - garmin_sync_log: sync history

Use `data_status` to see what's loaded.

Args:
    sql: SQL query (read-only SELECT statements only).
ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explicitly states 'read-only SELECT statements only' and enumerates all accessible tables. This adds important behavioral context beyond the schema. Missing details like performance limits or query timeout prevent a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a clear opening sentence, a bulleted list of tables, and a brief usage tip. Every element earns its place with no redundant language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (generic SQL query), the description covers purpose, parameter semantics, and available data sources. It does not include example queries, but the output schema exists separately. Without annotations, it is fairly complete but could add a note on return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fully compensates by explaining the 'sql' parameter as 'SQL query (read-only SELECT statements only).' This adds critical meaning (purpose and constraint) beyond the schema's type-only definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Run a custom SQL query against the MacroFactor database,' providing a specific verb (run) and resource (database). It lists available tables, distinguishing this generic query tool from sibling tools that perform specific analyses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage by listing available tables and advising to 'Use data_status to see what's loaded.' However, it does not explicitly state when not to use this tool in favor of sibling tools, which would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recovery_checkA

Readiness assessment — should you train hard today?

Combines last night's sleep, body battery, training load ratio,
and yesterday's nutrition compliance into a single readiness view.

Args:
    date_str: Date to check (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
date_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It lists the five factors considered (sleep, body battery, training load ratio, nutrition compliance) and mentions default date behavior. While it doesn't explicitly state read-only nature, the name 'check' and output schema imply no side effects. Good transparency for a read-only assessment.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus an argument description. Every sentence adds value, starting with the primary question and listing factors. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema likely provides return structure, the description covers input and factors sufficiently. It could benefit from an approximate output format or example, but not essential. Complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter `date_str` is fully described with format (YYYY-MM-DD) and default value (today). Since schema description coverage is 0%, the description provides necessary meaning beyond the schema. Could add constraints (e.g., date range), but adequate for a simple optional parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: a readiness assessment combining multiple health factors. It uses a specific verb ('assess') and resource ('readiness'), and distinguishes itself from siblings which focus on individual metrics (e.g., sleep_analysis, garmin_status).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the question 'should you train hard today?' and lists the combined factors, indicating when to use this holistic check instead of individual tools. It does not explicitly mention alternatives, but the sibling list provides clear context. Fine for a concise description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_foodA

Search logged foods by name across all dates.

Also searches custom foods if no log results found.

Args:
    query: Search term (case-insensitive).
    limit: Max results (default 20).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description partially covers behavioral traits (searches across dates, falls back to custom foods), but it lacks details on authentication needs, rate limits, or what happens if no results are found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a clear main sentence followed by brief parameter explanations. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but noted), the description is reasonably complete for a search tool, but it could mention pagination or behavior when no results are found.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The 'Args' section provides meaningful details beyond the schema: query is case-insensitive, limit has a default of 20. Since schema description coverage is 0%, the description fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search logged foods by name across all dates' and specifies the fallback to custom foods, distinguishing it from sibling tools like get_food_log.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by mentioning 'across all dates' and the fallback to custom foods, but it does not explicitly guide when to use this tool versus alternatives like get_food_log or analyze_meal_patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_checkA

Check local setup and explain the easiest next action.

Use this first when the MCP seems empty, stale, misconfigured, or when you
are not sure which tool to call next.

Args:
    show_workflows: Include common question-to-tool workflows.
ParametersJSON Schema
NameRequiredDescriptionDefault
show_workflowsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does not explicitly state side effects, safety (e.g., read-only), or prerequisites, though the nature of a 'check' implies it is safe. More explicit behavioral context would improve this score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and well-structured: a main sentence, usage guidance, and an args section. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional boolean parameter) and has an output schema. The description covers purpose, usage, and parameter adequately. It lacks details about expected output format, but the presence of an output schema compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (no descriptions in the schema), but the tool's description includes an Args section explaining the 'show_workflows' parameter as 'Include common question-to-tool workflows,' adding significant meaning beyond the schema's title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks local setup and explains the easiest next action, using specific verbs and a unique resource. It distinguishes itself from the many data-analysis sibling tools by being a meta-tool for troubleshooting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this first when the MCP seems empty, stale, misconfigured, or when you are not sure which tool to call next,' providing clear when-to-use and when-not-to-use guidance, effectively acting as a fallback option.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sleep_analysisA

Analyze what affects sleep quality — prior-day training, calories, timing.

Correlates sleep scores with training intensity, total calories, and meal
timing from the preceding day.

Args:
    start_date: Start date (YYYY-MM-DD). Default: 30 days ago.
    end_date: End date (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. It only states analysis and correlation, but does not disclose side effects, authorization needs, or rate limits. Assumed read-only but not confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: two sentences for purpose and two lines for parameters. Front-loaded key information with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple analysis tool with 2 parameters and an output schema, the description is adequate. It explains purpose and parameters, though could mention prerequisites like data availability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no descriptions), but description adds meaningful context: date format (YYYY-MM-DD) and defaults (30 days ago, today). Compensates for schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Analyze what affects sleep quality' with specific correlations to training, calories, and timing. It distinguishes from siblings by focusing on sleep, unlike other tools like recovery_check or nutrition_performance_correlation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. Purpose is implied but no exclusions or alternatives mentioned, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_garminA

Sync Garmin health data into local DuckDB for fast cross-queries with MacroFactor data.

Pulls daily stats, activities, sleep, training status, and body fat
from Garmin Connect for the last N days. Data is upserted (idempotent).

Args:
    days: Number of days to sync (default 7).
ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description discloses key behaviors: it pulls data for the last N days, performs an upsert (idempotent), and specifies data categories. This goes beyond a simple 'sync' statement, though it could mention prerequisites or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two sentences plus a parameter list. It front-loads the purpose and provides necessary detail without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 param, no annotations, output schema exists), the description covers the core functionality (what data is synced, idempotency, time range). It could mention error handling or prerequisites but is sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaning to the only parameter ('days: Number of days to sync (default 7)'). This explains its purpose beyond the raw schema, compensating for the lack of schema-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it syncs Garmin health data into DuckDB, specifies data types (daily stats, activities, sleep, etc.), and mentions idempotent upsert. This distinguishes it from sibling tools like garmin_status which likely only check status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to sync recent Garmin data for cross-querying with MacroFactor), but lacks explicit comparison to alternatives or exclusion criteria. Siblings like data_status or garmin_status are not mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weekly_reportA

Comprehensive 7-day report — nutrition, workouts, sleep, body, activity in one call.

Includes daily detail for weight and nutrition, full workout breakdown with
merged MacroFactor + Garmin strength data, sleep trends, and training load.

Args:
    end_date: Last day of the week (YYYY-MM-DD). Default: today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It discloses the data included (e.g., merged MacroFactor+Garmin strength data) and daily detail, but does not mention side effects, auth requirements, or whether the operation is safe/read-only. However, for a report, this transparency is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two short paragraphs. The first sentence is front-loaded with the main purpose. The second paragraph lists included data efficiently without excessive verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a multi-domain report, the description covers the key data categories included. An output schema exists (not shown), so return values need not be explained. Minor omissions like timezone handling do not detract significantly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains the 'end_date' parameter with format (YYYY-MM-DD) and default behavior. This adds meaningful guidance beyond the schema's type and default values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates a 'Comprehensive 7-day report' covering nutrition, workouts, sleep, body, and activity. It uses specific verbs and resource scope, distinguishing it from sibling tools that focus on individual aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a consolidated weekly view but does not explicitly state when to use this tool over alternatives like daily_briefing or sleep_analysis. No exclusionary criteria are provided.

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.

  1. 29 tool updatesv0.1.0
    • First observedanalyze_meal_patterns
    • First observedbody_comp_trend
    • First observedclear_data
    • First observeddaily_briefing
    • First observeddata_status
    • First observeddetect_phases
    • First observedgarmin_status
    • First observedget_combined_data
    • First observedget_compliance_report
    • First observedget_digest
    • First observedget_exercise_progress
    • First observedget_food_log
    • First observedget_insights
    • First observedget_muscle_group_summary
    • First observedget_nutrition_range
    • First observedget_nutrition_summary
    • First observedget_weight_trend
    • First observedget_workout_history
    • First observedget_workout_log
    • First observedimport_export
    • First observedlist_exercises
    • First observednutrition_performance_correlation
    • First observedquery
    • First observedrecovery_check
    • First observedsearch_food
    • First observedsetup_check
    • First observedsleep_analysis
    • First observedsync_garmin
    • First observedweekly_report

TDQS

B3.4/5.0

Scored across 29 tools

Disambiguation3/5

Several tools have overlapping purposes, such as multiple summary/report tools (daily_briefing, get_digest, weekly_report) and similar analytical tools (analyze_meal_patterns, sleep_analysis, nutrition_performance_correlation). Descriptions help differentiate, but an agent could easily select the wrong one.

Naming Consistency4/5

Most tool names follow a verb_noun pattern in snake_case (e.g., get_food_log, sync_garmin). However, some names use noun_noun (body_comp_trend, nutrition_performance_correlation) or are ambiguous (query), introducing minor inconsistency.

Tool Count2/5

With 29 tools, the server exceeds the 25-tool threshold for 'too many.' While the scope is broad (nutrition, fitness, Garmin data), many tools could be consolidated (e.g., multiple get_ tools) or are redundant given the SQL query tool.

Completeness4/5

The server covers the major domain areas well: nutrition tracking, body composition, workouts, Garmin health data, and cross-domain analytics. Minor gaps exist, such as no tool for setting goals or editing entries, but these are likely out of scope for a read-analysis toolset.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Local MCP server that connects Claude Desktop with Garmin and Apple Health data to read training and recovery, estimate heart rate and pace zones, analyze performance, and create structured workouts.
    22
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Self-hosted fitness tracking MCP server that gives AI assistants access to your nutrition, training, weight, sleep, and accomplishment data via 77 tools and 5 resources. Enables natural-language logging and querying of personal health metrics through Claude or ChatGPT.
    1
    BSD 2-Clause "Simplified"
  • A
    license
    B
    quality
    A
    maintenance
    MCP server for local fitness-data extraction and analysis from Garmin Connect, Intervals.icu, and Strava. Provides read-only analytical tools over DuckDB and targeted Strava enrichment.
    35
    425
    AGPL 3.0