Skip to main content
Glama

joiva_log_described_meal

Destructive

Log a meal the signed-in user described in their own words, e.g. 'ca. 350 g Hähnchen-Kokos-Curry (Hähnchen, Kokosmilch, Möhre; ohne Zwiebeln) und 250 g Brokkoli mit Olivenöl'. Joiva splits the text into its parts and breaks every dish, and every food with additions (oil, butter, sauce, spices), into ingredients with its own recipe decomposition: named ingredients are kept, excluded ones left out, cooking fat counted, missing amounts estimated, nutrient values from Joiva's reference sources (BLS first). It writes one log entry per ingredient, all in one meal; a plain single food becomes one entry. Nothing is written unless every part resolves. Takes 20 to 60 seconds. Time: loggedAt, or date with meal (placed at the meal's usual hour) or with time; without any of these it is now. A past day without meal and time is refused, since Joiva does not invent a clock time. The reply lists every entry (entryId, food, grams, kcal) per part, the assumptions made for what the description left open, and the meal's totals.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "description": "<description>"
    },
    "name": "joiva_log_described_meal"
  }
}

Input Schema

NameRequiredDescriptionDefault
tzNoIANA timezone, default Europe/Berlin
dateNoYYYY-MM-DD of the day it was eaten, default today
mealNoMeal slot in the user's language, e.g. 'Frühstück', 'Mittagessen', 'Abendessen', 'Snack', as the user's words say it ('gestern Abend' = 'Abendessen'). Entries of the same day and slot join that meal
timeNoClock time HH:MM as the user named it
loggedAtNoExact ISO 8601 timestamp with offset, alternative to date and time
descriptionYesThe user's own words about what they ate, unchanged: foods, dishes, amounts, ingredients, what was left out, how it was prepared

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: ingredient-level decomposition, one entry per ingredient in a single meal, all-or-nothing writing ('Nothing is written unless every part resolves'), a 20–60 second latency budget, and a described reply with entryIds, per-part entries, assumptions and totals. What it does not cover is why destructiveHint=true matters here — nothing is said about undoing or overwriting a logged meal, nor whether a retry duplicates entries despite idempotentHint=false.

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

Conciseness4/5

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

Front-loaded with the action and an example, then behavior, then time handling, then the return shape — a sensible order with no filler sentences. It is dense and long for a description, and the time paragraph packs four cases into one sentence, but every clause carries information an agent needs.

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

Completeness4/5

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

For a six-parameter write tool with no output schema, the description covers input expectations, atomicity, latency, time resolution, and return contents including the assumptions and totals — enough to call it correctly and set expectations. Remaining gaps are recoverability (can a wrong log entry be reverted via joiva_delete_log_entry?) and duplicate behavior on retry.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning on top: the three time paths (loggedAt, date+meal placed at the meal's usual hour, date+time, and now by default) plus the rule that a past day without a slot or clock time is rejected rather than invented. That decision logic is not in the schema and directly shapes how an agent fills the optional date/meal/time parameters.

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

Purpose4/5

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

States a specific verb and resource ('Log a meal the signed-in user described in their own words') and immediately illustrates with a concrete meal string, which makes the free-text nature unmistakable. It never names the adjacent structured logger (joiva_log_food) or joiva_log_meal, so the distinction from siblings is implied by 'in their own words' rather than stated.

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?

Clear about the input shape it expects (raw user wording, including amounts, exclusions, preparation) and firm about a constraint an agent would otherwise trip over: a past day without meal and time is refused. It does not explicitly say when to prefer joiva_log_food or joiva_log_meal instead, so routing between the three logging tools is left to inference.

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