Listar los rangos de folios autorizados (CAF)
Lista los rangos de folios que el SII autorizó (los CAF) y que esta empresa tiene cargados en Notta, por tipo de documento y ambiente: desde qué folio hasta cuál, cuál es el próximo por usar, cuántos quedan, si están por agotarse y hasta cuándo son válidos.
| Tool ID | notta.folios.listar |
| Nombre MCP | notta__folios__listar |
| Conector | notta |
| Plano | action |
| Scope (permiso) | notta:read |
| Auth | connection_credentials |
| Versión | 1 |
| Sensible | sí |
| Deprecado | no |
| Comportamiento | readOnly=true, destructive=false, idempotent=true, openWorld=true |
Requiere conexión. Indica cuál en cada llamada: header
X-Connect-Connectionen REST y campoconnectionIden elexecutede MCP. 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
Un mismo tipo de documento aparece en VARIAS filas cuando tiene varios rangos cargados, así que cuántos folios le quedan a un tipo es la suma del remaining de sus filas y jamás una sola de ellas. Es la respuesta a por qué una emisión falla por falta de folios.
Entrada
Sin parámetros: envía {}.
JSON Schema de entrada
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {}
}Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
data | lista de objeto | sí | CAF de la organización EN EL AMBIENTE de tu credencial, una fila por rango de folios. Una empresa puede tener varios rangos vivos del mismo tipo. |
data[].id | string `^([0-9a-fA-F]8-[0-9a-fA-F]4-[1-8][0-9a-fA-F]3-[89abAB][0-9a-fA-F]3-[0-9a-fA-F]12 | 00000000-0000-0000-0000-000000000000 | ffffffff-ffff-ffff-ffff-ffffffffffff)$` |
data[].rut_emisor | string | sí | RUT de la empresa que emitió, en formato CUERPO-DV sin puntos (76123456-0). |
data[].tipo_dte | entero | sí | Código SII del tipo de documento para el que sirven estos folios. Un CAF vale para UN tipo: los folios de una factura (33) no se pueden usar en una nota de crédito (61). |
data[].sii_env | "cert" · "prod" | sí | Ambiente al que pertenece este CAF, y al que está RECORTADA toda la lista. Certificación y producción son secuencias de folios independientes, así que una organización puede tener un CAF del mismo tipo en cada una y esta respuesta sólo trae los de uno. Lo decide la CREDENCIAL con la que llamas: una API key de certificación ve los folios de certificación aunque la empresa ya esté autorizada en producción. En el navegador lo decide el ambiente activo de la sesión. Para ver los del otro ambiente, usa una API key de ese ambiente. |
data[].folio_desde | string | sí | Primer folio del rango que autorizó el SII, inclusive. |
data[].folio_hasta | string | sí | Último folio del rango que autorizó el SII, inclusive. |
data[].next_folio | string | sí | Próximo folio que se va a asignar de este rango. Los anteriores ya se consumieron y el SII no permite reutilizarlos. |
data[].remaining | entero | sí | Folios sin asignar EN ESTE rango (folio_hasta - next_folio + 1). No es el total de la empresa: si hay varios rangos vivos del mismo tipo, súmalos. |
data[].low_folios | booleano | sí | true cuando a ESTE rango le quedan 10 folios o menos. Con varios rangos del mismo tipo, uno en true no significa que la empresa se esté quedando sin folios. |
data[].not_after | string | sí | Fecha hasta la que sirve este rango. Vencido, sus folios ya no se asignan aunque queden sin usar, y hay que pedirle al SII un CAF nuevo. |
data[].exhausted | booleano | sí | true cuando el rango quedó marcado como agotado y ya no se usa. |
data[].created_at | string | sí | Instante en que este CAF quedó registrado en Notta, no la fecha en que el SII lo otorgó. |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "UUID de este CAF en Notta."
},
"rut_emisor": {
"type": "string",
"description": "RUT de la empresa que emitió, en formato `CUERPO-DV` sin puntos (`76123456-0`)."
},
"tipo_dte": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Código SII del tipo de documento para el que sirven estos folios. Un CAF vale para UN tipo: los folios de una factura (33) no se pueden usar en una nota de crédito (61)."
},
"sii_env": {
"type": "string",
"enum": [
"cert",
"prod"
],
"description": "Ambiente al que pertenece este CAF, y al que está RECORTADA toda la lista. Certificación y producción son secuencias de folios independientes, así que una organización puede tener un CAF del mismo tipo en cada una y esta respuesta sólo trae los de uno. Lo decide la CREDENCIAL con la que llamas: una API key de certificación ve los folios de certificación aunque la empresa ya esté autorizada en producción. En el navegador lo decide el ambiente activo de la sesión. Para ver los del otro ambiente, usa una API key de ese ambiente."
},
"folio_desde": {
"type": "string",
"description": "Primer folio del rango que autorizó el SII, inclusive."
},
"folio_hasta": {
"type": "string",
"description": "Último folio del rango que autorizó el SII, inclusive."
},
"next_folio": {
"type": "string",
"description": "Próximo folio que se va a asignar de este rango. Los anteriores ya se consumieron y el SII no permite reutilizarlos."
},
"remaining": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Folios sin asignar EN ESTE rango (`folio_hasta - next_folio + 1`). No es el total de la empresa: si hay varios rangos vivos del mismo tipo, súmalos."
},
"low_folios": {
"type": "boolean",
"description": "`true` cuando a ESTE rango le quedan 10 folios o menos. Con varios rangos del mismo tipo, uno en `true` no significa que la empresa se esté quedando sin folios."
},
"not_after": {
"type": "string",
"description": "Fecha hasta la que sirve este rango. Vencido, sus folios ya no se asignan aunque queden sin usar, y hay que pedirle al SII un CAF nuevo."
},
"exhausted": {
"type": "boolean",
"description": "`true` cuando el rango quedó marcado como agotado y ya no se usa."
},
"created_at": {
"type": "string",
"description": "Instante en que este CAF quedó registrado en Notta, no la fecha en que el SII lo otorgó."
}
},
"required": [
"id",
"rut_emisor",
"tipo_dte",
"sii_env",
"folio_desde",
"folio_hasta",
"next_folio",
"remaining",
"low_folios",
"not_after",
"exhausted",
"created_at"
],
"additionalProperties": false,
"description": "UN rango de folios autorizado por el SII (un CAF) para un tipo de documento, no todos los de ese tipo: el mismo tipo puede tener varios rangos, cada uno en su propia fila."
},
"description": "CAF de la organización EN EL AMBIENTE de tu credencial, una fila por rango de folios. Una empresa puede tener varios rangos vivos del mismo tipo."
}
},
"required": [
"data"
],
"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. |
connection_not_found | 404 | no | Usa uno de los connectionId que lista el error, o revisa la conexión en /connections. No hace falta reactivar nada. |
connection_credential_required | 428 | no | Crea un enlace con conexiones.enlace.crear (modo reconectar si la conexión ya existe) y pide a la persona que entregue la credencial de nuevo. No reintentes con la credencial anterior. |
connection_busy | 409 | sí | Espera unos segundos y reintenta. Es una espera transitoria: no necesitas volver a conectar ni ingresar la credencial otra vez. |
upstream_error | 502 | sí | Reintenta más tarde. Si persiste, el problema está en el sistema externo, no en tu integración. |
timeout | 504 | sí | Reintenta. Para sincronizaciones largas usa la vía asíncrona y consulta el estado del trabajo. |
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.