Consultar planillas pagadas de Previred
Lee las planillas de cotizaciones ya sincronizadas de esta conexión, de la más reciente a la más antigua, filtrables por período (AAAA-MM) y por institución.
| Tool ID | previred.planillas.consultar |
| Nombre MCP | previred__planillas__consultar |
| Conector | previred |
| Plano | action |
| Lee el alcance | planillas (debe estar habilitado en la conexión) |
| Scope (permiso) | previred: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
Un pago de un período se abre en VARIAS planillas, una por cada institución previsional (AFP, Fonasa o Isapre, AFC, mutual, CCAF): por eso un mismo período trae varias filas y eso es lo normal, no una duplicación. Cada fila trae su 'folio', que es el identificador con que Previred la direcciona, y 'comprobanteUrl' cuando el PDF ya está descargado. Lectura pura: NO contacta a Previred ni dispara una sincronización. Si el período nunca se sincronizó devuelve una lista vacía, que NO significa que no haya datos en Previred. Para traer datos nuevos, usa 'previred.conexion.sincronizar' primero. Pagina con 'cursor': cuando la respuesta trae 'cursor' distinto de null hay más filas, reenvía ese valor tal cual; nunca lo construyas a mano.
Entrada
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
periodo | string ^\d{4}-\d{2}$ | no | Filtra por un mes, en formato AAAA-MM. Sin él, la consulta trae todas las filas guardadas de esta conexión. |
institucion | string | no | Filtra por institución previsional, con el nombre exacto que trae el campo 'institucion' de las filas. Sin él, trae todas. |
cursor | string | no | Continúa desde donde quedó la página anterior: reenvía tal cual el 'cursor' que vino en la respuesta. Es opaco, así que nunca lo construyas a mano. Sin él, la consulta empieza por el principio. |
limit | entero 1-500 | no · default 100 | Cuántas filas traer como máximo, entre 1 y 500. Si se omite, 100. |
JSON Schema de entrada
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"periodo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Filtra por un mes, en formato AAAA-MM. Sin él, la consulta trae todas las filas guardadas de esta conexión."
},
"institucion": {
"type": "string",
"description": "Filtra por institución previsional, con el nombre exacto que trae el campo 'institucion' de las filas. Sin él, trae todas."
},
"cursor": {
"description": "Continúa desde donde quedó la página anterior: reenvía tal cual el 'cursor' que vino en la respuesta. Es opaco, así que nunca lo construyas a mano. Sin él, la consulta empieza por el principio.",
"type": "string"
},
"limit": {
"default": 100,
"description": "Cuántas filas traer como máximo, entre 1 y 500. Si se omite, 100.",
"type": "integer",
"minimum": 1,
"maximum": 500
}
}
}Ejemplo
curl -X POST https://connect.emisso.ai/api/v1/tools/previred.planillas.consultar/execute \
-H "Authorization: Bearer connect_sk_…" \
-H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
-H "Content-Type: application/json" \
-d '{"input":{"periodo":"2026-06"}}'const data = await connect.tools.previred.planillas.consultar({ periodo: "2026-06" }, { connectionId: "conn_9tKfR2mQx4Vb" });{
"tool": "previred.planillas.consultar",
"params": {
"periodo": "2026-06"
},
"connectionId": "conn_9tKfR2mQx4Vb"
}Salida esperada (200):
{
"data": {
"planillas": [
{
"folio": "2055260600000004",
"periodo": "2026-06",
"institucion": "Instituto de Seguridad Laboral (ISL)",
"tipoInstitucion": "MUTUAL",
"idNomina": "75128352",
"montoPagado": 17585,
"fechaPago": "2026-07-13",
"afiliadosInformados": 1,
"comprobanteUrl": null
}
],
"cursor": null
},
"meta": {
"request_id": "req_…",
"tool_id": "previred.planillas.consultar",
"plane": "action",
"latency_ms": 24,
"audit_status": "recorded"
}
}'comprobanteUrl' viene en null cuando el PDF todavía no se ha descargado; cuando existe, es un enlace firmado de vida corta, no una ruta permanente.
Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
planillas | lista de objeto | sí | Las planillas guardadas, de la más reciente a la más antigua. Un pago de un período se abre en varias planillas, una por institución previsional: varias filas del mismo período es lo normal, no una duplicación. |
planillas[].folio | string | sí | El identificador que Previred le da a la planilla, y con el que el portal la direcciona. Son 16 dígitos y es opaco: no lo descompongas, porque los folios reales no siguen un patrón parejo. |
planillas[].periodo | string | sí | El mes de remuneraciones que paga esta planilla, en formato AAAA-MM. |
planillas[].institucion | string | sí | La institución previsional, con el nombre que le da Previred (la AFP, Fonasa o la isapre, el seguro de cesantía, la mutual, la caja de compensación). |
planillas[].tipoInstitucion | string | null | sí |
planillas[].idNomina | string | null | sí |
planillas[].montoPagado | número | null | sí |
planillas[].fechaPago | string | null | sí |
planillas[].afiliadosInformados | entero | null | sí |
planillas[].comprobanteUrl | string | null | sí |
cursor | string | null | sí |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"planillas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"folio": {
"type": "string",
"description": "El identificador que Previred le da a la planilla, y con el que el portal la direcciona. Son 16 dígitos y es opaco: no lo descompongas, porque los folios reales no siguen un patrón parejo."
},
"periodo": {
"type": "string",
"description": "El mes de remuneraciones que paga esta planilla, en formato AAAA-MM."
},
"institucion": {
"type": "string",
"description": "La institución previsional, con el nombre que le da Previred (la AFP, Fonasa o la isapre, el seguro de cesantía, la mutual, la caja de compensación)."
},
"tipoInstitucion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "La familia de la institución, que es el eje por el que Previred agrupa y filtra (por ejemplo 'AFP' o 'MUTUAL'). null cuando el portal no la informó."
},
"idNomina": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identificador de la nómina dentro del período. Una empresa puede tener varias en el mismo mes, así que agrupar solo por período las mezcla."
},
"montoPagado": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Lo pagado a esa institución, en pesos. null cuando el portal no trajo la celda, nunca 0: un 0 es un monto real y confundirlos mentiría sobre la plata."
},
"fechaPago": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cuándo se pagó la planilla, según el comprobante. null cuando el portal no lo informó."
},
"afiliadosInformados": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Cuántos trabajadores informa esta planilla. null cuando el portal no trajo el dato."
},
"comprobanteUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Enlace firmado de vida corta al comprobante de pago en PDF, o null si todavía no se ha descargado (la planilla vale igual y el próximo sync lo reintenta). Caduca a los pocos minutos y no sirve para compartir: el documento trae el RUT, el nombre y la renta de los trabajadores."
}
},
"required": [
"folio",
"periodo",
"institucion",
"tipoInstitucion",
"idNomina",
"montoPagado",
"fechaPago",
"afiliadosInformados",
"comprobanteUrl"
],
"additionalProperties": false
},
"description": "Las planillas guardadas, de la más reciente a la más antigua. Un pago de un período se abre en varias planillas, una por institución previsional: varias filas del mismo período es lo normal, no una duplicación."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cuando no es null quedan más filas: reenvíalo tal cual en 'cursor' para pedir la página siguiente. En null significa que esta fue la última."
}
},
"required": [
"planillas",
"cursor"
],
"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
previred.conexion.sincronizar: la tool que escribe los datos que esta lectura devuelve.- Sincronizar y consultar: por qué leer datos reales son dos pasos.
Consultar archivos para el F30-1 de Previred
Lee los archivos ya sincronizados con que la Dirección del Trabajo emite el Certificado F30-1 de Cumplimiento de Obligaciones Laborales y Previsionales, el que una empresa contratista tiene que entregarle a su mandante para que le paguen.
Servicio de Impuestos Internos
Las 8 tools de Servicio de Impuestos Internos en el plan pagado.