Skip to main content
Glama

Check price and delivery

get_buying_options
Read-onlyIdempotent

Read-only fulfillment eligibility, price and delivery details for one exact product, ZIP, quantity and local_delivery or ship_to_home mode. The response contains no source-shop details. An available local_delivery result verifies same-day eligibility for that context. A failed check means unknown eligibility, not unavailable.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipYes
quantityYes
product_idYes
fulfillment_modeYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
productYes
requested_contextYes
fulfillment_optionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedOutput schema / properties / product / properties / description / description
      Previous value: -"The merchant's own description (get_product only)."New value: +"Product description from the source catalog, when returned."
    • changedOutput schema / properties / product / properties / offers / items / properties / availability / description
      Previous value: -"NULL when we have no shelf read under 24 hours old (shelf_observed_at says when). Do not call it in or out of stock; when is_eligible_checkout is true it can still be ordered."New value: +"NULL when we have no shelf read under 24 hours old (shelf_observed_at says when). Null is not evidence of in-stock or out-of-stock state; checkout eligibility is independent."
    • changedOutput schema / properties / product / properties / offers / items / properties / fulfillment / description
      Previous value: -"`local_delivery`: delivered locally. `concierge`: JENNi collects it from the shop and delivers it; buy it with start_checkout like any orderable offer. `ship_to_home`: shipped to the shopper. `in_store_only`: observed on the shelf, but it cannot be ordered through JENNi. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."New value: +"`local_delivery`: delivered locally. `concierge`: JENNi collects it from the shop and delivers or ships it to the shopper. `ship_to_home`: shipped to the shopper. `in_store_only`: observed on the shelf, but it cannot be ordered through JENNi. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."
    • changedOutput schema / properties / product / properties / offers / items / properties / is_eligible_checkout / description
      Previous value: -"True: this offer can be ordered through JENNi; call start_checkout with it when the shopper wants to buy. start_checkout and the checkout page re-check the offer and say why if it can no longer be ordered, so do not ask the shopper to confirm stock or hours first. False: do not send the shopper to checkout for this offer. Nothing is charged until the shopper places the order on the checkout page."New value: +"True when this offer is currently eligible for ordering through JENNi; false otherwise. Eligibility and price are checked again at hosted checkout. Nothing is charged until the buyer places the order on the checkout page."
    • changedOutput schema / properties / product / properties / offers / items / properties / shelf_price / description
      Previous value: -"Observed shelf price. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."New value: +"Observed shelf price for browsing, not a checkout price. Purchase price and checkout eligibility are separate fields."
    • changedOutput schema / properties / product / properties / shelf_price / description
      Previous value: -"Observed shelf price. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."New value: +"Observed shelf price for browsing, not a checkout price. Purchase price and checkout eligibility are separate fields."
    • changedOutput schema / properties / product / properties / variants / description
      Previous value: -"Buyable size/colour variants. Give the shopper the variant url so the page opens on that choice. search_catalog lists at most 30; get_product lists all."New value: +"Buyable size/colour variants and their product URLs. Search responses contain at most 30; detail responses may include all variants."
  2. Changed8 schema fields changed
    • changedOutput schema / properties / product / properties / offers / description
      Previous value: -"Always empty in product discovery. This field does not verify or rule out fulfillment availability."New value: +"JENNi's single best offer for this product (price, delivery_promise, fulfilled_by, is_eligible_checkout), without source-shop details."
    • addedOutput schema / properties / product / properties / offers / items / properties / delivery_promise
      Added value: +{
      +  "description": "Shopper-facing delivery promise, e.g. \"Get it today\" (local delivery) or \"Ships to you\".",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / product / properties / offers / items / properties / fulfilled_by
      Added value: +{
      +  "description": "Shopper-facing fulfiller line: \"Delivered by JENNi\".",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / product / properties / offers / items / properties / fulfillment / description
      Previous value: -"`local_delivery`: delivered from the shop. `concierge`: JENNi collects it from the shop and delivers it; buy it with start_checkout like any orderable offer. `ship_to_home`: shipped from the shop. `in_store_only`: the shop carries it, but it cannot be ordered through JENNi; tell the shopper to visit the shop. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."New value: +"`local_delivery`: delivered locally. `concierge`: JENNi collects it from the shop and delivers it; buy it with start_checkout like any orderable offer. `ship_to_home`: shipped to the shopper. `in_store_only`: observed on the shelf, but it cannot be ordered through JENNi. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."
    • changedOutput schema / properties / product / properties / offers / items / properties / product_id / description
      Previous value: -"The exact variant this shop holds."New value: +"The exact variant this offer covers."
    • changedOutput schema / properties / product / properties / offers / items / properties / shelf_price / description
      Previous value: -"Store shelf price observed at the named store. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."New value: +"Observed shelf price. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."
    • changedOutput schema / properties / product / properties / offers / maxItems
      Previous value: -0New value: +1
    • changedOutput schema / properties / product / properties / shelf_price / description
      Previous value: -"Store shelf price observed at the named store. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."New value: +"Observed shelf price. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."
  3. Changed12 schema fields changed
    • addedOutput schema / properties / fulfillment_option
      Added value: +{
      +  "properties": {
      +    "available": {
      +      "description": "True only when the requested mode was verified as orderable for this exact product, ZIP and quantity.",
      +      "type": "boolean"
      +    },
      +    "fulfillment_mode": {
      +      "enum": [
      +        "local_delivery",
      +        "ship_to_home"
      +      ],
      +      "type": "string"
      +    },
      +    "unit_price": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "fulfillment_mode",
      +    "available"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / product / properties / offer_count
      Removed value: -{
      -  "description": "How many offers this product has. search_catalog lists at most 5, orderable ones first; get_product lists all.",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / product / properties / offers / description
      Added value: +"Always empty in product discovery. This field does not verify or rule out fulfillment availability."
    • removedOutput schema / properties / product / properties / offers / items / properties / city
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / product / properties / offers / items / properties / distance_miles
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • changedOutput schema / properties / product / properties / offers / items / properties / note / description
      Previous value: -"The disclosure a shopper sees for this shop; relay it."New value: +"A fulfillment disclosure, when applicable."
    • removedOutput schema / properties / product / properties / offers / items / properties / store_id
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / product / properties / offers / items / properties / store_name
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / product / properties / offers / items / properties / url / description
      Previous value: -"Storefront page for this exact offer."New value: +"Storefront page for this exact product."
    • changedOutput schema / properties / product / properties / offers / items / required
      Previous value: -[
      -  "store_id",
      -  "is_eligible_search",
      -  "is_eligible_checkout",
      -  "fulfillment",
      -  "availability"
      -]New value: +[
      +  "product_id",
      +  "is_eligible_search",
      +  "is_eligible_checkout",
      +  "fulfillment",
      +  "availability"
      +]
    • addedOutput schema / properties / product / properties / offers / maxItems
      Added value: +0
    • changedOutput schema / required
      Previous value: -[
      -  "product",
      -  "requested_context"
      -]New value: +[
      +  "product",
      +  "requested_context",
      +  "fulfillment_option"
      +]
  4. Changed3 schema fields changed
    • changedOutput schema / properties / product / properties / offers / items / properties / availability / description
      Previous value: -"NULL when we cannot read that shop's shelf, or the last read is over 24 hours old (shelf_observed_at says when). Null is not 'out of stock' — it means unknown, and must not be presented as either availability state."New value: +"NULL when we have no shelf read under 24 hours old (shelf_observed_at says when). Do not call it in or out of stock; when is_eligible_checkout is true it can still be ordered."
    • changedOutput schema / properties / product / properties / offers / items / properties / fulfillment / description
      Previous value: -"`local_delivery`: delivered from the shop. `concierge`: a person goes to the shop and buys it on the buyer's behalf. start_checkout returns a hosted request link, even when is_eligible_checkout is false; the page determines whether a request can proceed. The link is not a stock reservation, durable quote or completed purchase. `ship_to_home`: shipped from the shop. `in_store_only`: the shop carries it, but it cannot be ordered through JENNi; tell the shopper to visit the shop. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."New value: +"`local_delivery`: delivered from the shop. `concierge`: JENNi collects it from the shop and delivers it; buy it with start_checkout like any orderable offer. `ship_to_home`: shipped from the shop. `in_store_only`: the shop carries it, but it cannot be ordered through JENNi; tell the shopper to visit the shop. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."
    • changedOutput schema / properties / product / properties / offers / items / properties / is_eligible_checkout / description
      Previous value: -"True when the storefront offers this exact offer for order: ordering on, a checkout price quote, a shelf in stock, a courier or shipping, and a stated delivery fee. Local delivery is also refused when the shop's own hours show no opening within the week; a search result may not carry hours, and start_checkout re-checks with them. False forbids direct checkout. An explicitly `concierge` offer may still use start_checkout for a hosted request handoff; the product page checks whether a request is available. Neither eligibility nor a handoff reserves stock, creates a quote or places an order."New value: +"True: this offer can be ordered through JENNi; call start_checkout with it when the shopper wants to buy. start_checkout and the checkout page re-check the offer and say why if it can no longer be ordered, so do not ask the shopper to confirm stock or hours first. False: do not send the shopper to checkout for this offer. Nothing is charged until the shopper places the order on the checkout page."
  5. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and a closed-world hint, so the safety profile is covered. The description adds real behavior beyond that: the response omits source-shop details, an available local_delivery result is a positive same-day verification, and a failed check means unknown rather than unavailable — an important success/failure interpretation contract.

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?

Four tight sentences, front-loaded with the operation and scope, followed by response-content and result-interpretation facts. No filler; every sentence carries either scope or behavior information, though the mode semantics could have been folded in without adding length.

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?

With an output schema present, the description need not enumerate return fields, and it correctly limits itself to scope plus the non-obvious contract facts (no source-shop data, failed-check = unknown, same-day verification). For a 4-required-param eligibility check this is nearly sufficient; only the mode trade-off is left implicit.

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 0%, so the description carries the burden; it names all four inputs and adds the meaning that product_id must be an exact product and that fulfillment_mode selects local_delivery vs ship_to_home. It does not explain the practical distinction between the two modes (timing, cost implications) or how quantity affects availability, so it only partly compensates for the empty schema.

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+resource (fulfillment eligibility, price and delivery) and pins the scope ('one exact product, ZIP, quantity and local_delivery or ship_to_home mode'), which cleanly separates it from get_product, find_stores and search_catalog. The negative scope note ('no source-shop details') further sharpens what this tool is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scoping sentence (check price/delivery for a known product, ZIP, qty and mode), and the failure semantics ('unknown eligibility, not unavailable') guide interpretation. However, there is no explicit when-to-use versus siblings (e.g., use get_product for catalog facts, this for price/delivery) and no stated prerequisites beyond schema requirements.

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