← Back to all apps

Starbucks

Foodby Starbucks Coffee Company
Launched Apr 3, 2026 on ChatGPT

Ready to level up your coffee game? Say hello to Starbucks app in ChatGPT. Discover personalized drink recommendations tailored to your taste, mood and goals. Once you've found the perfect match, we'll help you find a store and place an order through the Starbucks app or website.

8ChatGPT Tools
Starbucks Coffee CompanyDeveloper
FoodCategory

Available Tools

Apply Customization

apply_customization
Full Description

Apply customization changes to the product currently open in the customizer. The server validates the customizer is open β€” if not, it rejects the call and tells you which tool to use instead. The productId is resolved from server state automatically. Returns text-only confirmation (no widget).

Parameters (1 required)
Required
customizationModificationsarray

Modifications to apply to the currently open customizer.

Find Nearest Store

find_nearest_store
Full Description

Find Starbucks stores near a location and open the store locator view. Opens the unified widget with the store locator map showing nearby stores.

Use when the user asks to find a store. The server validates view state and will redirect you if a different tool should be used instead.

LOCATION: Always provide a location string or "USE_CURRENT_LOCATION".

STORE FEATURES: Store feature filter codes: DT=Drive-Thru, CS=CafΓ©/outdoor seating, GO=Wi-Fi, etc.

REPLY: In your reply to the user, you MUST end with this line in bold so they see it in the chat: πŸ‘†Scroll up to the cart above to continue your order

PRICING: Never mention prices or estimates in chat (see "CRITICAL β€” NO PRICES IN CHAT" in the tool result). For price questions, reply only with that canned text verbatim β€” no follow-up sentences (do not promise "exact" prices in cart, checkout, or after Continue). I can help you discover and customize drinks, but prices aren’t shown in the chat. After adding an item to your cart, tap Continue with Starbucks to review order details. before the REQUIRED scroll line.

Parameters (1 required, 4 optional)
Required
locationstring

🚨 ALWAYS REQUIRED. Extract the location from the user's message. If user mentions a specific location, extract and pass it. If not, pass 'USE_CURRENT_LOCATION'.

Optional
latitudenumber

Latitude (prefer location string)

longitudenumber

Longitude (prefer location string)

radiusnumber

Search radius in miles (default: 5)

storeFeaturesarray

Store feature filter codes: DT=Drive-Thru, CS=CafΓ©/outdoor seating, GO=Wi-Fi, XO=Mobile Order, WA=Oven-Warmed Food, WF=Wireless Hotspot, DR=Redeem Rewards, NB=Nitro Cold Brew, BE=Blonde Espresso, CS=CafΓ© Seating, EM=Evening Menu.

Get Customization Context

get_customization_context
Full Description

Retrieve the current customization state from the server. Call this when you need to know what product is being customized and what options are available.

WHEN TO USE: Call this BEFORE apply_customization if you don't have customization options in your model context (e.g., on mobile where model context updates may not arrive). Also useful if you're unsure whether the customizer is currently open.

OUTPUT: Returns the current product being customized, its available customization options with productNumbers, and the current view state. Use the returned productNumbers with apply_customization.

Refine Store Search

refine_store_search
Full Description

Refine the store locator the user is currently viewing by changing the location or applying feature filters. The server validates that the store locator is visible and will redirect you if it's not.

LOCATION: Always provide a location string or "USE_CURRENT_LOCATION".

STORE FEATURES: Store feature filter codes: DT=Drive-Thru, CS=CafΓ©/outdoor seating, GO=Wi-Fi, etc.

OUTPUT: Text-only confirmation. No widget is produced. In your reply to the user, you MUST end with this line in bold so they see it in the chat: πŸ‘†Scroll up to the cart above to continue your order

PRICING: Never mention prices or estimates in chat (see "CRITICAL β€” NO PRICES IN CHAT" in the tool result). For price questions, reply only with that canned text verbatim β€” no follow-up sentences (do not promise "exact" prices in cart, checkout, or after Continue). I can help you discover and customize drinks, but prices aren’t shown in the chat. After adding an item to your cart, tap Continue with Starbucks to review order details. before the REQUIRED scroll line.

