Skip to main content
Glama
JJRPF

Garmin MCP Server

by JJRPF

create_custom_food

Create a custom food item with per-serving nutrition data in Garmin's nutrition library. Returns IDs needed for logging, so you can track homemade recipes and branded foods.

Instructions

Create a custom food in the user's Garmin nutrition library

Creates a new food item with nutritional information per serving. On success the response includes foodId and servingId needed for log_custom_food. If the API returns no data (204), use get_custom_foods(search=food_name) to retrieve those IDs.

All nutrient amounts are ABSOLUTE values per serving, not %DV. Nutrition labels often print %DV for calcium/iron/vitamin D — convert to absolute units before passing.

Args: food_name: Name of the custom food (e.g. "Homemade Chocolate Cookies") calories: Calories per serving serving_unit: Unit for serving size (e.g. "G", "ML", "OZ"). Default "G" number_of_units: Serving size in the specified unit. Default 100 brand_name: Brand or vendor name (e.g. "Three Bridges") carbs: Carbohydrates in grams per serving protein: Protein in grams per serving fat: Total fat in grams per serving fiber: Fiber in grams per serving sugar: Sugar in grams per serving saturated_fat: Saturated fat in grams per serving sodium: Sodium in mg per serving cholesterol: Cholesterol in mg per serving potassium: Potassium in mg per serving trans_fat: Trans fat in grams per serving calcium: Calcium in mg per serving (NOT %DV) iron: Iron in mg per serving (NOT %DV) vitamin_d: Vitamin D in mcg per serving (NOT %DV)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fatNo
ironNo
carbsNo
fiberNo
sugarNo
sodiumNo
calciumNo
proteinNo
caloriesYes
food_nameYes
potassiumNo
trans_fatNo
vitamin_dNo
brand_nameNo
cholesterolNo
serving_unitNoG
saturated_fatNo
number_of_unitsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.1.0

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 discloses the mutation ('Creates a new food item'), success response IDs, and the 204 no-data edge case. It also warns that nutrients are absolute values per serving, not %DV, which is behavioral context beyond the schema. It doesn't cover permissions or all failure modes, but this is strong for an unannotated 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?

Front-loads purpose, then response/error handling, unit warning, and a structured Args list. Some redundancy exists between 'Create a custom food' and 'Creates a new food item', but the length is justified by 18 parameters with zero schema descriptions.

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 an 18-parameter creation tool with no annotations, the description covers every parameter's unit/meaning, explains the 204 fallback, and connects to log_custom_food. An output schema exists, so the description doesn't need to detail the full return shape; nothing essential for correct invocation is missing.

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%, but the Args section documents all 18 parameters with units, defaults, and examples (e.g., serving_unit 'G','ML','OZ', default 100). It explicitly flags calcium, iron, and vitamin D as absolute mg/mcg values rather than %DV, adding meaning the schema does not provide.

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?

States a specific verb+resource: 'Create a custom food in the user's Garmin nutrition library' and clarifies it creates a new food item with per-serving nutrition. This separates it from logging, updating, deleting, and food search siblings.

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?

Provides clear context: response yields foodId and servingId needed for log_custom_food, and the 204 no-data fallback routes to get_custom_foods(search=food_name). It does not explicitly exclude update_custom_food for existing items, so it stops short of a full when-to-use/alternative matrix.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JJRPF/garmin_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server