Consultar declaraciones F29 del SII
Lee las declaraciones mensuales (Formulario 29) ya sincronizadas para esta conexión, con sus códigos.
| Tool ID | sii.f29.consultar |
| Nombre MCP | sii__f29__consultar |
| Conector | sii |
| Plano | action |
| Lee el alcance | f29 (debe estar habilitado en la conexión) |
| Scope (permiso) | sii: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 SII. Por defecto trae sólo las vigentes; con 'incluirNoVigentes' trae también las rectificadas y anuladas. Filtra por un 'periodo' o por un rango 'desde'/'hasta'. Los códigos vienen por número sin ceros a la izquierda y un código ausente venía en blanco en el formulario (vacío no es cero). El F29 se revisa solo después de cada vencimiento; para forzar una revisión usa 'sii.conexion.sincronizar' con alcances ['f29']. Pagina con 'cursor'.
Entrada
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
periodo | string ^\d{4}-\d{2}$ | no | Un período concreto, AAAA-MM. |
desde | string ^\d{4}-\d{2}$ | no | Primer período del rango, inclusive. |
hasta | string ^\d{4}-\d{2}$ | no | Último período del rango, inclusive. |
incluirNoVigentes | booleano | no · default false | 'true' para traer también las declaraciones rectificadas y anuladas. |
cursor | string | no | Paginación: el valor que devolvió la respuesta anterior, tal cual. |
limit | entero 1-120 | no · default 24 | Filas por página. |
JSON Schema de entrada
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"periodo": {
"description": "Un período concreto, AAAA-MM.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"desde": {
"description": "Primer período del rango, inclusive.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"hasta": {
"description": "Último período del rango, inclusive.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"incluirNoVigentes": {
"default": false,
"description": "'true' para traer también las declaraciones rectificadas y anuladas.",
"type": "boolean"
},
"cursor": {
"description": "Paginación: el valor que devolvió la respuesta anterior, tal cual.",
"type": "string"
},
"limit": {
"default": 24,
"description": "Filas por página.",
"type": "integer",
"minimum": 1,
"maximum": 120
}
}
}Ejemplo
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.f29.consultar/execute \
-H "Authorization: Bearer connect_sk_…" \
-H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
-H "Content-Type: application/json" \
-d '{"input":{"desde":"2026-06","hasta":"2026-07"}}'const data = await connect.tools.sii.f29.consultar({ desde: "2026-06", hasta: "2026-07" }, { connectionId: "conn_9tKfR2mQx4Vb" });{
"tool": "sii.f29.consultar",
"params": {
"desde": "2026-06",
"hasta": "2026-07"
},
"connectionId": "conn_9tKfR2mQx4Vb"
}Salida esperada (200):
{
"data": {
"declaraciones": [
{
"folio": "1234567890",
"periodo": "2026-07",
"estado": "vigente",
"tipoDeclaracion": "primitiva",
"fechaPresentacion": "2026-08-11",
"corrigeAFolios": [],
"medioPago": "PEL",
"banco": "ESTADO",
"totalAPagar": 310250,
"codigos": {
"62": {
"glosa": "PPM NETO DETERMINADO",
"valor": 4750,
"tipo": "monto"
},
"89": {
"glosa": "IMP. DETERM. IVA",
"valor": 305500,
"tipo": "monto"
},
"91": {
"glosa": "TOTAL A PAGAR DENTRO DEL PLAZO LEGAL",
"valor": 310250,
"tipo": "monto"
},
"115": {
"glosa": "TASA PPM 1ra. CATEGORÍA",
"valor": 0.125,
"tipo": "tasa"
},
"502": {
"glosa": "DÉBITOS FACTURAS EMITIDAS",
"valor": 520000,
"tipo": "monto"
},
"503": {
"glosa": "CANTIDAD FACTURAS EMITIDAS",
"valor": 12,
"tipo": "monto"
},
"537": {
"glosa": "TOTAL CRÉDITOS",
"valor": 214500,
"tipo": "monto"
},
"538": {
"glosa": "TOTAL DÉBITOS",
"valor": 520000,
"tipo": "monto"
}
},
"ultimaLecturaEn": "2026-08-13T11:02:10.000Z"
}
],
"cursor": null,
"revision": {
"revisadoEn": "2026-08-13T11:02:10.000Z",
"completo": true,
"pendientes": 0
}
},
"meta": {
"request_id": "req_…",
"tool_id": "sii.f29.consultar",
"plane": "action",
"latency_ms": 24,
"audit_status": "recorded"
}
}Recortado a los códigos principales. 89 = 538 − 537 en esta declaración simple, pero no es una regla general: otras líneas del formulario (por ejemplo el 755) también entran al cálculo. El 115 es una tasa: 0.125 es 0,125 %, no 125.
Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
declaraciones | lista de objeto | sí | Las declaraciones que calzan con el filtro, de la más reciente a la más antigua. Salen de lo ya sincronizado, nunca de una consulta en vivo al SII. |
declaraciones[].folio | string | sí | El folio de la declaración. Es su identidad: una rectificatoria tiene otro folio. |
declaraciones[].periodo | string ^\d{4}-\d{2}$ | sí | El período tributario declarado, AAAA-MM. No es el mes en que se presentó. |
declaraciones[].estado | string | sí | El estado que muestra el SII, en minúsculas: 'vigente' es la que rige; una rectificada o 'anulada' queda como historia. |
declaraciones[].tipoDeclaracion | "primitiva" · "rectificatoria" | null | sí |
declaraciones[].fechaPresentacion | string | null | sí |
declaraciones[].corrigeAFolios | lista de string | sí | Los folios que esta declaración corrige. Vacío en una primitiva. |
declaraciones[].medioPago | string | null | sí |
declaraciones[].banco | string | null | sí |
declaraciones[].totalAPagar | número | null | sí |
declaraciones[].codigos | objeto | null | sí |
declaraciones[].ultimaLecturaEn | string | sí | Cuándo se observó esta fila por última vez, en ISO 8601 UTC. |
cursor | string | null | sí |
revision | objeto | null | sí |
revision.revisadoEn | string | sí | Cuándo terminó la última revisión del F29 de esta conexión, en ISO 8601 UTC. |
revision.completo | booleano | null | sí |
revision.pendientes | entero | null | sí |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"declaraciones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"folio": {
"type": "string",
"description": "El folio de la declaración. Es su identidad: una rectificatoria tiene otro folio."
},
"periodo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "El período tributario declarado, AAAA-MM. No es el mes en que se presentó."
},
"estado": {
"type": "string",
"description": "El estado que muestra el SII, en minúsculas: 'vigente' es la que rige; una rectificada o 'anulada' queda como historia."
},
"tipoDeclaracion": {
"anyOf": [
{
"type": "string",
"enum": [
"primitiva",
"rectificatoria"
]
},
{
"type": "null"
}
],
"description": "Si es la primera declaración del período o una que corrige a otra."
},
"fechaPresentacion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cuándo se presentó, AAAA-MM-DD."
},
"corrigeAFolios": {
"type": "array",
"items": {
"type": "string"
},
"description": "Los folios que esta declaración corrige. Vacío en una primitiva."
},
"medioPago": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "El medio de pago tal como lo escribe el SII (por ejemplo 'PEL', pago electrónico)."
},
"banco": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "El banco por el que se pagó, cuando lo hubo."
},
"totalAPagar": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Código 91, total a pagar dentro del plazo legal, en pesos. 'null' si la declaración no trae ese código o sus códigos aún no se leyeron."
},
"codigos": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"glosa": {
"type": "string",
"description": "El nombre de la línea tal como lo escribe el formulario del SII. Puede cambiar de texto sin que cambie el código."
},
"valor": {
"type": "number",
"description": "El valor numérico. En pesos para los montos y cantidades; como número decimal para las tasas (0.125 es 0,125 %)."
},
"tipo": {
"type": "string",
"enum": [
"monto",
"tasa"
],
"description": "'tasa' cuando el formulario escribe el valor con decimales (el código 115); 'monto' en todo lo demás, incluidas las cantidades de documentos."
}
},
"required": [
"glosa",
"valor",
"tipo"
],
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Los códigos del formulario con valor, por número de código sin ceros a la izquierda ('89', no '089'). Un código que no aparece venía en blanco en el formulario: vacío no es cero. 'null' cuando la declaración no es la vigente o su formulario todavía no se leyó."
},
"ultimaLecturaEn": {
"type": "string",
"description": "Cuándo se observó esta fila por última vez, en ISO 8601 UTC."
}
},
"required": [
"folio",
"periodo",
"estado",
"tipoDeclaracion",
"fechaPresentacion",
"corrigeAFolios",
"medioPago",
"banco",
"totalAPagar",
"codigos",
"ultimaLecturaEn"
],
"additionalProperties": false
},
"description": "Las declaraciones que calzan con el filtro, de la más reciente a la más antigua. Salen de lo ya sincronizado, 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."
},
"revision": {
"anyOf": [
{
"type": "object",
"properties": {
"revisadoEn": {
"type": "string",
"description": "Cuándo terminó la última revisión del F29 de esta conexión, en ISO 8601 UTC."
},
"completo": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "'false' si quedaron declaraciones sin leer; se retoman solas en la revisión siguiente. 'null' si no se puede saber."
},
"pendientes": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Cuántas declaraciones quedaron sin leer en esa revisión. 'null' si no se puede saber."
}
},
"required": [
"revisadoEn",
"completo",
"pendientes"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "La última revisión del F29. 'null' significa que el F29 de esta conexión no se ha revisado nunca: una lista vacía con 'revision' distinto de null sí quiere decir que no hay declaraciones en ese rango."
}
},
"required": [
"declaraciones",
"cursor",
"revision"
],
"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
sii.conexion.sincronizar: la tool que escribe los datos que esta lectura devuelve.- Sincronizar y consultar: por qué leer datos reales son dos pasos.
Previsualizar DTE en el SII
Valida y previsualiza un documento en el Facturador Gratuito del SII sin guardarlo ni emitirlo.
Consultar guías de despacho del SII
Lee las guías de despacho electrónicas (DTE 52) ya sincronizadas para esta conexión, filtradas por período y/o perspectiva (emitidas = las que emitió esta empresa; recibidas = las que le emitieron).