# Consultar RCV del SII

> Lee el Registro de Compra-Venta ya sincronizado para esta conexión, filtrable por período, perspectiva, tipo de documento (tipoDte) y estado del registro.



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

|                     |                                                                    |
| ------------------- | ------------------------------------------------------------------ |
| **Tool ID**         | `sii.rcv.consultar`                                                |
| **Nombre MCP**      | `sii__rcv__consultar`                                              |
| **Conector**        | `sii`                                                              |
| **Plano**           | `action`                                                           |
| **Lee el alcance**  | `rcv` (debe estar habilitado en la conexión)                       |
| **Scope (permiso)** | `sii:read`                                                         |
| **Auth**            | `none`                                                             |
| **Versión**         | `6`                                                                |
| **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]

Lectura pura: NO dispara una sincronización nueva ni contacta al SII. Si el período nunca se sincronizó, devuelve una lista vacía y 'sincronizacion: null'. Para traer datos nuevos, use 'sii.conexion.sincronizar' primero. Pagina con 'cursor': cuando la respuesta trae 'cursor' distinto de null, hay más filas. reenvía ese valor tal cual en 'cursor' para pedir la página siguiente; nunca lo construyas a mano.

## Entrada [#entrada]

| Campo         | Tipo                                                          | Requerido          | Descripción                                                                                                      |
| ------------- | ------------------------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------- |
| `periodo`     | string `^\d{4}-\d{2}$`                                        | no                 | Período tributario AAAA-MM. Sin él, la respuesta cruza períodos y 'sincronizacion' llega null.                   |
| `perspectiva` | `"compras"` · `"ventas"`                                      | no                 | compras = la empresa es el receptor; ventas = la empresa es el emisor.                                           |
| `tipoDte`     | entero                                                        | no                 | Tipo de DTE (33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito, …). |
| `estado`      | `"registro"` · `"pendiente"` · `"no_incluir"` · `"reclamado"` | no                 | Estado del documento en el RCV.                                                                                  |
| `cursor`      | string                                                        | no                 | Paginación: el valor que devolvió la respuesta anterior, tal cual.                                               |
| `limit`       | entero 1-500                                                  | no · default `100` | Filas por página.                                                                                                |

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

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "periodo": {
        "description": "Período tributario AAAA-MM. Sin él, la respuesta cruza períodos y 'sincronizacion' llega null.",
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}$"
      },
      "perspectiva": {
        "description": "compras = la empresa es el receptor; ventas = la empresa es el emisor.",
        "type": "string",
        "enum": [
          "compras",
          "ventas"
        ]
      },
      "tipoDte": {
        "description": "Tipo de DTE (33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito, …).",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "estado": {
        "description": "Estado del documento en el RCV.",
        "type": "string",
        "enum": [
          "registro",
          "pendiente",
          "no_incluir",
          "reclamado"
        ]
      },
      "cursor": {
        "description": "Paginación: el valor que devolvió la respuesta anterior, tal cual.",
        "type": "string"
      },
      "limit": {
        "default": 100,
        "description": "Filas por página.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      }
    }
  }
  ```
</details>

## Ejemplo [#ejemplo]

```bash title="curl"
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.rcv.consultar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input":{"periodo":"2026-07","perspectiva":"ventas"}}'
```

```ts title="SDK TypeScript"
const data = await connect.tools.sii.rcv.consultar({ periodo: "2026-07", perspectiva: "ventas" }, { connectionId: "conn_9tKfR2mQx4Vb" });
```

```json title="MCP · meta-tool execute"
{
  "tool": "sii.rcv.consultar",
  "params": {
    "periodo": "2026-07",
    "perspectiva": "ventas"
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}
```

**Salida esperada (200):**

```json
{
  "data": {
    "documentos": [
      {
        "tipoDte": 33,
        "folio": "4712",
        "rutEmisor": "77123456-9",
        "rutReceptor": "76543210-3",
        "razonSocial": "Constructora Los Robles Ltda",
        "fechaEmision": "14/07/2026",
        "montoNeto": 1250000,
        "montoIva": 237500,
        "montoTotal": 1487500,
        "estado": "registro",
        "periodo": "2026-07",
        "fechaEmisionDate": "2026-07-14",
        "montoExento": 0,
        "fechaRecepcion": "2026-07-14",
        "eventoReceptor": null,
        "eventoReceptorCod": null,
        "tipoDocRef": null,
        "folioDocRef": null,
        "fechaAcuse": null,
        "fechaReclamo": null,
        "tipoTransaccion": null,
        "perspectiva": "ventas"
      },
      {
        "tipoDte": 33,
        "folio": "4718",
        "rutEmisor": "77123456-9",
        "rutReceptor": "78900400-5",
        "razonSocial": "Ferretería El Volcán SpA",
        "fechaEmision": "27/07/2026",
        "montoNeto": 480000,
        "montoIva": 91200,
        "montoTotal": 571200,
        "estado": "registro",
        "periodo": "2026-07",
        "fechaEmisionDate": "2026-07-27",
        "montoExento": 0,
        "fechaRecepcion": "2026-07-28",
        "eventoReceptor": null,
        "eventoReceptorCod": null,
        "tipoDocRef": null,
        "folioDocRef": null,
        "fechaAcuse": null,
        "fechaReclamo": null,
        "tipoTransaccion": null,
        "perspectiva": "ventas"
      }
    ],
    "cursor": null,
    "sincronizacion": {
      "sincronizadoEn": "2026-08-06T03:15:42.000Z",
      "completo": true,
      "incompletos": 0,
      "fueraDeVentana": null,
      "perspectivasFallidas": []
    }
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "sii.rcv.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}
```

> Recortado a dos documentos; una respuesta real trae hasta 'limit' filas por página. En 'ventas' el emisor es la empresa de la conexión y 'razonSocial' nombra a la contraparte (el cliente).

## Salida [#salida]

| Campo                                               | Tipo                         | Requerido | Descripción                                                                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                                                                                                                                                                                                                                                        |
| --------------------------------------------------- | ---------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `documentos`                                        | lista de objeto              | sí        | Los documentos del RCV que calzan con el filtro, uno por fila. Sale de la caché ya sincronizada, nunca de una consulta en vivo al SII.                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].tipoDte`                              | entero                       | sí        | Código del tipo de DTE: 33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito. Es un NÚMERO, a diferencia de 'folio': es un código de un vocabulario cerrado, no un identificador.                                                                                                                                                                           |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].folio`                                | string                       | sí        | El folio del documento, en TEXTO decimal canónico (sin ceros a la izquierda). Junto con 'tipoDte' y 'rutEmisor' lo identifica de forma única. Es texto y no un número a propósito: un folio es un identificador con el que no se hace aritmética, y hay folios reales que no caben en un entero de 32 bits. Compáralo como cadena y no lo conviertas a número para ordenar ni para volver a mandarlo. |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].rutEmisor`                            | string                       | sí        | Quien EMITIÓ el documento: en 'ventas' es la empresa de esta conexión, en 'compras' es la contraparte.                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].rutReceptor`                          | string                       | sí        | Quien RECIBIÓ el documento: en 'compras' es la empresa de esta conexión, en 'ventas' es la contraparte.                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].razonSocial`                          | string                       | sí        | La razón social de la CONTRAPARTE, nunca la de la empresa de esta conexión, tal como la informó el SII.                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].fechaEmision`                         | string                       | sí        | La fecha de emisión tal cual la manda el SII, en formato DD/MM/AAAA. Para ordenar o comparar usa 'fechaEmisionDate'.                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].montoNeto`                            | entero                       | sí        | Monto neto en pesos chilenos, entero. Un 0 no distingue 'el documento no tiene neto' (uno sólo exento) de 'el SII no informó el campo': las dos formas llegan igual.                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].montoIva`                             | entero                       | sí        | IVA en pesos chilenos, entero. Un 0 es ambiguo por el mismo motivo que en 'montoNeto'.                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].montoTotal`                           | entero                       | sí        | Monto total del documento en pesos chilenos, entero.                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].estado`                               | string                       | sí        | La casilla del Registro de Compras donde el SII tiene el documento: 'registro', 'pendiente', 'no\_incluir' o 'reclamado'. Las ventas son siempre 'registro'.                                                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].periodo`                              | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | El período tributario con que se sincronizó el documento, en formato AAAA-MM. 'null' en filas viejas que no lo guardaron.                                                                                                                                                                                                                                                                              |
| `documentos[].fechaEmisionDate`                     | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | La misma fecha de emisión en formato AAAA-MM-DD, o 'null' si no se pudo parsear. Es la que conviene usar para ordenar.                                                                                                                                                                                                                                                                                 |
| `documentos[].montoExento`                          | entero                       | sí        | Monto exento de IVA en pesos chilenos, entero.                                                                                                                                                                                                                                                                                                                                                        |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `documentos[].fechaRecepcion`                       | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Cuándo el SII recibió el documento, en formato AAAA-MM-DD. 'null' si no vino.                                                                                                                                                                                                                                                                                                                          |
| `documentos[].eventoReceptor`                       | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | La leyenda del evento que registró el receptor (un acuse, un reclamo). 'null' cuando no hubo evento.                                                                                                                                                                                                                                                                                                   |
| `documentos[].eventoReceptorCod`                    | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | El código de ese mismo evento. Decide por el código, nunca por la leyenda. 'null' cuando no hubo evento.                                                                                                                                                                                                                                                                                               |
| `documentos[].tipoDocRef`                           | entero                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Tipo del documento que este corrige o referencia (una nota de crédito sobre una factura 33). 'null' cuando no referencia a ninguno. Es un NÚMERO, a diferencia de 'folioDocRef': código de vocabulario cerrado contra identificador.                                                                                                                                                                   |
| `documentos[].folioDocRef`                          | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Folio del documento referenciado, en TEXTO decimal canónico igual que 'folio', o 'null' cuando no hay referencia. Es el campo más expuesto del conector porque sale de lo que tipeó el emisor en el DTE, así que trátalo como cadena y no lo conviertas a número.                                                                                                                                      |
| `documentos[].fechaAcuse`                           | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Fecha del acuse de recibo, en formato AAAA-MM-DD. 'null' si no se acusó.                                                                                                                                                                                                                                                                                                                               |
| `documentos[].fechaReclamo`                         | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Fecha del reclamo, en formato AAAA-MM-DD. 'null' si no se reclamó.                                                                                                                                                                                                                                                                                                                                     |
| `documentos[].tipoTransaccion`                      | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Con qué tipo de transacción quedó clasificado el documento en el RCV, tal cual lo manda el SII. 'null' si no vino.                                                                                                                                                                                                                                                                                     |
| `documentos[].perspectiva`                          | `"compras"` · `"ventas"`     | sí        | compras = tú eres el receptor; ventas = tú eres el emisor                                                                                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `cursor`                                            | string                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | El cursor de la página siguiente, opaco. 'null' significa que no hay más filas; cualquier otro valor se reenvía tal cual en 'cursor' de la próxima llamada y nunca se construye a mano.                                                                                                                                                                                                                |
| `sincronizacion`                                    | objeto                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Completitud del último sync del período consultado. Es 'null' por DOS motivos distintos, y ninguno significa que las filas devueltas sean inválidas: (a) la consulta no filtró por 'periodo', así que no hay un sync único al que mirar (pide un 'periodo' concreto para obtener el bloque); o (b) ese período nunca se sincronizó. Un 'null' junto a una lista CON documentos es siempre el caso (a). |
| `sincronizacion.sincronizadoEn`                     | string                       | sí        | Cuándo terminó la última sincronización de este período, en ISO 8601 UTC. Es la frescura del dato que estás leyendo.                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `sincronizacion.completo`                           | booleano                     | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | 'true' = el período se sincronizó entero. 'false' = quedaron casillas sin traer, así que puede faltar información. 'null' = no se puede saber, porque no hay registro de ese intento.                                                                                                                                                                                                                  |
| `sincronizacion.incompletos`                        | entero                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Cuántas casillas quedaron sin traer en esa sincronización. 'null' cuando no se puede saber.                                                                                                                                                                                                                                                                                                            |
| `sincronizacion.fueraDeVentana`                     | entero                       | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                    | Sólo aplica a guías: cuántas direcciones cayeron fuera de la ventana de 6 meses que el SII conserva. Un 0 dice que se verificó y no aplicó; 'null', que no aplica o no se conoce.                                                                                                                                                                                                                      |
| `sincronizacion.perspectivasFallidas`               | lista de objeto              | sí        | Qué direcciones fallaron enteras en esa sincronización, con su código de error. Hoy sólo la puebla el alcance de boletas de honorarios; para los demás llega vacía.                                                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `sincronizacion.perspectivasFallidas[].perspectiva` | `"emitidas"` · `"recibidas"` | sí        | Qué lado falló: 'emitidas' son las que emitió esta empresa y 'recibidas' las que le emitieron.                                                                                                                                                                                                                                                                                                        |                                                                                                                                                                                                                                                                                                                                                                                                        |
| `sincronizacion.perspectivasFallidas[].code`        | string                       | sí        | El código del catálogo de errores que explica por qué falló ese lado. Decide por el código, nunca por el texto.                                                                                                                                                                                                                                                                                       |                                                                                                                                                                                                                                                                                                                                                                                                        |

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

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "documentos": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "tipoDte": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Código del tipo de DTE: 33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito. Es un NÚMERO, a diferencia de 'folio': es un código de un vocabulario cerrado, no un identificador."
            },
            "folio": {
              "type": "string",
              "description": "El folio del documento, en TEXTO decimal canónico (sin ceros a la izquierda). Junto con 'tipoDte' y 'rutEmisor' lo identifica de forma única. Es texto y no un número a propósito: un folio es un identificador con el que no se hace aritmética, y hay folios reales que no caben en un entero de 32 bits. Compáralo como cadena y no lo conviertas a número para ordenar ni para volver a mandarlo."
            },
            "rutEmisor": {
              "type": "string",
              "description": "Quien EMITIÓ el documento: en 'ventas' es la empresa de esta conexión, en 'compras' es la contraparte."
            },
            "rutReceptor": {
              "type": "string",
              "description": "Quien RECIBIÓ el documento: en 'compras' es la empresa de esta conexión, en 'ventas' es la contraparte."
            },
            "razonSocial": {
              "type": "string",
              "description": "La razón social de la CONTRAPARTE, nunca la de la empresa de esta conexión, tal como la informó el SII."
            },
            "fechaEmision": {
              "type": "string",
              "description": "La fecha de emisión tal cual la manda el SII, en formato DD/MM/AAAA. Para ordenar o comparar usa 'fechaEmisionDate'."
            },
            "montoNeto": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Monto neto en pesos chilenos, entero. Un 0 no distingue 'el documento no tiene neto' (uno sólo exento) de 'el SII no informó el campo': las dos formas llegan igual."
            },
            "montoIva": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "IVA en pesos chilenos, entero. Un 0 es ambiguo por el mismo motivo que en 'montoNeto'."
            },
            "montoTotal": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Monto total del documento en pesos chilenos, entero."
            },
            "estado": {
              "type": "string",
              "description": "La casilla del Registro de Compras donde el SII tiene el documento: 'registro', 'pendiente', 'no_incluir' o 'reclamado'. Las ventas son siempre 'registro'."
            },
            "periodo": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "El período tributario con que se sincronizó el documento, en formato AAAA-MM. 'null' en filas viejas que no lo guardaron."
            },
            "fechaEmisionDate": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "La misma fecha de emisión en formato AAAA-MM-DD, o 'null' si no se pudo parsear. Es la que conviene usar para ordenar."
            },
            "montoExento": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Monto exento de IVA en pesos chilenos, entero."
            },
            "fechaRecepcion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cuándo el SII recibió el documento, en formato AAAA-MM-DD. 'null' si no vino."
            },
            "eventoReceptor": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "La leyenda del evento que registró el receptor (un acuse, un reclamo). 'null' cuando no hubo evento."
            },
            "eventoReceptorCod": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "El código de ese mismo evento. Decide por el código, nunca por la leyenda. 'null' cuando no hubo evento."
            },
            "tipoDocRef": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ],
              "description": "Tipo del documento que este corrige o referencia (una nota de crédito sobre una factura 33). 'null' cuando no referencia a ninguno. Es un NÚMERO, a diferencia de 'folioDocRef': código de vocabulario cerrado contra identificador."
            },
            "folioDocRef": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Folio del documento referenciado, en TEXTO decimal canónico igual que 'folio', o 'null' cuando no hay referencia. Es el campo más expuesto del conector porque sale de lo que tipeó el emisor en el DTE, así que trátalo como cadena y no lo conviertas a número."
            },
            "fechaAcuse": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha del acuse de recibo, en formato AAAA-MM-DD. 'null' si no se acusó."
            },
            "fechaReclamo": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Fecha del reclamo, en formato AAAA-MM-DD. 'null' si no se reclamó."
            },
            "tipoTransaccion": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Con qué tipo de transacción quedó clasificado el documento en el RCV, tal cual lo manda el SII. 'null' si no vino."
            },
            "perspectiva": {
              "type": "string",
              "enum": [
                "compras",
                "ventas"
              ],
              "description": "compras = tú eres el receptor; ventas = tú eres el emisor"
            }
          },
          "required": [
            "tipoDte",
            "folio",
            "rutEmisor",
            "rutReceptor",
            "razonSocial",
            "fechaEmision",
            "montoNeto",
            "montoIva",
            "montoTotal",
            "estado",
            "periodo",
            "fechaEmisionDate",
            "montoExento",
            "fechaRecepcion",
            "eventoReceptor",
            "eventoReceptorCod",
            "tipoDocRef",
            "folioDocRef",
            "fechaAcuse",
            "fechaReclamo",
            "tipoTransaccion",
            "perspectiva"
          ],
          "additionalProperties": false
        },
        "description": "Los documentos del RCV que calzan con el filtro, uno por fila. Sale de la caché ya sincronizada, nunca de una consulta en vivo al SII."
      },
      "cursor": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "El cursor de la página siguiente, opaco. 'null' significa que no hay más filas; cualquier otro valor se reenvía tal cual en 'cursor' de la próxima llamada y nunca se construye a mano."
      },
      "sincronizacion": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "sincronizadoEn": {
                "type": "string",
                "description": "Cuándo terminó la última sincronización de este período, en ISO 8601 UTC. Es la frescura del dato que estás leyendo."
              },
              "completo": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "'true' = el período se sincronizó entero. 'false' = quedaron casillas sin traer, así que puede faltar información. 'null' = no se puede saber, porque no hay registro de ese intento."
              },
              "incompletos": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Cuántas casillas quedaron sin traer en esa sincronización. 'null' cuando no se puede saber."
              },
              "fueraDeVentana": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Sólo aplica a guías: cuántas direcciones cayeron fuera de la ventana de 6 meses que el SII conserva. Un 0 dice que se verificó y no aplicó; 'null', que no aplica o no se conoce."
              },
              "perspectivasFallidas": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "perspectiva": {
                      "type": "string",
                      "enum": [
                        "emitidas",
                        "recibidas"
                      ],
                      "description": "Qué lado falló: 'emitidas' son las que emitió esta empresa y 'recibidas' las que le emitieron."
                    },
                    "code": {
                      "type": "string",
                      "description": "El código del catálogo de errores que explica por qué falló ese lado. Decide por el código, nunca por el texto."
                    }
                  },
                  "required": [
                    "perspectiva",
                    "code"
                  ],
                  "additionalProperties": false
                },
                "description": "Qué direcciones fallaron enteras en esa sincronización, con su código de error. Hoy sólo la puebla el alcance de boletas de honorarios; para los demás llega vacía."
              }
            },
            "required": [
              "sincronizadoEn",
              "completo",
              "incompletos",
              "fueraDeVentana",
              "perspectivasFallidas"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ],
        "description": "Completitud del último sync del período consultado. Es 'null' por DOS motivos distintos, y ninguno significa que las filas devueltas sean inválidas: (a) la consulta no filtró por 'periodo', así que no hay un sync único al que mirar (pide un 'periodo' concreto para obtener el bloque); o (b) ese período nunca se sincronizó. Un 'null' junto a una lista CON documentos es siempre el caso (a)."
      }
    },
    "required": [
      "documentos",
      "cursor",
      "sincronizacion"
    ],
    "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]

* [`sii.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.
