Skip to main content
Glama

RappiMCP

Program : RappiMCP
Author  : Bastian Girardi
Date    : April 2, 2026
Purpose : Built to automate grocery and delivery purchases on Rappi Chile
          through Claude — eliminating the need to manually browse the app
          when you just want to tell an AI what you need and have it ordered.

An MCP (Model Context Protocol) server that gives Claude full control over Rappi Chile — browse stores, search products, manage the cart, and open checkout — all through natural language.

How it works

The server is built with FastMCP and exposes tools that Claude can call. It communicates with Rappi via their internal web API (services.rappi.cl), authenticated with tokens extracted directly from a Chrome browser session using the Chrome DevTools Protocol (CDP).

Claude ──tools──▶ rappi_mcp.py ──HTTP──▶ services.rappi.cl
                       │
                       └──CDP──▶ Chrome (auth + checkout navigation)

Related MCP server: selver-mcp

Setup

1. Install dependencies

pip install -r requirements.txt

2. Configure Claude Code

Add this to your Claude Code MCP settings (claude_desktop_config.json or equivalent):

{
  "mcpServers": {
    "RappiMCP": {
      "command": "python",
      "args": ["C:/path/to/RappiMCP/rappi_mcp.py"]
    }
  }
}

3. Authenticate

On first use, call rappi_auth to extract your Rappi credentials from Chrome and save them to .env. No manual token copying needed.

Authentication

Rappi uses rotating JWT tokens stored as browser cookies. The auth flow:

  1. rappi_auth(use_existing_chrome=False) — launches a dedicated Chrome window at rappi.cl (on CDP port 9223) and waits up to 2 minutes for you to log in

  2. Once logged in, it reads three cookies via CDP:

    • rappi.data (Base64 JSON) → user_id

    • deviceiddevice_id

    • rappi_refresh_tokenrefresh_token

  3. Exchanges the refresh token for a fresh access_token via POST /api/rocket/refresh-token

  4. Writes all four values to .env

rappi_auth(use_existing_chrome=True) (default) — attaches to an already-running Chrome with --remote-debugging-port=9223 and reads cookies immediately (you must already be logged in).

Token refresh

RappiClient handles token rotation automatically. If any API response includes the header x-refresh-token: true, it transparently refreshes both tokens and retries the request.

Environment variables

RAPPI_ACCESS_TOKEN   — Bearer token for API calls
RAPPI_REFRESH_TOKEN  — Used to obtain new access tokens
RAPPI_DEVICE_ID      — UUID identifying the browser session
RAPPI_USER_ID        — Numeric Rappi user ID

See .env.example for the expected format.

Tools reference

rappi_auth(use_existing_chrome=True)

Extract credentials from Chrome and write them to .env. Set use_existing_chrome=False to launch a fresh Chrome window and wait for login.


rappi_reload()

Reload tokens from .env and restart the API client — without restarting the MCP server. Useful after manually editing .env.


rappi_list_stores(category, query, limit)

List stores available for delivery near your saved address.

Param

Default

Description

category

"market"

Store category: "market", "restaurant", "farma", "licores", "express-big", or any Rappi store_type slug

query

""

Optional name filter

limit

50

Max results

Returns: store_id, name, store_type, lat, lng, eta, shipping_cost.

store_id is used by rappi_search_products. store_type is used by all cart tools.


rappi_get_store(store_id)

Look up metadata for a specific store by its numeric ID. Returns store_type (the slug needed for cart operations).


rappi_search_products(store_id, query, size, offset)

Search products within a store. Queries in Spanish work best.

Param

Default

Description

store_id

required

From rappi_list_stores

query

required

Search term (e.g. "cerveza", "preservativos")

size

40

Results per page (max 40)

offset

0

Pagination offset

Returns: composite_id, name, trademark, price, real_price, discount, quantity, unit_type, sale_type, in_stock.

Use composite_id and sale_type when adding to cart.


