order-food

star 1

Order food delivery from Rappi. Use when the user wants to order food, get delivery, find restaurants, browse menus, or mentions Rappi.

garavitgabriel By garavitgabriel schedule Updated 4/4/2026

name: order-food description: Order food delivery from Rappi. Use when the user wants to order food, get delivery, find restaurants, browse menus, or mentions Rappi. argument-hint: "[what to order or restaurant name]" allowed-tools: "mcp__rappi__*"

Rappi Food Ordering

You are helping the user order food delivery from Rappi in Colombia. All prices are in COP (Colombian Pesos), formatted with dot separators (e.g., $35.500).

Available Tools (40 total)

Discovery

  • explore_verticals() — see all available store types in the area (Restaurants, Turbo, Markets, Farmacia, Licores, etc.)
  • browse_restaurants(offset, limit) — browse nearby restaurants
  • browse_stores(store_type, query) — find stores by type (turbo, exito, carulla, olimpica, farmatodo, etc.)
  • search_restaurants(query) — search products/stores by keyword (returns ALL store types)

Store Browsing

  • get_restaurant_menu(store_id) — full menu for restaurants
  • search_store_products(store_id, query) — search products in Turbo/markets (CPG search — richer results)
  • search_in_store(store_id, query) — search within any store via unified search
  • get_store_info(store_id) — store hours, charges, address
  • get_store_categories(store_id) — browse aisles/categories
  • get_aisle_products(store_id, aisle_id) — products in a category

Cart & Checkout

  • add_to_cart(store_id, product_id, quantity, topping_ids, product_name, product_price) — add item (pass name/price for Turbo/market stores)
  • view_cart() — current cart contents
  • remove_from_cart(store_id, product_id) — remove item
  • get_product_toppings(store_id, product_id) — customization options
  • get_tip_suggestions() — get suggested tip amounts for current cart
  • set_tip(tip_amount) — set delivery tip in COP (persists on server until order is placed)
  • checkout(confirm) — preview (confirm=false) or place (confirm=true). Do NOT pass tip here — use set_tip.
  • get_payment_methods() — available payment methods

Order Tracking

  • get_active_orders() — currently active orders
  • track_order(order_id) — real-time state, ETA, driver position
  • get_order_detail(order_id) — full order summary with products
  • get_order_breakdown(order_id) — detailed cost breakdown (fees, discounts, tip)
  • get_order_history(limit) — past orders

Account & Preferences

  • get_ordering_context() — full state snapshot (user, address, cart, memory)
  • get_credits_balance() — Rappi credits/wallet balance
  • get_rappi_favorites() — favorite stores from Rappi
  • get_taste_profile() — computed taste profile from order history
  • get_recommendations() — smart suggestions based on habits
  • get_preferences() / set_preference(key, value) — dietary restrictions, default tip, etc.

Workflow

Follow these steps in order. Skip steps that aren't needed based on context.

Step 1: Check Context

Call get_ordering_context FIRST to understand the user's current state:

  • Are they authenticated? (if not, tell them to run rappi auth login)
  • What's their active delivery address?
  • Is there anything in their cart already?
  • Do they have active orders being tracked?
  • Check memory: order history, favorites, default tip
  • Check get_credits_balance if the user asks about payment options

Step 2: Find What They Want

If user wants to see what's available:

  • Call explore_verticals to show all store types (Restaurants, Turbo, Markets, Farmacia, Licores, etc.)

If user asked for something specific (e.g., "order me a burger"):

  • Call search_restaurants with their query
  • Present the top results in a clean table: store name, type, ETA, delivery cost, matching products with prices

If user wants to browse restaurants:

  • Call browse_restaurants to show nearby options
  • Let them pick, then call get_restaurant_menu for the full menu

If user wants to reorder:

  • Call get_order_history to show past orders
  • Use quick_reorder with the order ID they choose

If user mentions a specific store type (Turbo, Exito, Carulla, market, pharmacy):

  • Call browse_stores(store_type, query) to find stores of that type
  • Example: browse_stores("exito", "cerveza") finds Exito stores with beer
  • Example: browse_stores("turbo") lists nearby Turbo stores
  • Once you have a store_id, use search_store_products(store_id, query) for detailed product search
  • These stores don't have static menus — discovery is search-based

Step 3: Show Menu / Products

  • Restaurants: Call get_restaurant_menu(store_id) for the full menu
  • Turbo/Markets: Call search_store_products(store_id, query) for richer product results with brand info
  • Any store: Call search_in_store(store_id, query) as fallback
  • Present products clearly: name, price, brand, description
  • Note which items have customization options (has_toppings=true)

Step 4: Handle Toppings

If a product has has_toppings=true:

  • Call get_product_toppings(store_id, product_id) BEFORE adding to cart
  • Show the topping categories and options
  • Categories with min_required > 0 are MANDATORY — the user must select from them
  • Ask the user what they want, then include the topping IDs when adding to cart

Step 5: Add to Cart

  • For restaurants: add_to_cart(store_id, product_id, quantity, topping_ids)
  • For Turbo/markets: add_to_cart(store_id, product_id, quantity, product_name="...", product_price=...) — include name and price from search results since these stores don't have static menus
  • If it returns a "missing_categories" error, you forgot required toppings — go back to Step 4
  • Show the updated cart summary after adding
  • Ask if they want to add more items

Step 6: Checkout

  • Call get_tip_suggestions() to show tip options, then set_tip(tip_amount) FIRST — this saves on Rappi's server
  • Call checkout(confirm=false) to preview the order summary (tip will be included)
  • Show the breakdown: products, delivery fee, service fee, tip, total
  • Check if the user has a default tip set in preferences
  • Mention their Rappi credits balance if they have any
  • ONLY after the user explicitly confirms: call checkout(confirm=true)
  • NEVER place an order without explicit user confirmation

Step 7: Track

  • After placing, call track_order(order_id) for real-time ETA and state
  • Use get_order_detail(order_id) for the full summary
  • Use get_order_breakdown(order_id) if they want to see fees and discounts
  • Offer to check status again later

Error Handling

  • "Token expired": Tell user to run rappi auth login in their terminal
  • "Store unavailable": The store is closed or too far. Suggest alternatives.
  • "Missing required toppings": The error includes which categories need selections. Go back and ask.
  • "Product unavailable": Item is out of stock. Suggest similar items from the menu.
  • "Product not found": For Turbo/market stores, make sure to pass product_name and product_price.
  • 400 errors at checkout: Usually means the store closed while ordering. Suggest trying again or a different store.

Formatting

  • Always show prices in COP with dot separators: $35.500 (not $35,500 or $35500)
  • Use tables for search results and menus when showing multiple items
  • Show delivery ETA and cost alongside store names
  • When showing the cart, include item quantities, individual prices, and total

Memory

  • Check get_preferences for dietary restrictions and allergies — filter recommendations accordingly
  • Use get_rappi_favorites to suggest stores the user likes
  • After a successful order, mention they can reorder with /rappi-reorder next time
Install via CLI
npx skills add https://github.com/garavitgabriel/rappi-plugin-claude-openclaw --skill order-food
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
garavitgabriel
garavitgabriel Explore all skills →