# Consultar convenios con cuotas de la Tesorería

> Lee los convenios activos y las propuestas aceptadas con la Tesorería General de la República YA sincronizados de esta conexión: la pantalla «Cuotas convenios vigentes» del portal.



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

|                     |                                                                    |
| ------------------- | ------------------------------------------------------------------ |
| **Tool ID**         | `tgr.convenios_cuotas.consultar`                                   |
| **Nombre MCP**      | `tgr__convenios_cuotas__consultar`                                 |
| **Conector**        | `tgr`                                                              |
| **Plano**           | `action`                                                           |
| **Lee el alcance**  | `convenios` (debe estar habilitado en la conexión)                 |
| **Scope (permiso)** | `tgr:read`                                                         |
| **Auth**            | `none`                                                             |
| **Versión**         | `1`                                                                |
| **Sensible**        | sí                                                                 |
| **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, campo `connectionId` en el `execute` de MCP y en las opciones del SDK. 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`](../conexiones/estado-consultar).

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

Devuelve un convenio por fila, con su número de cuotas; cada cuota (vencimiento, monto y si está pagada) está en 'tgr.convenios\_detalle.consultar'. Lectura pura: NO contacta a la Tesorería ni dispara una sincronización. Si la empresa no tiene convenios la lista viene vacía con 'pantallaLeidaEn' fechado; si nunca se sincronizó, viene vacía con 'pantallaLeidaEn' en null. Para traer datos nuevos usa 'tgr.conexion.sincronizar'. Pagina con 'cursor'.

## Entrada [#entrada]

| Campo              | Tipo         | Requerido          | Descripción                                                                                                                                                           |
| ------------------ | ------------ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `numeroResolucion` | string       | no                 | Filtra por un número de resolución, escrito tal cual lo muestra la Tesorería. Omítelo para ver todas las filas.                                                       |
| `cursor`           | string       | no                 | Puntero opaco a la página siguiente. Reenvía tal cual el 'cursor' que devolvió la llamada anterior; nunca lo construyas a mano. Omítelo para pedir la primera página. |
| `limit`            | entero 1-500 | no · default `100` | Cuántas filas trae la página, entre 1 y 500. Por omisión, 100.                                                                                                        |

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

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "numeroResolucion": {
        "description": "Filtra por un número de resolución, escrito tal cual lo muestra la Tesorería. Omítelo para ver todas las filas.",
        "type": "string",
        "minLength": 1,
        "maxLength": 32
      },
      "cursor": {
        "description": "Puntero opaco a la página siguiente. Reenvía tal cual el 'cursor' que devolvió la llamada anterior; nunca lo construyas a mano. Omítelo para pedir la primera página.",
        "type": "string"
      },
      "limit": {
        "default": 100,
        "description": "Cuántas filas trae la página, entre 1 y 500. Por omisión, 100.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      }
    }
  }
  ```
</details>

## Ejemplo [#ejemplo]

```bash title="curl"
curl -X POST https://connect.emisso.ai/api/v1/tools/tgr.convenios_cuotas.consultar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input":{}}'
```

```ts title="SDK TypeScript"
const data = await connect.tools.tgr.convenios_cuotas.consultar({}, { connectionId: "conn_9tKfR2mQx4Vb" });
```

```json title="MCP · meta-tool execute"
{
  "tool": "tgr.convenios_cuotas.consultar",
  "params": {},
  "connectionId": "conn_9tKfR2mQx4Vb"
}
```

**Salida esperada (200):**

```json
{
  "data": {
    "convenios": [
      {
        "numeroResolucion": "4455667",
        "fechaResolucion": "2026-03-05",
        "tipoConvenio": "CONVENIO DE PAGO",
        "numeroCuotas": 12,
        "celdas": {
          "no resolucion": "4455667",
          "no cuotas": "12"
        },
        "observadoEn": "2026-10-02T14:02:11.000Z"
      }
    ],
    "pantallaLeidaEn": "2026-10-02T14:02:11.000Z",
    "cursor": null
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "tgr.convenios_cuotas.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}
```

## Salida [#salida]

