<!-- https://pricto.dev/docs/mcp · versión en inglés: https://pricto.dev/docs/mcp.en.md -->

# Servidor MCP

Un servidor MCP remoto (Streamable HTTP, sin estado), compatible con la especificación 2026-07-28 y con clientes de 2025. Las herramientas llaman a la misma API, con el mismo costo.

| | URL | Autenticación |
|---|---|---|
| Sandbox | `https://pricto.dev/mcp/sandbox` | Ninguna |
| Producción | `https://pricto.dev/mcp` | `Authorization: Bearer <key>` |

Instrucciones para cada asistente en el [inicio rápido](/docs#3-conecta-tu-agente) y en [Conectar](/conectar).

Cada respuesta trae un texto para el modelo (una tabla corta, la línea de fuente y el costo) y `structuredContent` con los datos completos. Los errores vuelven como resultado con `isError` y una pista para que el agente se corrija.

## `search_products`

Find products by name, brand, size or barcode (GTIN/EAN) and get the price range across retailers. Use the returned product_id with the other tools. Cost: 1 credit per page, 0 if nothing is found. Example queries: "leche entera 1 litro", "paracetamol 500 mg", "Coca-Cola sin azúcar 1,5 L", "7801234567890".

| Costo | Solo lectura |
|---|---|
| 1 credit per page, 0 if nothing is found. | Sí |

| Argumento | Tipo | Descripción |
|---|---|---|
| `query` (requerido) | `string` | Free text in Spanish or English, or a GTIN. |
| `category` | `string` | Category ID such as food.dairy or health.analgesics (see get_coverage). |
| `brand` | `string` | Brand name or ID. |
| `retailer` | `string` | Only products sold by this retailer ID. |
| `country` | `string` | ISO country code. Only CL is live. |
| `limit` | `integer` | Max results, default 5. |
| `lang` | `string` | BCP 47 language for product names and messages (es, en, en-US...). Default: es. |
| `currency` | `string` | Also return amounts in this ISO 4217 currency, e.g. USD or EUR. Default: local currency only. |
| `max_credits` | `number` | Spend at most this many credits; results are cut to fit (cheapest first). |

Preguntas que la usan:

- "¿Cuánto cuesta la leche entera de litro?"
- "Busca paracetamol de 500 mg."

```json
{
  "query": "leche entera"
}
```

```text
| product_id | name | min | max | retailers | cheapest at |
|---|---|---|---|---|---|
| prd_01colu | Leche entera Colun 1 L | $1.090 | $1.290 | 3 | Unimarc |
| prd_04colu | Leche entera Colun pack 6 x 1 L | $7.290 | $7.290 | 2 | Jumbo |
| prd_02sopr | Leche descremada Soprole 1 L | $1.190 | $1.190 | 2 | Jumbo |
| prd_03lonc | Leche semidescremada sin lactosa Loncoleche 1 L | $1.290 | $1.490 | 3 | Unimarc |
Fuente: Pricto · 23-10-2026 08:00 CLST
Costo: 1 crédito. Saldo: 14.999.
```

## `get_prices`

Current price of one product at every retailer that sells it, cheapest first: list, sale and card price, multi-buy promotions, unit price, stock and date observed. as_of gives a past date. Cost: 1 credit per retailer price. To follow a price over time, call get_price_history with interval=day once a week or month instead of get_prices every day: 1 credit per 30 days per retailer.

| Costo | Solo lectura |
|---|---|
| 1 credit per retailer price. | Sí |

| Argumento | Tipo | Descripción |
|---|---|---|
| `product` (requerido) | `string` | product_id from search_products (prd_...) or a GTIN/EAN barcode. |
| `retailers` | `array<string>` | Retailer IDs to include, e.g. ["cl-jumbo","cl-unimarc"]. Default: all. |
| `location` | `string` | Comuna name ("Las Condes"), 'CL:<CUT code>' or a store ID, for retailers that price by location. |
| `as_of` | `string` | Past date YYYY-MM-DD. Default: latest. |
| `match_kinds` | `array<string>` | Default ["identical"]. "pack": N units of the product (compare unit_price). "equivalent": substitute of another brand. |
| `lang` | `string` | BCP 47 language for product names and messages (es, en, en-US...). Default: es. |
| `currency` | `string` | Also return amounts in this ISO 4217 currency, e.g. USD or EUR. Default: local currency only. |
| `max_credits` | `number` | Spend at most this many credits; results are cut to fit (cheapest first). |

Preguntas que la usan:

- "¿Dónde está más barata la leche Colún de litro?"
- "¿A cuánto está este código de barras en cada tienda: 2000070000007?"

```json
{
  "product": "2000070000007"
}
```

```text
Leche entera Colun 1 L (prd_01colu). 3 retailers, observed 2026-10-23.
| retailer | price | list | card | promo | stock |
|---|---|---|---|---|---|
| Unimarc | $1.090 | $1.090 | - | - | in_stock |
| Santa Isabel | $1.190 | $1.190 | - | - | in_stock |
| Jumbo | $1.290 | $1.290 | $1.190 (Tarjeta Cencosud) | - | in_stock |
Fuente: Pricto · 23-10-2026 08:00 CLST · prd_01colu
Costo: 3 créditos. Saldo: 14.996.
```

## `compare_prices`

Price matrix for up to 20 products at each retailer and the basket total per retailer, cheapest complete basket first. Use for "where is this list cheapest" or to compare a brand against competitors. Cost: 1 credit per price in the matrix.

| Costo | Solo lectura |
|---|---|
| 1 credit per price in the matrix. | Sí |

| Argumento | Tipo | Descripción |
|---|---|---|
| `items` (requerido) | `array<object>` |  |
| `retailers` | `array<string>` | Retailer IDs to include, e.g. ["cl-jumbo","cl-unimarc"]. Default: all. |
| `price_type` | `string` | card_price totals with store-card prices where they exist. Valores: `price`, `card_price`. |
| `match_kinds` | `array<string>` | Default ["identical"]. "pack": N units of the product (compare unit_price). "equivalent": substitute of another brand. |
| `lang` | `string` | BCP 47 language for product names and messages (es, en, en-US...). Default: es. |
| `currency` | `string` | Also return amounts in this ISO 4217 currency, e.g. USD or EUR. Default: local currency only. |
| `max_credits` | `number` | Spend at most this many credits; results are cut to fit (cheapest first). |

Preguntas que la usan:

- "¿En qué supermercado me sale más barata esta lista?"
- "Compara 2 leches y un aceite entre Jumbo y Unimarc."

```json
{
  "items": [
    {
      "product": "prd_01colu",
      "quantity": 2
    },
    {
      "product": "2000070000373"
    }
  ]
}
```

```text
| retailer | total | items found |
|---|---|---|
| Santa Isabel | $3.570 | 2/2 |
| Jumbo | $3.770 | 2/2 |
| Unimarc | $2.180 | 1/2 |
Fuente: Pricto · 23-10-2026 08:00 CLST
Costo: 2 créditos (3 repetidos en 24 h, gratis). Saldo: 14.994.
```

## `get_price_history`

How the price of a product changed over time at each retailer: first, last, min, max, % change, number of changes, days on promotion, plus the series. Default: last 90 days by week. Cost: 1 credit per 30 points per retailer (90 days by week = 1 per retailer).

| Costo | Solo lectura |
|---|---|
| 1 credit per 30 points per retailer (90 days by week = 1 per retailer). | Sí |

| Argumento | Tipo | Descripción |
|---|---|---|
| `product` (requerido) | `string` | product_id from search_products (prd_...) or a GTIN/EAN barcode. |
| `retailers` | `array<string>` | Retailer IDs to include, e.g. ["cl-jumbo","cl-unimarc"]. Default: all. |
| `from` | `string` | Start date YYYY-MM-DD. Default: 90 days ago. |
| `to` | `string` | End date YYYY-MM-DD. Default: today. |
| `interval` | `string` | Point spacing. Default: week. Valores: `day`, `week`, `month`. |
| `match_kinds` | `array<string>` | Default ["identical"]. "pack": N units of the product (compare unit_price). "equivalent": substitute of another brand. |
| `lang` | `string` | BCP 47 language for product names and messages (es, en, en-US...). Default: es. |
| `currency` | `string` | Also return amounts in this ISO 4217 currency, e.g. USD or EUR. Default: local currency only. |
| `max_credits` | `number` | Spend at most this many credits; results are cut to fit (cheapest first). |

Preguntas que la usan:

- "¿Cómo ha cambiado el precio de la leche Colún en los últimos meses?"
- "¿Subió el paracetamol este mes?"

```json
{
  "product": "prd_01colu",
  "interval": "month"
}
```

```text
prd_01colu 2026-07-26 → 2026-10-23 (CLP).
| retailer | first | last | min | max | change | changes | promo days |
|---|---|---|---|---|---|---|---|
| Jumbo | $1.290 | $1.290 | $990 | $1.290 | 0% | 4 | 46 |
| Santa Isabel | $1.190 | $1.190 | $890 | $1.190 | 0% | 4 | 20 |
| Unimarc | $1.090 | $1.090 | $1.090 | $1.090 | 0% | 0 | 20 |
Fuente: Pricto · 23-10-2026 08:00 CLST · prd_01colu
Costo: 3 créditos. Saldo: 14.991.
```

## `list_offers`

Listings as published by retailers, filtered by retailer, category, brand, promotion or recent change. Use to find what is on promotion at a store or what changed since a date. Cost: 1 credit per listing.

| Costo | Solo lectura |
|---|---|
| 1 credit per listing. | Sí |

| Argumento | Tipo | Descripción |
|---|---|---|
| `retailer` | `string` |  |
| `category` | `string` |  |
| `brand` | `string` |  |
| `on_promotion` | `boolean` | Only listings with a sale price, card price or multi-buy. |
| `changed_since` | `string` | ISO date or date-time; only listings whose price or stock changed after it. |
| `limit` | `integer` | Default 10. |
| `cursor` | `string` | next_cursor from a previous call. |
| `lang` | `string` | BCP 47 language for product names and messages (es, en, en-US...). Default: es. |
| `currency` | `string` | Also return amounts in this ISO 4217 currency, e.g. USD or EUR. Default: local currency only. |
| `max_credits` | `number` | Spend at most this many credits; results are cut to fit (cheapest first). |

Preguntas que la usan:

- "¿Qué está en oferta hoy en Jumbo?"
- "¿Qué cambió de precio desde ayer en farmacias?"

```json
{
  "retailer": "cl-jumbo",
  "on_promotion": true,
  "limit": 3
}
```

```text
| retailer | title | price | list | card | promo |
|---|---|---|---|---|---|
| Jumbo | Leche Entera Colun 1 L | $1.290 | $1.290 | $1.190 | - |
| Jumbo | Leche Semidescremada Sin Lactosa Loncoleche 1 L | $1.490 | $1.490 | - | 2 x $2.590 |
| Jumbo | Leche Entera Colun Pack 6 X 1 L | $7.290 | $7.290 | - | 2 x $12.590 |
Fuente: Pricto · 23-10-2026 08:00 CLST
Costo: 2 créditos (1 repetidos en 24 h, gratis). Saldo: 14.989.
```

## `get_coverage`

Which countries, retailers and categories have data, how fresh it is and since when there is history. Free.

| Costo | Solo lectura |
|---|---|
| 0 | Sí |

| Argumento | Tipo | Descripción |
|---|---|---|
| `country` | `string` |  |
| `retailer` | `string` |  |
| `category` | `string` |  |
| `lang` | `string` | BCP 47 language for product names and messages (es, en, en-US...). Default: es. |

Preguntas que la usan:

- "¿Qué tiendas cubres y desde cuándo?"
- "¿Tienes datos de Lider?"

```json
{
  "category": "health"
}
```

```text
7 retailers, 5 products, history since 2026-06-26. Planned: PE: Perú, CO: Colombia, MX: México.
Retailers: Jumbo (cl-jumbo), Santa Isabel (cl-santaisabel), Unimarc (cl-unimarc), Cruz Verde (cl-cruzverde), Farmacias Ahumada (cl-ahumada), Farmacias del Dr. Simi (cl-drsimi), Farmacias Knop (cl-knop).
Categories: Salud y farmacia (health), Analgésicos (health.analgesics), Vitaminas (health.vitamins).
Fuente: Pricto · 23-10-2026 08:00 CLST
Costo: 0 créditos. Saldo: 14.989.
```

## `request_data`

Send the provider a request to add a retailer, country, category or delivery format that is not covered. Free; the provider's team replies by email to the account owner.

| Costo | Solo lectura |
|---|---|
| 0 | No |

| Argumento | Tipo | Descripción |
|---|---|---|
| `kind` (requerido) | `string` |  Valores: `retailer`, `country`, `category`, `frequency`, `delivery`, `other`. |
| `description` (requerido) | `string` | What is needed and why, in the user's words. |
| `retailer_url` | `string` |  |
| `country` | `string` |  |

Preguntas que la usan:

- "Pide que agreguen una farmacia que no está."

```json
{
  "kind": "retailer",
  "description": "Agregar una cadena regional de farmacias del sur de Chile"
}
```

```text
Request dreq_0001 received. The team replies by email to the account owner.
Costo: 0 créditos. Saldo: 14.989.
```

## Prompt para tu agente

Las herramientas ya traen instrucciones para el modelo. Si armas tu propio agente, esto funciona bien como parte del prompt de sistema:

```text
Usa las herramientas de Pricto para responder preguntas de precios de tiendas de Chile.
- Parte por search_products para encontrar el producto; después get_prices, compare_prices o get_price_history.
- Di siempre la tienda y la fecha de cada precio, y cita la línea "Fuente: ..." tal cual.
- "price" es lo que paga cualquiera. El precio con tarjeta y las promociones tienen condiciones: dilo.
- Si una búsqueda no encuentra nada, llama a get_coverage antes de decir que no existe.
- Si los datos son de ejemplo (aviso synthetic_data), díselo a la persona.
- Cuida el gasto: usa max_credits en preguntas grandes y avisa el costo que informa cada respuesta.
```

## Instrucciones del servidor

Lo que el servidor le dice al modelo al conectarse:

```text
Retail prices from online stores, Chile first (supermarkets and pharmacies in this version).
Typical flow: search_products to find the product_id, then get_prices (one product at every retailer),
compare_prices (a basket) or get_price_history (trend). Call get_coverage when a search finds nothing,
to tell the user whether the data does not exist.
Rules when answering: say which retailer and the observed_at date of each price; "price" is what anyone
pays, "card_price" needs that retailer's card and promotions need a minimum quantity, so never present
them as the plain price; amounts are in the local currency (CLP has no decimals) unless currency is set.
When citing data, use the attribution line returned with each result. Pass lang="en" to get English product names. Prices are public online prices, not in-store.
Each paid tool reports its cost; pass max_credits to cap spending. Call request_data only after the user
agrees to send the request.
```
