Consultar cotizaciones por trabajador de Previred
Lee las cotizaciones ya sincronizadas de esta conexión, por trabajador, período e institución.
| Tool ID | previred.cotizaciones.consultar |
| Nombre MCP | previred__cotizaciones__consultar |
| Conector | previred |
| Plano | action |
| Lee el alcance | cotizaciones (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
Es la materia prima del «certificado de cotizaciones» que emite Previred: el certificado en sí es un PDF que se genera para el rango que se pida, así que aquí viven los HECHOS (quién cotizó cuánto, a qué institución, en qué mes) y no el documento. Un mismo trabajador y mes trae varias filas, una por institución. 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. |
rutTrabajador | string ^\d{1,8}-[\dkK]$ | no | Filtra por UN trabajador. El RUT va sin puntos y con guion antes del dígito verificador: se guarda cifrado y el filtro corre sobre un índice ciego, así que solo calza escrito exactamente en esa forma. |
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."
},
"rutTrabajador": {
"type": "string",
"pattern": "^\\d{1,8}-[\\dkK]$",
"description": "Filtra por UN trabajador. El RUT va sin puntos y con guion antes del dígito verificador: se guarda cifrado y el filtro corre sobre un índice ciego, así que solo calza escrito exactamente en esa forma."
},
"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.cotizaciones.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.cotizaciones.consultar({ periodo: "2026-06" }, { connectionId: "conn_9tKfR2mQx4Vb" });{
"tool": "previred.cotizaciones.consultar",
"params": {
"periodo": "2026-06"
},
"connectionId": "conn_9tKfR2mQx4Vb"
}Salida esperada (200):
{
"data": {
"cotizaciones": [
{
"rutTrabajador": "11111111-1",
"nombreTrabajador": "PERSONA DE EJEMPLO",
"periodo": "2026-06",
"institucion": "AFP Modelo",
"tipoInstitucion": "AFP",
"rentaImponible": 1890835,
"montoCotizacion": 189084,
"diasTrabajados": 30,
"folio": "2004202606000002"
}
],
"cursor": null
},
"meta": {
"request_id": "req_…",
"tool_id": "previred.cotizaciones.consultar",
"plane": "action",
"latency_ms": 24,
"audit_status": "recorded"
}
}Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
cotizaciones | lista de objeto | sí | Las cotizaciones guardadas. Un mismo trabajador y mes traen varias filas, una por institución. |
cotizaciones[].rutTrabajador | string | sí | El RUT del trabajador, sin puntos y con guion. |
cotizaciones[].nombreTrabajador | string | null | sí |
cotizaciones[].periodo | string | sí | El mes de remuneraciones al que corresponde la cotización, en formato AAAA-MM. No es el mes en que se pagó: eso lo dice la fecha de pago de su planilla, que cae al mes siguiente. |
cotizaciones[].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). |
cotizaciones[].tipoInstitucion | string | null | sí |
cotizaciones[].rentaImponible | número | null | sí |
cotizaciones[].montoCotizacion | número | null | sí |
cotizaciones[].diasTrabajados | entero | null | sí |
cotizaciones[].folio | string | null | sí |
cursor | string | null | sí |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"cotizaciones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rutTrabajador": {
"type": "string",
"description": "El RUT del trabajador, sin puntos y con guion."
},
"nombreTrabajador": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "El nombre del trabajador tal como lo informa el comprobante, o null si no venía."
},
"periodo": {
"type": "string",
"description": "El mes de remuneraciones al que corresponde la cotización, en formato AAAA-MM. No es el mes en que se pagó: eso lo dice la fecha de pago de su planilla, que cae al mes siguiente."
},
"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ó."
},
"rentaImponible": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "La renta imponible sobre la que se calculó ESTA cotización, en pesos. Un mismo trabajador y mes tienen una renta imponible distinta por institución, cada una con su propio tope: no las sumes ni las trates como el sueldo. null cuando el comprobante no traía el dato."
},
"montoCotizacion": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Lo cotizado a esa institución en el período, en pesos. null cuando el comprobante no traía el dato."
},
"diasTrabajados": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Días trabajados informados en el período. Solo algunas instituciones los declaran (lo hace el Seguro Social y las demás no), así que en la mayoría de las filas viene null: eso es lo que dice el comprobante, no un hueco."
},
"folio": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "El folio de la planilla que incluye esta cotización: el puente hacia previred.planillas.consultar. null cuando no se pudo determinar."
}
},
"required": [
"rutTrabajador",
"nombreTrabajador",
"periodo",
"institucion",
"tipoInstitucion",
"rentaImponible",
"montoCotizacion",
"diasTrabajados",
"folio"
],
"additionalProperties": false
},
"description": "Las cotizaciones guardadas. Un mismo trabajador y mes traen varias filas, una por institució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": [
"cotizaciones",
"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.
Verificar conexión Previred
Prueba las credenciales de la conexión contra Previred haciendo un login real (y su logout, a cargo del pipeline).
Consultar deuda previsional en Previred
Lee la deuda previsional ya sincronizada de esta conexión, y responde la pregunta del mes: ¿está al día? Trae las dos mitades.