---
title: "Obtener cotizaciones"
method: POST
path: "/tools/estimates_getEstimates"
tags: ["Sales Documents"]
---

# Obtener cotizaciones

`POST /tools/estimates_getEstimates`

## Request

- Base URL: `https://mcp.alegra.com`
- URL: `https://mcp.alegra.com/tools/estimates_getEstimates`
- Auth: HTTP bearer

Herramienta MCP: `estimates_getEstimates`.

Obtiene cotizaciones (estimates) paginadas, máximo 30 por página. Por defecto devuelve una versión ligera de cada cotización; con `detail: true` añade los ítems y sus impuestos — sigue siendo el payload del listado, no el que devuelve `estimates_getEstimateById` (omitió `numberTemplate.id` y el `status` de los impuestos, y recorta las categorías contables), así que usa `estimates_getEstimateById` cuando necesites cualquiera de esos.

Filtros: nombre del cliente (`client_name`), fecha de emisión exacta (`date`), número (`number`) y estados (`status`, combinados con OR). El número admite coincidencia parcial y NO es único: una empresa puede tener varias cotizaciones con el mismo número. Úsalo para localizar una cotización antes de llamar a `estimates_getEstimateById`; si vuelve más de una, pregúntale al usuario cuál en lugar de tomar la primera. `order_field` solo aplica sobre `id`, `number`, `status` y `name` — cualquier otro valor (incluidos `date`, `dueDate` y `total`) se ignora silenciosamente y se devuelve el orden por defecto. Ten en cuenta que `name` ordena por nombre del cliente, mientras que el filtro para eso se llama `client_name`.

Con `fields` puedes pedir campos adicionales, pero ojo: `pdf` y `comments` NO los expande el listado — los acepta y no devuelven nada —, así que lee esos campos con `estimates_getEstimateById`. Con `metadata: true` la respuesta se envuelve como `{ data: [...], metadata: { total } }` en lugar de un arreglo simple. Para conjuntos grandes (más de ~120 registros) o exportaciones de rangos completos de fechas, usa la herramienta exportable en su lugar.

Solo lectura.

## Request body

- object
  - `limit` integer: Máximo de cotizaciones por página. Entre 1 y 30 (límite estricto de la API); por defecto 30.
  - `start` integer: Desplazamiento basado en cero para la paginación. Usa `limit` * número de página para saltar páginas.
  - `order_direction` 'ASC' | 'DESC': Dirección del orden: "ASC" ascendente, "DESC" descendente.
  - `order_field` 'id' | 'number' | 'status' | 'name': Campo de orden. Solo estos cuatro los aplica el endpoint; cualquier otro — incluidos "date", "dueDate" y "total" — se ignora silenciosamente y se devuelve el orden por defecto. Nota: "name" ordena por nombre del cliente, mientras que el filtro para eso se llama `client_name`.
  - `client_name` string: Filtra las cotizaciones por nombre del cliente.
  - `date` string: Filtra por fecha de emisión exacta (YYYY-MM-DD).
  - `number` string: Filtra por el número visible o el número completo de la cotización (por ejemplo "0124", "00001-00000060"). La coincidencia es parcial y los números NO son únicos: una empresa puede tener varias cotizaciones con el mismo. Úsalo para resolver una cotización antes de llamar a `estimates_getEstimateById`; si vuelve más de una, pregunta al usuario.
  - `status` string[]: Filtra por uno o más estados de cotización. Los múltiples valores se combinan con OR. Válidos: "unbilled" (aún no facturada), "billed" (facturada total o parcialmente) y "void" (anulada) — cualquier otro valor la API lo ignora silenciosamente y devuelve todo el conjunto, por eso aquí se rechaza.
  - `metadata` boolean: Si es true, envuelve la respuesta como { data: [...], metadata: { total } } en lugar de un arreglo simple.
  - `fields` string[]: Campos adicionales a expandir en cada cotización. Ojo: `pdf` y `comments` NO los expande el listado — los acepta y no devuelve nada —, así que lee esos campos con `estimates_getEstimateById`.
  - `detail` boolean: Con false (por defecto) devuelve una versión ligera de cada cotización (IDs, fechas, estado, numeración, cliente y montos). Con true incluye los ítems y sus impuestos, y solo cuando el usuario pide ese detalle. Sigue siendo el payload del LISTADO, no el de documento individual: omite `numberTemplate.id` y el `status` de los impuestos, y recorta las categorías contables — usa `estimates_getEstimateById` cuando necesites esos.

## Response `200`

Lista de cotizaciones

## Other responses

- `401`: No autorizado

---

[API](https://skmtc.dev/alegra/apis/mcp-alegra.md) - [All operations](https://skmtc.dev/alegra/apis/mcp-alegra/llms.txt) - [OpenAPI document](https://skmtc.dev/alegra/apis/mcp-alegra/revisions/528447af020b?raw)
