Descargar el PDF de una boleta (beta)
Descarga desde E-Boleta del SII el PDF oficial de una boleta 39 o 41 de la empresa de la conexión, por tipo, folio y fecha de emisión, y lo devuelve en base64 con su SHA-256 y con su enlace oficial de E-Boleta (pdfUrl).
| Tool ID | sii.boleta.descargar |
| Nombre MCP | sii__boleta__descargar |
| Conector | sii |
| Plano | action |
| Scope (permiso) | sii:boletas:write |
| Auth | connection_credentials |
| Versión | 2 |
| 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, 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
No emite ni guarda nada. Requiere las boletas encendidas en la conexión (acceso de representante) y el permiso sii:boletas:write.
Entrada
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
tipoDte | "39" · "41" | sí | Tipo de boleta: 39 afecta o 41 exenta. |
folio | string ^[1-9][0-9]*$ | sí | Folio de la boleta, en texto: es un identificador, no una cantidad. |
fecha | string | sí | Día calendario de emisión, AAAA-MM-DD en hora de Chile, sin zona. Connect busca la boleta ese día, el anterior y el siguiente. |
JSON Schema de entrada
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"tipoDte": {
"type": "string",
"enum": [
"39",
"41"
],
"description": "Tipo de boleta: 39 afecta o 41 exenta."
},
"folio": {
"type": "string",
"maxLength": 18,
"pattern": "^[1-9][0-9]*$",
"description": "Folio de la boleta, en texto: es un identificador, no una cantidad."
},
"fecha": {
"type": "string",
"x-emisso-formato": "AAAA-MM-DD",
"description": "Día calendario de emisión, AAAA-MM-DD en hora de Chile, sin zona. Connect busca la boleta ese día, el anterior y el siguiente."
}
},
"required": [
"tipoDte",
"folio",
"fecha"
],
"additionalProperties": false
}Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
tipoDte | "39" · "41" | sí | Tipo de boleta: 39 afecta o 41 exenta. |
folio | string ^[1-9][0-9]*$ | sí | Folio de la boleta, en texto: es un identificador, no una cantidad. |
nombreArchivo | string | sí | Nombre sugerido para guardar el archivo, como «boleta39_folio55.pdf». |
contentType | string | sí | Tipo de contenido del archivo. |
byteLength | entero | sí | Tamaño del PDF en bytes. |
sha256 | string ^[0-9a-f]{64}$ | sí | SHA-256 del PDF en hexadecimal, para verificar los bytes decodificados. |
contenidoBase64 | string | sí | El PDF oficial de E-Boleta en base64 estándar (RFC 4648), con padding. |
pdfUrl | string | sí | Enlace oficial de E-Boleta al mismo PDF, el que abre «Ver PDF» en eboleta.sii.cl. Basta para mostrarlo o imprimirlo sin decodificar el base64. |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"tipoDte": {
"type": "string",
"enum": [
"39",
"41"
],
"description": "Tipo de boleta: 39 afecta o 41 exenta."
},
"folio": {
"type": "string",
"maxLength": 18,
"pattern": "^[1-9][0-9]*$",
"description": "Folio de la boleta, en texto: es un identificador, no una cantidad."
},
"nombreArchivo": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Nombre sugerido para guardar el archivo, como «boleta39_folio55.pdf»."
},
"contentType": {
"type": "string",
"const": "application/pdf",
"description": "Tipo de contenido del archivo."
},
"byteLength": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 3145728,
"description": "Tamaño del PDF en bytes."
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "SHA-256 del PDF en hexadecimal, para verificar los bytes decodificados."
},
"contenidoBase64": {
"type": "string",
"minLength": 1,
"maxLength": 4194304,
"description": "El PDF oficial de E-Boleta en base64 estándar (RFC 4648), con padding."
},
"pdfUrl": {
"type": "string",
"maxLength": 4096,
"format": "uri",
"description": "Enlace oficial de E-Boleta al mismo PDF, el que abre «Ver PDF» en eboleta.sii.cl. Basta para mostrarlo o imprimirlo sin decodificar el base64."
}
},
"required": [
"tipoDte",
"folio",
"nombreArchivo",
"contentType",
"byteLength",
"sha256",
"contenidoBase64",
"pdfUrl"
],
"additionalProperties": false,
"description": "La representación impresa oficial de la boleta, bajada de E-Boleta al pedirla. Connect no la guarda."
}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_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.