Rappi MCP (unofficial)
This server is an unofficial, local-first MCP integration with Rappi that lets an AI agent browse stores/products, inspect carts/orders/addresses/payment methods, and optionally perform gated, fail-closed writes only when explicitly enabled and intended.
Browse/search (read-only): search stores and products, get store details, browse store/catalog/home/feed, and view recent searches using optional lat/lng.
Inspect cart (read-only): view the current personal cart or web cart; street/phone/email/last-four are redacted by default.
Manage addresses (read-only + intent-gated writes): list, geocode, create, update, delete, and set active address; writes require explicit_user_intent.
Orders (read-only): list orders, list active orders, get order details, track ETA, get status, receipt, invoice, and order summaries.
Payments/coupons/checkout preview (read-only): list saved payment methods, list coupons, and preview checkout totals without charging.
Gated cart mutations: add/update/clear cart and reorder from a past order; these require both RAPPI_ALLOW_MUTATIONS=true and explicit_user_intent=true, and do not checkout.
Gated pay mutations (fail-closed): place order, set payment method, cancel order, and tip; require mutations, explicit intent, and a personal (non-guest) token; can charge money/refund.
Intent-only actions: logout, rate order, and address changes; logout clears the local token file.
Meta/privacy tools: check connection status, see capabilities, and run a privacy audit showing redaction defaults and that checkout is off unless both gates are set.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Rappi MCP (unofficial) search for protein powder near me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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_orderand payment writes do nothing unlessRAPPI_ALLOW_MUTATIONSis enabled andexplicit_user_intentis 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 doctorToken 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 |
|
Read · cart / pay |
|
Read · address / orders |
|
Meta |
|
Gated cart (mutations and intent) |
|
Gated pay (mutations and intent) |
|
Intent only |
|
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/mcpSecurity
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 testNo live Rappi login required.
Available Tools
42 toolsrappi_add_to_cartAdd to Rappi cartCDestructive
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 couponBDestructive
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 catalogCRead-onlyIdempotent
Nearby store catalog (restaurant-bus). Read-only. Optional lat/lng.
Inputs: limit, query, latitude, longitude, +2 more.
rappi_browse_storesBrowse Rappi stores (web)CRead-onlyIdempotent
Web-gateway store list. Read-only. Complements rappi_search_stores.
Inputs: privacy_mode, response_format.
rappi_cancel_orderCancel Rappi orderBDestructive
Gated. May refund. Requires mutations and explicit_user_intent. Guest tokens rejected.
Inputs: order_id (required), response_format, explicit_user_intent.
rappi_capabilitiesRappi capabilitiesCRead-onlyIdempotent
What this unofficial MCP can read and which writes stay gated.
Inputs: response_format.
rappi_checkout_previewPreview Rappi checkoutCRead-onlyIdempotent
Totals preview. Does not charge. Read-only.
Inputs: address_id, privacy_mode, response_format, payment_method_id.
rappi_clear_cartClear Rappi cartCDestructive
Gated write. RAPPI_ALLOW_MUTATIONS + explicit_user_intent required.
Inputs: response_format, explicit_user_intent.
rappi_connection_statusRappi connection statusCRead-onlyIdempotent
Local doctor: token present, mutations off by default, unofficial consumer surface.
Inputs: response_format.
rappi_create_addressCreate Rappi addressBDestructive
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 addressCDestructive
Delete a saved address. Requires explicit_user_intent.
Inputs: address_id (required), response_format, explicit_user_intent.
rappi_geocode_addressGeocode Rappi addressARead-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 cartARead-onlyIdempotent
Inspect the current personal cart. Street/phone/email/last-four redacted by default.
Inputs: privacy_mode, response_format.
rappi_get_orderGet Rappi orderCRead-onlyIdempotent
Track one order by id. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
rappi_get_order_etaGet Rappi order ETACRead-onlyIdempotent
ETA for one order. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
rappi_get_order_invoiceGet Rappi order invoiceBRead-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 receiptCRead-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 statusCRead-onlyIdempotent
Courier/order-status surface for one order. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
rappi_get_storeGet Rappi storeCRead-onlyIdempotent
Store catalog/detail from unofficial pns-global-search stores/{id}. Read-only.
Inputs: store_id (required), privacy_mode, response_format.
rappi_homeRappi homeCRead-onlyIdempotent
Web home for the logged-in consumer. Read-only.
Inputs: privacy_mode, response_format.
rappi_home_feedRappi home feedCRead-onlyIdempotent
Dynamic home feed (web-gateway). Read-only.
Inputs: privacy_mode, response_format.
rappi_list_active_ordersList active Rappi ordersCRead-onlyIdempotent
In-flight / active orders plus in-progress (unofficial user-order-home). Read-only.
Inputs: privacy_mode, response_format.
rappi_list_addressesList Rappi addressesARead-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 couponsCRead-onlyIdempotent
Wallet coupons on unofficial user-order-home. Read-only. Does not apply a coupon.
Inputs: privacy_mode, response_format.
rappi_list_ordersList Rappi ordersCRead-onlyIdempotent
List recent personal orders / tracking summaries. Read-only.
Inputs: privacy_mode, response_format.
rappi_list_payment_methodsList Rappi payment methodsARead-onlyIdempotent
Read saved payment methods. Last-four and identity redacted by default. Does not charge.
Inputs: privacy_mode, response_format.
rappi_logoutLogout Rappi MCPADestructiveIdempotent
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 chatARead-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 orderCDestructive
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 auditARead-onlyIdempotent
Shows redaction defaults, token path, and that checkout is off unless both gates are set.
Inputs: response_format.
rappi_rate_orderRate Rappi orderCDestructive
Requires explicit_user_intent. Does not charge.
Inputs: score (required), order_id (required), comment, response_format, +1 more.
rappi_recent_searchesRappi recent searchesCRead-onlyIdempotent
Recent/top searches near a point. Read-only.
Inputs: latitude, longitude, privacy_mode, response_format.
rappi_reorderReorder a Rappi orderADestructive
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 productsCRead-onlyIdempotent
Search products near a point. Does not add to cart. Read-only.
Inputs: limit, query, latitude, longitude, +2 more.
rappi_search_storesSearch Rappi storesBRead-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 addressCDestructive
Requires explicit_user_intent. Does not place an order.
Inputs: address_id (required), response_format, explicit_user_intent.
rappi_set_payment_methodSelect Rappi payment methodBDestructive
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 orderBDestructive
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 ETACRead-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 addressCDestructive
Update a saved address. Requires explicit_user_intent.
Inputs: address_id (required), tag, city, active, +8 more.
rappi_update_cart_itemUpdate Rappi cart itemDDestructive
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 cartARead-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
Scored across 42 tools
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).
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.
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.
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
Related MCP Connectors
DoorDash MCP server for ChatGPT, Claude and any AI agent: search stores, read store menu, add item to cart, preview order total with fees, submit order, list past orders, get order status and reorder a past order in your own DoorDash account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to DoorDash yourself; Cotlet does not store your password and you need no DoorDash API key. About the official DoorDash API: DoorDash has no public API for ordering as a consumer (checked 27 Oct 2026). Its public APIs, Drive and Marketplace, are for merchants and delivery partners. Setup and FAQ: https://cotlet.dev/integrations/doordash-api-mcp-server
Search live store shelves, verify delivery windows, and run instant AI agent checkouts.
Cheapest delivered price for any product: tech, home, shoes, beauty. Read from each store's checkout
Verified deals, store policies & a trust score for thousands of online retailers. No auth.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude to browse stores, search products, manage the cart, and open checkout on Rappi Chile through natural language, automating grocery and delivery purchases.121MIT
- AlicenseAqualityBmaintenanceEnables 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.1468 npm67MIT
- AlicenseCqualityBmaintenanceEnables AI agents to access iFood orders, addresses, restaurants, and cart locally, with fail-closed checkout requiring explicit opt-in.3335 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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 npmMIT