rappi_get_cart(store_type)

Read the current cart contents for a given store. Returns a list of items with composite_id, units, sale_type, name, price.


rappi_add_to_cart(store_id, store_type, composite_id, units, sale_type)

Add a product to the cart (or increment its quantity if already present). Internally: reads current cart → appends/increments → writes back via a full PUT.


rappi_remove_from_cart(store_id, store_type, composite_id)

Remove a specific product from the cart by its composite_id.


rappi_clear_cart(store_id, store_type)

Empty the entire cart for a store.


rappi_checkout(store_type)

Navigate Chrome to the checkout page for a store. Each store has its own checkout URL:

https://www.rappi.cl/checkout/{store_type}

Examples:

  • turbo_rappidrinks_ncrappi.cl/checkout/turbo_rappidrinks_nc

  • cruz_verde_rappido_ncrappi.cl/checkout/cruz_verde_rappido_nc

  • liderrappi.cl/checkout/lider

Rappi does not support consolidated multi-store checkout. Each store cart must be checked out separately.

Typical flow

1. rappi_auth()                          # authenticate once
2. rappi_list_stores(category="farma")   # find pharmacies
3. rappi_search_products(store_id, "preservativos")  # search
4. rappi_add_to_cart(store_id, store_type, composite_id, 1, "U")
5. rappi_checkout(store_type)            # open checkout in Chrome

File structure

RappiMCP/
├── rappi_mcp.py      # MCP server — tool definitions, auth logic, CDP helpers
├── rappi_client.py   # Rappi API client with automatic token refresh
├── requirements.txt  # Python dependencies
├── .env              # Credentials (git-ignored)
└── .env.example      # Credentials template

Notes

  • The server uses CDP port 9223 (not the default 9222) to avoid conflicts with other tools

  • Checkout navigation also uses CDP — the same Chrome instance used for auth

  • store_type slugs come from rappi_list_stores and must be passed exactly as returned (e.g. "turbo_rappidrinks_nc", not "turbo")

Available Tools

12 tools
rappi_add_to_cartA

Add an item to the cart (or increment its quantity if already present).

Args: store_id: Numeric store ID (e.g. 900024799). store_type: Store type slug (e.g. "lider"). composite_id: Product composite ID from rappi_search_products. units: Number of units to add. sale_type: "U" (unit) or "WP" (by weight), from search results.

Returns the updated cart response from Rappi.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYes
store_typeYes
composite_idYes
unitsYes
sale_typeYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present; description adds incremental behavior and return value but misses details like prerequisites (cart existence) and error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise (6 lines) with clear arg list and returns line, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param tool with no output schema or annotations, description covers parameters and return value well; could add more on prerequisites or error handling but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, description explains each parameter meaningfully, including examples for store_id and sale_type, bridging the gap significantly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool adds an item to the cart and increments quantity if already present, which distinguishes it from siblings like rappi_remove_from_cart and rappi_clear_cart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implicit guidance by mentioning composite_id and sale_type come from search results, but lacks explicit when-to-use or when-not-to-use guidance compared to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_authA

Extract Rappi credentials from Chrome and save them to .env.

Flow:

  • use_existing_chrome=True (default): attach to a Chrome already running with --remote-debugging-port=9223. Reads cookies immediately — user must already be logged into rappi.cl.

  • use_existing_chrome=False: launches a dedicated Chrome window pointed at rappi.cl, then waits up to 2 minutes for the user to log in. Once the auth cookies appear, exchanges the refresh token for a fresh access token and writes everything to .env automatically — no second call needed.

Returns the extracted values (tokens truncated for display).

