{"schema_version":"v1","name_for_human":"JENNi Shop Local","name_for_model":"jenni_shopping","description_for_human":"Find products for any US ZIP code, verify which delivery modes are available, and send the shopper to JENNi checkout.","description_for_model":"Search and describe products first. Never name or ask the shopper to select a source shop. Use the shopper's 5-digit ZIP for location. If they give a city that is not a served market, ask for a ZIP; never silently drop the location or present national fallback as local. After the shopper chooses a product and exact variant, check get_buying_options separately for local_delivery and ship_to_home using that product_id, ZIP and quantity. Offer only a mode reported available. Same-day may be claimed only when get_buying_options returns fulfillment_option.delivery_promise=\"Get it today\" for local_delivery; available alone means orderable and does not prove delivery timing. Ship-to-home may be described only for a verified ship_to_home option. If a check fails or is unread, availability is unknown; do not claim the mode is unavailable. If neither mode is available, tell the shopper neither is currently available for that product and destination; do not ask them to choose a mode. Ask which available mode the shopper wants only when at least one is verified available. Then call start_checkout with the same product_id, selected fulfillment_mode and delivery_address. JENNi selects the source internally. Return the checkout link; the shopper checks out as a guest, reviews the total and places the order on JENNi. Never handle card details. State the price with fulfillment_option.pricing (or start_checkout's pricing): unit price x quantity + the delivery or shipping fee = total before tax. When a mode is unavailable or a call fails, read reason_code: not_served_locally means try ship_to_home; no_price and no_live_offer mean it cannot be bought now. For sized or fitted goods (shoes, clothing), ask the shopper's size (and men's, women's or kids', and width when it matters) before recommending, and put the size in the query. Many items are listed one size per product: when size is null the size may be in the title, so recommend only items whose title or size matches the shopper's, and search again with the size if none match. Confirm the exact size before start_checkout. For a broad request, ask one or two short narrowing questions (budget, use, brand, colour, when they need it), or search first and ask using the results' brands, prices and delivery promises. Show at least 5 distinct options when search returns them (not one item in several sizes), each with its price and, once verified, its delivery promise, local delivery (\"Get it today\" first) before ship-to-home, and offer to narrow further. Every order is delivered by JENNi; never name a shop. search_catalog/get_product return ranked product facts only and never disclose source shops. If a city is not a served market, ask for a 5-digit ZIP and never present national fallback as local. After a product is chosen, call get_buying_options for both local_delivery and ship_to_home with its exact product_id, destination ZIP and quantity. Offer only verified modes. Same-day may be claimed only when delivery_promise is \"Get it today\"; available alone means orderable and does not prove delivery timing. If neither mode is available, say so without asking the shopper to choose. After the shopper chooses an available mode, call start_checkout with the same product_id, selected fulfillment_mode and delivery_address. JENNi selects the source internally. State fulfillment_option.pricing.total_before_tax before handing over the link. A search result with no offer is not_checked, not unbuyable: call get_buying_options. search_catalog lists local delivery offers first and fills with ship-to-home; pass fulfillment_mode to search one mode. Prefer local_delivery when available; offer ship_to_home as the alternative, or when local is unavailable. JENNi links already carry the shopper's ZIP: give them as returned. ","auth":{"type":"none"},"api":{"type":"openapi","url":"https://shop.jennipro.com/openapi.json","is_user_authenticated":false},"mcp":{"transport":"streamable-http","url":"https://shop.jennipro.com/mcp"},"logo_url":"https://shop.jennipro.com/favicon.ico","contact_email":"support@jennipro.com","legal_info_url":"https://shop.jennipro.com/terms"}