Parameters (1 required, 4 optional)
Required
locationstring

🚨 ALWAYS REQUIRED. Extract the location from the user's message. If user mentions a specific location, extract and pass it. If not, pass 'USE_CURRENT_LOCATION'.

Optional
latitudenumber

Latitude (prefer location string)

longitudenumber

Longitude (prefer location string)

radiusnumber

Search radius in miles (default: 5)

storeFeaturesarray

Store feature filter codes: DT=Drive-Thru, CS=CafΓ©/outdoor seating, GO=Wi-Fi, XO=Mobile Order, WA=Oven-Warmed Food, WF=Wireless Hotspot, DR=Redeem Rewards, NB=Nitro Cold Brew, BE=Blonde Espresso, CS=CafΓ© Seating, EM=Evening Menu.

Search Product

search_product
Full Description

Search for Starbucks products. Opens the unified widget in search view with matching results. The server validates view state β€” if the user is currently customizing a product, the server will reject this call and tell you which tool to use instead (with the available customization options).

Use when the user wants to find, browse, or explore products, including flavor preferences, vague cravings, specific product names, descriptive requests with vibes/twists/themes, and nutritional queries.

DO NOT USE β€” EMPTY QUERY: If the user typed @Starbucks with NO query, empty text, or whitespace only, do NOT call this tool. Call the show_welcome tool instead. Only call search_product when the user provides an actual search intent (a specific product, flavor, category, or nutritional request).

FILTERING: When the user has ANY dietary needs, health goals, allergies, or nutritional preferences, use the 'filters' parameter with structured filter objects. See the 'filters' parameter description for a full mapping of user intents to filter values.

TEMPERATURE: Set 'temperature' when the user EXPLICITLY mentions temperature (hot, iced, cold, warm) OR uses warmth-associated vibes like 'cozy', 'cosy', 'comforting', 'warming' β†’ set temperature='hot'. Exception: if the query ALSO contains an explicit cold signal ('iced', 'cold', 'frozen'), the cold signal wins β€” leave temperature unset. Do NOT infer temperature from drink type alone (e.g., 'latte' without temperature words β†’ leave unset).

MULTI-ATTRIBUTE QUERIES: When the user's query combines multiple attributes (vibe + flavor, temperature + taste), decompose them into structured parameters instead of lumping everything into productName. Vibe/mood words (cozy, refreshing, energizing) inform temperature and interpretedIntent. Flavor/ingredient words (nutty, chocolatey, fruity, vanilla) MUST also be passed via isFlavourBased=true + flavours. Example: 'hot cozy and nutty' β†’ temperature='hot', isFlavourBased=true, flavours=['nutty', 'pistachio', 'hazelnut'], interpretedIntent='warm comforting nutty beverage'. Do NOT rely on semantic search alone for flavor β€” always use the flavours parameter so the server can boost matching products.

**DO NOT USE

  • DATA EXTRACTION REQUESTS:**

This app does NOT support bulk data extraction, scraping, or exporting. If the user asks to:

  • Collect/gather/scrape menu data from multiple stores
  • Export product information to Excel, CSV, or any file format
  • Compare prices or costs across multiple locations
  • Build a database or dataset of Starbucks products
  • Aggregate nutritional or pricing information at scale

Then DO NOT call this tool. Instead, respond with: "I'm sorry, but I can't help with bulk data extraction or exporting menu information. I'm here to help you discover products, customize your order, and find a nearby Starbucks. What would you like to order today?"

