# Consultar búsqueda de Convenio Marco

> Lee el último listado de una búsqueda.



{/* AUTO-GENERATED by @emisso/codegen. DO NOT EDIT. */}

|                     |                                                                    |
| ------------------- | ------------------------------------------------------------------ |
| **Tool ID**         | `mercadopublico.busqueda_convenio.consultar`                       |
| **Nombre MCP**      | `mercadopublico__busqueda_convenio__consultar`                     |
| **Conector**        | `mercadopublico`                                                   |
| **Plano**           | `action`                                                           |
| **Scope (permiso)** | `mercadopublico:read`                                              |
| **Auth**            | `none`                                                             |
| **Versión**         | `1`                                                                |
| **Sensible**        | no                                                                 |
| **Deprecado**       | no                                                                 |
| **Comportamiento**  | readOnly=true, destructive=false, idempotent=true, openWorld=false |

> **Requiere conexión.** Indica cuál en cada llamada: header `X-Connect-Connection` en REST y campo `connectionId` en el `execute` de MCP. No hay resolución implícita, ni siquiera con una sola conexión activa: la conexión es la empresa. El id sale de [`conexiones.estado.consultar`](/docs/referencia/conexiones/estado-consultar).

## Qué hace [#qué-hace]

Incluye antigüedad y cobertura; no abre el portal ni encola nada. completitudVerificada es siempre false: el portal no declara total ni páginas. no\_solicitada, pendiente o fallido no significan que no haya cotizaciones; sólo sinResultados=true es un listado vacío real.

## Entrada [#entrada]

| Campo               | Tipo                                                | Requerido                                                        | Descripción                                                                                                                                                                                       |
| ------------------- | --------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tienda`            | `"software3"`                                       | no · default `"software3"`                                       | Tienda de Convenio Marco. Hoy sólo 'software3' (Software e infraestructura como servicio), la única comprobada.                                                                                   |
| `tipoServicio`      | `"SERVICIO DE DESARROLLO Y MANTENCIÓN DE SOFTWARE"` | no · default `"SERVICIO DE DESARROLLO Y MANTENCIÓN DE SOFTWARE"` | Tipo de servicio tal como lo ofrece el formulario del portal. Hoy sólo 'SERVICIO DE DESARROLLO Y MANTENCIÓN DE SOFTWARE'.                                                                         |
| `estado`            | `"publicada"`                                       | no · default `"publicada"`                                       | Estado en el portal. Hoy sólo 'publicada' (recibe cotizaciones): los estados con historia (proveedor elegido, finalizada…) traen cientos de filas y el portal no alcanza a responderlos a tiempo. |
| `publicacionInicio` | string                                              | no                                                               | Opcional. Día exacto (AAAA-MM-DD, entre 2015-01-01 y mañana en Chile) en que comenzó la publicación. El portal compara igualdad: NO es «desde esa fecha».                                         |

<details>
  <summary>
    JSON Schema de entrada
  </summary>

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "tienda": {
        "default": "software3",
        "description": "Tienda de Convenio Marco. Hoy sólo 'software3' (Software e infraestructura como servicio), la única comprobada.",
        "type": "string",
        "enum": [
          "software3"
        ]
      },
      "tipoServicio": {
        "default": "SERVICIO DE DESARROLLO Y MANTENCIÓN DE SOFTWARE",
        "description": "Tipo de servicio tal como lo ofrece el formulario del portal. Hoy sólo 'SERVICIO DE DESARROLLO Y MANTENCIÓN DE SOFTWARE'.",
        "type": "string",
        "enum": [
          "SERVICIO DE DESARROLLO Y MANTENCIÓN DE SOFTWARE"
        ]
      },
      "estado": {
        "default": "publicada",
        "description": "Estado en el portal. Hoy sólo 'publicada' (recibe cotizaciones): los estados con historia (proveedor elegido, finalizada…) traen cientos de filas y el portal no alcanza a responderlos a tiempo.",
        "type": "string",
        "enum": [
          "publicada"
        ]
      },
      "publicacionInicio": {
        "description": "Opcional. Día exacto (AAAA-MM-DD, entre 2015-01-01 y mañana en Chile) en que comenzó la publicación. El portal compara igualdad: NO es «desde esa fecha».",
        "type": "string"
      }
    },
    "additionalProperties": false
  }
  ```
