Skip to main content
Glama

IZeat

Update a recorded meal

update_meal
DestructiveIdempotent

Changes one meal that is already recorded, identified by its meal type and day — omit date for today, otherwise pass the customer's word (yesterday, 3 days ago, Tuesday) or YYYY-MM-DD only when they said the full date; never compute one yourself. It never creates a missing meal. Choose action 'add' when the customer only adds something they also ate with that meal: send only the added foods as items, one per food; IZeat appends them and recomputes the meal. Choose action 'revise' when the customer corrects, replaces, removes or combines several changes. Read the meal first with get_meal (it returns the rows exactly as stored, and draws nothing), then send the complete list of items as the meal should now be — copy every untouched row exactly as read, change only what the customer changed, leave out what they removed — plus a short list of the changes. Each change description must repeat the concrete customer fact, including old and new quantities or supplied calorie values when known. One revise call stores all those changes together. Never recompute totals yourself: IZeat sums the rows. Items follow the same rules as log_meal: grams or millilitres only, the customer's own measure kept in as_said, figures with decimals allowed, one source per item. Only the rows that differ are touched: a replaced row is kept in IZeat's history and points at its replacement; untouched rows stay as they are. A repeated identical request does not apply the update twice. Returns only the previous and current customer-facing meal facts with their rows, their nutrition difference, and the day so far. The returned receipt includes the concrete foods, quantities or supplied values that were changed before the new totals. Never mention internal identifiers, storage versions or retry keys to the customer. Example add: update_meal { "action": "add", "date": "2026-09-03", "meal_type": "lunch", "items": [ { "description": "plain yoghurt", "amount": 125, "unit": "g", "as_said": "one pot", "kcal": 90, "protein_g": 8, "carb_g": 7, "fat_g": 3, "source": "label" } ], "idempotency_key": "add-yoghurt-a3f9c1" }. Example revise: the customer says the steak was 180 g rather than 200 g and they also ate a yoghurt → send every row as read, the steak row with amount 180 and its figures for 180 g, plus the yoghurt row, and changes ["Steak corrected from 200 g to 180 g", "Added a plain yoghurt"]. statement is the customer-facing IZeat message. It begins with "IZeat ·" so customers can distinguish information returned by IZeat from the assistant's own response. For write operations, it also states whether the requested change was recorded in their IZeat account. Account: Sam (review@izeat.app)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
dataYes
statementYesCustomer-visible IZeat receipt. Its value begins with "IZeat ·".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A5/5.0
Behavior5/5

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

Annotations declare destructiveHint/idempotentHint, but the description adds substantial context beyond them: replaced rows are retained in IZeat history and point at their replacement, untouched rows are left alone, a repeated identical request is not applied twice, and totals are computed server-side rather than by the agent. It also discloses the return payload and receipt ordering.

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

Conciseness5/5

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

The core purpose and mode-selection rule are front-loaded, and although the text is long, the density is justified by the oneOf schema and the destructive write path. Sentences are directive and each carries an actionable rule.

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

Completeness5/5

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

For a two-branch, destructive, idempotent mutation with a rich nested item schema, the description covers mode selection, prerequisites, field rules, change description format, return values, and even customer-facing messaging conventions. Nothing needed to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, yet the description still adds critical semantics the schema cannot express: the date must be the customer's own word and never computed by the agent, 'items' means only added foods for action=add but the complete post-change meal for action=revise, and each change string must repeat old and new quantities. This meaningfully exceeds the schema's field-level docs.

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?

Opening sentence states a specific verb and resource with scope: 'Changes one meal that is already recorded, identified by its meal type and day.' It explicitly differentiates from siblings by stating 'It never creates a missing meal' (vs log_meal) and directing the agent to read first with get_meal.

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

Usage Guidelines5/5

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

Gives an explicit decision rule between the two modes: choose 'add' when the customer only adds food to that meal, choose 'revise' when they correct, replace, remove or combine changes. It also mandates prerequisites ('Read the meal first with get_meal') and states the alternative tool by name.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources