Skip to main content
Glama

Pinoyshki Bakery

Get the checkout link

start_checkout
Destructive

Step 2 of 2 to order, for a basket check_order has allowed: checks the same order again and returns the link the customer pays on, on the bakery's own domain. The same order sent again within 15 minutes gets the same link back; an empty basket gets no link. Toast: a Pinoyshki page that shows the order while it finishes the cart on Toast (with the staff tip and the pickup day and time), then takes them to Toast's checkout (good for a week; opened after its pickup time it remakes the cart for the next pickup time). Catering: it checks the order again and opens Shopify's checkout with the date, time and pickup or delivery filled in (good for a week). No payment happens here. If a rule is broken it returns the problems instead of a link.

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.
customer_nameNoOptional: the name the order is for.
customer_emailNoOptional: an email for the bakery.
customer_phoneNoOptional: a phone number for the bakery.

Output Schema

NameRequiredDescriptionDefault
okYesTrue when the order is allowed as asked.
urlNoThe link the customer opens to pay. Give it to them as-is.
viewYes
whenNo
linesYes
titleNo
todayNoToday's date in Seattle, like 'Thursday, September 24'.
buttonNo
channelNo
pays_onNo
problemsNo
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. Changed5 schema fields changed
    • addedOutput schema / if
      Added value: +{
      +  "properties": {
      +    "view": {
      +      "const": "checkout"
      +    }
      +  }
      +}
    • removedOutput schema / properties / view / const
      Removed value: -"checkout"
    • addedOutput schema / properties / view / enum
      Added value: +[
      +  "checkout",
      +  "quote"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "view",
      -  "ok",
      -  "lines",
      -  "subtotal_cents",
      -  "url"
      -]New value: +[
      +  "view",
      +  "ok",
      +  "lines",
      +  "subtotal_cents"
      +]
    • addedOutput schema / then
      Added value: +{
      +  "required": [
      +    "url"
      +  ]
      +}
  4. 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."
  5. 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)."
  6. 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"
      +}
  7. 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"
      +}
  8. 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"
      +}
  9. 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"
      +}
  10. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: same-order idempotency within 15 minutes, empty-basket behavior, Toast vs. Catering flows, link validity windows, staff tip and pickup-time handling, no payment, and rule-violation error returns. With annotations already covering the safety profile, this is rich, useful context.

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-loads the key purpose and prerequisite, and every sentence carries useful information. It is long, but the length is justified by the tool's complexity and branching fulfillment flows.

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?

Given the rich input schema and the existence of an output schema, the description covers the essential behavior an agent needs: prerequisite, checkout flows, idempotency, error behavior, and payment boundary. Nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter meaning is already well documented. The description adds scenario context for channel choices but does not add syntax or constraints beyond the schema, so baseline 3 is appropriate.

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 and resource—checks the allowed basket again and returns the checkout link—and frames itself as step 2 of 2 relative to check_order. An agent can distinguish it from check_order, get_menu, and search_menu without opening another schema.

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?

Explicitly says this is for a basket that check_order has already allowed, making the prerequisite clear. It does not add explicit when-not-to-use guidance beyond that prerequisite, but the usage context is strong.

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