Connect

Consultar movimientos BCI 360

Consulta los movimientos almacenados de BCI 360.

Tool IDbci_360.movimientos.consultar
Nombre MCPbci_360__movimientos__consultar
Conectorbci_360
Planoaction
Lee el alcancemovimientos (debe estar habilitado en la conexión)
Scope (permiso)bci_360: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

No abre una sesión bancaria. Una lista vacía no confirma ausencia de movimientos: revisa completo y la última sincronización.

Entrada

CampoTipoRequeridoDescripción
periodostring ^\d{4}-\d{2}$noFiltra por el mes (AAAA-MM) archivado en la columna 'periodo' de cada fila, que significa dos cosas según la cuenta, porque BCI las sirve distinto: en una cuenta en pesos es el mes con que se pidió el sync, no una propiedad del movimiento; en una cuenta en moneda extranjera es el mes del propio movimiento, porque esa cartola no ofrece ventana de fechas. Filtrar por el mes en que se hizo el sync no encuentra las filas en dólares, archivadas bajo el mes de su propia fecha. Sin este filtro, la respuesta cruza todos los períodos guardados y 'completo' llega en null.
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": {
    "periodo": {
      "description": "Filtra por el mes (AAAA-MM) archivado en la columna 'periodo' de cada fila, que significa dos cosas según la cuenta, porque BCI las sirve distinto: en una cuenta en pesos es el mes con que se pidió el sync, no una propiedad del movimiento; en una cuenta en moneda extranjera es el mes del propio movimiento, porque esa cartola no ofrece ventana de fechas. Filtrar por el mes en que se hizo el sync no encuentra las filas en dólares, archivadas bajo el mes de su propia fecha. Sin este filtro, la respuesta cruza todos los períodos guardados y 'completo' llega en null.",
      "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/bci_360.movimientos.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.bci_360.movimientos.consultar({ periodo: "2026-07" }, { connectionId: "conn_9tKfR2mQx4Vb" });
MCP · meta-tool execute
{
  "tool": "bci_360.movimientos.consultar",
  "params": {
    "periodo": "2026-07"
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}

Salida esperada (200):

{
  "data": {
    "movimientos": [
      {
        "numeroCuenta": "78012345",
        "currency": "CLP",
        "serie": null,
        "periodo": "2026-07",
        "fechaMovimiento": "2026-07-28T00:00:00.000Z",
        "fechaContable": "2026-07-28T00:00:00.000Z",
        "descripcion": "Pago a proveedor",
        "monto": 890750,
        "type": "credit",
        "display": "-890.750",
        "saldoContable": 4370480,
        "category": "Transferencias",
        "mnemonico": "TRF",
        "counterparty": {
          "name": "Proveedora del Maule SpA",
          "rut": "77123456-9",
          "bank": "Banco de Chile",
          "account": null
        },
        "ultimaLecturaEn": "2026-08-01T07:12:45.310Z"
      },
      {
        "numeroCuenta": "78012345",
        "currency": "CLP",
        "serie": null,
        "periodo": "2026-07",
        "fechaMovimiento": "2026-07-15T00:00:00.000Z",
        "fechaContable": "2026-07-15T00:00:00.000Z",
        "descripcion": "Abono cliente",
        "monto": 1450000,
        "type": "debit",
        "display": "1.450.000",
        "saldoContable": 5261230,
        "category": "Depositos",
        "mnemonico": "DEP",
        "counterparty": {
          "name": "Distribuidora Andina Ltda",
          "rut": "76543210-3",
          "bank": null,
          "account": null
        },
        "ultimaLecturaEn": "2026-08-01T07:12:45.310Z"
      }
    ],
    "cursor": null,
    "completo": true
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "bci_360.movimientos.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}

El abono del cliente entra como 'debit' y el pago al proveedor como 'credit': es la convención del libro del banco, al revés de la cartola, y 'display' ya trae el signo aplicado. 'completo' en true porque la llamada filtró por período y el último sync de ese mes trajo todo.

Salida

CampoTipoRequeridoDescripción
movimientoslista de objetoMovimientos almacenados por cuenta e ID bancario.
movimientos[].numeroCuentastringEl número de la cuenta a la que pertenece esta fila, tal como lo entrega el portal de BCI. Es el mismo valor en saldos y movimientos, y el que espera el filtro 'numeroCuenta'.
movimientos[].currencystringLa moneda de la cuenta a la que pertenece este movimiento, en código de tres letras ('CLP', 'USD'). Sale de la cuenta, no del movimiento. NUNCA sumes montos de monedas distintas: una misma conexión puede tener cuentas en pesos y en dólares, y sus filas conviven en esta lista.
movimientos[].seriestringnull
movimientos[].periodostringMes AAAA-MM de la fecha de transacción del movimiento.
movimientos[].fechaMovimientostringnull
movimientos[].fechaContablestringnull
movimientos[].descripcionstringnull
movimientos[].montonúmeronull
movimientos[].type"credit" · "debit"null
movimientos[].displaystringnull
movimientos[].saldoContablenúmeronull
movimientos[].categorystringnull
movimientos[].mnemonicostringnull
movimientos[].counterpartyobjetoLa contraparte del movimiento, extraída del detalle que adjunta el banco. Los cuatro campos vienen en 'null' cuando el movimiento no trae detalle, que es lo normal fuera de las transferencias. Son datos personales de terceros: trátalos como tales.
movimientos[].counterparty.namestringnull
movimientos[].counterparty.rutstringnull
movimientos[].counterparty.bankstringnull
movimientos[].counterparty.accountstringnull
movimientos[].ultimaLecturaEnstringInstante de la última lectura. Una corrección actualiza el mismo ID bancario y cuenta, sin crear otra fila.
cursorstringnull
completobooleanonull
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "movimientos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "numeroCuenta": {
            "type": "string",
            "description": "El número de la cuenta a la que pertenece esta fila, tal como lo entrega el portal de BCI. Es el mismo valor en saldos y movimientos, y el que espera el filtro 'numeroCuenta'."
          },
          "currency": {
            "type": "string",
            "description": "La moneda de la cuenta a la que pertenece este movimiento, en código de tres letras ('CLP', 'USD'). Sale de la cuenta, no del movimiento. NUNCA sumes montos de monedas distintas: una misma conexión puede tener cuentas en pesos y en dólares, y sus filas conviven en esta lista."
          },
          "serie": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID opaco del movimiento entregado por BCI 360. Se conserva como texto y se delimita por cuenta para evitar duplicados."
          },
          "periodo": {
            "type": "string",
            "description": "Mes AAAA-MM de la fecha de transacción del movimiento."
          },
          "fechaMovimiento": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La fecha del movimiento (ISO 8601), tal como la entrega el banco. 'null' cuando no la trajo."
          },
          "fechaContable": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La fecha contable del movimiento (ISO 8601), que puede diferir de 'fechaMovimiento'. 'null' cuando el banco no la trajo."
          },
          "descripcion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La glosa del movimiento, tal como la escribe el banco. 'null' cuando llega vacía."
          },
          "monto": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "La magnitud del movimiento SIN signo. El sentido lo da 'type' y el signo visible, 'display'. 'null' significa que el banco no trajo la celda, nunca 0."
          },
          "type": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "credit",
                  "debit"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Eje crédito/débito del LIBRO DEL BANCO, no el de la cartola: 'debit' es plata que ENTRA a la cuenta (un abono) y 'credit' es plata que SALE (un cargo). Es al revés de la lectura intuitiva y está así a propósito. El campo 'monto' es la magnitud SIN signo; el signo lo lleva 'display' ('credit' → negativo). 'null' significa que el banco no informó el tipo: no asumas ninguno de los dos."
          },
          "display": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "El monto ya formateado a la chilena y CON signo, derivado de 'type' ('credit', plata que sale, se muestra negativo). Es una comodidad de presentación: se calcula en la lectura y no se persiste. Para operar con el número usa 'monto' (magnitud sin signo) junto con 'type'."
          },
          "saldoContable": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "El saldo de la cuenta después de este movimiento. Es un balance: no lleva 'type' y conserva su propio signo, así que un sobregiro es negativo."
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La categoría con que el propio BCI clasifica el movimiento (por ejemplo 'Transferencias'). Es una etiqueta del banco, no un vocabulario de Connect: puede cambiar sin aviso. 'null' cuando el banco no la trae."
          },
          "mnemonico": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "El código corto de transacción del propio BCI (por ejemplo 'TRF'). Es una etiqueta del banco sin catálogo publicado: sirve para agrupar movimientos del mismo tipo, no para deducir qué fue la operación. 'null' cuando el banco no lo trae."
          },
          "counterparty": {
            "type": "object",
            "properties": {
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El nombre o razón social de la contraparte. 'null' cuando el detalle no lo trae."
              },
              "rut": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El RUT de la contraparte, tal cual. 'null' cuando el detalle no lo trae."
              },
              "bank": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El banco de la contraparte. 'null' cuando el detalle no lo trae."
              },
              "account": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El número de cuenta de la contraparte. 'null' cuando el detalle no lo trae."
              }
            },
            "required": [
              "name",
              "rut",
              "bank",
              "account"
            ],
            "additionalProperties": false,
            "description": "La contraparte del movimiento, extraída del detalle que adjunta el banco. Los cuatro campos vienen en 'null' cuando el movimiento no trae detalle, que es lo normal fuera de las transferencias. Son datos personales de terceros: trátalos como tales."
          },
          "ultimaLecturaEn": {
            "type": "string",
            "description": "Instante de la última lectura. Una corrección actualiza el mismo ID bancario y cuenta, sin crear otra fila."
          }
        },
        "required": [
          "numeroCuenta",
          "currency",
          "serie",
          "periodo",
          "fechaMovimiento",
          "fechaContable",
          "descripcion",
          "monto",
          "type",
          "display",
          "saldoContable",
          "category",
          "mnemonico",
          "counterparty",
          "ultimaLecturaEn"
        ],
        "additionalProperties": false
      },
      "description": "Movimientos almacenados por cuenta e ID bancario."
    },
    "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."
    },
    "completo": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "description": "True si la última sincronización del período completó todas las cuentas y páginas. False indica un fallo; null indica que no se conoce la completitud."
    }
  },
  "required": [
    "movimientos",
    "cursor",
    "completo"
  ],
  "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