Skip to main content
Glama
Rappi MCP (unofficial)

Rappi MCP (unofficial)

Unofficial. Not affiliated with, endorsed by, or supported by Rappi. Not the Rappi Partners restaurant API. The consumer web/app surface can change without notice.

Never pays by default. rappi_place_order and payment writes do nothing unless RAPPI_ALLOW_MUTATIONS is enabled and explicit_user_intent is true. Guest tokens cannot charge. Street, phone, email and last-four are redacted.

Setup in 60 seconds

npx -y rappi-mcp-unofficial setup
npx -y rappi-mcp-unofficial auth --from-header "Bearer eyJ…"
npx -y rappi-mcp-unofficial doctor

Token is not OAuth. Open rappi.com.br logged in → DevTools → Network → any services.rappi.com.br call → copy the Authorization header. Guest search still works without a token; pay tools stay blocked.

Stdio snippet (Claude Desktop, Cursor, Grok Bot). Do not set RAPPI_ALLOW_MUTATIONS here:

{
  "mcpServers": {
    "rappi": {
      "command": "npx",
      "args": ["-y", "rappi-mcp-unofficial"]
    }
  }
}

See examples/claude-desktop.json and examples/grok-bot.md.

Related MCP server: mcp-supermercados-cl

Skill or MCP

Same package, two doors. MCP registers tools on stdio/HTTP. The skill is the workflow (search → compare → stop before checkout) and can drive the same tools through the CLI when the client has no MCP:

npx -y rappi-mcp-unofficial call rappi_search_stores --json '{"query":"leite"}'

Gates are identical. Copy skill/SKILL.md into your agent skills dir (~/.agents/skills/rappi/ or Claude/Grok equivalent).

Tools

Kind

Tools

Read · browse

rappi_search_stores, rappi_search_products, rappi_get_store, rappi_browse_stores, rappi_browse_catalog, rappi_home, rappi_home_feed, rappi_recent_searches

Read · cart / pay

rappi_get_cart, rappi_web_cart, rappi_list_payment_methods, rappi_list_coupons, rappi_checkout_preview

Read · address / orders

rappi_list_addresses, rappi_geocode_address, rappi_list_orders, rappi_list_active_orders, rappi_get_order, rappi_track_order, rappi_get_order_eta, rappi_get_order_receipt, rappi_get_order_invoice, rappi_get_order_status, rappi_order_chat

Meta

rappi_connection_status, rappi_capabilities (includes honest_gaps; not Top5), rappi_privacy_audit

Gated cart (mutations and intent)

rappi_add_to_cart, rappi_update_cart_item, rappi_clear_cart, rappi_reorder, rappi_apply_coupon

Gated pay (mutations and intent)

rappi_place_order, rappi_set_payment_method, rappi_cancel_order, rappi_tip_order

Intent only

rappi_logout, rappi_set_active_address, rappi_create_address, rappi_update_address, rappi_delete_address, rappi_rate_order

HTTP (optional, loopback)

Default transport is stdio. Streamable HTTP binds 127.0.0.1 and checks Origin against http://127.0.0.1:<port> (override with RAPPI_MCP_ALLOWED_ORIGIN). This is DNS-rebinding mitigation, not a public server.

npx -y rappi-mcp-unofficial --http
# GET  http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp

Security

Tokens live in ~/.rappi-mcp/tokens.json (0600). They are not in git, the npm tarball, or default examples. Full notes: SECURITY.md. Agents: llms.txt.

Tests

npm test

No live Rappi login required.

Available Tools

42 tools
rappi_add_to_cartAdd to Rappi cartC
Destructive

Gated write. Requires RAPPI_ALLOW_MUTATIONS=true AND explicit_user_intent=true. Does not checkout.

Inputs: product_id (required), quantity, store_id, response_format, +1 more.

rappi_apply_couponApply Rappi couponB
Destructive

POST /api/user-order-home/coupons/apply (401 JSON no token). Dual-gated. Does not checkout.

Inputs: code (required), response_format, explicit_user_intent.

rappi_browse_catalogBrowse Rappi catalogC
Read-onlyIdempotent

Nearby store catalog (restaurant-bus). Read-only. Optional lat/lng.

Inputs: limit, query, latitude, longitude, +2 more.

rappi_browse_storesBrowse Rappi stores (web)C
Read-onlyIdempotent

Web-gateway store list. Read-only. Complements rappi_search_stores.

Inputs: privacy_mode, response_format.

rappi_cancel_orderCancel Rappi orderB
Destructive

Gated. May refund. Requires mutations and explicit_user_intent. Guest tokens rejected.

Inputs: order_id (required), response_format, explicit_user_intent.

rappi_capabilitiesRappi capabilitiesC
Read-onlyIdempotent

What this unofficial MCP can read and which writes stay gated.