</details>

## Salida [#salida]

| Campo                                | Tipo                                                                                            | Requerido | Descripción                                                                                                                                                                                                                          |                                                                                                                      |
| ------------------------------------ | ----------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
| `claveBusqueda`                      | string                                                                                          | sí        | Identificador estable de la búsqueda: huella de sus filtros canónicos.                                                                                                                                                               |                                                                                                                      |
| `filtros`                            | objeto                                                                                          | sí        | Filtros canónicos de la búsqueda: dos solicitudes con los mismos filtros comparten resultado.                                                                                                                                        |                                                                                                                      |
| `filtros.tienda`                     | string                                                                                          | sí        | Tienda de Convenio Marco consultada.                                                                                                                                                                                                 |                                                                                                                      |
| `filtros.tipoServicio`               | string                                                                                          | sí        | Tipo de servicio pedido.                                                                                                                                                                                                             |                                                                                                                      |
| `filtros.estado`                     | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Estado vigente pedido, o null.                                                                                       |
| `filtros.publicacionInicio`          | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Día exacto de inicio de publicación pedido, o null.                                                                  |
| `estado`                             | `"no_solicitada"` · `"pendiente"` · `"procesando"` · `"disponible"` · `"parcial"` · `"fallido"` | sí        | Estado del trabajo de búsqueda en Connect, no de las cotizaciones. 'disponible': el listado se leyó entero. 'parcial': se leyó con filas ilegibles o sobre el tope conservado. 'fallido': la última lectura falló (ver errorCodigo). |                                                                                                                      |
| `solicitadoEn`                       | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Instante ISO 8601 de la última solicitud, o null si no existe.                                                       |
| `finalizadoEn`                       | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Instante ISO 8601 en que terminó la última lectura, si corresponde.                                                  |
| `errorCodigo`                        | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Código acotado del último fallo, sin URLs ni datos de sesión.                                                        |
| `consultarEnSegundos`                | entero                                                                                          | null      | sí                                                                                                                                                                                                                                   | Mientras la búsqueda está pendiente o en proceso, cuántos segundos esperar antes de consultar de nuevo; si no, null. |
| `observadoEn`                        | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Instante ISO 8601 en que se leyó el listado entregado; null si aún no hay lectura.                                   |
| `antiguedadSegundos`                 | entero                                                                                          | null      | sí                                                                                                                                                                                                                                   | Segundos transcurridos desde observadoEn.                                                                            |
| `resultadoAnterior`                  | booleano                                                                                        | sí        | true si el listado entregado es de una lectura anterior: hay una actualización en curso o la última falló.                                                                                                                           |                                                                                                                      |
| `sinResultados`                      | booleano                                                                                        | sí        | true sólo si el portal entregó un listado válido y vacío para estos filtros. Un fallo o una búsqueda pendiente nunca es «sin resultados».                                                                                            |                                                                                                                      |
| `cantidad`                           | entero                                                                                          | sí        | Filas entregadas en resultados.                                                                                                                                                                                                      |                                                                                                                      |
| `descartes`                          | objeto                                                                                          | sí        | Filas del listado que no se entregan en resultados, por motivo.                                                                                                                                                                      |                                                                                                                      |
| `descartes.filasIlegibles`           | entero                                                                                          | sí        | Filas visibles que no se pudieron leer o cuyo ID no calzó con su ficha.                                                                                                                                                              |                                                                                                                      |
| `descartes.duplicadas`               | entero                                                                                          | sí        | Filas repetidas con el mismo ID y contenido; se entrega una.                                                                                                                                                                         |                                                                                                                      |
| `descartes.filasNoConservadas`       | entero                                                                                          | sí        | Filas leídas por sobre el tope conservado.                                                                                                                                                                                           |                                                                                                                      |
| `cobertura`                          | objeto                                                                                          | sí        | Qué tan completo se sabe que es el listado entregado.                                                                                                                                                                                |                                                                                                                      |
| `cobertura.totalDeclarado`           | entero                                                                                          | null      | sí                                                                                                                                                                                                                                   | Total que declara el portal; hoy no lo declara (null).                                                               |
| `cobertura.completitudVerificada`    | booleano                                                                                        | sí        | Siempre false: el portal no declara total ni páginas, así que no se puede comprobar que no falten filas.                                                                                                                             |                                                                                                                      |
| `cobertura.nota`                     | string                                                                                          | sí        | Alcance de lo que el listado permite afirmar.                                                                                                                                                                                        |                                                                                                                      |
| `filtrosAplicadosPortal`             | objeto                                                                                          | null      | sí                                                                                                                                                                                                                                   | Filtros que el formulario devuelto por el portal muestra como aplicados (eco), por nombre de parámetro.              |
| `motivosIncompletitud`               | lista de string                                                                                 | sí        | Razones por las que el resultado requiere revisión.                                                                                                                                                                                  |                                                                                                                      |
| `resultados`                         | lista de objeto                                                                                 | sí        | Cotizaciones observadas en la última lectura. No incluye ficha, presupuesto ni documentos: pide cada ID con mercadopublico.cotizacion\_convenio.solicitar. Que un ID deje de aparecer no prueba cierre ni cancelación.               |                                                                                                                      |
| `resultados[].idCotizacion`          | string                                                                                          | sí        | ID de la solicitud de cotización. Úsalo en mercadopublico.cotizacion\_convenio.solicitar.                                                                                                                                            |                                                                                                                      |
| `resultados[].nombre`                | string                                                                                          | sí        | Nombre de la cotización como lo muestra el listado.                                                                                                                                                                                  |                                                                                                                      |
| `resultados[].tipoServicio`          | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Tipo de servicio de la fila.                                                                                         |
| `resultados[].organismo`             | string                                                                                          | sí        | Organismo comprador.                                                                                                                                                                                                                 |                                                                                                                      |
| `resultados[].inicioPublicacion`     | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Fecha AAAA-MM-DD.                                                                                                    |
| `resultados[].finPublicacion`        | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Fecha AAAA-MM-DD de cierre de la publicación.                                                                        |
| `resultados[].inicioEvaluacion`      | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Fecha AAAA-MM-DD.                                                                                                    |
| `resultados[].finEvaluacion`         | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Fecha AAAA-MM-DD.                                                                                                    |
| `resultados[].fechaSeleccion`        | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Fecha AAAA-MM-DD de elección del proveedor, si existe.                                                               |
| `resultados[].proveedorSeleccionado` | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Proveedor elegido, si el listado lo muestra.                                                                         |
| `resultados[].ordenCompra`           | string                                                                                          | null      | sí                                                                                                                                                                                                                                   | Orden de compra, si el listado la muestra. Su ausencia es un dato real del portal.                                   |
| `resultados[].ofertasVigentes`       | entero                                                                                          | null      | sí                                                                                                                                                                                                                                   | Ofertas vigentes informadas por el listado; null si no se lee.                                                       |
| `resultados[].estadoCodigo`          | string                                                                                          | sí        | Código del estado en el portal (p. ej. '1' para Publicada).                                                                                                                                                                          |                                                                                                                      |
| `resultados[].estadoPortal`          | string                                                                                          | sí        | Estado tal como lo muestra el portal.                                                                                                                                                                                                |                                                                                                                      |
| `resultados[].fichaUrl`              | string                                                                                          | sí        | Ficha pública de la cotización en el portal, validada contra host, tienda e ID.                                                                                                                                                      |                                                                                                                      |

