Emisso Connect

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 IDbch_empresas.cartolas.consultar
Nombre MCPbch_empresas__cartolas__consultar
Conectorbch_empresas
Planoaction
Lee el alcancecartolas (debe estar habilitado en la conexión)
Scope (permiso)bch_empresas:read
Authnone
Versión1
Sensible
Deprecadono
ComportamientoreadOnly=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.

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

CampoTipoRequeridoDescripción
fechaEmisionDaystring ^\d{4}-\d{2}-\d{2}$noFiltra por el día en que el banco emitió el extracto, en formato AAAA-MM-DD.
periodostring ^\d{4}-\d{2}$noFiltra 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.
numeroCuentastringnoFiltra por una sola cuenta, escrita igual que el 'numeroCuenta' de las filas. Sin él vienen todas las cuentas de la conexión.
cursorstringnoPara 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.
limitentero 1-500no · default 100Cuá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
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"}}'
SDK TypeScript
const data = await connect.tools.bch_empresas.cartolas.consultar({ periodo: "2026-07" }, { connectionId: "conn_9tKfR2mQx4Vb" });
MCP · meta-tool execute
{
  "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

CampoTipoRequeridoDescripción
cartolaslista de objetoLas 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[].numeroCuentastringLa 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[].tipoProductostringEl 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[].currencystringLa 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[].fechaEmisionDaystringEl 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[].periodostringEl mes (AAAA-MM) con el que se buscó esta cartola, que no es la fecha del extracto: esa es 'fechaEmisionDay'.
cartolas[].numeroCartolastringnull
cartolas[].saldoInicialnúmeronull
cartolas[].saldoFinalnúmeronull
cartolas[].ultimaLecturaEnstringInstante (ISO 8601) en que esta cartola se leyó del banco por última vez.
cursorstringnull
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ódigoHTTPReintentableQué hacer
connection_disabled403noReactívala en /connections o usa otra conexión del mismo sistema.
alcance_not_enabled403noHabilita 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

On this page