Inputs: response_format.

rappi_checkout_previewPreview Rappi checkoutC
Read-onlyIdempotent

Totals preview. Does not charge. Read-only.

Inputs: address_id, privacy_mode, response_format, payment_method_id.

rappi_clear_cartClear Rappi cartC
Destructive

Gated write. RAPPI_ALLOW_MUTATIONS + explicit_user_intent required.

Inputs: response_format, explicit_user_intent.

rappi_connection_statusRappi connection statusC
Read-onlyIdempotent

Local doctor: token present, mutations off by default, unofficial consumer surface.

Inputs: response_format.

rappi_create_addressCreate Rappi addressB
Destructive

Save a delivery address. Requires explicit_user_intent. Does not place an order.

Inputs: address (required), latitude (required), longitude (required), tag, +6 more.

rappi_delete_addressDelete Rappi addressC
Destructive

Delete a saved address. Requires explicit_user_intent.

Inputs: address_id (required), response_format, explicit_user_intent.

rappi_geocode_addressGeocode Rappi addressA
Read-onlyIdempotent

Resolve a lat/lng against unofficial users-address/address. Read-only. Street redacted by default.

Inputs: latitude, longitude, privacy_mode, response_format.

rappi_get_cartGet Rappi cartA
Read-onlyIdempotent

Inspect the current personal cart. Street/phone/email/last-four redacted by default.

Inputs: privacy_mode, response_format.

rappi_get_orderGet Rappi orderC
Read-onlyIdempotent

Track one order by id. Read-only.

Inputs: order_id (required), privacy_mode, response_format.

rappi_get_order_etaGet Rappi order ETAC
Read-onlyIdempotent

ETA for one order. Read-only.

Inputs: order_id (required), privacy_mode, response_format.

rappi_get_order_invoiceGet Rappi order invoiceB
Read-onlyIdempotent

Invoice for one order. Identity redacted by default. Read-only.

Inputs: order_id (required), privacy_mode, response_format.

rappi_get_order_receiptGet Rappi order receiptC
Read-onlyIdempotent

Receipt for one order. Identity redacted by default. Read-only.

Inputs: order_id (required), privacy_mode, response_format.

rappi_get_order_statusGet Rappi order statusC
Read-onlyIdempotent

Courier/order-status surface for one order. Read-only.

Inputs: order_id (required), privacy_mode, response_format.

rappi_get_storeGet Rappi storeC
Read-onlyIdempotent

Store catalog/detail from unofficial pns-global-search stores/{id}. Read-only.

Inputs: store_id (required), privacy_mode, response_format.

rappi_homeRappi homeC
Read-onlyIdempotent

Web home for the logged-in consumer. Read-only.

Inputs: privacy_mode, response_format.

rappi_home_feedRappi home feedC
Read-onlyIdempotent

Dynamic home feed (web-gateway). Read-only.

Inputs: privacy_mode, response_format.

rappi_list_active_ordersList active Rappi ordersC
Read-onlyIdempotent

In-flight / active orders plus in-progress (unofficial user-order-home). Read-only.

Inputs: privacy_mode, response_format.

rappi_list_addressesList Rappi addressesA
Read-onlyIdempotent

List saved delivery addresses. Street, phone and email are redacted in the default privacy mode.

Inputs: privacy_mode, response_format.

rappi_list_couponsList Rappi couponsC
Read-onlyIdempotent

Wallet coupons on unofficial user-order-home. Read-only. Does not apply a coupon.

Inputs: privacy_mode, response_format.

rappi_list_ordersList Rappi ordersC
Read-onlyIdempotent

List recent personal orders / tracking summaries. Read-only.

Inputs: privacy_mode, response_format.

rappi_list_payment_methodsList Rappi payment methodsA
Read-onlyIdempotent

Read saved payment methods. Last-four and identity redacted by default. Does not charge.

Inputs: privacy_mode, response_format.

rappi_logoutLogout Rappi MCPA
DestructiveIdempotent

Clears the local token file. Requires explicit_user_intent. Not gated by RAPPI_ALLOW_MUTATIONS.

Inputs: response_format, explicit_user_intent.

rappi_order_chatRead Rappi courier chatA
Read-onlyIdempotent

GET /api/ms/order-status/v1/orders/:id/chat (401 JSON). Generic /api/ms/chat is 403 PATH_NOT_ALLOWED. Read-only, redacted.

Inputs: order_id (required), privacy_mode, response_format.

rappi_place_orderPlace Rappi orderC
Destructive

FAIL-CLOSED. Charges money. Requires RAPPI_ALLOW_MUTATIONS=true AND explicit_user_intent=true AND a personal (non-guest) token. Never runs in the default read-only config.

Inputs: address_id (required), payment_method_id (required), notes, store_id, +2 more.