ParametersJSON Schema
NameRequiredDescriptionDefault
use_existing_chromeNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and delivers richly: it explains Chrome attachment, login wait, token exchange, .env writing, and truncated return values. No behavioral traits are hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence purpose followed by a bullet list for the flow. Every sentence adds value, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one boolean param, no output schema), the description covers the complete workflow, return values, and side effects (e.g., writing to .env). It is fully contextualized among sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the input schema has 0% description coverage, the tool description extensively explains the single boolean parameter 'use_existing_chrome', detailing the exact behavior for each value, far exceeding what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Extract Rappi credentials from Chrome and save them to .env.' It uses a specific verb (extract) and resource (credentials), and it distinguishes well from sibling tools, which are all about shopping actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides detailed guidance on the two modes of operation (use_existing_chrome True/False), giving clear context on when each is appropriate. However, it does not explicitly state when to use this tool versus sibling tools or mention prerequisites, though the name implies it's the first step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_checkoutA

Open the Rappi checkout page in Chrome so the user can complete payment.

Navigates Chrome directly to https://www.rappi.cl/checkout/{store_type}. Each store has its own checkout URL — pass the same store_type used in rappi_add_to_cart. The user must finish the order manually.

Args: store_type: Store type slug from rappi_list_stores or rappi_add_to_cart (e.g. "turbo_rappidrinks_nc", "lider", "expresslider").

ParametersJSON Schema
NameRequiredDescriptionDefault
store_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that the tool navigates Chrome directly to a URL and requires manual completion, which reveals a key behavioral trait. However, it omits prerequisites like authentication status, potential side effects, or what happens if the store_type is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three short paragraphs: a summary sentence, details about URL and store_type, and the args list. No redundant information is present, and the key point is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter) and the existence of an output schema (not shown), the description covers the essential aspects: what it does, how to use the parameter, and the manual completion requirement. It could mention error handling or output structure, but for a basic navigation tool it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains that store_type is a slug from rappi_list_stores or rappi_add_to_cart and provides concrete examples (e.g., 'turbo_rappidrinks_nc'). This adds significant meaning beyond the schema's bare string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('open the Rappi checkout page in Chrome') and the purpose ('so the user can complete payment'). It specifies the resource (checkout page) and distinguishes from sibling tools like rappi_add_to_cart by focusing on checkout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: after adding items to cart, by passing the same store_type used in rappi_add_to_cart. It also notes that the user must finish the order manually. No explicit exclusion of alternatives is given, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_clear_cartB

Empty the entire cart for a store.

Args: store_id: Numeric store ID (e.g. 900024799). store_type: Store type slug (e.g. "lider").

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYes
store_typeYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states it empties the cart. It does not disclose potential side effects (e.g., if cart is already empty, or auth requirements). For a destructive action, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and to the point, with a clear docstring style. It is efficiently structured with two lines for arguments, but could be slightly more structured with a separate usage section.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (clear cart), the description covers the basic purpose and parameters. However, it lacks details on behavior when the cart is empty, error handling, or output, which would make it more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds useful examples and format clarification for both parameters (store_id as numeric, store_type as slug). Since the schema has 0% description coverage, this significantly aids understanding beyond the raw types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (empty) and the resource (entire cart for a store). It effectively distinguishes from sibling tools like rappi_add_to_cart and rappi_remove_from_cart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No conditions or prerequisites are mentioned. The description only states what it does without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_get_cartA

Return the current cart contents for a store type (e.g. "lider").

Returns a list of cart items with composite_id, units, sale_type, name, price.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It implies a read operation by 'Return' and lists output fields, but doesn't explicitly state no side effects or authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, and no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter tool with one parameter and an output schema (indicated by context), the description covers purpose, required input, and output format. Complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has no description for the parameter (0% coverage). The description adds meaning by stating 'for a store type' and giving an example 'lider', clarifying that it's a store type identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Return the current cart contents for a store type' – a specific verb and resource. Differentiates from sibling tools like rappi_add_to_cart or rappi_clear_cart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains that it requires a store type (e.g., 'lider'), which provides context. No explicit when-not-to-use or alternatives, but the usage is straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_get_storeA

Look up store metadata by numeric store_id.

