cronometer-mcp
This is an MCP server that lets you read and manage your Cronometer nutrition data (food logs, diary entries, targets, fasts, biometrics, and recurring foods) from MCP-compatible clients.
View nutrition data: get detailed food logs, daily macro totals, micronutrient breakdowns, and raw CSV exports.
Search & manage foods: search the food database, get food details/serving measures, add or remove diary entries, copy entire days, and mark days complete.
Manage diary groups: list this account's diary groups (names and indices) to correctly target meals.
Handle macro targets: read/set daily targets, list/create templates, and assign templates to a weekly schedule.
Track fasting: view fasting history and stats, cancel active fasts, and delete fast entries.
Log biometrics: add or remove weight, blood glucose, heart rate, and body fat entries.
Manage recurring foods: list, add, and delete repeat food items that auto-log on chosen days.
Sync to disk: download JSON exports and generate a markdown food log, with configurable output directory.
Use programmatically: the underlying Python client can also be used directly for all these operations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cronometer-mcpshow me my food log and macro summary for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cronometer-mcp
An MCP (Model Context Protocol) server that provides access to your Cronometer nutrition data. Pull detailed food logs, daily macro/micro summaries, manage diary entries, fasting, biometrics, and recurring foods — all from Claude, Cursor, or any MCP-compatible client.
Requires a Cronometer Gold account (or any paid tier that supports web login).
Features
Food log — individual food entries with full macro and micronutrient breakdown
Daily nutrition — daily calorie, protein, carb, fat, and fiber totals
Micronutrients — detailed vitamin/mineral breakdown with period averages
Diary management — add/remove food entries, copy entire days, mark days complete
Recurring foods — create, list, and delete repeat items that auto-log on selected days
Macro targets — read/write daily targets, create templates, set weekly schedules
Fasting — view history and stats, cancel or delete fasts
Biometrics — log and remove weight, blood glucose, heart rate, body fat
Raw CSV export — servings, daily summary, exercises, biometrics, or notes
Sync to disk — download JSON exports and generate a markdown food log
Related MCP server: MacroMCP
Quick Start
1. Install
pip install cronometer-mcpOr install from source:
git clone https://github.com/cphoskins/cronometer-mcp.git
cd cronometer-mcp
pip install -e .2. Set credentials
export CRONOMETER_USERNAME="your@email.com"
export CRONOMETER_PASSWORD="your-password"Or add them to a .env file in your project root (if your MCP client supports it).
3. Configure your MCP client
Claude Code (.mcp.json)
{
"mcpServers": {
"cronometer": {
"command": "cronometer-mcp",
"env": {
"CRONOMETER_USERNAME": "your@email.com",
"CRONOMETER_PASSWORD": "your-password"
}
}
}
}Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"cronometer": {
"command": "cronometer-mcp",
"env": {
"CRONOMETER_USERNAME": "your@email.com",
"CRONOMETER_PASSWORD": "your-password"
}
}
}
}If you installed from source with pip install -e ., you can also use the full Python path:
{
"command": "/path/to/venv/bin/python",
"args": ["-m", "cronometer_mcp.server"]
}Available Tools
Food Log & Nutrition
Tool | Description |
| Individual food entries with macros + micros for a date range |
| Daily macro totals (calories, protein, carbs, fat, fiber) |
| Detailed vitamin/mineral breakdown with period averages |
| Raw CSV export for any data type (servings, exercises, biometrics, etc.) |
Food Search & Diary Management
Tool | Description |
| Search the Cronometer food database |
| List this account's diary groups and the values |
| Get full nutrition info and serving measure IDs for a food |
| Add a food entry to the diary |
| Remove a food entry from the diary |
| Copy all diary entries from one date to another |
| Mark a diary day as complete or incomplete |
Recurring Foods (Repeat Items)
Tool | Description |
| List all recurring food entries |
| Add a recurring food entry that auto-logs on selected days |
| Delete a recurring food entry |
Macro Targets & Templates
Tool | Description |
| Get daily macro targets (or full weekly schedule with |
| Update daily macro targets (partial updates supported) |
| List all saved macro target templates |
| Create a new saved macro target template |
| Assign a template to days of the week as the recurring default |
Fasting
Tool | Description |
| View all fasts or fasts within a date range |
| Aggregate fasting statistics (total hours, longest, averages) |
| Cancel an in-progress fast while preserving the recurring schedule |
| Delete a fast entry |
Biometrics
Tool | Description |
| Get recently logged biometric entries |
| Log weight (lbs), blood glucose (mg/dL), heart rate (bpm), or body fat (%) |
| Remove a biometric entry |
Sync
Tool | Description |
| Download JSON exports + generate food-log.md to disk |
Tool Parameters
All date parameters use YYYY-MM-DD format. Most tools default to today or the last 7 days when dates are omitted.
Key parameter patterns:
diary_group— a diary group name (case-insensitive) or a 0-based index. Cronometer Gold gives every account 8 diary group slots and lets you rename and enable them freely, so the names are account-specific and are not always Breakfast/Lunch/Dinner/Snacks. Calllist_diary_groupsto see yours. On an untouched account the four standard meals are indices1–4(index0is a slot that ships disabled). Unknown names, disabled groups, and out-of-range indices are rejected rather than silently defaulting — Cronometer itself accepts a bad index without complaint and the entry becomes unreachable.days_of_week—"all","weekdays","weekends", or comma-separated day numbers (0=Sun through6=Sat)measure_id— pass0to use the universal gram-based measure (works for all food sources)target_date— pass"all"onget_macro_targetsto get the full weekly schedule
Sync Output
The sync_cronometer tool saves files to ~/.local/share/cronometer-mcp/ by default. Override with the CRONOMETER_DATA_DIR environment variable:
export CRONOMETER_DATA_DIR="/path/to/your/project/data/cronometer"Output files:
exports/servings_{start}_{end}.jsonexports/daily_summary_{start}_{end}.jsonexports/servings_latest.jsonexports/daily_summary_latest.jsonfood-log.md
How It Works
Cronometer does not have a public API for individual users. This server uses the same GWT-RPC (Google Web Toolkit Remote Procedure Call) protocol that the Cronometer web app uses internally:
Fetches the login page to get an anti-CSRF token
POSTs credentials to authenticate
Calls GWT-RPC
authenticateto get a user IDCalls GWT-RPC
generateAuthorizationTokenfor short-lived export tokensDownloads CSV exports using the token
Calls GWT-RPC methods directly for diary edits, fasting, biometrics, macro targets, and repeat items
Session cookies are persisted to ~/.local/share/cronometer-mcp/.session_cookies so that subsequent invocations reuse the session without re-authenticating (Cronometer has aggressive login rate limiting).
GWT Magic Values
The GWT protocol uses a permutation hash and header value that are baked into each Cronometer web deploy. These values are hardcoded in the client and may break when Cronometer pushes a new build.
Current values (as of February 2026):
Permutation:
7B121DC5483BF272B1BC1916DA9FA963Header:
2D6A926E3729946302DC68073CB0D550
If authentication starts failing with GWT errors, these values likely need updating. You can find the current values by:
Opening Cronometer in your browser
Going to Developer Tools → Network tab
Looking for requests to
cronometer.com/cronometer/appChecking the
x-gwt-permutationheader and the payload structure
You can override them via the CronometerClient constructor:
from cronometer_mcp import CronometerClient
client = CronometerClient(
gwt_permutation="NEW_PERMUTATION_HASH",
gwt_header="NEW_HEADER_VALUE",
)Python API
You can also use the client directly in Python:
from datetime import date, timedelta
from cronometer_mcp import CronometerClient
client = CronometerClient() # reads from env vars
# Get today's food log
foods = client.get_food_log()
# Get last 7 days of daily summaries
start = date.today() - timedelta(days=7)
summaries = client.get_daily_summary(start)
# Raw CSV export
csv_text = client.export_raw("exercises", start, date.today())
# Copy a day's diary entries
client.copy_day(date(2026, 3, 1), date(2026, 3, 8))
# Add a recurring food entry (every weekday)
client.add_repeat_item(
food_source_id=12345,
measure_id=0, # universal gram-based measure
quantity=200,
food_name="Oatmeal",
diary_group=1, # 0-based wire index; 1 == Breakfast on a default account
days_of_week=[1, 2, 3, 4, 5],
)
# Diary groups are user-configured - check what this account actually has
for g in client.diary_groups:
print(g["wire_index"], g["name"], g["enabled"])
# Log a biometric
client.add_biometric("weight", 218.5, date.today())License
MIT
Available Tools
27 toolsadd_biometricA
Add a biometric entry to Cronometer.
Supported metric types: weight (lbs), blood_glucose (mg/dL), heart_rate (bpm), body_fat (%).
Args: metric_type: One of 'weight', 'blood_glucose', 'heart_rate', 'body_fat'. value: The value in display units (lbs, mg/dL, bpm, %). entry_date: Date as YYYY-MM-DD.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| entry_date | Yes | ||
| metric_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 only states 'Add a biometric entry' without any details about idempotency, duplicate handling, side effects, or required permissions. This leaves significant gaps for an AI agent.
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 concise: a brief opening sentence followed by structured lists. The most important information is front-loaded. It could be slightly more streamlined, but it is well-organized and avoids unnecessary details.
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 simple add operation with three required parameters, the description fully covers the input. The presence of an output schema (though not visible) reduces the need to explain return values. The description is sufficiently complete for an agent to use 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 description includes an 'Args' section that explains the allowed values for metric_type, units for value, and format for entry_date. The input schema only has titles and types with 0% coverage, so the description adds crucial meaning 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 clearly states 'Add a biometric entry to Cronometer' and lists supported metric types. The tool name and description align, and it is distinguished from sibling tools like 'remove_biometric' and 'get_recent_biometrics'.
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 specifies supported metric types and displays acceptable units (lbs, mg/dL, bpm, %), guiding appropriate usage. It implicitly tells the agent when to use this tool (for adding these specific metrics) but does not explicitly state conditions to avoid or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_food_entryA
Add a food entry to the Cronometer diary.
Use search_foods to find food_id and food_source_id, then get_food_details for measure_id and weight_grams.
For CRDB/custom foods, you can omit measure_id (defaults to a universal NCCDB measure that works for all food sources). When measure_id is omitted, quantity is set to weight_grams.
Args: food_id: Numeric food ID from search_foods results. food_source_id: Food source ID from search_foods results. weight_grams: Weight of the serving in grams. date: Date to log the entry as YYYY-MM-DD (e.g. "2026-03-04"). measure_id: Measure/unit ID. Pass 0 (default) to use the universal measure that works for all food sources. quantity: Number of servings. Defaults to weight_grams when measure_id is 0 (universal gram-based measure). diary_group: Diary group name (case-insensitive) or 0-based index. Names are user-configured and are not always Breakfast/Lunch/Dinner/Snacks — call list_diary_groups to see this account's groups. Defaults to a time-of-day choice among enabled groups if omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| food_id | Yes | ||
| quantity | No | ||
| measure_id | No | ||
| diary_group | No | ||
| weight_grams | Yes | ||
| food_source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses default behavior for measure_id, quantity, and diary_group fallback, and warns that diary group names are user-configured and may differ from standard ones. It does not detail side effects or error handling, but it covers the most decision-relevant 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 organized as a compact workflow paragraph followed by an Args list. Every sentence adds value, and the structure front-loads the primary action before parameter detail.
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 7 parameters, 0% schema coverage, and no annotations, the description is remarkably complete. It covers the calling sequence, parameter sources, defaults, edge cases for CRDB/custom foods, and how to discover diary groups, leaving no important gap for an agent to invoke 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 0%, and the description compensates fully by explaining the origin and purpose of every parameter, including food_id, food_source_id, weight_grams, date, measure_id, quantity, and diary_group. It also clarifies relationships like quantity defaulting to weight_grams when measure_id is 0.
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 first sentence states the specific operation and resource: "Add a food entry to the Cronometer diary." It clearly distinguishes itself from sibling tools like remove_food_entry and get_food_log, and the workflow references tie it to search_foods and get_food_details.
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 prescribes a workflow: use search_foods to find IDs, get_food_details for measure and weight, and list_diary_groups for valid group names. It also explains when measure_id and quantity can be omitted for CRDB/custom foods, giving precise selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_repeat_itemA
Add a recurring food entry that auto-logs on selected days.
Quantity is in default servings for the food (e.g., for coffee where the default serving is 1 cup, quantity=12 means 12 cups).
Use search_foods to find food_id and food_source_id.
Args: food_id: Numeric food ID from search_foods results. food_source_id: Food source ID from search_foods results. quantity: Number of default servings. food_name: Display name for the food. diary_group: Diary group name (case-insensitive) or 0-based index. Names are user-configured — call list_diary_groups to see this account's groups. Defaults to a time-of-day choice among enabled groups if omitted. days_of_week: Comma-separated day numbers (0=Sun, 1=Mon, ..., 6=Sat), or "all" for every day (default), or "weekdays", or "weekends".
| Name | Required | Description | Default |
|---|---|---|---|
| food_id | Yes | ||
| quantity | Yes | ||
| food_name | Yes | ||
| diary_group | No | ||
| days_of_week | No | all | |
| food_source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does it well: it explains auto-logging on selected days, quantity units via the coffee example, diary_group case-insensitivity/indexing/default behavior, and days_of_week formats/defaults. It does not discuss what happens on repeated calls or the success/response shape, but the presence of an output schema mitigates the return-value gap.
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 well-organized: a one-sentence purpose, a crucial unit-of-measure note with a concrete example, then a clean parameter block. Every sentence adds either behavioral context or parameter guidance, with no filler or redundancy beyond the repetitive but still useful quantity note.
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 six parameters, zero schema descriptions, and no annotations, this description is remarkably complete. It covers the full parameter set, expected lookup workflow, defaults, and edge-case values. The presence of an output schema means return values do not need to be described.
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 0%, and the description fully compensates by explaining all six parameters: food_id and food_source_id provenance, quantity meaning, food_name purpose, diary_group semantics including default, and days_of_week allowed formats including 'all', 'weekdays', and 'weekends'.
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 and resource: 'Add a recurring food entry that auto-logs on selected days.' This differentiates it from sibling add_food_entry (one-off) and delete_repeat_item, even without naming them.
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 gives clear preparation guidance: 'Use search_foods to find food_id and food_source_id' and points to list_diary_groups for diary_group names. It does not explicitly say when-not-to-use this tool versus add_food_entry or delete_repeat_item, but the recurring-entry context makes the intended use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_active_fastA
Cancel an active (in-progress) fast while preserving the recurring schedule.
Use get_fasting_history to find active fasts (is_active=true).
Args: fast_id: The fast ID of the active fast to cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| fast_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description fails to disclose behavioral details such as side effects, permissions, or reversibility beyond preserving the schedule.
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?
Extremely concise with two short paragraphs and an Args section; front-loads purpose and provides essential context without waste.
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 simple tool with one parameter and an output schema, the description covers the core functionality and prerequisite step, though it omits edge cases on non-active fasts.
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 0%, but the description adds meaning by specifying that fast_id must belong to an active fast, compensating for the lack of schema descriptions.
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 the verb 'cancel' and the resource 'active fast', and distinguishes from deleting the schedule by noting preservation of recurring schedule.
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?
Provides explicit guidance to use get_fasting_history to find active fasts, but does not mention when not to use or alternatives like delete_fast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_dayA
Copy all diary entries from one date to another.
Server-side operation that copies ALL entries (food, exercise, notes, biometrics) from source to destination. Additive — does not remove existing entries on the destination date.
Args: source_date: Date to copy FROM as YYYY-MM-DD. destination_date: Date to copy TO as YYYY-MM-DD.
| Name | Required | Description | Default |
|---|---|---|---|
| source_date | Yes | ||
| destination_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavior (server-side, additive, covers all entry types) but omits potential failure modes, authorization requirements, or return value details. Adequate given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with main purpose, every sentence adds value. No extraneous information.
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?
Explains overall behavior adequately for a copy tool with simple parameters. Output schema exists so return values not needed. Minor gaps like edge case behavior (e.g., same date) not covered.
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?
Adds meaning beyond schema by specifying format YYYY-MM-DD for both parameters. Schema covers 0%, so description compensates well.
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?
Clearly states verb (copy), resource (all diary entries), and scope (from one date to another). Distinguishes from sibling tools that operate on individual entries.
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?
Explains that it is server-side, copies all entries additively, implying use when duplicating date data without overwriting. Does not explicitly mention alternatives but context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_macro_templateA
Create a new saved macro target template in Cronometer.
Optionally assigns it to all days of the week as the recurring default.
Args: template_name: Name for the new template (e.g. "Retatrutide GI-Optimized"). protein_grams: Protein target in grams. fat_grams: Fat target in grams. carbs_grams: Net carbs target in grams. calories: Calorie target in kcal. assign_to_all_days: If True, also set this as the recurring weekly schedule for all 7 days (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| calories | Yes | ||
| fat_grams | Yes | ||
| carbs_grams | Yes | ||
| protein_grams | Yes | ||
| template_name | Yes | ||
| assign_to_all_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It mentions the optional side effect of assigning to all days of the week, but lacks disclosure about overwriting existing templates, required permissions, or any destructive actions. For a creation tool, more behavioral context is needed.
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 the purpose, and uses a clear docstring format with bulleted arguments. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no annotations, and an existing output schema (not described), the description adequately covers inputs and the optional side effect. However, it omits any description of the return value, error conditions, or uniqueness constraints on template_name, making it slightly incomplete.
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 0%, but the description provides explicit docstring-style explanations for all 6 parameters, including units (grams, kcal), example values, and default behavior for assign_to_all_days. This fully compensates for the lack of schema descriptions.
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?
Description clearly states 'Create a new saved macro target template in Cronometer' with specific verb (Create) and resource (macro target template). It is distinct from sibling tools like list_macro_templates (listing), set_macro_targets (setting current targets), and set_weekly_macro_schedule (scheduling).
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 guidance on when to use this tool versus alternatives; for example, it does not clarify when to use create_macro_template vs set_macro_targets or set_weekly_macro_schedule. The optional assignment to all days is mentioned but not linked to alternative scheduling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fastA
Delete a fast entry from Cronometer.
Use get_fasting_history first to find the fast_id.
Args: fast_id: The fast ID to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| fast_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states that the tool deletes a fast entry, without disclosing whether the action is reversible, requires permissions, or what side effects occur. This is insufficient for a mutation tool.
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 extremely concise: two sentences plus an Args section. Every sentence adds value, and the purpose is front-loaded. No unnecessary words.
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 simple one-parameter delete tool with an output schema, the description covers purpose, parameter, and prerequisite. It doesn't describe return values, but that may be covered by the output schema. Overall, it's adequate for the complexity level.
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 description explains the fast_id parameter as 'The fast ID to delete,' adding meaningful context beyond the schema's title and type. Since schema description coverage is 0%, the description compensates well.
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 explicitly states it deletes a fast entry from Cronometer, using a specific verb and resource. It distinguishes itself from sibling tools like cancel_active_fast by implying it's for historical entries, and provides a prerequisite step.
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 instructs to use get_fasting_history first to find the fast_id, which is a clear usage guideline. It does not explicitly mention when not to use it or alternatives, but the prerequisite is well stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_repeat_itemA
Delete a recurring food entry.
Use get_repeated_items to find the repeat_item_id.
Args: repeat_item_id: The ID of the repeat item to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| repeat_item_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It describes a destructively mutable operation but fails to mention side effects, irreversibility, permissions needed, or return values. The only added context is a hint to find the ID.
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 extremely concise: two sentences plus a parameter line. It front-loads the primary action and immediately follows with a crucial usage hint. No extraneous information.
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 simple delete tool with one parameter and an output schema, the description is minimally complete. It covers the action and parameter purpose but omits expected behavior on success/failure, error handling, or any confirmation. An agent might need additional context for robust invocation.
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?
With 0% schema description coverage, the description adds a minimal explanation for the single parameter: 'The ID of the repeat item to delete.' This provides some clarity beyond the schema property name, but lacks details like validation constraints or example values.
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 'Delete a recurring food entry', which is a specific verb and resource. It distinguishes from related tools like remove_food_entry (for regular entries) and the sibling add_repeat_item and get_repeated_items.
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 tells users to use get_repeated_items to find the repeat_item_id, which provides a prerequisite step, but does not explicitly state when to prefer this tool over alternatives (e.g., remove_food_entry) or when not to use it. The guidance is implied but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_raw_csvA
Export raw CSV data from Cronometer for any data type.
Useful when you need the full unprocessed export.
Args: export_type: One of 'servings', 'daily_summary', 'exercises', 'biometrics', 'notes'. start_date: Start date as YYYY-MM-DD (defaults to today). end_date: End date as YYYY-MM-DD (defaults to today).
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No | ||
| export_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description fully carries the burden. It notes 'full unprocessed export' implying no transformation, and describes parameters. However, it does not disclose any potential side effects, what the output looks like, or error conditions. Adequate but not detailed.
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 short and to the point, with a clear summary sentence, a usage note, and a structured list of parameters. No redundant information, though it could be slightly more compact.
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 has 3 parameters and no annotations, the description covers all parameter semantics well. It does not describe return values, but an output schema is present (though not shown) which likely covers that. The description is sufficient for a simple export 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 0%, so the description must compensate. It lists allowed values for export_type, explains start_date and end_date defaults and format. This adds significant meaning beyond the bare schema properties.
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 'Export raw CSV data from Cronometer for any data type', specifying verb and resource. It also lists valid export types. It distinguishes from sibling tools like get_daily_nutrition which likely return JSON, so purpose is distinct and clear.
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 says 'Useful when you need the full unprocessed export', which gives a usage hint but does not explicitly state when not to use or compare with alternatives like the get_* tools. It lacks explicit when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_nutritionA
Get daily nutrition summary with macro totals per day.
Returns calorie, protein, carb, fat, and fiber totals for each day. Use this for quick daily overviews and trend analysis.
Args: start_date: Start date as YYYY-MM-DD (defaults to 7 days ago). end_date: End date as YYYY-MM-DD (defaults to today).
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implicitly indicates a read-only operation ('Get daily nutrition summary') but does not explicitly state that no data is modified. It lacks details on authentication, rate limits, or side effects, though such details are not critical for a simple retrieval tool.
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 front-loaded with the tool's purpose and return values, followed by a concise parameter specification. No unnecessary sentences or redundancies. Could be slightly more compact by merging the parameter info into the main text, but still efficient.
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 that an output schema exists (has output_schema: true), the description appropriately lists expected return fields and date range defaults. It covers the essential aspects for an agent to decide and invoke the tool correctly. Minor omission: no mention of potential empty results or error cases, but these are likely captured in the output schema.
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 description compensates for the input schema's lack of property descriptions by detailing each parameter's format ('YYYY-MM-DD') and defaults (7 days ago for start_date, today for end_date). This adds clear meaning beyond the schema's basic type and title.
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 the tool retrieves daily nutrition summaries with macro totals (calories, protein, carbs, fat, fiber). It distinguishes from sibling tools like get_food_log and get_macro_targets by specifying 'daily overviews and trend analysis,' but does not explicitly list alternative scenarios.
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 advises using this tool for 'quick daily overviews and trend analysis.' However, it does not specify when not to use it or mention alternatives among siblings, which would improve differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fasting_historyA
Get fasting history from Cronometer.
Returns all fasts (or fasts within a date range) with their status, names, recurrence rules, and timestamps.
Args: start_date: Start date as YYYY-MM-DD (omit for all history). end_date: End date as YYYY-MM-DD (omit for all history).
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 describes the return values but does not explicitly state that the tool is read-only, non-destructive, or any other behavioral traits like pagination or rate limits. For a simple retrieval tool, this is adequate but not thorough.
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 concise, with a front-loaded purpose statement followed by clear, bullet-style parameter documentation. Every sentence adds value without redundancy.
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 simplicity (2 optional params, output schema exists), the description adequately covers what the tool does and its parameters. It does not mention error handling or range limits, but for a retrieval tool this is acceptable.
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 covers 0% of parameter descriptions, but the description adds format and usage for start_date and end_date (e.g., 'YYYY-MM-DD', 'omit for all history'), which provides meaning beyond the schema's type and default. This compensates for the schema gap.
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 the tool 'Get fasting history from Cronometer' and specifies it returns fasts with status, names, recurrence rules, and timestamps. It distinguishes from sibling tools like get_fasting_stats (stats) and cancel_active_fast (mutation) by focusing on historical data retrieval.
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 usage for retrieving fasting history, optionally within a date range, but does not explicitly compare to alternatives such as get_fasting_stats or clarify when to omit dates. No 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fasting_statsA
Get aggregate fasting statistics from Cronometer.
Returns total fasting hours, longest fast, 7-fast average, and completed fast count.
| 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?
No annotations are provided, so the description carries the burden. It explicitly states that the tool retrieves data and lists what is returned, implying a read-only operation with no side effects. This is sufficient for the simple query.
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 concise sentences front-load the purpose and list outputs with no wasted words. Every sentence earns its place.
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 zero parameters and an output schema present, the description fully covers what an agent needs: what the tool does and what it returns. Sibling tools provide additional context for differentiation.
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?
There are zero parameters and schema coverage is 100% trivially. The description adds value by listing the specific return fields, which provides context beyond the schema for what the tool outputs.
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 the tool retrieves aggregate fasting statistics from Cronometer and lists four specific metrics (total fasting hours, longest fast, 7-fast average, completed fast count). This directly states verb+resource and differentiates from sibling 'get_fasting_history' which likely returns raw data.
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 usage for aggregate stats but provides no explicit when-to-use, when-not-to, or alternatives. Given the tool name and context, usage is clear but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_food_detailsA
Get detailed food information including available serving measures.
Use this after search_foods to get the measure_id needed for add_food_entry. Returns all available serving sizes with their numeric IDs and gram weights.
Args: food_source_id: Food source ID from search_foods results.
| Name | Required | Description | Default |
|---|---|---|---|
| food_source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 mentions returning all available serving sizes with IDs and gram weights but does not disclose potential side effects or authentication requirements. As a read-only tool, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear sections: purpose, usage context, and argument details. It is front-loaded with the main purpose.
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 has an output schema, the description need not explain return values. It covers the parameter and usage context thoroughly for a simple lookup 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 0%, but the description explains the parameter 'food_source_id' as coming from search_foods results, adding meaning beyond the schema's type and title.
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 'Get detailed food information including available serving measures' and specifies its role in the workflow after search_foods and before add_food_entry, distinguishing it from sibling 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 explicitly advises using it after search_foods to obtain measure_id for add_food_entry, providing clear usage context and workflow integration.
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 detailed food log with individual food entries and full nutrition.
Returns every food entry with macros and micronutrients. Great for analyzing what was eaten and spotting nutrient gaps.
Args: start_date: Start date as YYYY-MM-DD (defaults to today). end_date: End date as YYYY-MM-DD (defaults to today).
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions the return content (entries with macros and micros) but does not disclose behaviors like pagination, error handling, or performance implications. The transparency is adequate but not detailed.
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 concise: two short paragraphs with front-loaded purpose, a usage hint, and well-structured parameter descriptions. Every sentence adds value without redundancy.
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 a simple interface with two optional parameters and has an output schema. The description covers the return content, usage context, and parameter details. Minor omission: no mention of behavior when no entries exist for the date range.
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 0%, so the description must compensate. It explains the date format (YYYY-MM-DD) and default behavior (defaults to today) for both parameters. This adds value beyond the schema's type and title.
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 the verb (get) and resource (food log with individual entries and full nutrition). It distinguishes from sibling tools like get_daily_nutrition or get_micronutrients by emphasizing detailed entries and micronutrients.
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 use case ('great for analyzing what was eaten and spotting nutrient gaps') and implies when to use it for detailed analysis. However, it does not explicitly contrast with siblings or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_macro_targetsA
Get current daily macro targets from Cronometer.
Returns the effective macro targets (protein, fat, carbs, calories) and the template name for a specific date or all days of the week.
Args: target_date: Date as YYYY-MM-DD to get targets for (defaults to today). Pass "all" to get the full weekly schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| target_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It explains the meaning of the parameter and what is returned, but does not explicitly state that the tool is read-only, has no side effects, or any authentication requirements. The behavioral transparency is adequate for a simple getter but could be improved.
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 extremely concise with two sentences plus an Args list. It front-loads the purpose and immediately explains the parameter. Every sentence is informative and there is no fluff.
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 tool with one optional parameter and an output schema, the description sufficiently explains the return fields and the parameter. A minor gap is the lack of clarification on what happens if the date has no targets, or whether the return includes all days when using 'all'. However, overall it is complete enough for typical usage.
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?
Despite 0% schema description coverage, the description fully explains the parameter target_date: format (YYYY-MM-DD), default (today), and special value 'all' for weekly schedule. This adds significant value beyond the schema type information.
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 'Get current daily macro targets' with a specific verb and resource. It distinguishes from sibling tools like set_macro_targets and list_macro_templates by focusing on retrieval. It specifies what is returned (protein, fat, carbs, calories, template name), making the 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?
The description provides no guidance on when to use this tool versus alternatives. For example, it does not contrast with set_macro_targets (modification) or get_daily_nutrition (which likely returns all nutrition). An agent would have no explicit context for tool selection beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_micronutrientsB
Get detailed micronutrient breakdown for meal planning.
Shows vitamins, minerals, and other micronutrients per day with period averages. Use this to identify nutrient gaps and plan meals.
Args: start_date: Start date as YYYY-MM-DD (defaults to 7 days ago). end_date: End date as YYYY-MM-DD (defaults to today).
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions default values for start_date and end_date but lacks details on side effects, performance, or output structure beyond 'vitamins, minerals, and other micronutrients.' 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two short paragraphs) with the purpose stated first followed by parameter details. No extraneous information is present.
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 simplicity (2 optional params, output schema exists), the description is sufficiently complete for a query tool. It covers purpose, usage, and parameter meaning, though it could mention output schema or sibling differentiation.
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?
With 0% schema description coverage, the description adds significant value by explaining the format (YYYY-MM-DD) and defaults for both start_date and end_date. This compensates for the schema's lack of parameter documentation.
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 that the tool retrieves a detailed micronutrient breakdown with vitamins and minerals per day and period averages, which distinguishes it from macronutrient-focused siblings like get_daily_nutrition. However, it does not explicitly differentiate from 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 includes 'Use this to identify nutrient gaps and plan meals,' providing a clear usage scenario. However, it does not specify when not to use this tool or mention alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_biometricsA
Get the most recently logged biometric entries from Cronometer.
Returns recent values for weight, blood glucose, blood pressure, heart rate, body fat, and other tracked biometrics.
| 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?
No annotations, so description carries burden. It states it returns recent values for common biometrics, implying read-only behavior. Lacks detail on recency or behavior when empty, but acceptable.
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 concise sentences, front-loaded with action and resource, no extraneous information.
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?
Output schema exists, covering return values. Description lists example biometrics, providing context. Could specify 'most recent entry per type' but sufficient.
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?
No parameters; schema coverage is 100%. Description adds no param info, which is fine. Baseline 3 due to high 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?
Clear verb 'Get' and resource 'recent biometric entries', with examples distinguishing from sibling tools like add_biometric and remove_biometric.
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 on when to use vs alternatives, but purpose is clear enough for simple retrieval; not confused with other get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repeated_itemsA
List all recurring food entries.
Returns all repeat items configured in Cronometer, including their food name, quantity, measure, diary group, and which days of the week they repeat on.
| 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?
No annotations are provided, so the description carries the full burden. It clearly states what the tool returns, which is the key behavioral aspect. It does not disclose non-obvious traits like rate limits or auth, but for a simple list operation it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences, no wasted words. The first sentence conveys the core purpose, and the second adds necessary detail about return contents.
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 zero-parameter input and existence of an output schema, the description is complete enough. It lists all relevant return fields, and the sibling tools provide context for this read-only list operation.
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, and the input schema is complete (100% coverage). The description adds no parameter information, which is appropriate given the absence of parameters. Baseline for 0 params is 4.
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 'List all recurring food entries' using a specific verb and resource. It also details the returned fields (food name, quantity, etc.), which unambiguously defines the tool's purpose.
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 on when to use this tool vs alternatives like add_repeat_item or delete_repeat_item. The usage context is implied by the 'List' verb, but the description does not provide when-not or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diary_groupsA
List this account's diary groups, with the values add_food_entry accepts.
Diary group names are user-configured in Cronometer, so they are NOT always Breakfast/Lunch/Dinner/Snacks. Call this before assuming a name exists — an account may rename any slot or enable extra ones.
Returns each group's wire_index (the 0-based value add_food_entry takes), its name, and whether it is enabled. Only enabled groups can be written to.
| 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains what the tool returns (wire_index, name, enabled status), clarifies that wire_index is the 0-based value expected by add_food_entry, and warns about user-configured names. This gives the agent actionable behavioral context beyond a generic list operation.
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 front-loaded with the core purpose and result, then adds necessary caveats about user-configured names and enabled-state restrictions. Each sentence earns its place; there is 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?
The description fully prepares the agent for the tool's role in the workflow: it explains what data is returned, what that data means for downstream calls to add_food_entry, and the practical gotchas about custom names and enabled groups. Given the simple no-input nature of the tool, no additional context is needed.
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 parameter semantics are inherently trivial. The description adds useful meaning by explaining what the returned wire_index means in the context of add_food_entry, which compensates for the empty schema. The baseline of 4 applies since no parameter documentation is needed.
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 the tool lists diary groups and explicitly ties the returned values to what add_food_entry accepts. This distinguishes it from sibling tools that log food or retrieve nutrition data, leaving no ambiguity about its purpose.
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 instructs the agent to call this tool before assuming a diary group name exists, and it explains why: names are user-configured and may differ from defaults. It also notes that only enabled groups are writable, giving clear guidance on when and how to use the result for add_food_entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_macro_templatesA
List all saved macro target templates in Cronometer.
Returns template names, IDs, and their macro values. Use this to find the template_name for set_weekly_macro_schedule.
| 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?
Discloses it lists all templates and returns specific fields. No annotations provided, so description carries full burden; it adequately describes a read-only listing operation with no side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with core action and return values. Every sentence adds value without redundancy.
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 no parameters and presence of output schema, description is complete. It explains the tool's purpose and its relationship to a sibling tool, covering all necessary 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?
No parameters in input schema, so description does not need to explain parameter semantics. Schema coverage is 100% (vacuously). Baseline score of 4 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?
Clearly states the tool lists all saved macro target templates in Cronometer, specifying returns (names, IDs, macro values) and linking to a sibling tool. Distinguishes itself from siblings like create_macro_template or get_macro_targets.
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?
Explicitly states to use this tool to find template_name for set_weekly_macro_schedule, providing clear context. Does not mention exclusions or alternatives, but the use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_biometricA
Remove a biometric entry from Cronometer.
Use get_recent_biometrics to find biometric_id values.
Args: biometric_id: The biometric entry ID (e.g. "BXW0DA").
| Name | Required | Description | Default |
|---|---|---|---|
| biometric_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It indicates deletion but lacks disclosure on permanence, authorization, or side effects. Adequate for a simple operation.
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 sentences plus an Args section, front-loaded with the main action. Every sentence adds value without redundancy.
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 single-parameter deletion tool with an output schema (present but not described), the description adequately covers core purpose and ID retrieval. Could mention return value but not critical.
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?
Input schema has 0% description coverage, but description adds an example format ('e.g. BXW0DA'), which compensates and clarifies the expected string format.
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 'Remove a biometric entry from Cronometer', using a specific verb and resource. It distinguishes from sibling tools like add_biometric.
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?
Explicitly guides the agent to use get_recent_biometrics to find the biometric_id. Does not mention when not to use or alternatives, but provides necessary context for ID retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_food_entryA
Remove a food entry from the Cronometer diary.
Args: serving_id: The serving ID returned by add_food_entry (e.g. "D80lp$").
| Name | Required | Description | Default |
|---|---|---|---|
| serving_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 only indicates removal without discussing side effects, idempotency, or error handling (e.g., behavior if serving_id does not exist). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose and one line for the parameter. It is front-loaded with the essential action and contains no unnecessary words.
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 simplicity and the presence of an output schema, the description is adequate for basic usage. However, it lacks details on behavior (e.g., success/failure indication) that would make it fully complete.
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 description adds valuable context to the serving_id parameter by specifying it is 'the serving ID returned by add_food_entry' and providing an example. This compensates for the 0% schema description 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 clearly states the verb 'Remove' and the resource 'food entry from the Cronometer diary'. It is distinct from siblings like add_food_entry and get_food_log, which are for addition and retrieval.
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 states that the serving_id must come from add_food_entry, providing clear context for when to use the tool. However, it does not mention when not to use it or suggest alternatives, which for a simple removal tool is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_foodsA
Search Cronometer's food database by name.
Returns matching foods with their IDs and source information needed to add a serving (food_id, food_source_id, measure_id).
Args: query: Food name or keyword to search for (e.g. "eggs", "chicken breast").
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds some behavioral context (returns IDs and source info) beyond schema, but lacks details like pagination, error handling, or search matching behavior. No annotations provided.
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 concise sentences plus an Args line. Purpose is front-loaded, no redundancy.
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?
Adequate for a simple search tool with one parameter and output schema. Could mention search behavior (fuzzy vs exact), but not necessary.
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 0%, but description explains the query parameter with examples, adding meaning beyond the schema's type definition.
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?
Clearly states it searches Cronometer's food database by name, and specifies returned data. Distinguishes from sibling tools like add_food_entry or get_food_details.
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?
Implied usage for finding foods before adding them, but no explicit when-to-use or when-not-to-use compared to alternatives like get_food_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_day_completeA
Mark a diary day as complete or incomplete.
Args: date: Date to mark as YYYY-MM-DD. complete: True to mark complete, False to mark incomplete.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| complete | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the basic behavior (toggle complete/incomplete) but does not disclose any side effects, permissions, or return values. Since no annotations are provided, the description carries the full burden, but it is adequate for a straightforward toggle operation.
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 concise, consisting of one line for purpose and two lines for parameters. It is well-structured with no extraneous information.
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 simplicity and the presence of an output schema (not shown), the description covers the essential purpose and parameters. It does not explain downstream effects, but for a toggle operation, this is acceptable.
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?
With 0% schema description coverage, the description adds crucial meaning: it specifies the date format (YYYY-MM-DD) and clarifies the boolean parameter's effect ('True to mark complete, False to mark incomplete'). This compensates well for the empty 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 clearly states the action: 'Mark a diary day as complete or incomplete.' This is a specific verb-resource pair, and it distinguishes this tool from siblings like add_food_entry or cancel_active_fast.
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 guidance on when to use this tool versus alternatives, such as copy_day or set_macro_targets. It lacks context about prerequisites or scenarios where marking a day complete is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_macro_targetsA
Update daily macro targets in Cronometer.
Reads current targets first, then updates only the provided values. Omitted values remain unchanged.
Args: protein_grams: Protein target in grams. fat_grams: Fat target in grams. carbs_grams: Net carbs target in grams. calories: Calorie target in kcal. target_date: Date as YYYY-MM-DD (defaults to today). template_name: Template name (defaults to "Custom Targets").
| Name | Required | Description | Default |
|---|---|---|---|
| calories | No | ||
| fat_grams | No | ||
| carbs_grams | No | ||
| target_date | No | ||
| protein_grams | No | ||
| template_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behavioral traits: it reads current targets first, only updates provided values, and defaults for target_date and template_name. It could mention error handling or required authentication but is notably transparent.
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 extremely concise: one sentence for purpose, one for behavior, and a clean Args list. 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.
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 and no annotations, the description is largely complete, explaining update strategy and defaults. Minor gaps: no error handling or response format description, but overall sufficient for correct use.
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 schema has 0% description coverage, so the description fully compensates by defining each parameter's unit (grams, kcal), format (YYYY-MM-DD), and defaults. This adds essential 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update daily macro targets') and the resource ('Cronometer macro targets'), distinguishing it from sibling tools like get_macro_targets and set_weekly_macro_schedule.
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 explains the read-before-write behavior and that omitted values remain unchanged, providing clear usage context. However, it does not explicitly state when NOT to use this tool or mention specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_weekly_macro_scheduleA
Set the recurring weekly macro schedule by assigning a template to days.
This updates the DEFAULT schedule that applies to all future dates, not just a specific date override.
First finds the template by name (from existing saved templates or from a recently created per-date template), then assigns it to the specified days of the week.
Args: template_name: Name of a saved macro target template (e.g. "Retatrutide GI-Optimized", "Keto Rigorous"). days: Comma-separated day names or "all" (default). E.g. "Monday,Wednesday,Friday" or "all".
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | all | |
| template_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discloses that the tool updates the default schedule (a write operation) but does not specify whether it overwrites existing schedules, required permissions, or undoability. Given the lack of annotations, this is adequate but could be more explicit about behavioral traits.
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 front-loaded with the main action, followed by a clear explanation of scope and mechanism. The Args section is well-structured. Every sentence adds value without redundancy.
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 simplicity (2 params, 1 required, output schema exists), the description covers the core functionality and parameter semantics well. It omits details like error handling or valid day enumerations, but these are minor gaps. The output schema exists, so not explaining return values is acceptable.
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 description adds detailed meaning beyond the input schema, which only has titles and types. It explains that template_name refers to saved templates and days can be comma-separated day names or 'all', filling the 0% schema coverage gap entirely.
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 the verb 'Set' and resource 'recurring weekly macro schedule' with action 'assigning a template to days.' It distinguishes from sibling tools like set_macro_targets by specifying it's for a weekly recurring schedule, not daily targets.
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 explains that the tool updates the DEFAULT schedule for all future dates, not a specific date override. While it doesn't explicitly mention when not to use it or alternatives, the context is clear enough for an AI to differentiate from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_cronometerA
Download Cronometer data and save locally as JSON + food-log.md.
Downloads servings and daily summary data, saves JSON exports, and regenerates food-log.md.
Output directory defaults to ~/.local/share/cronometer-mcp/ but can be overridden with the CRONOMETER_DATA_DIR environment variable.
Args:
start_date: Start date as YYYY-MM-DD (defaults to days ago).
end_date: End date as YYYY-MM-DD (defaults to today).
days: Number of days to look back if start_date not specified (default 14).
diet_label: Optional diet label for the markdown header (e.g., "Keto Rigorous").
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| end_date | No | ||
| diet_label | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool downloads and saves files, mentions the output directory default and environment variable, but does not address authentication requirements, rate limits, or side effects like overwriting existing files. It adds some behavioral context but is not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (9 lines) with a front-loaded summary followed by details and parameter explanations. Every sentence adds necessary information without redundancy.
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 description explains the action, output types, parameters, and directory configuration. Given the tool's complexity (4 optional parameters, local file output), it covers most essential aspects. It could mention overwrite behavior or prerequisites, but overall it is fairly complete.
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 0%, so the description must compensate, and it does excellently. Each parameter is given a clear format, default, and meaning (e.g., 'start_date: Start date as YYYY-MM-DD (defaults to `days` ago)'). This adds substantial value beyond the schema titles.
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 the verb ('Download Cronometer data and save locally'), the resource ('Cronometer data'), and the output format ('JSON + food-log.md'). It distinguishes itself from sibling tools (mostly get_/add_ operations) by emphasizing the local storage action.
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 a use case for downloading and saving data locally, but it does not explicitly provide when to use this tool versus alternatives like get_daily_nutrition or export_raw_csv. No exclusions or alternative recommendations are given, leaving the agent to infer the appropriate context.
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. Dates show when Glama detected each change.
3 tool updates
v2.2.0- Changed
add_food_entry3 fields changed- added
Input schema / properties / diary_group / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / diary_group / defaultPrevious value: -"Breakfast"New value: +null - removed
Input schema / properties / diary_group / typeRemoved value: -"string"
- Changed
add_repeat_item3 fields changed- added
Input schema / properties / diary_group / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / diary_group / defaultPrevious value: -"Breakfast"New value: +null - removed
Input schema / properties / diary_group / typeRemoved value: -"string"
- Added
list_diary_groups
26 tool updates
v2.0.3- First observed
add_biometric - First observed
add_food_entry - First observed
add_repeat_item - First observed
cancel_active_fast - First observed
copy_day - First observed
create_macro_template - First observed
delete_fast - First observed
delete_repeat_item - First observed
export_raw_csv - First observed
get_daily_nutrition - First observed
get_fasting_history - First observed
get_fasting_stats - First observed
get_food_details - First observed
get_food_log - First observed
get_macro_targets - First observed
get_micronutrients - First observed
get_recent_biometrics - First observed
get_repeated_items - First observed
list_macro_templates - First observed
remove_biometric - First observed
remove_food_entry - First observed
search_foods - First observed
set_day_complete - First observed
set_macro_targets - First observed
set_weekly_macro_schedule - First observed
sync_cronometer
TDQS
The tools are largely organized into clear subdomains: food logging, nutrition summaries, macro targets, fasting, biometrics, repeated items, and diary management. A few boundaries could still trip up an agent, such as cancel_active_fast vs. delete_fast and creating vs. applying macro templates, but the descriptions and complementary parameters make most selections clear.
Tool names consistently follow a verb_noun style with snake_case throughout, which makes the set predictable. The main inconsistency is vocabulary: get_ vs. list_, remove_ vs. delete_ vs. cancel_, and create_macro_template vs. add_food_entry, but these are minor style deviations rather than pattern-breaking names.
27 top-level tools is above the 25+ threshold and will burden an agent during tool selection, even though most tools individually earn their place. The set covers many Cronometer subdomains, but it would be more usable split into smaller servers or with some related operations consolidated.
The server covers food logging, nutrition retrieval, macro targets, fasting stats, biometrics, repeated items, and diary operations with read/create/delete paths for most entities. However, there are notable lifecycle gaps: no start_fast operation, no update/edit path for food entries or repeated items, and no direct exercise or note logging outside raw CSV exports.
Maintenance
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
- SomviaOAuthapp.somvia
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server integrating Foodvisor nutrition API for food search, meal logging, daily summaries, and progress tracking via LLM agents like Claude.MIT
- FlicenseNot gradedqualityCmaintenanceRemote MCP server for natural-language calorie/macro and weight tracking, designed to connect to Claude.ai as a custom connector.-
- AlicenseAqualityAmaintenanceMCP server for Cronometer nutrition tracking, enabling food diary management, nutrition data retrieval, food search, and biometric tracking via Cronometer's mobile REST API.1545MIT
- AlicenseAqualityBmaintenanceMCP server for Cronometer nutrition tracking using the mobile API. Enables food logging, nutrition data retrieval, diary management, and fasting tracking.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cphoskins/cronometer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server