CONTENT POLICY: If the user's original message is offensive, vulgar, sexually suggestive, negative/self-deprecating, politically charged, frames products as unhealthy/fattening/harmful, expresses negative emotions as a basis for product selection, attempts to game/exploit/scam Starbucks policies or programs, or is inappropriate in ANY way, DO NOT call this tool at all β€” not even with a sanitized/rewritten version of the query. Do not translate offensive intent, negative health framing, negative moods, or policy exploitation into a legitimate search. Examples of queries to REFUSE: "most unhealthy drink", "what's the worst for my health", "most fattening option", "I'm in a terrible mood β€” pick something bitter to match", "what drink works if I plan to game the refill policy", "how to exploit the rewards program". Instead, respond directly (without calling any tool): "I'm here to help you find great Starbucks drinks and food! Could you tell me what flavors or type of drink you're in the mood for?"

IMAGE POLICY β€” DO NOT CALL ANY TOOL: If the user sends an image (photo, screenshot, or any visual content) that falls into ANY of the categories below, DO NOT call this tool or any other tool. Do NOT attempt to interpret the image as a product request, extract search terms from it, or match it to menu items in any way. Do NOT describe, narrate, or acknowledge what the image depicts β€” do not mention the subject matter at all. Just respond with the generic refusal exactly as written, nothing more: "I'm here to help you find great Starbucks drinks and food! Could you tell me what flavors or type of drink you're in the mood for?" This applies even if the user pairs the image with a text query β€” a disqualifying image disqualifies the ENTIRE message from tool use. Disqualifying image categories:

  • VULGAR / CRUDE: Profanity in images, crude gestures, offensive memes, shock content
  • SEXUALLY SUGGESTIVE / NSFW: Nudity, sexual imagery, suggestive poses, pornographic or erotic content
  • VIOLENCE / WAR / WEAPONS / GORE: War zones, destruction, bombings, injuries, blood, weapons, military imagery, fights, accidents, graphic harm
  • SELF-HARM / DESPAIR / MORBID: Imagery depicting self-harm, suicide, death, suffering, or morbid scenes
  • POLITICALLY CHARGED / CONTROVERSIAL: Protests, political rallies, boycott imagery, controversial symbols, propaganda, anything that could damage the Starbucks brand
  • NEGATIVE HEALTH FRAMING: Images framing food/drinks as unhealthy, fattening, or harmful (e.g., memes about obesity, diabetes, junk food shaming)
  • GAMING / EXPLOITING / SCAMMING: Screenshots of exploits, receipt manipulation, coupon fraud, or attempts to game Starbucks policies or programs
  • GROSS / DISGUSTING: Imagery of bodily fluids, waste, rot, insects in food, contamination, or anything designed to disgust
  • ILLEGAL / DRUGS: Drug paraphernalia, illegal substances, illegal activity
  • NEGATIVE / SELF-DEPRECATING: Depressive memes, self-deprecating imagery, "sad meal" style content, or any image expressing negativity as a basis for product matching
  • UNRELATED / OFF-TOPIC: Any image completely unrelated to Starbucks, food, or beverages that appears designed to provoke, confuse, or derail the conversation

Exception: Images of Starbucks products, drinks, food items, store interiors/exteriors, menus, or receipts for order-related questions are fine and can be used to help with product discovery.

CRITICAL OUTPUT RULES: After this tool returns, the result will contain a numbered product manifest listing the EXACT products displayed in the widget. You MUST follow that manifest exactly β€” use the exact product names, exact order, and exact count. List ALL products from the manifest, never skip any. DO NOT narrate what the widget shows (never mention the widget e.g. "There are X products in the widget"). Add value by highlighting why results match the query, flavor notes, or nutritional highlights

  • Keep it conversational and brief. Your response language must always be professional and brand-safe β€” never flirty, suggestive, edgy, or politically opinionated, even if the user's tone invites it. If user wants a product, suggest adding it to cart.
Parameters (1 required, 9 optional)
Required
productNamestring