Returns store_id, name, lat, lng, store_type (id + name). The store_type.id (e.g. "lider") is required by other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes return fields and highlights store_type.id relevance, but does not disclose error behavior, rate limits, or authentication requirements. For a simple read tool, it is adequate but lacks extra context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded purpose, no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given single parameter and no annotations, description covers purpose, input, and key output details. Could mention error handling or read-only nature, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage; description adds that store_id is numeric and required, but no further details like format or source. Provides minimal value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool looks up store metadata by numeric store_id and lists return fields. It distinguishes from siblings like rappi_list_stores by focusing on a single store's metadata, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when a store_id is known, but no explicit guidance on when to use versus alternatives like rappi_list_stores or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_list_addressesA

List all saved delivery addresses for this Rappi account. Use rappi_set_address to switch to a different one. Returns id, tag, address, active, lat, lng for each.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that the tool lists addresses and returns specific fields (id, tag, address, active, lat, lng), which accurately represents a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose, second gives sibling reference and return fields. No wasted words, extremely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (0 params, simple list) and presence of output schema, the description adequately covers purpose, usage, and return format. Complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100% trivially. The description does not need to add parameter semantics, and baseline is 4 as per guidelines for no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'all saved delivery addresses', and distinguishes from sibling tool rappi_set_address by specifying its use for switching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool (to list addresses) and directs the agent to use rappi_set_address for switching, providing clear guidance against using this tool for modification.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_list_storesA

List stores available for delivery, filtered by category.

Args: category: Store category to list. Common values: "market" — supermarkets (default) "restaurant" — restaurants "farma" — pharmacies "licores" — liquor stores "express-big" — express / convenience stores Any other Rappi store_type slug is also accepted. query: Optional name filter (case-insensitive). limit: Max results to return (default 50).

Returns a list of stores with store_id, name, store_type, lat, lng. Use store_id with rappi_search_products and store_type with cart tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNomarket
queryNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the return format but does not disclose behavioral traits like idempotency, rate limits, or whether it requires authentication. Given the read-only nature, the lack of explicit safety indication is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with args, return info, and usage tips, but it could be slightly shorter by merging the purpose and category list. Still, it is clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, all parameters with examples, return fields, and integration hints. With an output schema, the return detail is redundant but not harmful. It is adequate for a simple listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description adds comprehensive meaning: it lists common category values, explains query as case-insensitive filter, and states limit default. This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists stores filtered by category, distinguishing it from siblings like rappi_get_store and rappi_search_products. It provides a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on using the output with other tools (store_id for search, store_type for cart), and hints at common category values. It does not explicitly state when not to use it, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_reloadA

Reload tokens from .env and rappi_client code into the running server (no Chrome needed).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that reloading modifies server state and does not require Chrome. No annotation provided, so description carries transparency burden. Does not mention potential side effects, but sufficient for a simple reload operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous words. Efficiently conveys action, target, and context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool without output schema, description covers core behavior and context (no Chrome needed). Brief but complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, schema coverage 100%. Baseline for zero parameters is 4; description adds no param info but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'reload' and resource 'tokens from .env and rappi_client code'. It clearly states the action and distinguishes from siblings by noting 'no Chrome needed'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. Implies it's for refreshing configuration without restarting the server, but lacks explicit conditions like 'use after .env changes'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_remove_from_cartB

Remove an item from the cart by its composite_id.

Args: store_id: Numeric store ID (e.g. 900024799). store_type: Store type slug (e.g. "lider"). composite_id: Product composite ID to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYes
store_typeYes
composite_idYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for disclosing behavior. It fails to mention side effects, error conditions, or requirements like authentication or item existence in the cart.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, uses an Args list format, and contains no extraneous information. It is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple removal tool with 3 parameters and no output schema, the description covers the basic function. However, it lacks completeness regarding expected preconditions (e.g., item must be in cart) and error scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It provides examples for store_id and store_type, but does not explain the format or source of composite_id, nor any constraints on the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Remove an item from the cart by its composite_id', using a specific verb and resource. It clearly distinguishes from sibling tools like rappi_add_to_cart and rappi_clear_cart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It simply describes the action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_search_productsA