<details>
  <summary>
    JSON Schema de salida
  </summary>

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "claveBusqueda": {
        "type": "string",
        "description": "Identificador estable de la búsqueda: huella de sus filtros canónicos."
      },
      "filtros": {
        "type": "object",
        "properties": {
          "tienda": {
            "type": "string",
            "description": "Tienda de Convenio Marco consultada."
          },
          "tipoServicio": {
            "type": "string",
            "description": "Tipo de servicio pedido."
          },
          "estado": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Estado vigente pedido, o null."
          },
          "publicacionInicio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Día exacto de inicio de publicación pedido, o null."
          }
        },
        "required": [
          "tienda",
          "tipoServicio",
          "estado",
          "publicacionInicio"
        ],
        "additionalProperties": false,
        "description": "Filtros canónicos de la búsqueda: dos solicitudes con los mismos filtros comparten resultado."
      },
      "estado": {
        "type": "string",
        "enum": [
          "no_solicitada",
          "pendiente",
          "procesando",
          "disponible",
          "parcial",
          "fallido"
        ],
        "description": "Estado del trabajo de búsqueda en Connect, no de las cotizaciones. 'disponible': el listado se leyó entero. 'parcial': se leyó con filas ilegibles o sobre el tope conservado. 'fallido': la última lectura falló (ver errorCodigo)."
      },
      "solicitadoEn": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Instante ISO 8601 de la última solicitud, o null si no existe."
      },
      "finalizadoEn": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Instante ISO 8601 en que terminó la última lectura, si corresponde."
      },
      "errorCodigo": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Código acotado del último fallo, sin URLs ni datos de sesión."
      },
      "consultarEnSegundos": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "null"
          }
        ],
        "description": "Mientras la búsqueda está pendiente o en proceso, cuántos segundos esperar antes de consultar de nuevo; si no, null."
      },
      "observadoEn": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Instante ISO 8601 en que se leyó el listado entregado; null si aún no hay lectura."
      },
      "antiguedadSegundos": {
        "anyOf": [
          {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "null"
          }
        ],
        "description": "Segundos transcurridos desde observadoEn."
      },
      "resultadoAnterior": {
        "type": "boolean",
        "description": "true si el listado entregado es de una lectura anterior: hay una actualización en curso o la última falló."
      },
      "sinResultados": {
        "type": "boolean",
        "description": "true sólo si el portal entregó un listado válido y vacío para estos filtros. Un fallo o una búsqueda pendiente nunca es «sin resultados»."
      },
      "cantidad": {
        "type": "integer",
        "minimum": 0,
        "maximum": 9007199254740991,
        "description": "Filas entregadas en resultados."
      },
      "descartes": {
        "type": "object",
        "properties": {
          "filasIlegibles": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Filas visibles que no se pudieron leer o cuyo ID no calzó con su ficha."
          },
          "duplicadas": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Filas repetidas con el mismo ID y contenido; se entrega una."
          },
          "filasNoConservadas": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Filas leídas por sobre el tope conservado."
          }
        },
        "required": [
          "filasIlegibles",
          "duplicadas",
          "filasNoConservadas"
        ],
        "additionalProperties": false,
        "description": "Filas del listado que no se entregan en resultados, por motivo."
      },
      "cobertura": {
        "type": "object",
        "properties": {
          "totalDeclarado": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Total que declara el portal; hoy no lo declara (null)."
          },
          "completitudVerificada": {
            "type": "boolean",
            "const": false,
            "description": "Siempre false: el portal no declara total ni páginas, así que no se puede comprobar que no falten filas."
          },
          "nota": {
            "type": "string",
            "description": "Alcance de lo que el listado permite afirmar."
          }
        },
        "required": [
          "totalDeclarado",
          "completitudVerificada",
          "nota"
        ],
        "additionalProperties": false,
        "description": "Qué tan completo se sabe que es el listado entregado."
      },
      "filtrosAplicadosPortal": {
        "anyOf": [
          {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "string"
            }
          },
          {
            "type": "null"
          }
        ],
        "description": "Filtros que el formulario devuelto por el portal muestra como aplicados (eco), por nombre de parámetro."
      },
      "motivosIncompletitud": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Razones por las que el resultado requiere revisión."
      },
      "resultados": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "idCotizacion": {
              "type": "string",
              "description": "ID de la solicitud de cotización. Úsalo en mercadopublico.cotizacion_convenio.solicitar."
            },
            "nombre": {
              "type": "string",
              "description": "Nombre de la cotización como lo muestra el listado."
            },
            "tipoServicio": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Tipo de servicio de la fila."
            },
            "organismo": {
              "type": "string",
              "description": "Organismo comprador."
            },
            "inicioPublicacion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha AAAA-MM-DD."
            },
            "finPublicacion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha AAAA-MM-DD de cierre de la publicación."
            },
            "inicioEvaluacion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha AAAA-MM-DD."
            },
            "finEvaluacion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha AAAA-MM-DD."
            },
            "fechaSeleccion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha AAAA-MM-DD de elección del proveedor, si existe."
            },
            "proveedorSeleccionado": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Proveedor elegido, si el listado lo muestra."
            },
            "ordenCompra": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Orden de compra, si el listado la muestra. Su ausencia es un dato real del portal."
            },
            "ofertasVigentes": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ],
              "description": "Ofertas vigentes informadas por el listado; null si no se lee."
            },
            "estadoCodigo": {
              "type": "string",
              "description": "Código del estado en el portal (p. ej. '1' para Publicada)."
            },
            "estadoPortal": {
              "type": "string",
              "description": "Estado tal como lo muestra el portal."
            },
            "fichaUrl": {
              "type": "string",
              "description": "Ficha pública de la cotización en el portal, validada contra host, tienda e ID."
            }
          },
          "required": [
            "idCotizacion",
            "nombre",
            "tipoServicio",
            "organismo",
            "inicioPublicacion",
            "finPublicacion",
            "inicioEvaluacion",
            "finEvaluacion",
            "fechaSeleccion",
            "proveedorSeleccionado",
            "ordenCompra",
            "ofertasVigentes",
            "estadoCodigo",
            "estadoPortal",
            "fichaUrl"
          ],
          "additionalProperties": false
        },
        "description": "Cotizaciones observadas en la última lectura. No incluye ficha, presupuesto ni documentos: pide cada ID con mercadopublico.cotizacion_convenio.solicitar. Que un ID deje de aparecer no prueba cierre ni cancelación."
      }
    },
    "required": [
      "claveBusqueda",
      "filtros",
      "estado",
      "solicitadoEn",
      "finalizadoEn",
      "errorCodigo",
      "consultarEnSegundos",
      "observadoEn",
      "antiguedadSegundos",
      "resultadoAnterior",
      "sinResultados",
      "cantidad",
      "descartes",
      "cobertura",
      "filtrosAplicadosPortal",
      "motivosIncompletitud",
      "resultados"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Errores de esta tool [#errores-de-esta-tool]

| Código                 | HTTP | Reintentable | Qué hacer                                                                                                           |
| ---------------------- | ---- | ------------ | ------------------------------------------------------------------------------------------------------------------- |
| `connection_disabled`  | 403  | no           | Reactívala en /connections o usa otra conexión del mismo sistema.                                                   |
| `connection_not_found` | 404  | no           | Usa uno de los connectionId que lista el error, o revisa la conexión en /connections. No hace falta reactivar nada. |

Toda llamada puede devolver además los códigos transversales (`validation_error`, `unauthorized`, `scope_not_granted`, `rate_limited`, entre otros): el detalle vive en el [catálogo de errores](/docs/referencia/errores).
