MCP tools reference

All tools are scoped to the authorized household (OAuth grant or API key organization). MCP calls do not consume AI credits; they use rate limits instead. Every tool returns a uniform JSON envelope ({ ok: true, tool, data, meta? } or { ok: false, tool, error }) so agents can parse responses deterministically. Failures include error.code, a human error.message (field rules when validation fails), optional error.details, and often error.recoveryHint for the next tool or user-facing step. Copilot returns the same failure object to the model instead of hard-throwing, so the assistant can explain the issue immediately.

Rate limit categories

CategoryTypical limitApplies to
mcp_list30 per 60s per orgMost read tools
mcp_search20 per 60s per orgSemantic search + meal match
mcp_write15 per 60s per orgMost writes
mcp_supply_sync8 per 60s per orgHeavy supply rebuild
mcp_write_per_key15 per 60s per keyDefends against compromised keys

Exact windows may be tuned; if you hit limits, wait for the window to reset. Rate-limit details are also returned in the envelope's error.retryAfter and structured meta.rateLimit fields.

Inventory (Cargo)

ToolScopePurpose
list_inventorymcp:readCursor-paginated cargo list (default 100, max 200). Optional domain, expiresBefore / expiresAfter (UTC YYYY-MM-DD), and sortBy: expiresAt.
get_cargo_itemmcp:readFetch one item by id with all fields (tags, expiresAt, customFields).
search_ingredientsmcp:readSemantic search in pantry by meaning.
get_expiring_itemsmcp:readPantry lines expiring within N UTC calendar days. Defaults to the user's expirationAlertDays when days is omitted. Returns expiresOn, daysUntilExpiry, and status (today / soon).
get_expired_itemsmcp:readPantry lines whose expiry date is before today (UTC). Optional daysBack (default 30, max 90). Same response shape as get_expiring_items.
get_kitchen_summarymcp:readSingle-call kitchen snapshot: temporal context, tier/credits/capacity, cargo stats + expiring/expired previews, meal plan entries, supply preview. Optional manifestDays (1–7, default 1).
add_cargo_itemmcp:inventory:writeAdd a single pantry item (quantity > 0). Skips embedding generation (zero credit cost). For 2+ items, use the import tools.
update_cargo_itemmcp:inventory:writeSet absolute pantry fields. Quantity may be 0 (out of stock; item remains as a restock reminder).
adjust_cargo_itemmcp:inventory:writeRelative quantity change (delta, e.g. -2 when the user ate 2). Floors at 0; keeps the row. Prefer for “used/ate N”. Name lookup returns requiresDisambiguation + candidates when matches are close.
remove_cargo_itemmcp:inventory:writePermanently delete a pantry line. Requires confirm: true. Prefer quantity 0 when the user still wants a restock reminder.

Receipt → pantry workflow (no credits)

ToolScopePurpose
inventory_import_schemamcp:readReturns the exact JSON shape preview_inventory_import and apply_inventory_import expect.
preview_inventory_importmcp:readValidates and classifies items as match/new/skip. Returns a previewToken valid for 15 minutes.
apply_inventory_importmcp:inventory:writeApplies a preview. Idempotent via idempotencyKey (replays return the original result).
import_inventory_csvmcp:inventory:writeConvenience: parse a CSV string and apply directly.

The intended pattern is: agent's LLM parses a receipt → calls preview_inventory_import to confirm → user approves → agent calls apply_inventory_import with the previewToken. Ration never sees the receipt image and never spends credits.

Galley (Meals)

ToolScopePurpose
list_mealsmcp:readCursor-paginated recipe list. Pass includeIngredients: false to skip ingredient fan-out.
match_mealsmcp:readMeals you can cook (strict) or partial matches (delta) with gaps. Includes allergenFlags / allergenSafe when user allergens are set; allergenPolicy: exclude omits unsafe meals.
create_mealmcp:galley:writeCreate a recipe from structured data.
update_mealmcp:galley:writeUpdate a recipe; pass full meal payload from list_meals with edits.
delete_mealmcp:galley:writeDelete a recipe. Requires confirm: true.
consume_mealmcp:galley:write + mcp:inventory:writeCook a meal and deduct ingredients from cargo.
toggle_meal_activemcp:galley:writeMark a meal active/inactive in the current selection.
clear_active_mealsmcp:galley:writeClear all active meal selections. Requires confirm: true.

Manifest (Meal plan)

ToolScopePurpose
get_meal_planmcp:readMeal plan entries for a date range (default ~7 days).
add_meal_plan_entrymcp:manifest:writeSchedule a meal on a date and slot (breakfast/lunch/dinner/snack).
bulk_add_meal_plan_entriesmcp:manifest:writeAdd multiple entries in one call (idempotency-key supported).
update_meal_plan_entrymcp:manifest:writePatch date, slot, servings override, notes, or order. Cannot edit consumed entries.
remove_meal_plan_entrymcp:manifest:writeRemove a scheduled entry by id.

Supply (Shopping)

ToolScopePurpose
get_supply_listmcp:readActive shopping list with items and related meal names.
add_supply_itemmcp:supply:writeAdd a line to the supply list.
update_supply_itemmcp:supply:writeChange name, quantity, or unit on a supply line.
remove_supply_itemmcp:supply:writeRemove a supply line.
mark_supply_purchasedmcp:supply:writeToggle purchased flag.
sync_supply_from_selected_mealsmcp:supply:writeRebuild supply from manifest + Galley selections.
complete_supply_listmcp:supply:writeArchive the current list and start a fresh one.

Account & preferences

ToolScopePurpose
get_contextmcp:readReturns org/key context, kitchen snapshot, suggested actions, and temporal (todayUtc, serverTimeIso, expirySemantics: utc_calendar_day).
get_user_preferencesmcp:readAllergens, expiration alert days, theme, default unit mode.
update_user_preferencesmcp:preferences:writePatch one or more preference fields.

What MCP intentionally does not expose

These features remain web-app-only because they spend credits or are inherently UI-driven:

  • get_credit_balance — UI surface, not relevant to agent flows.
  • AI receipt scanning, AI meal generation, semantic vector ingestion of cargo via MCP writes.

If you need any of these, use the web app or the REST API with the appropriate non-MCP scopes.

Bulk Galley import

Large JSON imports continue to use the REST API with galley scope—not MCP.

If a tool is missing in your client, update the MCP bridge and confirm the API key has the right scope (legacy mcp or the new fine-grained mcp:* scopes).