rappi_privacy_auditRappi privacy auditA
Read-onlyIdempotent

Shows redaction defaults, token path, and that checkout is off unless both gates are set.

Inputs: response_format.

rappi_rate_orderRate Rappi orderC
Destructive

Requires explicit_user_intent. Does not charge.

Inputs: score (required), order_id (required), comment, response_format, +1 more.

rappi_recent_searchesRappi recent searchesC
Read-onlyIdempotent

Recent/top searches near a point. Read-only.

Inputs: latitude, longitude, privacy_mode, response_format.

rappi_reorderReorder a Rappi orderA
Destructive

Rebuilds the cart from a past order. Gated cart write. Does not checkout.

Inputs: order_id (required), response_format, explicit_user_intent.

rappi_search_productsSearch Rappi productsC
Read-onlyIdempotent

Search products near a point. Does not add to cart. Read-only.

Inputs: limit, query, latitude, longitude, +2 more.

rappi_search_storesSearch Rappi storesB
Read-onlyIdempotent

Browse nearby stores on the unofficial Rappi consumer surface. Optional lat/lng (or RAPPI_LAT/RAPPI_LNG). Read-only.

Inputs: limit, query, latitude, longitude, +2 more.

rappi_set_active_addressSelect Rappi addressC
Destructive

Requires explicit_user_intent. Does not place an order.

Inputs: address_id (required), response_format, explicit_user_intent.

rappi_set_payment_methodSelect Rappi payment methodB
Destructive

Gated payment write. RAPPI_ALLOW_MUTATIONS + explicit_user_intent. Guest tokens are rejected. Does not charge.

Inputs: payment_method_id (required), response_format, explicit_user_intent.

rappi_tip_orderTip a Rappi orderB
Destructive

FAIL-CLOSED. Charges a tip. Requires mutations, explicit_user_intent, and a personal token.

Inputs: tip (required), order_id (required), response_format, explicit_user_intent.

rappi_track_orderTrack Rappi order ETAC
Read-onlyIdempotent

Live tracking / ETA for one order (unofficial user-order-home tracking). Read-only.

Inputs: order_id (required), privacy_mode, response_format.

rappi_update_addressUpdate Rappi addressC
Destructive

Update a saved address. Requires explicit_user_intent.

Inputs: address_id (required), tag, city, active, +8 more.

rappi_update_cart_itemUpdate Rappi cart itemD
Destructive

Gated write. RAPPI_ALLOW_MUTATIONS + explicit_user_intent required.

Inputs: product_id (required), quantity, store_id, response_format, +1 more.

rappi_web_cartGet Rappi web cartA
Read-onlyIdempotent

Alternate cart inspect via web-gateway. Street/phone/email/last-four redacted. Read-only.

Inputs: privacy_mode, response_format.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.7/5.0

    Scored across 42 tools

    Disambiguation2/5

    Multiple tools have unclear boundaries, such as rappi_list_orders vs rappi_list_active_orders, and rappi_get_order vs rappi_get_order_status vs rappi_get_order_eta vs rappi_track_order. There are also overlapping cart inspection tools (rappi_get_cart vs rappi_web_cart) and redundant browse/search tools (rappi_search_stores, rappi_browse_stores, rappi_browse_catalog, rappi_home_feed).

    Naming Consistency4/5

    Tool names consistently use a rappi_ prefix and mostly follow a verb_noun pattern, making the surface predictable. Minor deviations like rappi_home, rappi_web_cart, rappi_order_chat, and the informational tools (rappi_capabilities, rappi_privacy_audit) break the pattern slightly but are still readable.

    Tool Count2/5

    42 tools is well beyond the typical well-scoped range and the surface feels heavy. Many order-status, cart-inspection, and browse variants could be consolidated into fewer, more general tools.

    Completeness5/5

    The tool set covers the full Rappi consumer lifecycle: search, cart, addresses, payment methods, coupons, checkout, order tracking, cancellation, tipping, rating, reorder, and receipts/invoices. Read-only and gated write surfaces are clearly separated, and there are no major dead ends for the stated domain.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables Claude to browse stores, search products, manage the cart, and open checkout on Rappi Chile through natural language, automating grocery and delivery purchases.
      12
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables searching products, comparing prices, and building optimal shopping lists across major Chilean supermarkets, using your local machine to access real-time prices and loyalty deals.
      14
      68 npm
      67
      MIT
    • A
      license
      C
      quality
      B
      maintenance
      Enables AI agents to access iFood orders, addresses, restaurants, and cart locally, with fail-closed checkout requiring explicit opt-in.
      33
      35 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables searching restaurants and menu items, viewing availability and full menus, and managing restaurant carts via the private Yandex.Eats web API, secured with single-user OAuth, without exposing sensitive account or location data.
      12 npm
      MIT