| Campo                          | Tipo            | Requerido | Descripción                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                          |
| ------------------------------ | --------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `convenios`                    | lista de objeto | sí        | Los convenios activos y las propuestas aceptadas de la pantalla «Cuotas convenios vigentes».                                                                                 |                                                                                                                                                                                                                                                                                                          |
| `convenios[].numeroResolucion` | string          | sí        | El número de la resolución con que la Tesorería otorgó el convenio. Identifica al convenio en las tres pantallas: úsalo para cruzarlas. Es texto: no lo conviertas a número. |                                                                                                                                                                                                                                                                                                          |
| `convenios[].fechaResolucion`  | string          | null      | sí                                                                                                                                                                           | La fecha de la resolución en formato AAAA-MM-DD, o null si no se pudo parsear. Es un día calendario sin zona horaria: compáralo como texto o con Date.UTC, porque new Date('2026-09-07') es medianoche UTC y en Chile se muestra como el 6. Es el campo que conviene usar para ordenar y filtrar.        |
| `convenios[].tipoConvenio`     | string          | null      | sí                                                                                                                                                                           | El tipo de convenio con el texto de la Tesorería. null cuando la celda vino vacía.                                                                                                                                                                                                                       |
| `convenios[].numeroCuotas`     | entero          | null      | sí                                                                                                                                                                           | En cuántas cuotas se pactó el convenio. null cuando la celda no traía un entero; el texto queda en 'celdas'.                                                                                                                                                                                             |
| `convenios[].celdas`           | objeto          | sí        | Las celdas de la fila tal como las mostró la Tesorería, por encabezado de columna normalizado. Úsalas cuando un campo derivado venga en null: ahí está el texto original.    |                                                                                                                                                                                                                                                                                                          |
| `convenios[].observadoEn`      | string          | sí        | Cuándo se vio esta fila en la Tesorería por última vez (ISO 8601). Las filas que dejan de aparecer en la pantalla salen de esta consulta en la sincronización siguiente.     |                                                                                                                                                                                                                                                                                                          |
| `pantallaLeidaEn`              | string          | null      | sí                                                                                                                                                                           | Cuándo se leyó esta pantalla de la Tesorería por última vez (ISO 8601). Es lo que vuelve interpretable una lista vacía: con fecha, la Tesorería mostró la pantalla sin filas; en null, la pantalla todavía no se ha leído (sincroniza con 'tgr.conexion.sincronizar' antes de concluir que no hay nada). |
| `cursor`                       | string          | null      | sí                                                                                                                                                                           | Puntero a la página siguiente. Si viene distinto de null hay más filas: vuelve a llamar reenviándolo tal cual en 'cursor'. Un null significa que no queda nada por traer.                                                                                                                                |

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

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "convenios": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "numeroResolucion": {
              "type": "string",
              "description": "El número de la resolución con que la Tesorería otorgó el convenio. Identifica al convenio en las tres pantallas: úsalo para cruzarlas. Es texto: no lo conviertas a número."
            },
            "fechaResolucion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "x-emisso-formato": "AAAA-MM-DD",
              "description": "La fecha de la resolución en formato AAAA-MM-DD, o null si no se pudo parsear. Es un día calendario sin zona horaria: compáralo como texto o con Date.UTC, porque new Date('2026-09-07') es medianoche UTC y en Chile se muestra como el 6. Es el campo que conviene usar para ordenar y filtrar."
            },
            "tipoConvenio": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "El tipo de convenio con el texto de la Tesorería. null cuando la celda vino vacía."
            },
            "numeroCuotas": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ],
              "description": "En cuántas cuotas se pactó el convenio. null cuando la celda no traía un entero; el texto queda en 'celdas'."
            },
            "celdas": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {
                "type": "string"
              },
              "description": "Las celdas de la fila tal como las mostró la Tesorería, por encabezado de columna normalizado. Úsalas cuando un campo derivado venga en null: ahí está el texto original."
            },
            "observadoEn": {
              "type": "string",
              "description": "Cuándo se vio esta fila en la Tesorería por última vez (ISO 8601). Las filas que dejan de aparecer en la pantalla salen de esta consulta en la sincronización siguiente."
            }
          },
          "required": [
            "numeroResolucion",
            "fechaResolucion",
            "tipoConvenio",
            "numeroCuotas",
            "celdas",
            "observadoEn"
          ],
          "additionalProperties": false
        },
        "description": "Los convenios activos y las propuestas aceptadas de la pantalla «Cuotas convenios vigentes»."
      },
      "pantallaLeidaEn": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Cuándo se leyó esta pantalla de la Tesorería por última vez (ISO 8601). Es lo que vuelve interpretable una lista vacía: con fecha, la Tesorería mostró la pantalla sin filas; en null, la pantalla todavía no se ha leído (sincroniza con 'tgr.conexion.sincronizar' antes de concluir que no hay nada)."
      },
      "cursor": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Puntero a la página siguiente. Si viene distinto de null hay más filas: vuelve a llamar reenviándolo tal cual en 'cursor'. Un null significa que no queda nada por traer."
      }
    },
    "required": [
      "convenios",
      "pantallaLeidaEn",
      "cursor"
    ],
    "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.             |
| `alcance_not_enabled` | 403  | no           | Habilita el alcance en /connections o quítalo del input de la sincronización. |

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](../errores).

## Próximos pasos [#próximos-pasos]

* [`tgr.conexion.sincronizar`](./conexion-sincronizar): la tool que escribe los datos que esta lectura devuelve.
* [Sincronizar y consultar](/docs/conceptos/sincronizar-consultar): por qué leer datos reales son dos pasos.
