Skip to main content
Glama

Pinoyshki Bakery

Check an order

check_order
Read-onlyIdempotent

Step 1 of 2 to order: checks a basket of one or more menu items against the bakery's ordering rules. Saves nothing and makes no link. Returns the lane (same day on Toast, or catering on Shopify), the priced lines, the subtotal, any problems, and the dates and times the bakery can serve. Rules it applies: closed Mondays and blocked dates; Toast = only counter-menu items, up to 6 piroshki and pinoyshki (other items not limited), pickup, today while open or scheduled up to 14 days ahead with a time in that day's hours; catering = 3 days' notice for up to 24 full-size or 4 dozen bite-size piroshki and pinoyshki (other items not limited, pickup), a week ahead (by Saturday) for more, any delivery and custom cakes; delivery within 15 miles on orders over $100 or with a cake of $75 or more. The result may list 'Still needed' questions: combo_offer (a combo, in combo hours), sold_out_choice (what to do if a piroshki is sold out, for a later day) and cake_details (what is still undecided about a custom cake).

Input Schema

NameRequiredDescriptionDefault
zipNoDelivery ZIP code (delivery is within 15 miles).
dateNoThe date as YYYY-MM-DD ('today' also works). Work it out from the customer's words using today's date in Seattle (Pacific time). If their words could mean two dates, like 'next Friday' said earlier in the same week, ask them which before calling. Needed for catering and for a Toast pickup on a later day.
timeNo12-hour time like '1:00 pm'. Needed for catering and for a Toast pickup on a later day.
itemsYesWhat to order. Use item names exactly as get_menu or search_menu gave them.
notesNoOptional note for the bakery.
channelNoOptional. 'today' = the counter menu on Toast: same day, or a scheduled pickup up to 14 days ahead (up to 6 full-size, pickup only, paid on Toast); 'catering' = ordered 3 or more days ahead, paid on Shopify. Left out, the basket and date decide: catering is preferred from 3 days out when every item is on the catering menu.
utensilsNoCatering: include utensils. Default true.
staff_tipNoToast orders: the tip for the bakery staff in whole dollars, shared by the staff who bake, pack and hand over the order. 0 (the default) unless the customer picks one; offer $1, $3 or $5 or any whole amount.
fulfillmentNoDefault pickup. Delivery is catering, week-ahead only.

Output Schema

