Skip to main content
Glama
Tandoor Recipes MCP

Tandoor Recipes MCP

by Cliftonz

Parse ingredient

parse_ingredient
Idempotent

Parses free-form ingredient strings into structured amount, unit, food, and note fields, creating missing Tandoor Food or Unit records as needed.

Instructions

Parse a free-form ingredient string (e.g. "2 cups flour") into amount, unit, unit_id, food, food_id, note. Writes to the database: Tandoor creates any Food or Unit row it does not already have. unit and food are the matched row names, so "cups" can come back as "cup". With no unit, unit is "" and unit_id is omitted. food_id and unit_id pass straight to create_ingredient. Blank text returns Tandoor's 400. Tandoor's parser is heuristic and can misfire on compound descriptions, brand names, or non-English units.

Input Schema

NameRequiredDescriptionDefault
textYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv3.4.0

TDQS

A4.7/5.0
Behavior5/5

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

It discloses the non-obvious side effect that Tandoor writes new Food and Unit rows as a side effect, which goes well beyond the readOnlyHint=false annotation. It also covers edge cases the annotations cannot: blank text yields a 400, missing units return an empty string with unit_id omitted, and the heuristic parser can misfire on compound or non-English input.

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?

Every sentence carries distinct information: output shape first, then write side effects, then normalization behavior, then error and reliability caveats. There is no filler, and the most consequential facts (database writes, idempotent-ish normalization) are front-loaded.

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 one-parameter tool with no output schema, the description supplies the return fields, side effects, normalization rules, error behavior, and reliability limits. An agent has everything needed to call it and interpret the response without further discovery.

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 0% for the single text parameter, but the description compensates with an inline example ("2 cups flour") and the blank-text failure mode. It explains return-field meanings (amount, unit, unit_id, food, food_id, note) rather than additional input semantics, so it does not fully exhaust what could be said about the input string.

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 first sentence names a specific verb (parse) and resource (free-form ingredient string) and lists the exact output fields, so the agent knows precisely what the call produces. It also implicitly distinguishes itself from create_ingredient and create_food by describing parsing rather than record creation.

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 establishes the parse-then-create workflow by noting that food_id and unit_id 'pass straight to create_ingredient', which tells the agent this is a preprocessing step. It stops short of explicitly stating when not to use it or naming an alternative for cases like already-structured input, so it falls just below full when/when-not guidance.

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