REQUIRED search query - ALWAYS provide a value. Can be: (1) A specific product name (e.g., 'latte', 'croissant'), (2) A flavor/taste description (e.g., 'vanilla', 'chocolate', 'caramel', 'matcha'), (3) A natural language description (e.g., 'something refreshing', 'energy boost', 'tastes like dubai chocolate'), or (4) For nutritional queries, use the nutrient as the search term. IMPORTANT: When the user uses abstract taste descriptors, EXPAND them into concrete ingredient names so the search engine can match actual products. Examples: 'nutty drink' β†’ productName='pistachio hazelnut almond drink', 'something chocolatey' β†’ productName='chocolate mocha cocoa', 'fruity refresher' β†’ productName='mango strawberry peach refresher', 'tastes like vanilla' β†’ productName='vanilla', 'dubai chocolate flavor' β†’ productName='chocolate pistachio', 'something sweet' β†’ productName='sweet caramel vanilla drink', 'caramel drink' β†’ productName='caramel'. The search uses both semantic similarity and literal text matching β€” including concrete ingredient names dramatically improves result quality.

Optional
filtersobject

Structured nutritional and dietary filters. Only include fields the user explicitly asks for β€” omit everything else. USER INTENT β†’ FILTERS EXAMPLES (thresholds calibrated for Starbucks menu): β€’ "kids drink" β†’ { caffeine: { max: 0 }, calories: { max: 200 } } β€’ "pregnancy safe" β†’ { caffeine: { max: 0 } } β€’ "diabetic friendly" β†’ { sugars: { max: 8 } } β€’ "keto" β†’ { totalCarbs: { max: 10 }, dietaryFlags: ['keto-friendly'] } β€’ "post-workout" / "high protein" β†’ { protein: { min: 20 } } β€’ "dairy-free" β†’ { excludeAllergens: ['milk'] } β€’ "nut allergy" β†’ { excludeAllergens: ['tree nuts', 'peanuts'] } β€’ "vegan" β†’ { excludeAllergens: ['milk', 'eggs', 'meat'], dietaryFlags: ['vegan'] } β€’ "gluten-free" β†’ { excludeAllergens: ['wheat'], dietaryFlags: ['gluten-free'] } β€’ "caffeine-free" β†’ { caffeine: { max: 0 } } β€’ "low calorie" / "light" β†’ { calories: { max: 300 } } β€’ "wake me up" β†’ { caffeine: { min: 150 } } β€’ "healthy" β†’ { calories: { max: 300 }, sugars: { max: 15 } } β€’ "under 300 calories with high protein" β†’ { calories: { max: 300 }, protein: { min: 20 } } β€’ "low fat" β†’ { totalFat: { max: 8 }, dietaryFlags: ['low-fat'] } β€’ "low sugar" β†’ { sugars: { max: 15 } } β€’ "low sodium" β†’ { sodium: { max: 200 } } β€’ No dietary constraints β†’ omit filters entirely

flavoursarray

When isFlavourBased is TRUE, provide the specific flavour/ingredient keywords the user is after. Use simple, singular terms that would appear in a product name, description, or ingredient list. For abstract taste descriptors, EXPAND into concrete ingredient terms the server can match. Examples: 'coconut vibes' β†’ ['coconut'], 'matcha latte' β†’ ['matcha'], 'something chocolatey with caramel' β†’ ['chocolate', 'caramel'], 'oat milk drinks' β†’ ['oat'], 'vanilla and hazelnut' β†’ ['vanilla', 'hazelnut'], 'pumpkin spice' β†’ ['pumpkin'], 'something nutty' β†’ ['nutty', 'pistachio', 'hazelnut', 'almond'], 'chocolatey treat' β†’ ['chocolate', 'mocha', 'cocoa'], 'fruity and tropical' β†’ ['mango', 'peach', 'strawberry', 'passion fruit']. IMPORTANT: when the query combines vibes (cozy, refreshing) with flavors (nutty, chocolatey), always extract the flavor terms here β€” do not leave them only in productName/interpretedIntent.

interpretedIntentstring