NameRequiredDescriptionDefault
okYesTrue when the order is allowed as asked.
viewYes
whenNo
linesYes
titleNo
todayNoToday's date in Seattle, like 'Thursday, September 24'.
channelNo
problemsYes
tip_offerNoToast orders: the staff tip choices in whole dollars and the suggested one.
lane_labelNo
date_choicesNoPresent when the date asked for could mean either of these; ask the customer which.
allowed_datesNo
allowed_timesNo
earliest_dateNo
subtotal_centsYesBefore tax, with the staff tip; the checkout page shows the final total.
staff_tip_centsNoThe tip for the bakery staff, 0 when none.
delivery_allowedNo
allowed_date_labelsNoallowed_dates with weekdays, like 'Fri Oct 2'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / items / items / properties / cake / properties / flavor / description
      Previous value: -"Vanilla, Chocolate, Red Velvet, or the custom flavor asked for (an ube cake is a custom request)."New value: +"One of cake_options' premade flavors, or the custom flavor asked for (vanilla, red velvet, ube...), which goes to the bakery to confirm."
  2. Changed1 schema field changed
    • changedInput schema / properties / items / items / properties / cake / properties / flavor / description
      Previous value: -"Vanilla, Chocolate, Red Velvet, Ube, or the custom flavor asked for."New value: +"Vanilla, Chocolate, Red Velvet, or the custom flavor asked for (an ube cake is a custom request)."
  3. Changed1 schema field changed
    • changedInput schema / properties / items / items / properties / cake / properties / card / description
      Previous value: -"A birthday card."New value: +"A card to go with the cake."
  4. Changed1 schema field changed
    • changedInput schema / properties / items / items / properties / cake / properties / recipient / description
      Previous value: -"Who it is for, with their age."New value: +"Who it is for (with their age, for a birthday)."
  5. Changed6 schema fields changed
    • addedInput schema / properties / items / items / properties / cake
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Only on the decorated cake (see cake_options): what was decided with the customer. Leave out what is not decided yet.",
      +  "properties": {
      +    "allergens": {
      +      "description": "Allergies or dietary needs, or 'none'.",
      +      "type": "string"
      +    },
      +    "candles": {
      +      "type": "boolean"
      +    },
      +    "card": {
      +      "description": "A birthday card.",
      +      "type": "boolean"
      +    },
      +    "design": {
      +      "description": "The design concept the customer agreed to.",
      +      "type": "string"
      +    },
      +    "flavor": {
      +      "description": "Vanilla, Chocolate, Red Velvet, Ube, or the custom flavor asked for.",
      +      "type": "string"
      +    },
      +    "guests": {
      +      "description": "How many people; picks the size.",
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "inscription": {
      +      "description": "What it says, or 'none'.",
      +      "type": "string"
      +    },
      +    "occasion": {
      +      "type": "string"
      +    },
      +    "recipient": {
      +      "description": "Who it is for, with their age.",
      +      "type": "string"
      +    },
      +    "size": {
      +      "description": "A size from cake_options, like '10-15'.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / staff_tip
      Added value: +{
      +  "description": "Toast orders: the tip for the bakery staff in whole dollars, shared by the staff who bake, pack and hand over the order. 0 (the default) unless the customer picks one; offer $1, $3 or $5 or any whole amount.",
      +  "maximum": 50,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / lines / items / properties / cake
      Added value: +{
      +  "description": "The cake's flavor, message and design, in words, or empty.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / staff_tip_cents
      Added value: +{
      +  "description": "The tip for the bakery staff, 0 when none.",
      +  "type": "integer"
      +}
    • changedOutput schema / properties / subtotal_cents / description
      Previous value: -"Before tax; the checkout page shows the final total."New value: +"Before tax, with the staff tip; the checkout page shows the final total."
    • addedOutput schema / properties / tip_offer
      Added value: +{
      +  "description": "Toast orders: the staff tip choices in whole dollars and the suggested one.",
      +  "type": "object"
      +}
  6. Changed3 schema fields changed
    • addedInput schema / properties / items / items / properties / combo
      Added value: +{
      +  "description": "Toast orders, piroshki and pinoyshki, when the pickup time is in combo hours (Tue to Fri, 11 am to 4 pm): 'small' = fries + a 12oz drink, 'large' = large fries, borscht + a drink, 'none' = the customer said no. check_order offers it (combo_offer) with each item's prices and drinks.",
      +  "enum": [
      +    "small",
      +    "large",
      +    "none"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / items / items / properties / combo_drink
      Added value: +{
      +  "description": "The combo's drink, as check_order listed it (like '12oz Coke' or 'Small Juice'). Default: any 12oz soda.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / lines / items / properties / combo
      Added value: +{
      +  "description": "The line's combo upgrade, in words, or empty.",
      +  "type": "string"
      +}
  7. Changed6 schema fields changed
    • changedInput schema / properties / channel / description
      Previous value: -"Optional. 'today' = same day from the counter menu, paid on Toast; 'catering' = ordered ahead, paid on Shopify. Left out, the basket decides."New value: +"Optional. 'today' = the counter menu on Toast: same day, or a scheduled pickup up to 14 days ahead (up to 6 full-size, pickup only, paid on Toast); 'catering' = ordered 3 or more days ahead, paid on Shopify. Left out, the basket and date decide: catering is preferred from 3 days out when every item is on the catering menu."
    • changedInput schema / properties / date / description
      Previous value: -"The date as YYYY-MM-DD ('today' also works). Work it out from the customer's words using today's date in Seattle (Pacific time). If their words could mean two dates, like 'next Friday' said earlier in the same week, ask them which before calling. Needed for catering."New value: +"The date as YYYY-MM-DD ('today' also works). Work it out from the customer's words using today's date in Seattle (Pacific time). If their words could mean two dates, like 'next Friday' said earlier in the same week, ask them which before calling. Needed for catering and for a Toast pickup on a later day."
    • addedInput schema / properties / items / items / properties / backups
      Added value: +{
      +  "description": "Toast orders, with if_unavailable 'closest': up to 3 counter-menu piroshki or pinoyshki the customer would take instead, in order of preference.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 3,
      +  "type": "array"
      +}
    • addedInput schema / properties / items / items / properties / if_unavailable
      Added value: +{
      +  "description": "Toast orders, piroshki and pinoyshki only: what the bakery does if this one is sold out when the order is made. 'closest' (default) swaps in the closest piroshki, 'remove' leaves it out, 'cancel' cancels the order. Worth asking for a scheduled day, since the counter menu changes.",
      +  "enum": [
      +    "closest",
      +    "remove",
      +    "cancel"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / time / description
      Previous value: -"12-hour time like '1:00 pm'. Needed for catering."New value: +"12-hour time like '1:00 pm'. Needed for catering and for a Toast pickup on a later day."
    • addedOutput schema / properties / lines / items / properties / if_unavailable
      Added value: +{
      +  "description": "The line's backup choice on Toast, in words.",
      +  "type": "string"
      +}
  8. Changed4 schema fields changed
    • changedInput schema / properties / date / description
      Previous value: -"YYYY-MM-DD, 'today', or plain words like 'next Friday'. Needed for catering."New value: +"The date as YYYY-MM-DD ('today' also works). Work it out from the customer's words using today's date in Seattle (Pacific time). If their words could mean two dates, like 'next Friday' said earlier in the same week, ask them which before calling. Needed for catering."
    • addedOutput schema / properties / allowed_date_labels
      Added value: +{
      +  "description": "allowed_dates with weekdays, like 'Fri Oct 2'.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / date_choices
      Added value: +{
      +  "description": "Present when the date asked for could mean either of these; ask the customer which.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / today
      Added value: +{
      +  "description": "Today's date in Seattle, like 'Thursday, September 24'.",
      +  "type": "string"
      +}
  9. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent/non-destructive annotations by disclosing the actual rules engine: closed Mondays, quantity caps, notice windows, delivery radius, and the 'Still needed' questions the result may raise. That rule context is not derivable from annotations and materially changes how the agent plans a call.

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

Conciseness3/5

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

The lead sentence is well front-loaded, but the rules dump is a single sprawling sentence that repeats constraints already documented in the schema (combo hours, 14-day window, 15-mile delivery). It is dense rather than wasteful, but the duplication costs it.

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 9-parameter tool with two lanes and conditional branch rules, the description supplies the decision logic, sequencing and the semantics of the 'Still needed' responses; with an output schema present it need not spell out return formatting. Nothing an agent needs to call it correctly is missing.

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 genuine meaning by linking behavior to parameters: the combo_offer, sold_out_choice and cake_details questions it may return map directly onto the combo, if_unavailable and cake inputs. It explains why those fields exist rather than merely restating them.

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?

States a specific verb (checks) and resource (a basket of one or more menu items), and positions itself as 'Step 1 of 2 to order', which cleanly distinguishes it from the step-2 sibling start_checkout. An agent can tell exactly what this does and where it sits in the flow without opening any schema.

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?

Explicitly frames the ordering sequence ('Step 1 of 2'), states the key non-action ('Saves nothing and makes no link'), and names the conditions that select a lane (same-day Toast vs catering Shopify). This is enough for an agent to know when to call it and what it must do next.

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