Search products within a Rappi store.

Args: store_id: Numeric store ID (e.g. 900024799 for Lider). query: Search term in Spanish. size: Max results to return (default 40, max 40). offset: Pagination offset (increment by size to get next page).

Returns a list of products with: composite_id, name, trademark, price, real_price, discount, quantity, unit_type, sale_type, in_stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYes
queryYes
sizeNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but does not disclose whether the operation is read-only, requires authentication, or has rate limits. It only describes input/output, omitting critical behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct and well-structured: a one-line summary followed by clear parameter and return-value lists. Every sentence adds value with no redundancies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Parameters and return values are thoroughly documented. However, missing behavioral context (e.g., idempotency, auth) and usage guidance reduce completeness slightly. Output schema is present, so return coverage is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the schema: provides an example for store_id, specifies the language for query, constrains size (max 40), and explains offset for pagination. Schema coverage is 0%, so description fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search products within a Rappi store,' specifying a concrete verb and resource. It distinguishes itself from sibling tools like rappi_add_to_cart or rappi_list_stores, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, conditions, or when to avoid using it, leaving the agent without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rappi_set_addressA

Switch the active delivery address by its ID (from rappi_list_addresses). If address_id is None, opens Rappi address settings in Chrome so you can add a new one. The change is in-memory and affects all subsequent store/product searches.

Args: address_id: Numeric address ID from rappi_list_addresses, or None to open Chrome.

ParametersJSON Schema
NameRequiredDescriptionDefault
address_idNo

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure burden. It discloses that the change is in-memory (not persisted) and that passing None opens Chrome. However, it does not mention potential side effects like whether authentication is required or if there is any confirmation step. This is adequate but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: three sentences plus a parameter description. It is front-loaded with the main action, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single parameter, no output schema), the description covers all necessary details: the two behaviors, the source of the ID, and the effect of the change. It is complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully explains the parameter: 'Numeric address ID from rappi_list_addresses, or None to open Chrome.' This adds meaning beyond type and default, clarifying the source and the alternative behavior for None.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Switch' and the resource 'active delivery address', and specifies that the address ID comes from 'rappi_list_addresses'. It also distinguishes the two modes (switching with an ID vs opening Chrome for adding a new address), which differentiates it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use each mode based on the parameter value: 'If address_id is None, opens Rappi address settings...'. It also notes that the change is in-memory and affects subsequent searches, providing context on scope. It lacks explicit when-not-to-use or alternative tools, but the usage is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 12 tool updatesv0.2.2
    • First observedrappi_add_to_cart
    • First observedrappi_auth
    • First observedrappi_checkout
    • First observedrappi_clear_cart
    • First observedrappi_get_cart
    • First observedrappi_get_store
    • First observedrappi_list_addresses
    • First observedrappi_list_stores
    • First observedrappi_reload
    • First observedrappi_remove_from_cart
    • First observedrappi_search_products
    • First observedrappi_set_address

TDQS

A4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation: auth, store lookup, product search, cart CRUD, address management, checkout, and token reload. No overlaps or ambiguity.

Naming Consistency5/5

All tools follow a uniform 'rappi_verb_noun' snake_case pattern (e.g., rappi_add_to_cart, rappi_clear_cart). Verbs are descriptive and consistent across the set.

Tool Count5/5

12 tools cover the essential interactions for a Rappi integration (auth, store browsing, product search, cart management, addresses, checkout, maintenance). Not too many, not too few.

Completeness4/5

The surface covers the core workflow: search, cart operations, address management, and checkout initiation. Missing a direct order placement API (likely an external limitation) but otherwise complete for agent-based shopping.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers