Skip to main content
Glama
rollecode

Cronometer MCP server

by rollecode

add_custom_food

Create a custom food in Cronometer by entering the nutrients you know per serving (1–94). Unknown nutrients stay blank, and the returned food_id lets you log it.

Instructions

Create a custom food with any nutrients you have, from 1 to all 94.

Amounts are for one whole serving, each in that nutrient's own unit. Call list_nutrients for the accepted names and their units. Only pass the nutrients you actually know: a nutrient you leave out stays blank in Cronometer, while passing 0 states the food contains none of it, and the app treats those differently. An unrecognised name is an error, so nothing is silently dropped from a food that then looks complete.

Two label conveniences: energy_kj is converted to calories, salt_g to sodium. Pass either one or its underlying nutrient, not both.

After creation, use the returned food_id with add_food_entry to log it.

Args: name: Food name. nutrients: Nutrient name to amount per serving, e.g. {"energy": 250, "protein": 12.5, "vitamin_c": 30, "b12_cobalamin": 1.2}. serving_name: Name for the serving size (default "1 serving"). serving_grams: Weight of one serving in grams (default 100). label_type: "AMERICAN_2016" or "EUROPEAN". notes: Free-text note stored on the food.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
notesNo
nutrientsYes
label_typeNoAMERICAN_2016
serving_nameNo1 serving
serving_gramsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

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

  1. First observedv1.9.2

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description exposes critical behavioral nuances: omitted nutrients stay blank while 0 means none, unrecognized names error rather than being silently dropped, energy_kj converts to calories and salt_g to sodium, and passing both a convenience field and its underlying nutrient is invalid. This is exactly the kind of information an agent needs to avoid incorrect calls.

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

Conciseness5/5

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

Although the description is longer than average, every sentence conveys a distinct operational fact: units, defaults, conversion behavior, error behavior, and integration with add_food_entry. The content is front-loaded with the core action and nutrient semantics before the structured Args list, and there is no filler.

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

Completeness5/5

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

Given the tool's complexity — 94 possible nutrients, conversion rules, and a nested nutrients object — the description is fully sufficient for correct invocation. It explains defaults, allowed values, error semantics, and the follow-up logging step; the presence of an output schema also relieves it from documenting the return value in detail.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden, and it succeeds. It explains the nutrients object with a concrete example, defines serving_grams as one serving weight, gives the two allowed label_type values, and clarifies the meaning of leaving a nutrient out versus passing 0.

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

Purpose5/5

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

The description opens with 'Create a custom food' — a specific verb plus resource — and immediately distinguishes this from the sibling logging tool add_food_entry by the explicit post-creation workflow. It clearly separates creation from updating or retiring, making the tool's role unambiguous.

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

Usage Guidelines4/5

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

The description gives clear operational context: call list_nutrients for accepted names/units, and use the returned food_id with add_food_entry to log the food. It does not explicitly state when to prefer update_custom_food or retire_custom_food instead, but it clearly orients the agent within the broader workflow.

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

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rollecode/cronometer-mcp'

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