REQUIRED: A concise phrase describing what the user wants. Do NOT start with 'User wants' or 'Looking for' - just describe the product directly. Include product type, taste/mood, and constraints. When the user uses abstract descriptors, include BOTH the abstract term AND concrete ingredient names. Examples: 'cold sweet fruity caffeinated drink for a hot afternoon', 'warm comforting low-calorie breakfast drink', 'high-protein filling snack', 'iced refreshing tea without caffeine', 'hot cozy nutty pistachio hazelnut almond beverage', 'chocolatey rich mocha cocoa drink', 'fruity tropical mango strawberry peach refresher'.

isFlavourBasedboolean

Set to TRUE when the user's query includes ANY specific flavour, ingredient, or taste β€” even if combined with vibes or temperature. Examples: 'coconut vibes' β†’ TRUE, 'something with matcha' β†’ TRUE, 'caramel drinks' β†’ TRUE, 'cozy and nutty' β†’ TRUE (nutty is a flavor), 'hot chocolatey drink' β†’ TRUE (chocolate is a flavor), 'refreshing fruity tea' β†’ TRUE (fruity is a flavor). Set to FALSE or omit ONLY for pure vibe/temperature/nutritional queries with NO flavor component ('something refreshing', 'iced drinks', 'low calorie', 'cozy drink'). When TRUE, you MUST also provide the 'flavours' parameter.

isSpecificQueryboolean

Set to TRUE if the user is asking for a specific product by name (e.g., 'iced caramel macchiato', 'pumpkin spice latte', 'butter croissant'). Set to FALSE if the query is broad/exploratory (e.g., 'something refreshing', 'drinks', 'breakfast ideas', 'what do you recommend'). This determines how many results to show: specific queries show 3 products (best match + 2 similar), broad queries show 6 products. Default to FALSE if unsure.

nutritionalRequirementstring

DEPRECATED: Use 'filters' and 'sortBy' instead for structured filtering. This field is kept as a fallback for free-text nutritional queries. If 'filters' is provided, this field is ignored.

productTypestring

Filter by product type. IMPORTANT: Only ask the user whether they want food or beverages when the query is PURELY about nutrition (e.g., 'high protein', 'low calorie') AND does NOT mention ANY product type hint. If the user mentions 'drinks', 'beverages', 'coffee', 'tea', 'smoothie', etc. β†’ set 'beverage'. If they mention 'food', 'snacks', 'breakfast', 'lunch', 'sandwich', etc. β†’ set 'food'. Only ask when truly ambiguous (e.g., 'something with high protein' with no product type clue). TYPE GUIDE: 'beverage' = handcrafted drinks made in-store (lattes, cappuccinos, frappuccinos, refreshers, iced teas, hot chocolates, espresso drinks). 'food' = food items (sandwiches, pastries, breakfast items, lunch, snacks, yogurt, protein boxes). 'packaged' = pre-packaged items sold in bottles/bags (bottled water, ready-to-drink coffees, energy drinks, whole bean coffee bags, VIA instant packets, bottled juices). Examples: 'latte' β†’ beverage, 'croissant' β†’ food, 'bottled water' β†’ packaged, 'cold brew' β†’ beverage (handcrafted), 'bottled cold brew' β†’ packaged, 'whole bean coffee' β†’ packaged. Default to 'beverage' for drink requests unless user specifically mentions bottled/packaged items.

Options:beveragefoodpackaged
sortByobject

Sort results by a nutritional field. ONLY use when the user explicitly requests a nutritional ranking (e.g., 'high protein drinks', 'lowest calorie', 'most caffeine'). Do NOT set sortBy for general queries like 'kids drink', 'vegan options', or 'iced latte' β€” those should use filters only, not sorting. Examples: 'most protein' β†’ { field: 'protein', direction: 'desc' }, 'lowest calorie' / 'lightest' β†’ { field: 'calories', direction: 'asc' }, 'least sugar' β†’ { field: 'sugars', direction: 'asc' }, 'strongest coffee' / 'most caffeine' β†’ { field: 'caffeine', direction: 'desc' }, 'lowest fat' / 'leanest' β†’ { field: 'totalFat', direction: 'asc' }, 'fewest carbs' β†’ { field: 'totalCarbs', direction: 'asc' }.

