Consultar cartolas emitidas de Banco de Chile
Lee las cartolas (extractos mensuales) ya sincronizadas de esta conexión, la más reciente primero, filtrables por período de búsqueda (AAAA-MM) y por cuenta.
| Tool ID | bch_empresas.cartolas.consultar |
| Nombre MCP | bch_empresas__cartolas__consultar |
| Conector | bch_empresas |
| Plano | action |
| Lee el alcance | cartolas (debe estar habilitado en la conexión) |
| Scope (permiso) | bch_empresas: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-Connectionen REST, campoconnectionIden elexecutede 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 deconexiones.estado.consultar.
Qué hace
Lectura pura: NO contacta al banco ni dispara una sincronización. Para traer datos nuevos, usa 'bch_empresas.conexion.sincronizar' primero. Una cartola es un OBJETO propio, no una vista de 'movimientos': sus saldos de apertura y cierre pueden no cuadrar exactamente con la suma de movimientos del mismo mes porque el extracto encadena por fecha contable y el feed vivo por fecha del movimiento. 'numeroCartola' es TEXTO siempre (convertirlo a número pierde ceros a la izquierda). Pagina con 'cursor': cuando la respuesta trae 'cursor' distinto de null hay más filas; reenvía ese valor tal cual, nunca lo construyas a mano.
Entrada
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
fechaEmisionDay | string ^\d{4}-\d{2}-\d{2}$ | no | Filtra por el día en que el banco emitió el extracto, en formato AAAA-MM-DD. |
periodo | string ^\d{4}-\d{2}$ | no | Filtra por el mes (AAAA-MM) con el que se BUSCÓ la cartola, que no es su fecha de emisión: para esa usa 'fechaEmisionDay'. Sin él, la respuesta cruza todos los períodos guardados. |
numeroCuenta | string | no | Filtra por una sola cuenta, escrita igual que el 'numeroCuenta' de las filas. Sin él vienen todas las cuentas de la conexión. |
cursor | string | no | Para pedir la página siguiente: el valor que la respuesta anterior devolvió en 'cursor', tal cual. Nunca lo construyas ni lo edites a mano. Omítelo para empezar por la primera página. |
limit | entero 1-500 | no · default 100 | Cuántas filas trae una página, entre 1 y 500. Por defecto, 100. |
JSON Schema de entrada
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"fechaEmisionDay": {
"description": "Filtra por el día en que el banco emitió el extracto, en formato AAAA-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"periodo": {
"description": "Filtra por el mes (AAAA-MM) con el que se BUSCÓ la cartola, que no es su fecha de emisión: para esa usa 'fechaEmisionDay'. Sin él, la respuesta cruza todos los períodos guardados.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"numeroCuenta": {
"description": "Filtra por una sola cuenta, escrita igual que el 'numeroCuenta' de las filas. Sin él vienen todas las cuentas de la conexión.",
"type": "string"
},
"cursor": {
"description": "Para pedir la página siguiente: el valor que la respuesta anterior devolvió en 'cursor', tal cual. Nunca lo construyas ni lo edites a mano. Omítelo para empezar por la primera página.",
"type": "string"
},
"limit": {
"default": 100,
"description": "Cuántas filas trae una página, entre 1 y 500. Por defecto, 100.",
"type": "integer",
"minimum": 1,
"maximum": 500
}
}
}Ejemplo
curl -X POST https://connect.emisso.ai/api/v1/tools/bch_empresas.cartolas.consultar/execute \
-H "Authorization: Bearer connect_sk_…" \
-H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
-H "Content-Type: application/json" \
-d '{"input":{"periodo":"2026-07"}}'const data = await connect.tools.bch_empresas.cartolas.consultar({ periodo: "2026-07" }, { connectionId: "conn_9tKfR2mQx4Vb" });{
"tool": "bch_empresas.cartolas.consultar",
"params": {
"periodo": "2026-07"
},
"connectionId": "conn_9tKfR2mQx4Vb"
}Salida esperada (200):
{
"data": {
"cartolas": [
{
"numeroCuenta": "CTD12345678",
"tipoProducto": "CTD",
"currency": "CLP",
"fechaEmisionDay": "2026-07-31",
"periodo": "2026-07",
"numeroCartola": "00042",
"saldoInicial": 8462150,
"saldoFinal": 4370480,
"ultimaLecturaEn": "2026-08-10T14:02:11.000Z"
}
],
"cursor": null
},
"meta": {
"request_id": "req_…",
"tool_id": "bch_empresas.cartolas.consultar",
"plane": "action",
"latency_ms": 24,
"audit_status": "recorded"
}
}'numeroCartola' preserva los ceros a la izquierda: nunca se convierte a número.
Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
cartolas | lista de objeto | sí | Las cartolas guardadas, la más reciente primero. Una lista vacía significa que ese período todavía no se sincronizó, no que el banco no tenga extractos de esa cuenta. |
cartolas[].numeroCuenta | string | sí | La cuenta a la que pertenece esta fila, con el código de producto adelante y sin el relleno de ceros del banco (por ejemplo 'CTD12345678'). Es el mismo valor en saldos, movimientos y cartolas, y el que espera el filtro 'numeroCuenta'. |
cartolas[].tipoProducto | string | sí | El tipo de producto de la cuenta según el índice de cartolas del banco (por ejemplo 'CTD'). Cuando el índice no lo trae, cae al código de producto de la cuenta. |
cartolas[].currency | string | sí | La moneda de la cuenta, en código de tres letras (por ejemplo 'CLP'). Sale de la cuenta y nunca se asume: hoy el conector solo persiste cuentas en pesos chilenos y saltea las demás, avisándolo en el 'detalle' de la sincronización. |
cartolas[].fechaEmisionDay | string | sí | El día (AAAA-MM-DD) en que el banco emitió este extracto. Junto con la cuenta es lo que identifica a la cartola, y es lo que filtra el 'fechaEmisionDay' de la entrada. |
cartolas[].periodo | string | sí | El mes (AAAA-MM) con el que se buscó esta cartola, que no es la fecha del extracto: esa es 'fechaEmisionDay'. |
cartolas[].numeroCartola | string | null | sí |
cartolas[].saldoInicial | número | null | sí |
cartolas[].saldoFinal | número | null | sí |
cartolas[].ultimaLecturaEn | string | sí | Instante (ISO 8601) en que esta cartola se leyó del banco por última vez. |
cursor | string | null | sí |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"cartolas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"numeroCuenta": {
"type": "string",
"description": "La cuenta a la que pertenece esta fila, con el código de producto adelante y sin el relleno de ceros del banco (por ejemplo 'CTD12345678'). Es el mismo valor en saldos, movimientos y cartolas, y el que espera el filtro 'numeroCuenta'."
},
"tipoProducto": {
"type": "string",
"description": "El tipo de producto de la cuenta según el índice de cartolas del banco (por ejemplo 'CTD'). Cuando el índice no lo trae, cae al código de producto de la cuenta."
},
"currency": {
"type": "string",
"description": "La moneda de la cuenta, en código de tres letras (por ejemplo 'CLP'). Sale de la cuenta y nunca se asume: hoy el conector solo persiste cuentas en pesos chilenos y saltea las demás, avisándolo en el 'detalle' de la sincronización."
},
"fechaEmisionDay": {
"type": "string",
"description": "El día (AAAA-MM-DD) en que el banco emitió este extracto. Junto con la cuenta es lo que identifica a la cartola, y es lo que filtra el 'fechaEmisionDay' de la entrada."
},
"periodo": {
"type": "string",
"description": "El mes (AAAA-MM) con el que se buscó esta cartola, que no es la fecha del extracto: esa es 'fechaEmisionDay'."
},
"numeroCartola": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "El número correlativo del extracto (tag 28C del MT940), SIEMPRE como texto: convertirlo a número le come los ceros a la izquierda. 'null' cuando el extracto descargado no trae el tag."
},
"saldoInicial": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "El saldo de apertura del extracto (tag 60 del MT940), con su propio signo: en MT940 la marca 'D' es un sobregiro y sale negativa. No cuadra necesariamente con la suma de 'movimientos' del mismo mes, porque el extracto encadena por fecha contable y el feed vivo por fecha del movimiento. 'null' cuando el extracto no lo declara."
},
"saldoFinal": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "El saldo de cierre del extracto (tag 62 del MT940), con el mismo criterio de signo y la misma advertencia de cuadratura que 'saldoInicial'."
},
"ultimaLecturaEn": {
"type": "string",
"description": "Instante (ISO 8601) en que esta cartola se leyó del banco por última vez."
}
},
"required": [
"numeroCuenta",
"tipoProducto",
"currency",
"fechaEmisionDay",
"periodo",
"numeroCartola",
"saldoInicial",
"saldoFinal",
"ultimaLecturaEn"
],
"additionalProperties": false
},
"description": "Las cartolas guardadas, la más reciente primero. Una lista vacía significa que ese período todavía no se sincronizó, no que el banco no tenga extractos de esa cuenta."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "El cursor de la página siguiente. Distinto de null significa que quedan más filas: reenvíalo tal cual en 'cursor'. 'null' significa que esta es la última página."
}
},
"required": [
"cartolas",
"cursor"
],
"additionalProperties": false
}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.
Próximos pasos
bch_empresas.conexion.sincronizar: la tool que escribe los datos que esta lectura devuelve.- Sincronizar y consultar: por qué leer datos reales son dos pasos.