Emisso Connect

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.

Tool IDprevired.deuda.consultar
Nombre MCPprevired__deuda__consultar
Conectorprevired
Planoaction
Lee el alcancedeuda (debe estar habilitado en la conexión)
Scope (permiso)previred:read
Authnone
Versión1
Sensible
Deprecadono
ComportamientoreadOnly=true, destructive=false, idempotent=true, openWorld=false

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST, campo connectionId en el execute de 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 de conexiones.estado.consultar.

Qué hace

'dnp' son declaraciones sin pago, con su institución y sus cargos legales. 'por_pagar' son las nóminas cuyo plazo CORRE y aún no se pagan: ahí 'institucion' es "Todas" y solo viene 'montoTotal', porque el portal da un total por nómina sin desglosarlo. Recuerda el calendario: el plazo vence el día 13 del mes siguiente al de las remuneraciones. Ojo con 'montoTotal': Previred lo recalcula según la fecha en que efectivamente se pague, así que el valor guardado es el del momento de la sincronización (por eso cada fila trae 'observadoEn') y NO una cifra a la que uno pueda comprometerse. 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

CampoTipoRequeridoDescripción
periodostring ^\d{4}-\d{2}$noFiltra por un mes, en formato AAAA-MM. Sin él, la consulta trae todas las filas guardadas de esta conexión.
tipo"dnp" · "por_pagar"noFiltra una de las dos mitades de la deuda: 'dnp' son las declaraciones sin pago y 'por_pagar' las nóminas cuyo plazo todavía corre. Sin él, trae las dos.
cursorstringnoContinú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.
limitentero 1-500no · default 100Cuá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."
    },
    "tipo": {
      "type": "string",
      "enum": [
        "dnp",
        "por_pagar"
      ],
      "description": "Filtra una de las dos mitades de la deuda: 'dnp' son las declaraciones sin pago y 'por_pagar' las nóminas cuyo plazo todavía corre. Sin él, trae las dos."
    },
    "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
curl -X POST https://connect.emisso.ai/api/v1/tools/previred.deuda.consultar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input":{}}'
SDK TypeScript
const data = await connect.tools.previred.deuda.consultar({}, { connectionId: "conn_9tKfR2mQx4Vb" });
MCP · meta-tool execute
{
  "tool": "previred.deuda.consultar",
  "params": {},
  "connectionId": "conn_9tKfR2mQx4Vb"
}

Salida esperada (200):

{
  "data": {
    "deudas": [
      {
        "periodo": "2026-05",
        "institucion": "AFP Modelo",
        "tipo": "dnp",
        "montoNominal": 189084,
        "cargosLegales": 4521,
        "montoTotal": 193605,
        "observadoEn": "2026-08-10T14:02:11.000Z"
      }
    ],
    "cursor": null
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "previred.deuda.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}

Una lista vacía tras un sync exitoso sí es informativa: significa que Previred no reporta nada pendiente. Una fila 'por_pagar' con institución "Todas" es una nómina completa por pagar, no un dato incompleto.

Salida

CampoTipoRequeridoDescripción
deudaslista de objetoLas filas de deuda guardadas, de las dos mitades ('dnp' y 'por_pagar'). Una lista vacía después de un sync exitoso sí es informativa: significa que Previred no reporta nada pendiente.
deudas[].periodostringEl mes de remuneraciones al que corresponde la deuda, en formato AAAA-MM.
deudas[].institucionstringLa institución a la que se le debe, con el nombre que le da Previred. En una fila 'por_pagar' dice 'Todas': esa pantalla da un total por nómina sin desglosarlo por institución.
deudas[].tipo"dnp" · "por_pagar"'dnp' es una declaración sin pago: la empresa declaró lo que debía y no lo pagó, y la fila trae su institución y sus cargos legales. 'por_pagar' es una nómina cuyo plazo todavía corre y aún no se paga; ahí solo llega 'montoTotal'. El plazo vence el día 13 del mes siguiente al de las remuneraciones, así que una fila 'por_pagar' más vieja que eso ya es deuda aunque Previred no la haya movido.
deudas[].montoNominalnúmeronull
deudas[].cargosLegalesnúmeronull
deudas[].montoTotalnúmeronull
deudas[].observadoEnstringInstante (ISO 8601) en que se observó esta deuda. Importa porque 'montoTotal' se mueve con el tiempo: un total viejo ya no es el que hay que pagar.
cursorstringnull
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "deudas": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "periodo": {
            "type": "string",
            "description": "El mes de remuneraciones al que corresponde la deuda, en formato AAAA-MM."
          },
          "institucion": {
            "type": "string",
            "description": "La institución a la que se le debe, con el nombre que le da Previred. En una fila 'por_pagar' dice 'Todas': esa pantalla da un total por nómina sin desglosarlo por institución."
          },
          "tipo": {
            "type": "string",
            "enum": [
              "dnp",
              "por_pagar"
            ],
            "description": "'dnp' es una declaración sin pago: la empresa declaró lo que debía y no lo pagó, y la fila trae su institución y sus cargos legales. 'por_pagar' es una nómina cuyo plazo todavía corre y aún no se paga; ahí solo llega 'montoTotal'. El plazo vence el día 13 del mes siguiente al de las remuneraciones, así que una fila 'por_pagar' más vieja que eso ya es deuda aunque Previred no la haya movido."
          },
          "montoNominal": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Lo adeudado sin reajustes ni multas, en pesos. Viene en null en las filas 'por_pagar', porque esa pantalla no desglosa el total."
          },
          "cargosLegales": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Reajustes, intereses y multas acumulados, en pesos. Previred los recalcula según la fecha en que se pague, así que es el valor del momento en que se sincronizó. Viene en null en las filas 'por_pagar'."
          },
          "montoTotal": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Lo adeudado con sus cargos legales incluidos, en pesos. Es el valor del momento en que se sincronizó (lo dice 'observadoEn') y no una cifra a la que se pueda comprometer nadie: Previred lo recalcula según la fecha de pago."
          },
          "observadoEn": {
            "type": "string",
            "description": "Instante (ISO 8601) en que se observó esta deuda. Importa porque 'montoTotal' se mueve con el tiempo: un total viejo ya no es el que hay que pagar."
          }
        },
        "required": [
          "periodo",
          "institucion",
          "tipo",
          "montoNominal",
          "cargosLegales",
          "montoTotal",
          "observadoEn"
        ],
        "additionalProperties": false
      },
      "description": "Las filas de deuda guardadas, de las dos mitades ('dnp' y 'por_pagar'). Una lista vacía después de un sync exitoso sí es informativa: significa que Previred no reporta nada pendiente."
    },
    "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": [
    "deudas",
    "cursor"
  ],
  "additionalProperties": false
}

Errores de esta tool

CódigoHTTPReintentableQué hacer
connection_disabled403noReactívala en /connections o usa otra conexión del mismo sistema.
alcance_not_enabled403noHabilita 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

On this page