Nutrition by Pack4Back
Server Details
Log meals, water, and weight to Garmin Connect from Claude or ChatGPT.
- Status
- Healthy
- Uptime
- 99.8% over 22 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 12 tools
list_nutrition and get_daily_summary overlap heavily, both returning foods plus the same Garmin Connect overview, and list_garmin_accounts is a deprecated duplicate of list_destinations. The descriptions clarify only minor differences, so an agent could easily pick the wrong tool.
All names follow a readable snake_case action_noun pattern, with logical verbs like list/get/log/set/update/delete. Minor inconsistencies remain, such as list_nutrition also being a summary and the deprecated list_garmin_accounts wrapper.
Twelve tools is a reasonable size for a nutrition service, but the count is slightly padded by the deprecated list_garmin_accounts tool and the redundant read summary tool.
Food logging has full CRUD coverage and goals have get/set, which covers the core domain. However, water and body mass are create-only with no corresponding read/update/delete, leaving minor lifecycle gaps.
Available Tools
12 toolsdelete_nutritionDelete a nutrition entryADestructiveInspect
Remove an existing food. Prefer log_id from list_nutrition. ok=true only after Garmin no longer has that log_id. Result calories are the deleted snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Food name fragment if log_id is unknown. Prefer log_id. | |
| log_id | No | Exact log_id from list_nutrition. Required when several foods share a name. | |
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| timezone | No | IANA timezone. | Europe/Prague |
| meal_date | No | Local date YYYY-MM-DD. | |
| meal_type | No | Meal to search in. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_images | No | HTTPS URLs or MCP image refs for meal photos. Optional. Persist hashes/URLs only. | |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| fat | No | |
| name | No | |
| carbs | No | |
| error | No | |
| goals | No | |
| log_id | No | |
| account | No | |
| message | Yes | |
| protein | No | |
| bmr_kcal | No | |
| calories | No | |
| consumed | No | |
| meal_name | No | |
| remaining | No | |
| candidates | No | |
| plan_goals | No | |
| goal_source | No | |
| destinations | No | |
| activity_kcal | No | |
| destination_id | No | |
| calories_burned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive operation. The description adds valuable context: 'ok=true only after Garmin no longer has that log_id' and 'Result calories are the deleted snapshot.' This goes beyond the annotations by explaining the deletion's effect and the result semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. The most important guidance (prefer log_id) is front-loaded, and the behavioral notes about ok=true and result calories are concise and valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with 10 parameters and an output schema, the description covers the key behavioral aspects: what gets deleted, how to identify the target, and what the result means. It doesn't explain the full parameter matrix, but the schema already does that. The description is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters. The description adds minimal parameter-level meaning beyond the schema, but it does reinforce the preference for log_id over query. Baseline 3 is appropriate since the schema carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Remove an existing food') and adds a key scoping detail ('Prefer log_id from list_nutrition'). It distinguishes itself from siblings like log_nutrition and update_nutrition by focusing on deletion, though it doesn't explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance on when to use this tool: prefer log_id from list_nutrition, and use query only when log_id is unknown. It also implies the alternative (list_nutrition) for finding the log_id. It doesn't explicitly state when not to use it versus update_nutrition, but the deletion context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_summaryDaily Garmin Connect summaryARead-onlyIdempotentInspect
Connect overview: consumed vs Garmin auto-adjusted calorie AND macro goals, remaining, foods. goals is the Connect target — not calories_burned.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| timezone | No | IANA timezone. | Europe/Prague |
| meal_date | No | Local date YYYY-MM-DD. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so no safety disclosure is needed. The description adds valuable semantic context by clarifying that 'goals' is the Connect auto-adjusted target rather than calories_burned, which prevents misinterpretation of the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with what the tool returns, and every clause earns its place. The clarifying sentence about goals is short and prevents a likely misunderstanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, output schema, and safety annotations, the description covers the core return semantics. It lacks only explicit routing guidance versus overlapping siblings, but that is outside the minimal context for invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds no parameter-specific meaning beyond confirming the everyday summary context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (Garmin Connect daily overview) and the exact contents: consumed vs calorie/macro goals, remaining, and foods. It also distinguishes the meaning of 'goals' from calories_burned, differentiating this tool from nutrition-goal-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to choose this tool over siblings like list_nutrition or get_nutrition_goals. The usage intent is only implied by the tool name and title; there are no conditions, exclusions, or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nutrition_goalsGet nutrition goalsCRead-onlyIdempotentInspect
Goals stored in this service (pushed to Garmin when the official API allows).
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description needs to add only extra behavioral context. It contributes the fact that goals live in this service and may be pushed to Garmin when the official API allows, but this is ambiguous about whether the push is a side effect of the call or background service behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and the core storage fact is front-loaded. It is appropriately short, though the brevity contributes to the ambiguity about the tool's exact action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and annotations cover return values and safety, and all three parameters are optional with strong schema descriptions. However, the description itself fails to clearly state what the tool does or when it should be chosen, so the overall definition is only minimally complete despite rich structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has a meaningful description covering aliases, allow-lists, and when destination_id is required. The tool description adds no parameter-level detail, but the schema already does the heavy lifting, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Goals stored in this service' and adds the Garmin push detail, but it never explicitly states that the tool retrieves or returns nutrition goals. The verb is supplied only by the tool title, leaving the description itself vague and not clearly differentiated from list_nutrition or get_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool versus siblings like list_nutrition, get_daily_summary, or set_nutrition_goals. No conditions, alternatives, or exclusions are mentioned, so the agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_destinationsList destinationsARead-onlyIdempotentInspect
Allow-list of destinations this OAuth user may use, with per-user aliases. Never invent ids.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint true, covering safety. The description adds that the list is an allow-list specific to the user and includes per-user aliases, which is useful context beyond the annotations. The warning about not inventing ids further clarifies expected behavior. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences that front-load the purpose and then add a critical usage warning. Every word earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description covers all necessary context: the scope (OAuth user), the nature (allow-list with per-user aliases), and the critical constraint (never invent ids). An agent has everything needed to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline for parameter semantics is 4. The description doesn't need to document parameters, and it doesn't, but it does not hinder understanding. The schema is empty, so there is nothing to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool lists the allow-list of destinations for the OAuth user, with per-user aliases. It is distinct from any sibling tool (no other destinations-related tool exists), so the purpose is unambiguous and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a critical usage directive: 'Never invent ids,' which tells the agent to only use returned ids and not fabricate them. It also scopes the list to 'this OAuth user.' However, it does not explicitly contrast with alternatives, but given no sibling does destinations, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_garmin_accountsList Garmin accountsARead-onlyIdempotentInspect
Deprecated wrapper around list_destinations. Prefer list_destinations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety and repeatability. The description adds important behavioral context beyond annotations by flagging the tool as deprecated and explaining it is only a wrapper, which tells the agent not to rely on it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler: one announces deprecation, the other names the preferred alternative. Every word earns its place, and the most important guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter deprecated wrapper with read-only and idempotent annotations, an output schema, and a named successor, the description covers everything an agent needs to make the correct call: recognize deprecation and use list_destinations instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics to document. The baseline of 4 applies, and the description needs no additional parameter-level explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'List Garmin accounts' identifies the resource and operation, and the description clarifies it is a 'deprecated wrapper around list_destinations', linking it to the real behavior. It does not restate the name and gives enough context to distinguish it from siblings, though it relies partly on list_destinations for full meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Prefer list_destinations', naming the alternative tool and telling the agent which sibling to use instead. This is direct, unambiguous routing guidance for a deprecated tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_permissionsList my permissionsARead-onlyIdempotentInspect
Read-only: who this OAuth user can act as. Sharing is not granted or revoked here.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, and the description adds useful context by specifying that the result concerns what the OAuth user can act as. It also explicitly warns that no sharing changes occur, which reinforces the read-only behavior without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The read-only label is front-loaded, and the exclusion of sharing modifications is stated in a compact, clear way.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters omitted and an output schema present, the description does not need to explain return values or parameter syntax. It conveys the essential behavior and scope, making it complete for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters)Skip and the schema covers all properties (none), so parameter semantics are not a burden. Description is not required to add parameter detail, and the baseline for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it lists permissions and clarifies scope as 'who this OAuth user can act as.' It does not explicitly differentiate from sibling tools, but the sibling list contains no overlapping permission tools, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by labeling the operation read-only and explicitly noting that sharing is not granted or revoked here. While it names no alternative tool, none of the siblings perform permission management, so the usage guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nutritionList nutrition for a dayARead-onlyIdempotentInspect
List foods for a day plus Garmin Connect overview (consumed, auto-adjusted calorie AND macro goals, remaining). goals is the Connect target. Use log_id for update_nutrition and delete_nutrition.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| timezone | No | IANA timezone for today. | Europe/Prague |
| meal_date | No | Local date YYYY-MM-DD. | |
| meal_type | No | Optional meal filter. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| fat | No | |
| name | No | |
| carbs | No | |
| error | No | |
| goals | No | |
| log_id | No | |
| account | No | |
| message | Yes | |
| protein | No | |
| bmr_kcal | No | |
| calories | No | |
| consumed | No | |
| meal_name | No | |
| remaining | No | |
| candidates | No | |
| plan_goals | No | |
| goal_source | No | |
| destinations | No | |
| activity_kcal | No | |
| destination_id | No | |
| calories_burned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and open-world, so the description doesn't need to restate safety. It adds useful context beyond the schema: it clarifies the semantics of 'goals' ('goals is the Connect target') and tells the agent that the resulting log_id feeds update_nutrition and delete_nutrition. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the core purpose and then provide the key follow-up fact about log_id usage. Every sentence earns its place with no filler or structured-data repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given detailed parameter descriptions, annotations, and an output schema, the description covers the essentials for invoking the tool correctly. It could be slightly more complete by differentiating from get_daily_summary/get_nutrition_goals, but nothing necessary for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a descriptive meaning, so the description doesn't need to add parameter detail. The only added pointer, log_id, refers to an output field rather than an input parameter, so it doesn't increase parameter-semantics value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation and resource: 'List foods for a day plus Garmin Connect overview ...', with concrete fields (consumed, auto-adjusted calorie AND macro goals, remaining). It does not explicitly compare itself to siblings like get_daily_summary or get_nutrition_goals, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: a day-level food listing with Garmin Connect goal/remaining overview. It adds the cross-tool pointer 'Use log_id for update_nutrition and delete_nutrition', but doesn't state when to choose this over get_daily_summary or get_nutrition_goals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_body_massLog body massAInspect
Log body weight in kilograms.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| kilograms | Yes | Body weight in kilograms. | |
| timestamp | No | ISO-8601 | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as non-read-only and non-destructive, so the description's 'Log' phrasing does not add safety information beyond what is structured. It also does not disclose side effects such as writing to a Garmin destination or whether repeated calls create duplicates, though the openWorld/idempotent hints partially cover this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler: 'Log body weight in kilograms.' Every word adds semantic value, and there is no duplication of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema richly documents all parameters and an output schema exists, covering call mechanics and return values. However, the description lacks high-level context about destination selection or when this tool is preferred over sibling tools, so an agent has to infer intent from the tool name and schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are documented in the schema. The description only mentions 'kilograms' and does not add meaning for account, timestamp, destination_id, destination_kind, or user_query_context; baseline 3 applies because the schema carries the semantic burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Log'), a precise resource ('body weight'), and the unit ('kilograms'), which clearly identifies the tool's function. It is not a tautology because it clarifies 'body mass' as 'body weight in kilograms,' but it does not explicitly distinguish itself from sibling logging tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a body-weight value needs to be recorded, but it names no alternatives (e.g., log_nutrition, log_water) and gives no explicit when-to-use or when-not-to-use conditions. The intended context is inferable from the resource type, but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_nutritionLog nutritionBInspect
Add one nutrition entry. Resolve destination from list_destinations; do not guess.
| Name | Required | Description | Default |
|---|---|---|---|
| fat | No | Fat in grams. | |
| name | No | Food name shown in Garmin Connect. | Quick Add |
| carbs | No | Carbohydrates in grams. | |
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| protein | No | Protein in grams. | |
| calories | Yes | Energy in kcal | |
| timezone | No | IANA timezone. | Europe/Prague |
| meal_date | No | Optional local date YYYY-MM-DD. | |
| meal_type | No | Optional semantic meal. | |
| timestamp | No | Optional ISO-8601 date+time. | |
| recipe_url | No | Optional https recipe URL (schema.org/Recipe). Not a separate tool. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_images | No | HTTPS URLs or MCP image refs for meal photos. Optional. Persist hashes/URLs only. | |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| fat | No | |
| name | Yes | |
| carbs | No | |
| error | No | |
| account | No | |
| message | Yes | |
| protein | No | |
| calories | Yes | |
| timezone | No | |
| meal_date | No | |
| meal_type | No | |
| timestamp | No | |
| destinations | No | |
| destination_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a write operation. The description adds a warning about destination resolution ('do not guess'), which is a behavioral note, but it does not disclose side effects like potential duplicate entries or integration details. It is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The first states the action, the second gives a critical usage instruction. Every word earns its place, and the critical hint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (15 parameters) and 100% schema coverage, the description is minimal but adequate. It correctly points to list_destinations for destination resolution, which is a key prerequisite. However, it does not mention that calories is required or other behavioral aspects, though those are in the schema. It is slightly incomplete for a high-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters have descriptions. The description adds a hint about the destination parameters by instructing to resolve them from list_destinations, which supplements the schema's destination_id description. This adds modest value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Add one nutrition entry') with a clear resource. It uses 'Add' which implies creation, distinguishing it from update/delete, but it does not explicitly mention these alternatives, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a directive on how to resolve the destination ('Resolve destination from list_destinations; do not guess'), which is a parameter-level instruction, but it offers no guidance on when to use this tool versus siblings like update_nutrition or delete_nutrition. No conditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_waterLog waterBInspect
Add hydration in millilitres.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| meal_date | No | YYYY-MM-DD | |
| milliliters | Yes | Water volume in millilitres. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, indicating a non-idempotent mutation. The description adds the behavioral detail that the action is 'Add', implying it increments existing hydration totals rather than replacing them. This is a useful addition beyond annotations, but it stops short of describing side effects, limits, or response behavior. With annotations covering the mutation profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence with no filler. It is front-loaded with the essential action and unit. While it could be more informative, it is appropriately concise for a simple logging tool and avoids verbosity. It earns a 4 for efficiency, though it sacrifices depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, but only one is required, and the schema explains all of them. The description itself provides no context about optional parameters like destination_id (needed when multiple destinations are writable) or user_query_context (audit forwarding). However, given the high schema coverage and the simplicity of the core action, the description is minimally sufficient. An agent could call it correctly with just the required parameter, so a 3 reflects the adequacy without extra context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (milliliters, account, meal_date, destination_id, destination_kind, user_query_context) already has a description. The tool description adds only 'in millilitres', which is redundant with the schema's parameter description. It does not clarify cross-parameter dependencies or provide examples. Baseline 3 is correct given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Add') and a specific resource ('hydration in millilitres'), which is unambiguous. However, it does not explicitly differentiate from sibling tools like log_nutrition or log_body_mass, though the specificity to water makes it distinct. It earns a 4 for clarity but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No mention of when to prefer log_water over log_nutrition, or any conditions like multiple destinations. The description only says what it does, not when to choose it. This leaves the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_nutrition_goalsSet nutrition goalsCIdempotentInspect
Store daily goals in this service.
| Name | Required | Description | Default |
|---|---|---|---|
| fat | No | Daily fat target in grams. | |
| carbs | No | Daily carbohydrate target in grams. | |
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| protein | No | Daily protein target in grams. | |
| calories | No | Daily calorie target in kcal. | |
| water_ml | No | Daily water target in millilitres. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only, idempotent, and non-destructive, but the description adds no context about what happens to existing goals, whether null values reset fields, or any auth considerations. 'Store daily goals in this service' does not go beyond the name and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and free of filler, but it is under-specified rather than helpfully concise. It does not use the available space to provide useful operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the output schema and parameter descriptions are rich, the operation semantics are missing: an agent cannot tell whether this replaces all goals, updates only provided fields, or treats null as 'no change' vs 'clear'. Sibling ambiguity with update_nutrition also remains unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all eight parameters thoroughly. The description itself adds no parameter semantics, which is acceptable at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Store') and resource ('daily goals'), clearly indicating a write operation. It does not, however, mention how this differs from the sibling update_nutrition, so it stops short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call set_nutrition_goals versus update_nutrition or delete_nutrition. No prerequisites, exclusions, or alternative-selection hints are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_nutritionUpdate a nutrition entryAInspect
Change an existing food. Do not add a second entry. Prefer log_id from list_nutrition. ok=true only after Garmin re-read shows the new values.
| Name | Required | Description | Default |
|---|---|---|---|
| fat | No | Fat in grams. | |
| name | No | Food name shown in Garmin Connect. | |
| carbs | No | Carbohydrates in grams. | |
| query | No | Food name fragment if log_id is unknown. Prefer log_id. | |
| log_id | No | Exact log_id from list_nutrition. Required when several foods share a name. | |
| account | No | ChatGPT name from list_destinations aliases (я, оксана, mogadanez). Prefer destination_id. Matched only against this user's allow-list. | |
| protein | No | Protein in grams. | |
| calories | No | Energy in kcal. | |
| timezone | No | IANA timezone. | Europe/Prague |
| meal_date | No | Local date YYYY-MM-DD. | |
| meal_type | No | Meal to search in. | |
| destination_id | No | Stable destination id from list_destinations. Required when more than one destination is writable. | |
| destination_kind | No | Tracker kind. garmin is supported now. myfitnesspal, cronometer, macrofactor, and apple_health are reserved and unsupported. | garmin |
| user_query_images | No | HTTPS URLs or MCP image refs for meal photos. Optional. Persist hashes/URLs only. | |
| serving_multiplier | No | Scale the current serving; 2 doubles the logged portion. | |
| user_query_context | No | Original user message. Always forward it. Used for alias hints and audit; never expands the allow-list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| fat | No | |
| name | No | |
| carbs | No | |
| error | No | |
| goals | No | |
| log_id | No | |
| account | No | |
| message | Yes | |
| protein | No | |
| bmr_kcal | No | |
| calories | No | |
| consumed | No | |
| meal_name | No | |
| remaining | No | |
| candidates | No | |
| plan_goals | No | |
| goal_source | No | |
| destinations | No | |
| activity_kcal | No | |
| destination_id | No | |
| calories_burned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description adds a key behavioral detail: 'ok=true only after Garmin re-read shows the new values.' This tells the agent about the external verification step and success condition. It does not contradict annotations, and it provides valuable context about side effects and confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action, the prohibition, the identification preference, and the success condition. It is front-loaded with the core purpose and contains no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (16 parameters, 0 required, output schema present, annotations covering safety), the description provides the essential usage context but omits one helpful clarification: whether this is a partial update (only provided fields changed) or requires a full replacement. The schema implies optionality, yet explicit statement of partial-update semantics would improve completeness. Overall it is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds only one param-related guideline ('Prefer log_id from list_nutrition'), which is useful but limited. Most of the meaning is carried by the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Change') and resource ('an existing food'), and explicitly states 'Do not add a second entry', which distinguishes it from log_nutrition. It also names the preferred way to identify the entry (log_id from list_nutrition), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates when to use this tool: when modifying an existing entry rather than adding one. 'Prefer log_id from list_nutrition' gives a concrete selection rule. However, it does not explicitly name alternatives or state conditions for when not to use this tool beyond the add/update distinction.
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.
12 tool updates
- First observed
delete_nutrition - First observed
get_daily_summary - First observed
get_nutrition_goals - First observed
list_destinations - First observed
list_garmin_accounts - First observed
list_my_permissions - First observed
list_nutrition - First observed
log_body_mass - First observed
log_nutrition - First observed
log_water - First observed
set_nutrition_goals - First observed
update_nutrition
Publisher details
- Operator
- Pack4Back · Publisher source
- Operator website
- https://nutrition.pack4back.com/
- Vendor relationship
- Unknown
- Documentation
- https://nutrition.pack4back.com/how-it-works
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceGarmin health and fitness data in Claude and ChatGPT via the official Garmin Health API. Hosted remote server with OAuth sign-in — no password sharing.8MIT
- AlicenseAqualityBmaintenanceConnects Claude to your Garmin Connect account to read activities, health metrics, and sleep data, and to create and schedule structured workouts directly onto your watch, all locally without exposing credentials.82MIT
- FlicenseNot gradedqualityDmaintenanceConnects Garmin watch data to Claude Desktop, allowing users to ask natural language questions about their health and activity data from Garmin Connect.-
- FlicenseAqualityBmaintenanceExposes your Garmin Connect data (activities, sleep, recovery, training status) to Claude in read-only mode.7-
Glama MCP Gateway
Add one secure layer between your agents and this server.