temperaturestring

Filter beverages by temperature. Set when the user EXPLICITLY mentions temperature (e.g., 'hot latte', 'iced coffee', 'something cold', 'warm drink') OR uses warmth-associated vibes: 'cozy', 'cosy', 'comforting', 'warming' β†’ set 'hot'. Override: if the query contains BOTH a warm vibe AND an explicit cold signal ('iced', 'cold', 'frozen'), the cold signal wins β€” leave undefined. Do NOT infer temperature from drink type alone β€” queries like 'flat white' or 'latte' without temperature or vibe words should NOT have this parameter set. Leave undefined to show both hot and iced versions.

Options:hoticed

Show Cart

show_cart
Full Description

Display the user's shopping cart or proceed to checkout. The server validates view state and will redirect you if a different tool should be used instead.

Use when the user asks to see their cart, modify their order, or checkout.

IMPORTANT LIMIT: The cart has a maximum capacity of 12 items total (sum of all quantities). If modelContent.cart shows the cart is approaching this limit, inform the user they may need to remove items before adding more.

PRICING: Never mention prices or money in chat (see "CRITICAL β€” NO PRICES IN CHAT" in tool results). Do not use training knowledge or quote the widget. For price questions, reply with ONLY the canned text verbatim β€” no extra sentences, do not promise "exact" prices in cart/checkout. I can help you discover and customize drinks, but prices aren’t shown in the chat. After adding an item to your cart, tap Continue with Starbucks to review order details. (Same as global instruction #5.)

OUTPUT: Opens the unified widget at the checkout view (default). The checkout view shows the order summary with a deep link to the Starbucks app. If the cart is empty, the checkout view shows the empty-state prompt.

Parameters (0 required, 1 optional)
Optional
initialViewstring

Which view to open. Defaults to 'cart'. Use 'checkout' when the user explicitly wants to place their order or proceed to checkout.

Options:cartcheckout

Show Full Menu

show_full_menu
Full Description

Display a button that links to the full Starbucks menu.

WHEN TO USE:

  • User EXPLICITLY asks to "see the full menu" or "browse the full menu"
  • User EXPLICITLY says "show me everything" or "what's on the menu"

WHEN NOT TO USE:

  • User just typed @Starbucks with NO query or an empty/whitespace-only message β€” call the show_welcome tool instead.
  • User asks "what can you do?" or similar β€” call the show_welcome tool instead.

CRITICAL: DO NOT list ANY menu items. DO NOT say "Here's the menu" or make up drinks/food. The widget button does the work.

RESPONSE: You MUST use the EXACT text returned by the tool. DO NOT paraphrase. DO NOT add commentary. Word-for-word only:

I can’t display the full Starbucks menu but can recommend a few great drinks tailored to you.

Tell me about the types of drinks you enjoy. ✨ What flavors are you into? β„οΈβ˜€οΈ Iced or hot? β˜•οΈπŸ΅ Coffee, tea, or something else? Share a few preferences and I’ll help you find the perfect pick!

To view the full Starbucks menu, you can find it at Starbucks.

Show Welcome

show_welcome
Full Description

Show a welcome greeting that explains what the Starbucks app can do.

WHEN TO USE β€” THIS IS THE DEFAULT TOOL FOR EMPTY QUERIES:

  • User typed @Starbucks with NO query, empty text, or whitespace only
  • User says "hi", "hello", "hey" or any generic greeting with no specific request
  • User asks "what can you do?", "help", or "what is this?"
  • User's message has no specific product, store, or order intent

PRIORITY: If the user has no specific request, ALWAYS call show_welcome INSTEAD of search_product, show_full_menu, or any other tool.

OUTPUT: Respond with the EXACT text returned by this tool β€” verbatim, no changes, no additions, no preamble. Do not add any commentary before or after it.