Referencia de herramientas¶
Las 14 están anotadas en el protocolo como readOnlyHint: true y destructiveHint: false.
Nota
Las anotaciones MCP son pistas, no garantías verificables por el cliente. La garantía real de que este servidor no escribe es que el código de escritura no existe, y hay un job de CI que lo comprueba en cada cambio.
Todo lo de esta página se compara contra tests/contrato.json, que guarda el catálogo entero
como viaja, con su orden, más la directiva. Un cambio de lo que el servidor promete falla hasta
que alguien lo apruebe con APROBAR_CONTRATO=1 uv run pytest tests/test_contrato.py.
Directiva operativa¶
El servidor expone una directiva por el campo instructions del protocolo. Cualquier cliente
que se conecte la recibe antes de poder llamar una herramienta, así que la distinción
entre las dos fechas llega antes que cualquier resultado:
Al informar fechas de actuaciones de receptor, distinguir siempre:
fecha_diligencia: cuándo el ministro de fe practicó la diligencia. Es la que corre los plazos procesales.
fecha_registro: cuándo se registró en el sistema. No corre plazos.Suelen diferir en varios días. […] Una búsqueda que no encuentra no prueba que algo no exista. Las causas reservadas no aparecen en la consulta pública.
La directiva cabe en 2.048 bytes, que es donde el cliente la corta sin avisar. Las reglas que no caben viven en la herramienta que las necesita:
regla |
dónde está |
|---|---|
qué buscadores traen |
|
con qué acotar cada competencia |
las tres búsquedas de nombre, RUT y fecha |
qué significa |
|
cuándo caduca una referencia de documento y qué hacer con un escaneo |
|
Por qué se repartieron así se explica en Cómo se usa e interpreta.
Nota
Qué revisión del protocolo habla este servidor
Depende del transporte, y conviene decir las dos. El SDK instalado conoce hasta
2026-07-28, la revisión sin estado donde los servidores publican lo suyo por
server/discover. Por ahí se habla cuando el cliente vive en el mismo proceso.
Todos los clientes que esta guía documenta lo levantan como proceso aparte por stdio, y ahí
el saludo llega hasta 2025-11-25: es lo que negocia Claude Desktop, Claude Code, Cursor, VS
Code y Codex. Medido pidiendo 2026-07-28 en el saludo y viendo qué contesta. En esa ruta
server/discover no se alcanza, así que quien lo intente recibe método desconocido.
Los dos números salen del SDK y no de la memoria: tests/test_documentacion.py los compara
contra LATEST_PROTOCOL_VERSION y LATEST_HANDSHAKE_VERSION, así que actualizar la dependencia
y no esta página deja la suite en rojo.
Por el carril de 2026-07-28 los catálogos viajan con una pista de frescura: tools/list,
prompts/list, resources/list, resources/templates/list y server/discover salen con
ttlMs: 3600000 y cacheScope: public, porque cambian una vez por versión. resources/read
también admite pista y no la lleva a propósito: leer un documento vuelve a pedírselo al Poder
Judicial, y una copia guardada de un documento de un tercero es lo que prohíbe la regla 5. Por
el saludo de 2025-11-25 ese campo no existe y el SDK lo criba: ahí el catálogo llega sin pista.
El servidor se presenta con un icono propio, una balanza dibujada en SVG que viaja como data:
URI dentro del saludo. No hay una dirección que el cliente tenga que ir a buscar, ni un host
ajeno que se entere de quién lo abrió.
listar_cortes¶
Las Cortes de Apelaciones con el código que las búsquedas exigen. Sin parámetros.
Llamarla antes de buscar por nombre, RUT o fecha en apelaciones: ahí corte es obligatorio y
su valor no aparece en ninguna otra respuesta.
Campo |
Tipo |
Qué es |
|---|---|---|
|
int |
Lo que va en el parámetro |
|
str |
Nombre tal como lo publica la plataforma |
Medido el 20 de agosto de 2026: 17 cortes.
Cómo bajar a la causa apelada¶
El detalle de una causa de la Corte Suprema trae causa_de_origen con la corte por su
nombre, y la búsqueda pide el código. Son dos llamadas:
listar_cortespara resolver el nombre a código.buscar_causa_por_ritenapelacionescon esecorte, elroly elaniode la causa de origen, y ellibroentipo: ahí el número de rol solo no identifica una causa.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "listar_cortes",
"inputSchema": {
"properties": {},
"title": "listar_cortesArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"Corte": {
"description": "Una Corte de Apelaciones, con el código que las búsquedas exigen.",
"properties": {
"codigo": {
"description": "Lo que va en el parámetro `corte` de las búsquedas.",
"title": "Codigo",
"type": "integer"
},
"nombre": {
"description": "Nombre tal como lo publica la plataforma.",
"title": "Nombre",
"type": "string"
}
},
"required": [
"codigo",
"nombre"
],
"title": "Corte",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/Corte"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "listar_cortesOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
listar_tribunales¶
Los tribunales de una corte, con el código que las búsquedas exigen.
Importante
Es el muro de entrada
Para buscar en primera instancia hay que pasar tribunal, y ese número no aparece en ninguna
otra respuesta ni en esta página. Sin esta herramienta hay que sabérselo de memoria.
Parámetro |
Qué es |
|---|---|
|
Obligatorio. Código de la corte, el que entrega |
|
Sólo las que se acotan por tribunal. Los códigos difieren entre competencias |
corte no tiene valor por defecto a propósito: con uno, una consulta destinada a otra
jurisdicción devolvería en silencio los tribunales de Concepción, que es una lista plausible y
equivocada.
Suprema y apelaciones no se ofrecen, y está medido por qué: suprema devuelve null porque
es la corte y no tiene tribunales debajo, y apelaciones devuelve 118 juzgados de primera
instancia, que no son con qué se busca ahí.
Campo |
Tipo |
Qué es |
|---|---|---|
|
int |
Lo que va en el parámetro |
|
str |
Nombre tal como lo publica la plataforma |
Cómo seguir un exhorto¶
El detalle entrega el tribunal de destino por su nombre, y la búsqueda pide el código. Son tres llamadas:
listar_cortespara ubicar la corte del tribunal de destino.listar_tribunalescon esa corte, para sacar el código por nombre.buscar_causa_por_ritcon elrol_destinodel exhorto y esetribunal.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "listar_tribunales",
"inputSchema": {
"properties": {
"corte": {
"description": "Código de la corte, el que entrega `listar_cortes`. Obligatorio: sin él habría que elegir una, y devolver los tribunales de otra jurisdicción es una lista plausible y equivocada.",
"minimum": 1,
"title": "Corte",
"type": "integer"
},
"competencia": {
"default": "civil",
"description": "Una de: civil, cobranza, laboral, penal. Son las que se acotan por tribunal, o sea aquellas donde este listado sirve para buscar. Suprema no tiene tribunales debajo y apelaciones se acota por corte.",
"title": "Competencia",
"type": "string"
}
},
"required": [
"corte"
],
"title": "listar_tribunalesArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"Tribunal": {
"description": "Un tribunal de primera instancia, con el código que las búsquedas exigen.",
"properties": {
"codigo": {
"description": "Lo que va en el parámetro `tribunal` de las búsquedas.",
"title": "Codigo",
"type": "integer"
},
"nombre": {
"description": "Nombre tal como lo publica la plataforma.",
"title": "Nombre",
"type": "string"
}
},
"required": [
"codigo",
"nombre"
],
"title": "Tribunal",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/Tribunal"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "listar_tribunalesOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
buscar_causa_por_rit¶
Busca causas por rol en la consulta pública.
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
str |
Letra del rol en civil, cobranza y laboral; en civil son |
|
int |
Número, sin la letra ni el año |
|
int |
Año, cuatro dígitos |
|
str |
Verificadas: |
|
int, opcional |
Código del tribunal. Omitir para buscar en todos |
|
int, opcional |
Omitir salvo certeza |
|
int |
Cuántas páginas recorrer como máximo. Al excederlo levanta excepción en vez de recortar |
Advertencia
corte no tiene valor por defecto a propósito. Fijarla produce falsos negativos: en una
prueba real, una búsqueda con la corte puesta en Concepción omitió una causa del 11º Juzgado
Civil de Santiago que sí existía.
Devuelve una lista de causas con rol, fecha_ingreso, caratulado, tribunal y una
referencia opaca que declara durar 30 minutos.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "buscar_causa_por_rit",
"inputSchema": {
"properties": {
"tipo": {
"description": "Letra del rol en civil, cobranza y laboral; en civil son C, V, E, A, F o I y en cobranza A C D E J L P R y en laboral O, medidas. En apelaciones va el LIBRO en vez de una letra (por ejemplo 'Protección' o 'Exhorto'): ahí el número de rol se repite entre libros, así que sin él la consulta es ambigua y la herramienta falla en vez de abrir la causa equivocada. En penal el rol también lleva libro pero se busca por su CÓDIGO: medido, '1' es Ordinaria, y con el nombre el listado vuelve vacío. En suprema el rol no lleva nada adelante y este campo va VACÍO.",
"title": "Tipo",
"type": "string"
},
"rol": {
"description": "Número del rol, sin la letra ni el año.",
"minimum": 1,
"title": "Rol",
"type": "integer"
},
"anio": {
"description": "Año del rol, cuatro dígitos.",
"maximum": 2100,
"minimum": 1900,
"title": "Anio",
"type": "integer"
},
"competencia": {
"default": "civil",
"description": "Una de: apelaciones, civil, cobranza, laboral, penal, suprema.",
"title": "Competencia",
"type": "string"
},
"tribunal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código del tribunal. En civil, cobranza, laboral y penal la plataforma lo acepta opcional, y un rol sin tribunal no identifica una causa: la búsqueda lo devuelve de cada juzgado que lo tenga, y en civil eso midió 43 causas de 43 personas distintas para un solo rol: omitirlo no amplía la búsqueda, la hace barrer y devuelve una causa por juzgado, cada una con sus partes. Indicarlo salvo que se quiera justamente ese barrido. En apelaciones y suprema la plataforma no lo usa.",
"title": "Tribunal"
},
"corte": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de la corte. En apelaciones el mismo número de rol existe en varias, así que omitirla devuelve una causa por corte. En el resto, OMITIR salvo certeza: fijarla produce falsos negativos, porque excluye causas radicadas en otra jurisdicción.",
"title": "Corte"
},
"paginas": {
"default": 10,
"description": "Cuántas páginas de resultados recorrer como máximo. La plataforma devuelve 100 por página. Si la búsqueda excede este tope, la herramienta falla en vez de devolver una lista recortada, porque un listado truncado en silencio se leería como si no hubiera más resultados.",
"maximum": 50,
"minimum": 1,
"title": "Paginas",
"type": "integer"
}
},
"required": [
"tipo",
"rol",
"anio"
],
"title": "buscar_causa_por_ritArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"CausaEncontrada": {
"description": "Una fila del listado de resultados de búsqueda.\n\nLos campos opcionales existen porque las competencias no publican las mismas columnas:\nla civil no trae estado ni RUC, la penal trae los dos, y la de apelaciones trae la\nubicación física del expediente. Se declaran como opcionales en vez de inventar un valor,\nporque vacío y ausente no son lo mismo.",
"properties": {
"rol": {
"title": "Rol",
"type": "string"
},
"fecha_ingreso": {
"title": "Fecha Ingreso",
"type": "string"
},
"caratulado": {
"title": "Caratulado",
"type": "string"
},
"tribunal": {
"description": "Tribunal o corte donde está radicada. En apelaciones y suprema es la corte.",
"title": "Tribunal",
"type": "string"
},
"referencia": {
"description": "Identificador opaco para pedir el detalle. Declara durar 30 minutos; no se construye ni se guarda, se usa en el acto.",
"title": "Referencia",
"type": "string"
},
"competencia": {
"description": "Competencia en la que se encontró.",
"title": "Competencia",
"type": "string"
},
"ruc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en penal y cobranza.",
"title": "Ruc"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo que la competencia publica en su columna de estado, textual. No es el mismo dato en todas: cobranza publica 'Estado Procesal' y laboral, penal, apelaciones y suprema publican 'Estado Causa'. Civil no publica ninguno. Se entrega sin normalizar para no aplanar dos cosas distintas en una.",
"title": "Estado"
},
"tipo_recurso": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en suprema.",
"title": "Tipo Recurso"
},
"ubicacion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en apelaciones.",
"title": "Ubicacion"
}
},
"required": [
"rol",
"fecha_ingreso",
"caratulado",
"tribunal",
"referencia",
"competencia"
],
"title": "CausaEncontrada",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/CausaEncontrada"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "buscar_causa_por_ritOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
Nota
Con qué hay que acotar la búsqueda Las tres búsquedas de abajo (nombre, RUT y fecha) exigen acotar, y con qué depende de la competencia. Está medido una por una contra el sistema real:
Competencia |
Exige |
|---|---|
|
|
|
|
|
nada |
En apelaciones la plataforma responde «Por favor seleccione una Corte para la búsqueda» y no entrega resultados. En suprema las tres andan sin corte ni tribunal.
buscar_causa_por_nombre¶
Busca causas por nombre de litigante.
Reglas de la plataforma, medidas probando cada combinación contra el sistema real:
Exige al menos dos de los tres campos de nombre (nombre, apellido paterno, apellido materno). El año no cuenta para ese mínimo:
paterno + añoes rechazado,paterno + maternoes aceptado.Exige acotar la búsqueda según la competencia (ver el cuadro de arriba). Donde el tribunal es obligatorio eso limita la utilidad de la herramienta: hay que saber dónde está la causa antes de poder buscarla.
La tilde calza literal, campo por campo. El mismo apellido está guardado de las dos formas en la misma base, así que ninguna grafía sola devuelve todo. Medido el 25 de agosto de 2026 sobre un apellido en un solo tribunal:
paterno
materno
causas
sin tilde
sin tilde
5
con tilde
con tilde
25
una con y otra sin
0
La herramienta consulta las DOS grafías y las fusiona, así que no hay que repetir la búsqueda. Lo que no puede es adivinar la tilde: si el nombre se pasa sin acentos, sólo trae la forma sin acentos. Pásalo con sus tildes correctas o la lista sigue incompleta sin decirlo.
La ñ no cambia el resultado (
MUÑOZyMUNOZdan lo mismo), así que el fold la conserva y no gasta una búsqueda de más; la tilde sí, y por eso se buscan la forma acentuada y la sin acentuar. Un nombre sin ninguna letra acentuable es una sola búsqueda.
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
str |
Apellido paterno del litigante |
|
str |
Apellido materno |
|
str |
Nombres |
|
int, opcional |
Año de ingreso. No cuenta para el mínimo de dos campos |
|
str |
Verificadas: |
|
int |
Obligatorio salvo en |
|
int |
Obligatorio en |
|
int |
Tope de páginas a recorrer |
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "buscar_causa_por_nombre",
"inputSchema": {
"properties": {
"apellido_paterno": {
"default": "",
"description": "Apellido paterno del litigante.",
"title": "Apellido Paterno",
"type": "string"
},
"apellido_materno": {
"default": "",
"description": "Apellido materno del litigante.",
"title": "Apellido Materno",
"type": "string"
},
"nombre": {
"default": "",
"description": "Nombres del litigante.",
"title": "Nombre",
"type": "string"
},
"anio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Año de ingreso, opcional.",
"title": "Anio"
},
"competencia": {
"default": "civil",
"description": "Una de: apelaciones, civil, cobranza, laboral, penal, suprema.",
"title": "Competencia",
"type": "string"
},
"tribunal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código del tribunal, para acotar la búsqueda. Obligatorio cuando la competencia es una de: civil, cobranza, laboral y penal. En apelaciones y suprema la plataforma no lo usa.",
"title": "Tribunal"
},
"corte": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de la corte, para acotar la búsqueda. Obligatorio cuando la competencia es una de: apelaciones, donde la plataforma responde 'Por favor seleccione una Corte para la búsqueda'. En el resto, OMITIR salvo certeza: fijarla produce falsos negativos, porque excluye causas radicadas en otra jurisdicción.",
"title": "Corte"
},
"paginas": {
"default": 10,
"description": "Cuántas páginas de resultados recorrer como máximo. La plataforma devuelve 100 por página. Si la búsqueda excede este tope, la herramienta falla en vez de devolver una lista recortada, porque un listado truncado en silencio se leería como si no hubiera más resultados.",
"maximum": 50,
"minimum": 1,
"title": "Paginas",
"type": "integer"
}
},
"title": "buscar_causa_por_nombreArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"CausaEncontrada": {
"description": "Una fila del listado de resultados de búsqueda.\n\nLos campos opcionales existen porque las competencias no publican las mismas columnas:\nla civil no trae estado ni RUC, la penal trae los dos, y la de apelaciones trae la\nubicación física del expediente. Se declaran como opcionales en vez de inventar un valor,\nporque vacío y ausente no son lo mismo.",
"properties": {
"rol": {
"title": "Rol",
"type": "string"
},
"fecha_ingreso": {
"title": "Fecha Ingreso",
"type": "string"
},
"caratulado": {
"title": "Caratulado",
"type": "string"
},
"tribunal": {
"description": "Tribunal o corte donde está radicada. En apelaciones y suprema es la corte.",
"title": "Tribunal",
"type": "string"
},
"referencia": {
"description": "Identificador opaco para pedir el detalle. Declara durar 30 minutos; no se construye ni se guarda, se usa en el acto.",
"title": "Referencia",
"type": "string"
},
"competencia": {
"description": "Competencia en la que se encontró.",
"title": "Competencia",
"type": "string"
},
"ruc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en penal y cobranza.",
"title": "Ruc"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo que la competencia publica en su columna de estado, textual. No es el mismo dato en todas: cobranza publica 'Estado Procesal' y laboral, penal, apelaciones y suprema publican 'Estado Causa'. Civil no publica ninguno. Se entrega sin normalizar para no aplanar dos cosas distintas en una.",
"title": "Estado"
},
"tipo_recurso": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en suprema.",
"title": "Tipo Recurso"
},
"ubicacion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en apelaciones.",
"title": "Ubicacion"
}
},
"required": [
"rol",
"fecha_ingreso",
"caratulado",
"tribunal",
"referencia",
"competencia"
],
"title": "CausaEncontrada",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/CausaEncontrada"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "buscar_causa_por_nombreOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
buscar_causa_por_rut_juridica¶
Busca causas de una persona jurídica por su RUT. Es la única vía para empresas, que no tienen Clave Única y por lo tanto no aparecen en «Mis Causas».
Exige el dígito verificador, y acotar según la competencia (ver el cuadro de arriba).
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
int |
RUT sin dígito verificador ni puntos |
|
str |
Dígito verificador: 0-9 o K |
|
int, opcional |
Año de ingreso |
|
str |
Verificadas: |
|
int |
Obligatorio salvo en |
|
int |
Obligatorio en |
|
int |
Tope de páginas a recorrer |
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "buscar_causa_por_rut_juridica",
"inputSchema": {
"properties": {
"rut": {
"description": "RUT sin dígito verificador ni puntos.",
"minimum": 1,
"title": "Rut",
"type": "integer"
},
"digito_verificador": {
"description": "Dígito verificador: 0-9 o K.",
"title": "Digito Verificador",
"type": "string"
},
"anio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Año de ingreso, opcional.",
"title": "Anio"
},
"competencia": {
"default": "civil",
"description": "Una de: apelaciones, civil, cobranza, laboral, penal, suprema.",
"title": "Competencia",
"type": "string"
},
"tribunal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código del tribunal, para acotar la búsqueda. Obligatorio cuando la competencia es una de: civil, cobranza, laboral y penal. En apelaciones y suprema la plataforma no lo usa.",
"title": "Tribunal"
},
"corte": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de la corte, para acotar la búsqueda. Obligatorio cuando la competencia es una de: apelaciones, donde la plataforma responde 'Por favor seleccione una Corte para la búsqueda'. En el resto, OMITIR salvo certeza: fijarla produce falsos negativos, porque excluye causas radicadas en otra jurisdicción.",
"title": "Corte"
},
"paginas": {
"default": 10,
"description": "Cuántas páginas de resultados recorrer como máximo. La plataforma devuelve 100 por página. Si la búsqueda excede este tope, la herramienta falla en vez de devolver una lista recortada, porque un listado truncado en silencio se leería como si no hubiera más resultados.",
"maximum": 50,
"minimum": 1,
"title": "Paginas",
"type": "integer"
}
},
"required": [
"rut",
"digito_verificador"
],
"title": "buscar_causa_por_rut_juridicaArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"CausaEncontrada": {
"description": "Una fila del listado de resultados de búsqueda.\n\nLos campos opcionales existen porque las competencias no publican las mismas columnas:\nla civil no trae estado ni RUC, la penal trae los dos, y la de apelaciones trae la\nubicación física del expediente. Se declaran como opcionales en vez de inventar un valor,\nporque vacío y ausente no son lo mismo.",
"properties": {
"rol": {
"title": "Rol",
"type": "string"
},
"fecha_ingreso": {
"title": "Fecha Ingreso",
"type": "string"
},
"caratulado": {
"title": "Caratulado",
"type": "string"
},
"tribunal": {
"description": "Tribunal o corte donde está radicada. En apelaciones y suprema es la corte.",
"title": "Tribunal",
"type": "string"
},
"referencia": {
"description": "Identificador opaco para pedir el detalle. Declara durar 30 minutos; no se construye ni se guarda, se usa en el acto.",
"title": "Referencia",
"type": "string"
},
"competencia": {
"description": "Competencia en la que se encontró.",
"title": "Competencia",
"type": "string"
},
"ruc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en penal y cobranza.",
"title": "Ruc"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo que la competencia publica en su columna de estado, textual. No es el mismo dato en todas: cobranza publica 'Estado Procesal' y laboral, penal, apelaciones y suprema publican 'Estado Causa'. Civil no publica ninguno. Se entrega sin normalizar para no aplanar dos cosas distintas en una.",
"title": "Estado"
},
"tipo_recurso": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en suprema.",
"title": "Tipo Recurso"
},
"ubicacion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sólo en apelaciones.",
"title": "Ubicacion"
}
},
"required": [
"rol",
"fecha_ingreso",
"caratulado",
"tribunal",
"referencia",
"competencia"
],
"title": "CausaEncontrada",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/CausaEncontrada"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "buscar_causa_por_rut_juridicaOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
buscar_causa_por_fecha¶
Causas ingresadas en un rango de fechas.
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
str |
Fecha inicial, DD/MM/AAAA |
|
str |
Fecha final, DD/MM/AAAA |
|
int |
Obligatorio salvo en |
|
str |
Verificadas: |
|
int |
Obligatorio en |
|
int |
Tope de páginas a recorrer |
Es la cuarta búsqueda que la plataforma ofrece y responde una pregunta que las otras tres no: qué ingresó contra alguien en un período, sabiendo el tribunal pero no el rol.
Un solo día en un solo tribunal puede devolver decenas de causas, así que conviene acotar el rango antes de subir el tope de páginas: cada página son 100 resultados y una petición.
obtener_actuaciones_receptor¶
Actuaciones del ministro de fe con su fecha real de diligencia. Es la razón de existir del proyecto.
Advertencia
Sólo civil entrega actuaciones por esta vía. En cobranza las diligencias del ministro de
fe viven en un panel propio (diligenciaCob), que obtener_detalle_causa lee y entrega en
diligencias, así que la llamada por esta vía se rechaza.
Su Historia sí nombra algunas, y por eso el rechazo: tres filas dicen Actuacion - Receptor y
ninguna trae fecha de diligencia, o sea leerlas de ahí daría una lista parcial y sin el dato
que se busca. Si son todas o sólo una parte no está medido, y entregarlas sería
informar una completitud desconocida como si fuera el total.
El panel tampoco publica la fecha en que se practicó la diligencia, así que sus filas no son actuaciones y no se pueden presentar como tales: dicen qué diligencia hay, en qué estado y quién figura a cargo.
En laboral, penal, apelaciones y suprema no existen: en todo el sitio sólo hay
receptorCivil y receptorCobranza.
Toma tipo, rol, anio, competencia, tribunal y corte, con el mismo significado que
en buscar_causa_por_rit. No toma paginas: de la búsqueda sólo usa la primera causa.
Internamente encadena búsqueda, detalle y un pase por cada cuaderno, porque la plataforma no direcciona el detalle por rol. Son varias peticiones bajo el intervalo mínimo, así que tarda.
Campos de la respuesta¶
Campo |
Tipo |
Descripción |
|---|---|---|
|
str |
Número de folio |
|
str |
Etapa procesal |
|
str |
Siempre |
|
str |
Texto literal, sin normalizar |
|
date | null |
La que corre los plazos, ISO 8601 |
|
time | null |
Cuando la descripción la trae |
|
date | null |
Ingreso al sistema. No corre plazos |
|
bool | null |
Las dos fuentes de |
|
str |
A qué cuaderno pertenece |
|
str |
Foja |
|
bool |
|
|
str | null |
Estado de firma del trámite. Cobranza lo publica en lugar de la foja; civil no lo trae |
|
str | null |
Correlativo interno del trámite. Sólo en suprema |
|
str | null |
Año que suprema publica en columna aparte, además de la fecha |
|
str | null |
Con qué se pide la georreferencia de esta actuación |
|
bool |
Si la columna |
|
bool |
Si la columna |
|
str | null |
A qué panel se piden los anexos de este folio. Va junto con |
|
str | null |
Con qué se piden. Nulo cuando el folio no trae anexo, y también cuando lo trae por un panel que no está medido: ahí |
|
str | null |
Qué ruta de la plataforma lo entrega. Cada competencia usa la suya |
|
str | null |
Con qué se pide ese documento. Sin ella se sabe que existe y no cuál es |
Ejemplo¶
{
"folio": "3",
"etapa": "Apremio",
"tramite": "Actuación Receptor",
"desc_tramite": "EMBARGO (Exitosa) Diligencia:31/03/2026 10:34",
"fecha_diligencia": "2026-03-31",
"hora_diligencia": "10:34:00",
"fecha_registro": "2026-04-01",
"discrepancia_fechas": false,
"cuaderno": "2 - Apremio Ejecutivo Obligación de Dar",
"foja": "0",
"georreferenciado": true,
"tiene_documento": true,
"tiene_anexo": false,
"documento_ruta": "docuN.php",
"documento_referencia": "hHkPqx0yRb2..."
}
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "obtener_actuaciones_receptor",
"inputSchema": {
"properties": {
"tipo": {
"description": "Letra del rol en civil, cobranza y laboral; en civil son C, V, E, A, F o I y en cobranza A C D E J L P R y en laboral O, medidas. En apelaciones va el LIBRO en vez de una letra (por ejemplo 'Protección' o 'Exhorto'): ahí el número de rol se repite entre libros, así que sin él la consulta es ambigua y la herramienta falla en vez de abrir la causa equivocada. En penal el rol también lleva libro pero se busca por su CÓDIGO: medido, '1' es Ordinaria, y con el nombre el listado vuelve vacío. En suprema el rol no lleva nada adelante y este campo va VACÍO.",
"title": "Tipo",
"type": "string"
},
"rol": {
"description": "Número del rol, sin la letra ni el año.",
"minimum": 1,
"title": "Rol",
"type": "integer"
},
"anio": {
"description": "Año del rol, cuatro dígitos.",
"maximum": 2100,
"minimum": 1900,
"title": "Anio",
"type": "integer"
},
"competencia": {
"default": "civil",
"description": "Una de: civil. Sólo esas publican las actuaciones del ministro de fe en la tabla de Historia. En cobranza el sitio las rotula en la Historia pero SIN la fecha en que se practicaron, así que no sirven para computar un plazo y esta herramienta no las ofrece; el panel `diligencias` de `obtener_detalle_causa` es otra cosa y puede venir vacío en una causa que sí tuvo diligencias. En las demás no existen.",
"title": "Competencia",
"type": "string"
},
"tribunal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código del tribunal. Esta herramienta devuelve UNA causa, así que el tribunal no acota nada: la identifica. En civil, cobranza, laboral y penal, donde un rol sin tribunal no identifica una causa: la búsqueda lo devuelve de cada juzgado que lo tenga, y en civil eso midió 43 causas de 43 personas distintas para un solo rol, sin él la llamada falla por ambigüedad en vez de abrir la causa de otra persona. En apelaciones eso lo hace `corte`, y en suprema no hace falta ninguno de los dos.",
"title": "Tribunal"
},
"corte": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de la corte. Esta herramienta devuelve UNA causa, así que la corte no acota nada: la identifica. En apelaciones el mismo rol y el mismo libro existen en varias cortes, y sin ella la llamada falla por ambigüedad. En el resto, OMITIR salvo certeza: fijarla produce falsos negativos, porque excluye causas radicadas en otra jurisdicción.",
"title": "Corte"
}
},
"required": [
"tipo",
"rol",
"anio"
],
"title": "obtener_actuaciones_receptorArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"Actuacion": {
"description": "Una fila de la tabla Historia.",
"properties": {
"folio": {
"title": "Folio",
"type": "string"
},
"etapa": {
"title": "Etapa",
"type": "string"
},
"tramite": {
"title": "Tramite",
"type": "string"
},
"desc_tramite": {
"description": "Texto literal de la celda, sin normalizar.",
"title": "Desc Tramite",
"type": "string"
},
"fecha_diligencia": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha real de la diligencia del receptor, en ISO 8601. ES LA QUE CUENTA PARA LOS PLAZOS PROCESALES. Nula si la fila no la informa.",
"title": "Fecha Diligencia"
},
"hora_diligencia": {
"anyOf": [
{
"format": "time",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Hora de la diligencia, cuando la descripción la trae.",
"title": "Hora Diligencia"
},
"fecha_registro": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha en que el trámite se registró en el sistema, en ISO 8601. NO es la que corre los plazos.",
"title": "Fecha Registro"
},
"discrepancia_fechas": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Si las DOS fuentes de `fecha_diligencia` discrepan: la que va entre paréntesis en 'Fec. Trámite' y la del texto 'Diligencia:'. NO compara contra `fecha_registro`; que esas dos difieran es lo normal. NULO cuando falta una de las dos fuentes: ahí no hay nada que comparar, y un falso diría que concuerdan.",
"title": "Discrepancia Fechas"
},
"cuaderno": {
"default": "",
"description": "Cuaderno al que pertenece la actuación. Ej: '0 - Principal'.",
"title": "Cuaderno",
"type": "string"
},
"foja": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Foja del expediente. La publica civil; cobranza no la trae, y ahí es ausente y no vacía.",
"title": "Foja"
},
"estado_firma": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Estado de firma del trámite. La publica cobranza en lugar de la foja; civil no la trae.",
"title": "Estado Firma"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Estado del trámite. La publican laboral, suprema y apelaciones.",
"title": "Estado"
},
"sala": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sala que resolvió el trámite. Sólo en suprema y en Cortes de Apelaciones, donde forma parte de cómo se cita el fallo.",
"title": "Sala"
},
"correlativo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Correlativo interno del trámite. Sólo en suprema.",
"title": "Correlativo"
},
"anio_tramite": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Año que suprema publica en columna aparte, además de la fecha.",
"title": "Anio Tramite"
},
"georreferenciado": {
"description": "Si el sitio OFRECE la georreferencia de esta actuación, no si existe.\n\nEstá medido que no es lo mismo: el 20 de agosto de 2026, una de las seis actuaciones georreferenciadas de C-1156-2026 abría un panel que responde 'No existen Georreferencia para mostrar'. Verdadero significa que hay dónde preguntar, y confirmarlo cuesta una petición por actuación.\n\nFalso significa AUSENTE **sólo donde la competencia publica la columna**, y ahí sí puede ser jurídicamente relevante (art. 9 inc. 3 Ley 20.886). Suprema no la publica, así que su falso significa que no hay dónde mirar, no que la diligencia no se georreferenció. Mirar `COMPETENCIAS[competencia].historia.columnas` para saber cuál de las dos cosas es.",
"title": "Georreferenciado",
"type": "boolean"
},
"tiene_documento": {
"description": "Si la columna `Doc.` del folio ofrece algo. Verdadero NO garantiza que este servidor pueda traerlo: cuando `documento_ruta` viene en nulo, la celda abre el documento con un modal de JavaScript cuyo endpoint no está medido.",
"title": "Tiene Documento",
"type": "boolean"
},
"tiene_anexo": {
"default": false,
"description": "Si la columna `Anexo` del folio ofrece algo. Es un SEGUNDO canal de documentos, distinto de `Doc.`: un folio puede traer la resolución en uno y los anexos del escrito en el otro.\n\nSe puede pedir SÓLO donde `anexo_referencia` viene con valor. En las demás la celda abre un modal de JavaScript cuya ruta no está verificada contra la plataforma, así que verdadero significa que hay algo y no que este servidor lo pueda traer.\n\nSe publica igual porque el silencio es peor. Sin este campo, un folio con anexo se veía idéntico a uno sin nada, y quien preguntara por los documentos de la causa recibía una respuesta que parecía completa. Verdadero significa: acá hay algo que hay que ir a buscar al expediente.\n\nFalso significa AUSENTE sólo donde la competencia publica la columna. En `penal` no hay tabla de Historia medida, así que ahí no se sabe.",
"title": "Tiene Anexo",
"type": "boolean"
},
"documento_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta de la plataforma entrega ese documento. Cada competencia usa la suya. NULO cuando la actuación no trae documento.",
"title": "Documento Ruta"
},
"georreferencia_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se pide la georreferencia de esta actuación. NULO cuando la competencia no publica la columna o la actuación no la ofrece.\n\nTenerla no garantiza que haya georreferencia: está medido que una de seis abre un panel que responde que no existe ninguna.",
"title": "Georreferencia Referencia"
},
"anexo_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta de la plataforma entrega los anexos de este folio. Va junto con `anexo_referencia` y hacen falta las dos, igual que para el documento: una misma competencia abre paneles distintos según el trámite, y civil tiene dos con parámetros distintos.",
"title": "Anexo Ruta"
},
"anexo_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se piden los anexos de este folio. NULO cuando el folio no trae anexo, y también cuando lo trae por un panel que no está medido: ahí `tiene_anexo` queda en verdadero y esto en nulo, que significa que hay anexos y este servidor no los puede traer.",
"title": "Anexo Referencia"
},
"documento_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La referencia opaca con la que la plataforma identifica ese documento. Junto con `documento_ruta` es lo único que permite pedirlo después: sin ellas se sabe que el documento existe y no cuál es. NULO cuando la actuación no trae documento.",
"title": "Documento Referencia"
}
},
"required": [
"folio",
"etapa",
"tramite",
"desc_tramite",
"georreferenciado",
"tiene_documento"
],
"title": "Actuacion",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/Actuacion"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "obtener_actuaciones_receptorOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
obtener_detalle_causa¶
Historia, litigantes, notificaciones, liquidaciones, diligencias, materias, escritos por resolver, causas agregadas, los dos lados del exhorto y la causa de la que subió el recurso, leídos de una sola cadena de peticiones. Recorre todos los cuadernos, no sólo el que la plataforma muestra por defecto.
No es el expediente completo. Quedan dos paneles que este servidor no sabe leer, los dos de apelaciones: los exhortos de la corte y la incompetencia. Su ausencia acá NO significa que la causa no los tenga. No se mapean porque no hay qué mapear: su tabla trae dos columnas, la primera en blanco y la segunda con el rótulo, y en la mitad de los detalles de apelaciones el panel ni siquiera aparece.
Advertencia
Tres paneles se leen con las columnas del encabezado y de ninguno se vio una fila Los escritos pendientes y la liquidación de laboral, y las causas agregadas de suprema. El sitio publica sus encabezados en la tabla vacía, así que el orden y la cantidad están medidos y la validación posicional protege igual; lo que no está medido es qué trae cada celda.
En sesenta y una causas abiertas a propósito para buscarlas, ninguna trajo una fila: son paneles de una etapa (la liquidación en cumplimiento, la acumulación en suprema) o de una cola transitoria. Se leen igual para que el día que una causa los traiga la respuesta los incluya en vez de descartarlos en silencio, y si el contenido de una celda resulta ser otra cosa, ese campo llegará vacío en vez de fallar.
Advertencia
La columna Anexo es un segundo canal de documentos, y sólo a veces se puede pedir. La
celda abre un modal de JavaScript que nombra dieciocho rutas, y se ofrecen cuatro paneles: los
medidos cuya referencia cuelga de una fila que este servidor lee. Las demás se declaran no
medidas en vez de pedirse a ciegas.
Cuando la actuación trae anexo_ruta y anexo_referencia con valor, obtener_anexos_escrito
entrega ese panel. Un folio con tiene_anexo en verdadero y anexo_ruta en nulo tiene algo
que este servidor no entrega: hay que ir al expediente. Vale igual para las piezas de exhorto:
PiezaExhorto declara el mismo campo, porque el panel de piezas publica la misma columna.
Importante
Preferir ésta antes que preguntar por partes Los paneles vienen juntos en la misma respuesta HTML. Pedirlos por separado multiplica las consultas contra la plataforma sin traer nada nuevo: preguntar cuatro cosas de una causa con dos cuadernos costaba dieciséis peticiones donde bastan cuatro, sin contar en ninguno de los dos las dos que abren la sesión.
Medido de punta a punta contra la plataforma el 20 de agosto de 2026, con C-1156-2026: seis peticiones, todas 200, con los dos cuadernos y el exhorto incluidos.
Cada campo distingue tres estados, y los dos últimos significan cosas distintas:
Valor |
Qué significa |
|---|---|
nulo |
Esta competencia no publica ese panel. La pregunta no tiene respuesta acá |
lista vacía |
El panel existe y no trae filas. Es una respuesta |
con elementos |
Lo que hay |
Campo |
Dónde existe |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Y un campo que no es un panel: causa_es_exhorto. Existe porque en piezas_exhorto el nulo
podía significar dos cosas, que la competencia no publica el panel o que esta causa no es
un exhorto, y meterlas en el mismo nulo borra la distinción que el resto del modelo protege.
|
Qué significa |
|---|---|
nulo |
La pregunta no está medida en esta competencia |
falso |
La causa no es un exhorto, y por eso |
verdadero |
Lo es, y |
Sale de la cabecera de la causa, no de que el panel esté presente: deducirlo de la presencia
ataría la afirmación a que la plataforma no renombre un id, y el día que lo renombre la
respuesta diría «esta causa no es un exhorto» en vez de «no pude leerlo».
Y otro que tampoco es un panel: audio_referencia, con qué se pide el listado de audios de las
audiencias de la causa. Viene con valor cuando la cabecera ofrece el enlace, o sea cuando hay
audiencia grabada, y eso es un dato en sí: la Historia dice que hubo audiencia, y esto dice
que quedó registrada. Nulo cuando no la hay y también cuando la competencia no está medida,
que hoy es todas salvo laboral. Se usa con listar_audios_audiencia.
causa_de_origen está en la tabla y tampoco trae filas: es la causa de la Corte de Apelaciones
desde la que subió el recurso, y cierra hacia abajo la misma clase de arista que los
exhortos cierran hacia el lado. Sólo suprema publica el panel.
Viene en nulo en dos casos, los dos medidos: la competencia no publica el panel, o la causa no subió desde una Corte de Apelaciones y el sitio no emite el panel. Lo segundo es tres de dieciséis causas de suprema, así que no es una rareza: exequátur, contienda de competencia y desafuero llegan a la Corte Suprema sin pasar por una corte.
Lo que levanta es el panel presente y sin sus cuatro datos, que nunca se observó: un rol sin corte no ubica ninguna causa, y media identidad se lee como que el sitio no la publica.
Importante
La corte viene por su nombre
causa_de_origen.corte dice C.A. DE CONCEPCIÓN, y las búsquedas piden un entero. Hay que
resolverlo con listar_cortes antes de consultar la causa apelada: pasar el nombre donde va el
código no devuelve un error, devuelve las causas de otra jurisdicción. Es la misma trampa que
el tribunal de destino de un exhorto.
El rol sí viene partido en rol y anio, que es como lo piden las búsquedas: el sitio lo
publica como 14988 - 2020, con espacios alrededor del guion.
El mismo dato como grafo, útil para ver de un vistazo qué competencia sirve para qué pregunta. Se genera desde el código igual que la tabla, así que no puede quedar viejo:
graph LR
apelaciones --> historia
civil --> historia
cobranza --> historia
laboral --> historia
suprema --> historia
apelaciones --> litigantes
civil --> litigantes
cobranza --> litigantes
laboral --> litigantes
suprema --> litigantes
civil --> notificaciones
cobranza --> notificaciones
laboral --> notificaciones
cobranza --> liquidaciones
laboral --> liquidaciones
cobranza --> diligencias
laboral --> diligencias
laboral --> materias
civil --> exhortos
civil --> piezas_exhorto
suprema --> causa_de_origen
penal --> nada["ningún panel medido"]
Y los tres estados que hay que respetar al informar. La rama de la izquierda es la que este proyecto existe para no borrar: «acá no se informa» no es «no ocurrió».
graph TD
P["Se pide el detalle"] --> E{"¿la búsqueda<br/>encontró el rol?"}
E -->|no| NF["causa_encontrada: false<br/>y TODO lo demás en nulo"]
E -->|sí| C{"¿esta competencia<br/>publica el panel?"}
C -->|no| N["nulo<br/>la pregunta no tiene respuesta acá"]
C -->|sí| F{"¿el panel<br/>trae filas?"}
F -->|no| V["lista vacía<br/>ES una respuesta: no ocurrió"]
F -->|sí| D["las filas"]
Advertencia
Al computar plazos
fecha_diligencia de la historia trae dato sólo en civil. En cobranza la plataforma no
publica cuándo se practicó la diligencia, así que ahí no hay de dónde leerla: computar desde
fecha_registro sería computar desde cuándo el tribunal la asentó, que es otra fecha.
El panel notificaciones incluye las no practicadas, que se distinguen por su estado:
una fila pendiente no hizo correr ningún plazo. Y llega vacío en causas cuya demanda sí se
notificó, medido en C-1156-2026: la pregunta de si se notificó se responde con las
actuaciones del ministro de fe, no con este panel.
Los litigantes traen RUT de personas naturales: son datos personales de terceros.
Y si exhortos trae algo, parte de la tramitación ocurre en otro expediente: el exhorto
abre una causa nueva en el tribunal destino, con su propio rol, y las actuaciones de esa parte
no están acá. Un plazo que corre por una diligencia exhortada no se computa desde esta causa.
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
str |
Letra del rol en civil, cobranza y laboral; el libro en apelaciones, el código del libro en penal, o VACÍO en suprema |
|
int |
Número, sin la letra ni el año |
|
int |
Año, cuatro dígitos |
|
str |
Las verificadas. |
|
int, opcional |
Código del tribunal |
|
int, opcional |
Omitir salvo certeza |
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "obtener_detalle_causa",
"inputSchema": {
"properties": {
"tipo": {
"description": "Letra del rol en civil, cobranza y laboral; en civil son C, V, E, A, F o I y en cobranza A C D E J L P R y en laboral O, medidas. En apelaciones va el LIBRO en vez de una letra (por ejemplo 'Protección' o 'Exhorto'): ahí el número de rol se repite entre libros, así que sin él la consulta es ambigua y la herramienta falla en vez de abrir la causa equivocada. En penal el rol también lleva libro pero se busca por su CÓDIGO: medido, '1' es Ordinaria, y con el nombre el listado vuelve vacío. En suprema el rol no lleva nada adelante y este campo va VACÍO.",
"title": "Tipo",
"type": "string"
},
"rol": {
"description": "Número del rol, sin la letra ni el año.",
"minimum": 1,
"title": "Rol",
"type": "integer"
},
"anio": {
"description": "Año del rol, cuatro dígitos.",
"maximum": 2100,
"minimum": 1900,
"title": "Anio",
"type": "integer"
},
"competencia": {
"default": "civil",
"description": "Una de: apelaciones, civil, cobranza, laboral, suprema. Son aquellas con al menos un panel del detalle medido contra una respuesta real.",
"title": "Competencia",
"type": "string"
},
"tribunal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código del tribunal. Esta herramienta devuelve UNA causa, así que el tribunal no acota nada: la identifica. En civil, cobranza, laboral y penal, donde un rol sin tribunal no identifica una causa: la búsqueda lo devuelve de cada juzgado que lo tenga, y en civil eso midió 43 causas de 43 personas distintas para un solo rol, sin él la llamada falla por ambigüedad en vez de abrir la causa de otra persona. En apelaciones eso lo hace `corte`, y en suprema no hace falta ninguno de los dos.",
"title": "Tribunal"
},
"corte": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de la corte. Esta herramienta devuelve UNA causa, así que la corte no acota nada: la identifica. En apelaciones el mismo rol y el mismo libro existen en varias cortes, y sin ella la llamada falla por ambigüedad. En el resto, OMITIR salvo certeza: fijarla produce falsos negativos, porque excluye causas radicadas en otra jurisdicción.",
"title": "Corte"
}
},
"required": [
"tipo",
"rol",
"anio"
],
"title": "obtener_detalle_causaArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"Actuacion": {
"description": "Una fila de la tabla Historia.",
"properties": {
"folio": {
"title": "Folio",
"type": "string"
},
"etapa": {
"title": "Etapa",
"type": "string"
},
"tramite": {
"title": "Tramite",
"type": "string"
},
"desc_tramite": {
"description": "Texto literal de la celda, sin normalizar.",
"title": "Desc Tramite",
"type": "string"
},
"fecha_diligencia": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha real de la diligencia del receptor, en ISO 8601. ES LA QUE CUENTA PARA LOS PLAZOS PROCESALES. Nula si la fila no la informa.",
"title": "Fecha Diligencia"
},
"hora_diligencia": {
"anyOf": [
{
"format": "time",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Hora de la diligencia, cuando la descripción la trae.",
"title": "Hora Diligencia"
},
"fecha_registro": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha en que el trámite se registró en el sistema, en ISO 8601. NO es la que corre los plazos.",
"title": "Fecha Registro"
},
"discrepancia_fechas": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Si las DOS fuentes de `fecha_diligencia` discrepan: la que va entre paréntesis en 'Fec. Trámite' y la del texto 'Diligencia:'. NO compara contra `fecha_registro`; que esas dos difieran es lo normal. NULO cuando falta una de las dos fuentes: ahí no hay nada que comparar, y un falso diría que concuerdan.",
"title": "Discrepancia Fechas"
},
"cuaderno": {
"default": "",
"description": "Cuaderno al que pertenece la actuación. Ej: '0 - Principal'.",
"title": "Cuaderno",
"type": "string"
},
"foja": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Foja del expediente. La publica civil; cobranza no la trae, y ahí es ausente y no vacía.",
"title": "Foja"
},
"estado_firma": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Estado de firma del trámite. La publica cobranza en lugar de la foja; civil no la trae.",
"title": "Estado Firma"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Estado del trámite. La publican laboral, suprema y apelaciones.",
"title": "Estado"
},
"sala": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sala que resolvió el trámite. Sólo en suprema y en Cortes de Apelaciones, donde forma parte de cómo se cita el fallo.",
"title": "Sala"
},
"correlativo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Correlativo interno del trámite. Sólo en suprema.",
"title": "Correlativo"
},
"anio_tramite": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Año que suprema publica en columna aparte, además de la fecha.",
"title": "Anio Tramite"
},
"georreferenciado": {
"description": "Si el sitio OFRECE la georreferencia de esta actuación, no si existe.\n\nEstá medido que no es lo mismo: el 20 de agosto de 2026, una de las seis actuaciones georreferenciadas de C-1156-2026 abría un panel que responde 'No existen Georreferencia para mostrar'. Verdadero significa que hay dónde preguntar, y confirmarlo cuesta una petición por actuación.\n\nFalso significa AUSENTE **sólo donde la competencia publica la columna**, y ahí sí puede ser jurídicamente relevante (art. 9 inc. 3 Ley 20.886). Suprema no la publica, así que su falso significa que no hay dónde mirar, no que la diligencia no se georreferenció. Mirar `COMPETENCIAS[competencia].historia.columnas` para saber cuál de las dos cosas es.",
"title": "Georreferenciado",
"type": "boolean"
},
"tiene_documento": {
"description": "Si la columna `Doc.` del folio ofrece algo. Verdadero NO garantiza que este servidor pueda traerlo: cuando `documento_ruta` viene en nulo, la celda abre el documento con un modal de JavaScript cuyo endpoint no está medido.",
"title": "Tiene Documento",
"type": "boolean"
},
"tiene_anexo": {
"default": false,
"description": "Si la columna `Anexo` del folio ofrece algo. Es un SEGUNDO canal de documentos, distinto de `Doc.`: un folio puede traer la resolución en uno y los anexos del escrito en el otro.\n\nSe puede pedir SÓLO donde `anexo_referencia` viene con valor. En las demás la celda abre un modal de JavaScript cuya ruta no está verificada contra la plataforma, así que verdadero significa que hay algo y no que este servidor lo pueda traer.\n\nSe publica igual porque el silencio es peor. Sin este campo, un folio con anexo se veía idéntico a uno sin nada, y quien preguntara por los documentos de la causa recibía una respuesta que parecía completa. Verdadero significa: acá hay algo que hay que ir a buscar al expediente.\n\nFalso significa AUSENTE sólo donde la competencia publica la columna. En `penal` no hay tabla de Historia medida, así que ahí no se sabe.",
"title": "Tiene Anexo",
"type": "boolean"
},
"documento_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta de la plataforma entrega ese documento. Cada competencia usa la suya. NULO cuando la actuación no trae documento.",
"title": "Documento Ruta"
},
"georreferencia_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se pide la georreferencia de esta actuación. NULO cuando la competencia no publica la columna o la actuación no la ofrece.\n\nTenerla no garantiza que haya georreferencia: está medido que una de seis abre un panel que responde que no existe ninguna.",
"title": "Georreferencia Referencia"
},
"anexo_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta de la plataforma entrega los anexos de este folio. Va junto con `anexo_referencia` y hacen falta las dos, igual que para el documento: una misma competencia abre paneles distintos según el trámite, y civil tiene dos con parámetros distintos.",
"title": "Anexo Ruta"
},
"anexo_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se piden los anexos de este folio. NULO cuando el folio no trae anexo, y también cuando lo trae por un panel que no está medido: ahí `tiene_anexo` queda en verdadero y esto en nulo, que significa que hay anexos y este servidor no los puede traer.",
"title": "Anexo Referencia"
},
"documento_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La referencia opaca con la que la plataforma identifica ese documento. Junto con `documento_ruta` es lo único que permite pedirlo después: sin ellas se sabe que el documento existe y no cuál es. NULO cuando la actuación no trae documento.",
"title": "Documento Referencia"
}
},
"required": [
"folio",
"etapa",
"tramite",
"desc_tramite",
"georreferenciado",
"tiene_documento"
],
"title": "Actuacion",
"type": "object"
},
"CausaAgregada": {
"description": "Otra causa que se ve JUNTO con ésta en la Corte Suprema.\n\nEs lo que la plataforma rotula \"Agregados\". No es la causa de origen ni un exhorto: son\ncausas distintas que el tribunal ve en la misma cuenta, así que lo que ocurra en ellas puede\nresolverse el mismo día y no aparece en la historia de ésta.\n\n**Sus columnas salen del encabezado y ninguna fila se ha visto.** El panel vino vacío en las\nveintidós causas de suprema que se abrieron para medirlo, así que lo que trae cada celda no\nestá comprobado: si una publica un formulario donde acá se lee texto, el campo va a salir\nvacío en vez de fallar.",
"properties": {
"folio": {
"default": "",
"description": "Folio con que la causa agregada figura acá.",
"title": "Folio",
"type": "string"
},
"anio": {
"default": "",
"description": "Año que el panel publica en columna aparte.",
"title": "Anio",
"type": "string"
},
"rit": {
"default": "",
"description": "Rol de la causa agregada.",
"title": "Rit",
"type": "string"
},
"tribunal": {
"default": "",
"description": "Tribunal de esa causa, por su nombre.",
"title": "Tribunal",
"type": "string"
},
"materia": {
"default": "",
"description": "Qué se litiga en ella.",
"title": "Materia",
"type": "string"
},
"caratulado": {
"default": "",
"description": "Carátula de esa causa.",
"title": "Caratulado",
"type": "string"
},
"documento_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta entrega su documento, si la fila lo trae.",
"title": "Documento Ruta"
},
"documento_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se pide. Va junto con su ruta.",
"title": "Documento Referencia"
}
},
"title": "CausaAgregada",
"type": "object"
},
"CausaDeOrigen": {
"description": "La causa de la Corte de Apelaciones de la que subió el recurso.\n\nCierra la arista hacia ABAJO, igual que `Exhorto` la cierra hacia el lado: sin esto el\ndetalle de una causa de la Corte Suprema dice que hubo una apelación y no dice dónde está\nla causa apelada, que es donde vive todo lo que ocurrió antes.\n\nLos cuatro rótulos del panel son UN dato, la identidad de una causa, y por eso ninguno\nviaja en nulo: el mismo número de rol existe en las diecisiete cortes y, dentro de una, en\nvarios libros a la vez. Un rol sin corte no ubica nada.",
"properties": {
"corte": {
"description": "NOMBRE de la Corte de Apelaciones, tal como el sitio lo emite. Ej: 'C.A. DE CONCEPCIÓN'. NO es el código que las búsquedas exigen: para consultar esta causa hay que resolverlo con `listar_cortes` y pasar el entero, igual que con el tribunal de destino de un exhorto. Pasar el nombre donde va el código no devuelve un error, devuelve las causas de otra jurisdicción.",
"title": "Corte",
"type": "string"
},
"libro": {
"description": "Libro en que la corte tramitó el recurso. Ej: 'Protección'. Es lo que va en `tipo` al buscar en apelaciones, que es la única competencia donde el rol lleva el libro adelante en vez de una letra: sin él, `14988-2020` no identifica una causa.",
"title": "Libro",
"type": "string"
},
"rol": {
"description": "Número de rol en la corte, sin el libro ni el año. El sitio lo publica junto al año y con espacios alrededor del guion ('14988 - 2020'); se entrega partido porque es así como lo piden las búsquedas de este servidor, que exigen enteros.",
"title": "Rol",
"type": "integer"
},
"anio": {
"description": "Año de ingreso a la corte, cuatro dígitos.",
"title": "Anio",
"type": "integer"
},
"recurso": {
"description": "Qué se recurrió, tal como el sitio lo emite y sin normalizar. Ej: '(Civil) Apelación Protección'.",
"title": "Recurso",
"type": "string"
}
},
"required": [
"corte",
"libro",
"rol",
"anio",
"recurso"
],
"title": "CausaDeOrigen",
"type": "object"
},
"Diligencia": {
"description": "Una diligencia del ministro de fe. La publican cobranza y laboral.\n\nEn cobranza es el panel donde se guardan de verdad: su tabla de Historia nombra algunas\ncomo `Actuacion - Receptor`, sin tilde y con guion, y ninguna trae fecha de diligencia,\nasí que leerlas de ahí daría una lista parcial y sin el dato que se busca.\n\nNo es una `Actuacion` y no se puede tratar como tal. Una actuación de civil trae la fecha\ndoble que corre los plazos; acá el sitio publica una sola columna de fecha, y en la fila\nmedida trae el valor cero.",
"properties": {
"estado": {
"description": "Si la diligencia se practicó, y HAY QUE MIRARLO antes de leer la fecha. Valor medido: 'cumplida'. Que la fecha venga nula NO significa que no se practicó: significa que el sitio no publicó ninguna.",
"title": "Estado",
"type": "string"
},
"tipo": {
"description": "Qué diligencia es. Ej: 'Oficios Varios 3'. Es lo que el sitio imprime, sin normalizar: dos causas pueden escribir distinto la misma diligencia.",
"title": "Tipo",
"type": "string"
},
"fecha_tramite": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La única fecha que el panel publica, en ISO 8601. NO es la fecha de diligencia de civil: acá no viene la fecha doble, así que no se puede afirmar cuándo el ministro de fe la practicó. NULA también cuando el sitio imprime `31/12/1969`, que es el valor cero renderizado como fecha y no una diligencia de 1969: informarla haría computar un plazo desde ahí.",
"title": "Fecha Tramite"
},
"destinatario": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A quién se dirige la diligencia. Medido: 'No Asignado', o sea el panel publica la fila antes de que haya alguien encargado de practicarla. NULO en laboral, que no publica la columna.",
"title": "Destinatario"
},
"responsable": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Quién figura a cargo de la diligencia, tal como lo publica el sitio. Es el nombre de una persona natural: es un dato personal de un tercero. NULO en laboral, que no publica la columna.",
"title": "Responsable"
},
"referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se despachó la diligencia, como lo rotula el sitio. Medido en laboral: 'Envío Automatico'. NULO en cobranza, que no publica la columna.",
"title": "Referencia"
},
"documento_ida_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta entrega el oficio DESPACHADO. NULO cuando la fila no lo trae, y también en cobranza, donde sólo está medido el caso sin documento.",
"title": "Documento Ida Ruta"
},
"documento_ida_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se pide ese documento. Va junto con su ruta.",
"title": "Documento Ida Referencia"
},
"documento_vuelta_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta entrega el oficio que VOLVIÓ. Su ausencia es un dato: está medido que una diligencia `enviada` trae sólo el de ida, y una `cumplida` los dos.",
"title": "Documento Vuelta Ruta"
},
"documento_vuelta_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se pide ese documento. Va junto con su ruta.",
"title": "Documento Vuelta Referencia"
},
"rit": {
"description": "RIT de la causa A LA QUE la diligencia se dirige, que NO es necesariamente la que se consultó. Leerlo como el RIT de esta causa haría informar como propia una diligencia de otro expediente.",
"title": "Rit",
"type": "string"
},
"ruc": {
"description": "RUC de esa misma causa, con el mismo cuidado que `rit`: es de la causa destinataria de la diligencia, no de la consultada.",
"title": "Ruc",
"type": "string"
}
},
"required": [
"estado",
"tipo",
"rit",
"ruc"
],
"title": "Diligencia",
"type": "object"
},
"EscritoPendiente": {
"description": "Un escrito presentado que el tribunal todavía NO resuelve.\n\nEl sitio rotula la pestaña \"Escritos por Resolver\" en civil y \"Escritos Pendientes\" en\nlaboral. No es el listado de todo lo presentado: es la cola de lo que espera proveído, y\npor eso una causa con años de tramitación suele traerla vacía mientras una de esta semana\ntrae dos.\n\nEs lo que responde \"¿ya me proveyeron el escrito?\", que es una pregunta distinta de la que\nresponde la Historia, donde el escrito aparece cuando YA fue resuelto.",
"properties": {
"fecha_ingreso": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuándo ingresó el escrito, en ISO 8601. NO es una fecha de plazos: el plazo lo corre la resolución que recaiga, y todavía no la hay.",
"title": "Fecha Ingreso"
},
"tipo": {
"default": "",
"description": "Qué se pidió, como lo rotula el sitio. Ej: 'Ingreso Solicitud', 'Ingreso Exhorto', 'Designación de Martillero'.",
"title": "Tipo",
"type": "string"
},
"solicitante": {
"default": "",
"description": "Quién lo presentó, por su calidad procesal y no por su nombre. Ej: 'Demandante'.",
"title": "Solicitante",
"type": "string"
},
"referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo que laboral publica en su columna `Referencia`. NULO en civil, que no la publica, y en laboral mientras no se vea una fila: su contenido no está medido.",
"title": "Referencia"
},
"tiene_documento": {
"default": false,
"description": "Si la columna `Doc.` del escrito ofrece algo.",
"title": "Tiene Documento",
"type": "boolean"
},
"documento_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta entrega el escrito mismo. NULO cuando la fila no trae formulario.",
"title": "Documento Ruta"
},
"documento_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La referencia opaca con la que se pide ese documento. Junto con `documento_ruta` es lo único que permite traerlo.",
"title": "Documento Referencia"
},
"tiene_anexo": {
"default": false,
"description": "Si el escrito acompañó documentos. Mismo segundo canal que en la Historia: `Doc.` trae el escrito y `Anexo` los papeles que se acompañaron.",
"title": "Tiene Anexo",
"type": "boolean"
},
"anexo_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A qué panel se piden esos anexos, para `obtener_anexos_escrito`. NULO cuando el escrito no trae anexo o cuando su panel no está medido.",
"title": "Anexo Ruta"
},
"anexo_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se piden. NULO por las mismas dos razones.",
"title": "Anexo Referencia"
}
},
"title": "EscritoPendiente",
"type": "object"
},
"Exhorto": {
"description": "Una causa que este tribunal despachó a otro para que practique una diligencia.\n\nSe ve desde el tribunal de ORIGEN: `rol_destino` es la causa que se abrió en el otro\ntribunal, y ahí viven las actuaciones que este expediente no muestra. Un plazo que corre\npor una diligencia exhortada NO se computa desde acá.",
"properties": {
"rol_origen": {
"description": "El rol de esta causa, la que ordena el exhorto.",
"title": "Rol Origen",
"type": "string"
},
"rol_destino": {
"description": "El rol que la causa recibió en el tribunal destino.",
"title": "Rol Destino",
"type": "string"
},
"tribunal_destino": {
"description": "Tribunal que debe practicar la diligencia.",
"title": "Tribunal Destino",
"type": "string"
},
"tipo": {
"default": "",
"description": "Tipo de exhorto, según el sitio.",
"title": "Tipo",
"type": "string"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Estado del exhorto. Medido: 'Generado'. Otros valores no se conocen.",
"title": "Estado"
},
"fecha_orden": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuándo el tribunal ordenó despacharlo.",
"title": "Fecha Orden"
},
"fecha_ingreso": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuándo ingresó al tribunal destino.",
"title": "Fecha Ingreso"
},
"referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La referencia con la que la plataforma abre el detalle de este exhorto. Se guarda para cuando ese panel esté medido: hoy no hay herramienta que la use.",
"title": "Referencia"
}
},
"required": [
"rol_origen",
"rol_destino",
"tribunal_destino"
],
"title": "Exhorto",
"type": "object"
},
"Liquidacion": {
"description": "Una liquidación del crédito. La publican cobranza y laboral.\n\nUna causa acumula liquidaciones sucesivas: la MÁS RECIENTE es la vigente y las anteriores\nson el historial. NO se suman. La causa medida fue de $4.481.885 en 2019 a $24.563.365 en\n2022, así que sumarlas informaría una deuda inflada varias veces.",
"properties": {
"fecha": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha de la liquidación, en ISO 8601. Ordena el historial: la más reciente es la vigente y las anteriores NO se suman a ella. NULA en laboral, que no publica la columna: ahí no hay con qué ordenarlas, así que cuál es la vigente no se sabe.",
"title": "Fecha"
},
"cuaderno": {
"default": "",
"description": "Cuaderno al que corresponde.",
"title": "Cuaderno",
"type": "string"
},
"estado": {
"default": "",
"description": "Estado de la liquidación. Ej: 'Firmado'.",
"title": "Estado",
"type": "string"
},
"monto": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Monto líquido en pesos, sin separadores. Es el total adeudado A ESA FECHA, no un cargo que se sume a los demás: la deuda vigente es el monto de la liquidación más reciente. NULO si no se pudo leer con la forma medida, y nulo NO es cero, que sería una deuda saldada.\n\nLa forma medida es la de cobranza (`$24.563.365.-`). En laboral el panel nunca trajo una fila, así que si imprime el monto de otra manera esto va a venir nulo con `monto_publicado` lleno, y ahí el dato está en el segundo.",
"title": "Monto"
},
"monto_publicado": {
"description": "El monto tal como lo imprime el sitio, ej: '$24.563.365.-'. Se conserva porque es lo que aparece en el expediente y es contra lo que alguien va a comparar.",
"title": "Monto Publicado",
"type": "string"
},
"rut": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A QUIÉN se le paga, en las liquidaciones de laboral. Es un RUT de persona natural: dato personal de un tercero. NULO en cobranza, que liquida el crédito por documento y no por persona, y también mientras el panel de laboral no traiga una fila: su contenido sale del encabezado y nadie lo ha visto lleno.",
"title": "Rut"
},
"nombre": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "El nombre de esa persona, tal como el sitio lo publica. NULO en cobranza por lo mismo.",
"title": "Nombre"
}
},
"required": [
"monto_publicado"
],
"title": "Liquidacion",
"type": "object"
},
"Litigante": {
"description": "Una parte de la causa, con su calidad procesal.\n\nTrae RUT de personas naturales. Es lo que la plataforma publica y lo que identifica a una\nparte sin ambigüedad, y por eso se entrega: dos personas pueden llamarse igual. Quien\nconecte este servidor debe saber que recibe datos personales de terceros.",
"properties": {
"sujeto": {
"description": "Calidad procesal. Ej: 'DTE.' demandante, 'DDO.' demandado, 'RECURRIDO'.",
"title": "Sujeto",
"type": "string"
},
"nombre": {
"description": "Nombre o razón social, tal como lo publica el sitio.",
"title": "Nombre",
"type": "string"
},
"rut": {
"default": "",
"description": "RUT con dígito verificador, como lo publica el sitio.",
"title": "Rut",
"type": "string"
},
"persona": {
"default": "",
"description": "Si es persona 'NATURAL' o 'JURIDICA', según el sitio.",
"title": "Persona",
"type": "string"
},
"abogado_defensor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Si tiene abogado defensor. Sólo laboral publica la columna.",
"title": "Abogado Defensor"
},
"estado": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Estado de la parte, tal como el sitio lo emite: la clase del icono, sin interpretar. Sólo laboral publica la columna, y ahí NUNCA es nulo. Un nulo significa que esta competencia no publica el dato, no que la parte no tenga estado.",
"title": "Estado"
}
},
"required": [
"sujeto",
"nombre"
],
"title": "Litigante",
"type": "object"
},
"Materia": {
"description": "Una materia de la causa: qué se está litigando.",
"properties": {
"codigo": {
"description": "Código de la materia en la nomenclatura del sitio. Ej: 'L021'.",
"title": "Codigo",
"type": "string"
},
"glosa": {
"description": "Qué es. Ej: 'Despido injustificado', 'Feriado legal'.",
"title": "Glosa",
"type": "string"
},
"estado": {
"default": "",
"description": "Estado de esa materia. Ej: 'Sentencia'.",
"title": "Estado",
"type": "string"
},
"fecha_termino": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha de término de la materia, en ISO 8601.",
"title": "Fecha Termino"
}
},
"required": [
"codigo",
"glosa"
],
"title": "Materia",
"type": "object"
},
"Notificacion": {
"description": "Una fila del panel de notificaciones.",
"properties": {
"estado": {
"description": "Si la notificación se practicó, y HAY QUE MIRARLO: la lista incluye intentos que NO se practicaron. Valores medidos: 'Realizada' en civil y laboral, 'Pendiente' en laboral, 'realizada' y 'enviada' en cobranza. Una fila 'Pendiente' significa que la notificación no se ha practicado, así que su fecha NO hizo correr ningún plazo. 'enviada' es una carta despachada, que no es lo mismo que notificada.",
"title": "Estado",
"type": "string"
},
"tipo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Vía por la que se notificó: 'mail', 'carta'. Laboral no la trae.",
"title": "Tipo"
},
"fecha_notificacion": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuándo se practicó la notificación, en ISO 8601. NULO donde la competencia no publica esta columna: sólo cobranza la trae. Nulo significa que el dato no está, NO que coincida con la fecha de trámite.",
"title": "Fecha Notificacion"
},
"fecha_tramite": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha del trámite notificado, en ISO 8601. Es la única que publican civil y laboral. NO es por sí sola la fecha en que se notificó: mirar `estado` antes de computar un plazo con ella.",
"title": "Fecha Tramite"
},
"tipo_parte": {
"description": "Calidad de quien fue notificado. Ej: 'AB.DTE.' abogado demandante, 'DDO.' demandado.",
"title": "Tipo Parte",
"type": "string"
},
"nombre": {
"description": "Nombre de quien fue notificado, tal como lo publica el sitio.",
"title": "Nombre",
"type": "string"
},
"tramite": {
"default": "",
"description": "Qué se notificó. Ej: 'resolución'.",
"title": "Tramite",
"type": "string"
},
"observacion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Por qué falló la notificación, cuando falló. Cobranza no trae la columna.",
"title": "Observacion"
},
"rol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Rol de la causa. Sólo civil lo repite acá.",
"title": "Rol"
}
},
"required": [
"estado",
"tipo_parte",
"nombre"
],
"title": "Notificacion",
"type": "object"
},
"PiezaExhorto": {
"description": "Un trámite de la causa de ORIGEN que vino junto con el exhorto.\n\nNO es una actuación de esta causa, y por eso no comparte tipo con `Actuacion` ni viaja en\n`historia`: es tramitación que ocurrió en el otro tribunal, antes de que el exhorto llegara,\ny es lo que el tribunal exhortado tuvo a la vista. Los plazos de esta causa no se computan\ndesde acá.",
"properties": {
"folio": {
"title": "Folio",
"type": "string"
},
"cuaderno": {
"default": "",
"description": "Cuaderno de la causa de ORIGEN al que pertenece la pieza.",
"title": "Cuaderno",
"type": "string"
},
"etapa": {
"default": "",
"description": "Etapa en que la causa de origen la despachó.",
"title": "Etapa",
"type": "string"
},
"tramite": {
"default": "",
"description": "Tipo de trámite. Ej: 'Resolución', 'Escrito'.",
"title": "Tramite",
"type": "string"
},
"desc_tramite": {
"default": "",
"description": "Texto literal de la celda, sin normalizar.",
"title": "Desc Tramite",
"type": "string"
},
"fecha_registro": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuándo el tribunal de origen registró el trámite, en ISO 8601.",
"title": "Fecha Registro"
},
"fecha_diligencia": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La fecha entre paréntesis, cuando la celda trae las dos. Nula en las seis piezas medidas: ahí el sitio publica una sola fecha en esta columna.",
"title": "Fecha Diligencia"
},
"foja": {
"default": "",
"description": "Foja del expediente de origen.",
"title": "Foja",
"type": "string"
},
"tiene_documento": {
"description": "Si la columna `Doc.` de la pieza ofrece algo.",
"title": "Tiene Documento",
"type": "boolean"
},
"tiene_anexo": {
"default": false,
"description": "Si la columna `Anexo` de la pieza ofrece algo. Es el mismo canal que `Actuacion.tiene_anexo`, pero acá NO se puede pedir: las piezas sólo están medidas en civil, y de las rutas de anexo sólo se ejecutó la de laboral. Por eso esta pieza no trae referencia de anexo y la actuación laboral sí. La pieza puede traer su documento principal y un anexo aparte.",
"title": "Tiene Anexo",
"type": "boolean"
},
"documento_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta de la plataforma entrega ese documento. NULO si no trae.",
"title": "Documento Ruta"
},
"documento_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La referencia opaca con la que la plataforma identifica ese documento. Junto con `documento_ruta` es lo único que permite pedirlo después. NULO si no trae.",
"title": "Documento Referencia"
}
},
"required": [
"folio",
"tiene_documento"
],
"title": "PiezaExhorto",
"type": "object"
}
},
"description": "Los paneles MAPEADOS del detalle, leídos de una sola vez. No es el expediente completo.\n\nDecirlo es parte del contrato, porque la ausencia se lee como inexistencia. Quedan dos\npaneles sin mapear, los dos de apelaciones: los exhortos de la corte y la incompetencia. Lo\nque no está acá **no está dicho**, no está negado.\n\nNo se mapean porque no hay qué mapear: su tabla trae dos columnas, la primera en blanco y la\nsegunda con el rótulo, y en la mitad de los detalles de apelaciones el panel ni siquiera\naparece.\n\nY tres de los que SÍ se leen tienen las columnas medidas del encabezado y ninguna fila\nobservada, que es otra cosa que conviene saber: `SIN_FILAS_OBSERVADAS` los nombra.\n\nY dos canales que sí se pueden pedir y NO vienen incluidos, porque cuestan una petición\naparte cada uno: los anexos de un folio, con `anexo_ruta` y `anexo_referencia` de su\nactuación, y el listado de audios de audiencia, con `audio_referencia`. Que esos campos\nvengan con valor significa que hay algo que este servidor puede traer y todavía no trajo.\n\nCada campo distingue tres estados, y la diferencia entre los dos últimos es la que este\nproyecto existe para no borrar:\n\n- `None`: esta competencia NO publica ese panel. La pregunta no tiene respuesta acá.\n- `[]`: el panel existe y no trae filas. Es una respuesta: no hay notificaciones\n practicadas, no hay liquidaciones, no hay exhortos despachados.\n\nDos paneles NO pueden venir vacíos y por eso no están en esa lista: `litigantes`, porque\nuna causa sin partes no existe, y `materias`, porque una causa laboral sin materia tampoco.\nSi el sitio los devuelve sin filas se levanta en vez de publicar la lista vacía.\n- Con elementos: lo que hay.\n\nDevolver lista vacía en el primer caso las haría indistinguibles, y \"esta competencia no lo\ninforma\" se leería como \"no ocurrió\".\n\n`piezas_exhorto` trae un cuarto caso que esos tres no saben decir. El panel existe en civil,\npero sólo en las causas que SON un exhorto: \"esta competencia no lo publica\" y \"esta causa\nno es un exhorto\" son cosas distintas, y meter las dos en `None` borra justo la distinción\nque la lista de arriba protege. Por eso viaja al lado `causa_es_exhorto`, con el mismo\noficio que `causa_encontrada`: nombrar cuál de los dos silencios es éste.\n\n`causa_de_origen` no es una lista, así que nunca viene en `[]`: o trae entera la causa de\nla que subió el recurso, o viene en nulo porque la competencia no publica ese panel. Un\npanel presente que no se entiende levanta, y no se degrada a campos vacíos.",
"properties": {
"causa_encontrada": {
"default": true,
"description": "Falso cuando la búsqueda no dio con el rol pedido. En ese caso TODOS los demás campos vienen en nulo por no haber causa que leer, NO porque la competencia no publique esos paneles: sin este campo las dos situaciones se verían iguales.",
"title": "Causa Encontrada",
"type": "boolean"
},
"historia": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Actuacion"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Todas las actuaciones, de todos los cuadernos. NULO si la competencia no tiene su panel de historia medido.",
"title": "Historia"
},
"litigantes": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Litigante"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Quiénes son parte y con qué calidad procesal. Trae RUT de personas naturales: son datos personales de terceros.",
"title": "Litigantes"
},
"notificaciones": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Notificacion"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Notificaciones practicadas Y no practicadas. Mirar `estado` antes de computar un plazo con sus fechas.",
"title": "Notificaciones"
},
"liquidaciones": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Liquidacion"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo publican cobranza y laboral, y NO es la misma pregunta: cobranza liquida el crédito por documento y fecha, y laboral publica a quién se le paga, sin fecha. Que la más reciente sea la vigente vale donde hay fecha con qué ordenarlas.",
"title": "Liquidaciones"
},
"diligencias": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Diligencia"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Diligencias del ministro de fe, con su estado y quién figura a cargo. Lo publican cobranza y laboral. En la fila de cobranza medida su fecha NO es la que corre los plazos: el sitio imprime el valor cero y se entrega en nulo. En laboral no está medida.",
"title": "Diligencias"
},
"materias": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Materia"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué se litiga. Sólo laboral publica el panel.",
"title": "Materias"
},
"exhortos": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Exhorto"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Causas que este tribunal despachó a otro. Una lista con elementos significa que parte de la tramitación ocurre en OTRO expediente, y las actuaciones de esa parte no están acá.",
"title": "Exhortos"
},
"causa_es_exhorto": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Si ESTA causa es un exhorto: una que otro tribunal abrió acá para que se practiquen diligencias suyas. Sale de la cabecera de la causa, no de qué paneles llegaron. NULO significa que la competencia no tiene la pregunta medida, NO que la causa no lo sea: sin este campo, `piezas_exhorto` en nulo diría las dos cosas a la vez.",
"title": "Causa Es Exhorto"
},
"audio_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué se pide el listado de audios de las audiencias de esta causa, si las tiene. NULO cuando la causa no ofrece grabación y también cuando su competencia no está medida: sólo laboral lo está.\n\nQue venga con valor significa que HAY audiencia grabada, que es un dato en sí: la Historia dice que hubo audiencia, y esto dice que quedó registrada.",
"title": "Audio Referencia"
},
"causa_de_origen": {
"anyOf": [
{
"$ref": "#/$defs/CausaDeOrigen"
},
{
"type": "null"
}
],
"default": null,
"description": "La causa de la Corte de Apelaciones desde la que subió el recurso. Es cómo se sigue la causa hacia abajo: sin ella el detalle dice que hubo apelación y no dice dónde está lo que ocurrió antes. Sólo suprema publica el panel, y en las demás viene en NULO por eso, no porque la causa no venga de ninguna parte.\n\nSu `corte` es el NOMBRE y las búsquedas piden el código: se resuelve con `listar_cortes` antes de consultarla."
},
"escritos_pendientes": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/EscritoPendiente"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Los escritos presentados que el tribunal todavía NO resuelve. La lista vacía es una respuesta: no queda nada por proveer. NULO si la competencia no tiene medido el panel.",
"title": "Escritos Pendientes"
},
"causas_agregadas": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/CausaAgregada"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Las causas que se ven JUNTO con ésta en la Corte Suprema. La lista vacía es lo normal y es una respuesta. NULO donde la competencia no publica el panel.",
"title": "Causas Agregadas"
},
"piezas_exhorto": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/PiezaExhorto"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Los trámites que el tribunal de ORIGEN despachó junto con el exhorto, o sea lo que este tribunal tuvo a la vista. NO son actuaciones de esta causa y no corren sus plazos. Viene en nulo cuando `causa_es_exhorto` no es verdadero, y ese campo dice cuál de las dos ausencias es.",
"title": "Piezas Exhorto"
}
},
"title": "DetalleCausa",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
obtener_georreferencia¶
Dónde y cuándo el ministro de fe registró que practicó una diligencia. Es el registro del art. 9 inc. 3 de la Ley 20.886.
Parámetro |
Qué es |
|---|---|
|
Lo entrega cada actuación. Cuando viene nula, esa actuación no la ofrece |
|
Sólo las que publican la columna. Suprema no la publica |
Importante
Trae la única hora del proyecto Las dos fechas de la Historia son del día. Ésta viene del aparato con que se tomó la coordenada, así que es una tercera fuente sobre cuándo ocurrió la diligencia, independiente de las dos que el sitio publica en la tabla.
No reemplaza a fecha_diligencia, que es la que corre los plazos. Sirve para contrastarla, y
si no coinciden hay que informarlo, no elegir.
Campo |
Tipo |
Qué es |
|---|---|---|
|
bool |
Falso cuando la actuación la ofrecía y el panel respondió que no hay ninguna |
|
float | null |
Como las publica el sitio |
|
float | null |
Radio de incertidumbre. Medidas: 6,0 · 10,04 · 26,68 · 56,22 · 103,13 |
|
date | null |
Cuándo el aparato tomó la coordenada |
|
time | null |
La hora de esa toma |
|
int | null |
Cuántas veces el aparato intentó fijar la posición |
Advertencia
La precisión varía mucho, y con 103 metros la ubicación no identifica un domicilio Medidas en una sola causa: 6,0 · 10,04 · 26,68 · 56,22 y 103,13 metros. Un radio de 103 metros abarca una manzana entera en zona urbana, así que la coordenada dice el sector y no la puerta. Informar la precisión junto con las coordenadas, siempre: sin ella el punto se lee como exacto.
existe: false no es lo mismo que no haber preguntado, y está medido: de las seis
actuaciones georreferenciadas de una causa, una abre un panel que dice que no hay ninguna.
Cuesta una petición por actuación, con su intervalo. Se pide de la actuación concreta que importa, nunca de todas: para las seis de una causa de dos cuadernos serían seis peticiones más sobre las seis que ya costó leerla.
Trae coordenadas de un domicilio de terceros, con el mismo criterio que el RUT de los litigantes: es lo que la plataforma publica.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "obtener_georreferencia",
"inputSchema": {
"properties": {
"georreferencia_referencia": {
"description": "Lo entrega cada actuación en `georreferencia_referencia`. Cuando esa viene nula, la actuación no ofrece georreferencia y no hay nada que pedir.",
"title": "Georreferencia Referencia",
"type": "string"
},
"competencia": {
"default": "civil",
"description": "Una de: apelaciones, civil, cobranza, laboral. Son las que publican la columna de georreferencia en su tabla de Historia. Suprema no la publica.",
"title": "Competencia",
"type": "string"
}
},
"required": [
"georreferencia_referencia"
],
"title": "obtener_georreferenciaArguments",
"type": "object"
},
"outputSchema": {
"description": "Dónde y cuándo el ministro de fe registró que practicó una diligencia.\n\nEs el registro del art. 9 inc. 3 de la Ley 20.886, y trae algo que no hay en ninguna otra\nparte de la respuesta: la **hora**. Las dos fechas de la Historia son del día, y ésta viene\ndel aparato con que se tomó la coordenada.\n\nEso la vuelve una TERCERA fuente sobre cuándo ocurrió la diligencia, independiente de las\ndos que el sitio publica en la tabla. No reemplaza a `fecha_diligencia`, que es la que\ncorre los plazos: sirve para contrastarla.\n\nTrae coordenadas de un domicilio de terceros. Se entregan porque son lo que la plataforma\npublica y lo que hace útil el registro, con el mismo criterio que el RUT de los litigantes,\ny por eso mismo no se guardan en este repositorio.",
"properties": {
"existe": {
"description": "Falso cuando la actuación ofrece georreferencia y el panel responde que no hay ninguna. Está medido: una de seis. En ese caso los demás campos vienen nulos, y eso NO es lo mismo que no haber preguntado.",
"title": "Existe",
"type": "boolean"
},
"latitud": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Latitud, como la publica el sitio.",
"title": "Latitud"
},
"longitud": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitud, como la publica el sitio.",
"title": "Longitud"
},
"precision_metros": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Radio de incertidumbre en metros. Medidas en una sola causa: 6,0 · 10,04 · 26,68 · 56,22 y 103,13.\n\nInformarla SIEMPRE junto con las coordenadas. Un radio de 103 metros abarca una manzana entera en zona urbana, así que ahí la coordenada dice el sector y no la puerta, y presentarla como una dirección exacta es afirmar de más.",
"title": "Precision Metros"
},
"fecha_dispositivo": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuándo el aparato tomó la coordenada. Es la ÚNICA fecha del proyecto que viene con hora, y es una fuente independiente de las dos de la Historia.",
"title": "Fecha Dispositivo"
},
"hora_dispositivo": {
"anyOf": [
{
"format": "time",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La hora de esa toma, que ninguna otra fecha del proyecto trae.",
"title": "Hora Dispositivo"
},
"intentos": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuántas veces el aparato intentó fijar la posición, según el sitio. Sin medir qué significa un número alto.",
"title": "Intentos"
}
},
"required": [
"existe"
],
"title": "Georreferencia",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
obtener_anexos_escrito¶
Los documentos que un escrito acompañó. Son un canal distinto del de la resolución.
Parámetro |
Qué es |
|---|---|
|
Lo entrega cada actuación, y se usa tal cual. Civil tiene dos paneles con parámetros distintos |
|
Lo entrega cada actuación. Cuando viene nula, o el folio no ofrece anexos, o su panel no está medido |
|
Sólo aquellas con al menos un panel verificado contra la plataforma |
Importante
Un folio con documento puede tener otro escondido al lado
La Historia publica dos columnas de documentos por folio: Doc. trae la resolución o el
escrito, y Anexo los papeles que se acompañaron, que es donde suele estar la prueba
documental. Un folio puede traer las dos cosas.
Por eso preguntar por los documentos de una causa mirando sólo Doc. devuelve una respuesta
que parece completa: entrega un documento real y omite otro. Una fila en blanco se nota; un
documento entregado, no.
Campo |
Tipo |
Qué es |
|---|---|---|
|
str | null |
El folio de la actuación. Sólo el panel de escritos de laboral lo publica |
|
date | null |
La que publica el panel. No corre plazos: eso lo hace |
|
str |
Qué es el documento, escrito por quien lo acompañó. En suprema sale de |
|
str | null |
Cómo lo clasifica el sitio. Ej: “Anexo Escrito”. Sólo suprema |
|
str | null |
Cuántos ejemplares declara. Sólo suprema |
|
str | null |
Lo que suprema publica en |
|
str | null |
Con qué ruta se pide |
|
str | null |
La referencia opaca con la que se pide |
Un nulo significa que ese panel no publica la columna, no que el dato no exista: los cinco paneles medidos no comparten forma.
Entrega con qué pedir cada anexo, no el anexo: para traerlo se usa obtener_documento. Esa
ruta de descarga se leyó del formulario de cada fila y no se ha ejecutado: lo medido es el
panel que la nombra.
Cuesta una petición por folio, con su intervalo. Se pide del folio concreto que importa, nunca de barrido.
Un panel con encabezados y cero filas levanta un error. Es la diferencia con las notificaciones y las liquidaciones, donde la lista vacía es un estado real de la causa: este panel sólo se pide cuando la actuación ya dijo que hay anexos, así que la tabla vacía significa que la respuesta cambió, no que el escrito se haya acompañado sin documentos.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "obtener_anexos_escrito",
"inputSchema": {
"properties": {
"anexo_ruta": {
"description": "Lo entrega cada actuación en `anexo_ruta`, y se usa TAL CUAL. Una misma competencia abre paneles distintos según el trámite: civil tiene dos, con parámetros distintos.",
"title": "Anexo Ruta",
"type": "string"
},
"anexo_referencia": {
"description": "Lo entrega cada actuación en `anexo_referencia`. Cuando esa viene nula, o el folio no ofrece anexos, o su panel no está medido.",
"title": "Anexo Referencia",
"type": "string"
},
"competencia": {
"default": "civil",
"description": "Una de: civil, laboral, suprema. Son aquellas cuya ruta de anexos está verificada contra la plataforma. Las demás publican la columna `Anexo` y su ruta no está medida, así que se rechazan por no verificadas.",
"title": "Competencia",
"type": "string"
}
},
"required": [
"anexo_ruta",
"anexo_referencia"
],
"title": "obtener_anexos_escritoArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"Anexo": {
"description": "Un documento que acompaña a un escrito, en el segundo canal del folio.\n\nEs lo que la columna `Anexo` de la Historia ofrece y hasta la versión 0.9.0 no se podía\npedir. No es una copia de lo que entrega `Doc.`: ahí va la resolución o el escrito, y acá\nlos papeles que se acompañaron, que es donde vive la prueba documental.\n\nQue el folio SÍ entregue un documento por el otro canal es lo que hacía invisible esta\nfalta: una respuesta con documento se lee como completa mucho mejor que una fila en blanco.\n\nLos campos que vienen en nulo dependen del panel: cada competencia publica columnas\ndistintas y no son las mismas cinco con otro nombre. Civil no publica folio, suprema no\npublica fecha y en cambio dice cuántos ejemplares hay y si el documento físico se exige.\nUn nulo significa que ESE panel no publica la columna, no que el dato no exista.",
"properties": {
"folio": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Folio de la causa al que pertenece el anexo, para volver a ubicarlo en la Historia. Sólo el panel de escritos de laboral lo publica.",
"title": "Folio"
},
"fecha": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fecha que el panel publica para el anexo, en ISO 8601. NO es una fecha de plazos: la que corre plazos es `fecha_diligencia` de la actuación.",
"title": "Fecha"
},
"descripcion": {
"default": "",
"description": "Qué es el documento, escrito por quien lo acompañó. Ej: 'Pasajes aéreos'. Es texto libre, no una clasificación. Sale de la columna `Referencia`, y en suprema de `Observación del Documento`, que es la que cumple ese papel ahí.",
"title": "Descripcion",
"type": "string"
},
"tipo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cómo clasifica el sitio el documento. Ej: 'Anexo Escrito'. Sólo suprema publica la columna.",
"title": "Tipo"
},
"cantidad": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuántos ejemplares declara el sitio, tal cual lo emite. Sólo suprema.",
"title": "Cantidad"
},
"documento_fisico": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo que suprema publica en `Docto. Físico`, sin interpretar. Medido: 'No Requerido'. Sólo suprema publica la columna.",
"title": "Documento Fisico"
},
"documento_ruta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Qué ruta de la plataforma entrega este anexo. Sale del formulario de la fila, y esa ruta NO se ha ejecutado: lo medido es el panel que la nombra. NULO si la fila no trae formulario.",
"title": "Documento Ruta"
},
"documento_referencia": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "La referencia opaca con la que se pide este anexo. Junto con `documento_ruta` es lo único que permite traerlo después.",
"title": "Documento Referencia"
}
},
"title": "Anexo",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/Anexo"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "obtener_anexos_escritoOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
listar_audios_audiencia¶
Qué audios de audiencia tiene la causa, y con qué enlace se bajan. No los trae.
Parámetro |
Qué es |
|---|---|
|
Lo entrega |
Importante
Entrega los enlaces, no el audio Un audio de audiencia son las voces de las partes, los testigos y el tribunal. Una transcripción automática no es lo mismo que oírlo, y no siempre se puede transcribir. Lo que corresponde es entregar los enlaces y decir qué tramo es cada uno, para que la persona baje el que necesita.
Campo |
Tipo |
Qué es |
|---|---|---|
|
str |
El correlativo con que el sitio ordena los archivos |
|
str |
Nombre del archivo, tal cual. Trae el tramo al final, y a veces la hora |
|
date | null |
Lo que publica la columna |
|
str |
Enlace directo, para abrir en el navegador |
El audio viene troceado por acto procesal, no en una pista única: medidos once archivos
para una sola audiencia preparatoria, del inicio al fin, pasando por el llamado a conciliación
y los hechos a probar. El nombre de cada archivo es lo más útil que trae, porque la columna
Fecha viene vacía en todos.
El nombre empieza con el RUC de la causa: repetirlo completo publica ese identificador, así que conviene nombrar el tramo y no el archivo entero.
Los enlaces caducan. Si uno deja de funcionar hay que volver a pedir el listado, no reintentar el mismo.
Sólo laboral está medida. Un listado sin filas levanta un error: sólo se pide cuando el detalle ofreció el enlace, así que cero filas significa que la respuesta cambió, no que la audiencia no se haya grabado.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "listar_audios_audiencia",
"inputSchema": {
"properties": {
"audio_referencia": {
"description": "Lo entrega `obtener_detalle_causa` en `audio_referencia`. Cuando esa viene nula, la causa no ofrece grabación o su competencia no está medida.",
"title": "Audio Referencia",
"type": "string"
}
},
"required": [
"audio_referencia"
],
"title": "listar_audios_audienciaArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"AudioAudiencia": {
"description": "Un archivo de audio de una audiencia, tal como el sitio lo publica.\n\nRompe el supuesto de que todo lo descargable de la plataforma es PDF: acá el archivo es un\n`.mp3`. Este servidor NO lo trae: entrega qué hay y con qué enlace, para que quien lo\nnecesite lo baje y lo escuche. Un audio de audiencia son las voces de las partes, los\ntestigos y el tribunal, y transcribirlo automáticamente no es lo mismo que oírlo.\n\nEl audio viene TROCEADO por acto procesal, no en una pista única: el nombre de archivo dice\nde qué tramo es. Medido: once archivos para una sola audiencia preparatoria, del \"Inicio\" al\n\"Fin\", pasando por el llamado a conciliación y los hechos a probar.",
"properties": {
"numero": {
"description": "El correlativo con que el sitio ordena los archivos.",
"title": "Numero",
"type": "string"
},
"archivo": {
"description": "Nombre del archivo, tal cual. Trae el tramo de la audiencia al final, que es lo que dice de qué es la grabación. Ej: '...-05-Llamado a conciliacion.mp3'.\n\nEmpieza con el RUC de la causa, así que nombrarlo completo publica ese identificador.",
"title": "Archivo",
"type": "string"
},
"fecha": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lo que el sitio publica en su columna `Fecha`. Medido: viene VACÍA en los once archivos, aunque la columna existe. La fecha de la audiencia hay que sacarla de la Historia o del propio nombre del archivo, no de acá.",
"title": "Fecha"
},
"descarga_url": {
"description": "Enlace directo al archivo, para abrirlo en un navegador. Este servidor no lo descarga.\n\nEl enlace lleva una referencia firmada que CADUCA: si deja de funcionar hay que volver a pedir el listado. Entregarlo tal cual al usuario es lo correcto; guardarlo para después, no.",
"title": "Descarga Url",
"type": "string"
}
},
"required": [
"numero",
"archivo",
"descarga_url"
],
"title": "AudioAudiencia",
"type": "object"
}
},
"properties": {
"result": {
"items": {
"$ref": "#/$defs/AudioAudiencia"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "listar_audios_audienciaOutput",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
obtener_documento¶
El archivo de una actuación: la resolución, el escrito, el certificado o el expediente entero.
Parámetro |
Qué es |
|---|---|
|
Lo entrega cada actuación. Sólo se aceptan las rutas que la plataforma emite |
|
Lo entrega cada actuación. Identifica el documento |
|
Bajo qué módulo cuelga la ruta. |
|
Desde qué página entregar el texto, contando desde 1. Sólo hace falta cuando el texto completo no cabe en una respuesta |
No pide el rol: la referencia ya identifica el documento, y buscar la causa antes serían dos peticiones que no verifican nada.
Nota
La referencia NO muere con la sesión Se emite al dibujar la página y el mismo documento llega con una distinta en cada render, así que no es la identidad estable del archivo. Pero es un token firmado y no un identificador de sesión: medido el 20 de agosto de 2026, sirve desde una sesión distinta de la que la emitió, así que el flujo normal, leer el detalle con una herramienta y pedir el documento con otra, funciona.
Cuánto dura no está medido. Pedir el documento cerca de leer la actuación sigue siendo lo prudente, y una referencia que la plataforma ya no acepte devuelve una página de error con HTTP 200, no un «no existe»: por eso se verifica que lo que llegó sea un PDF.
El texto del documento viaja con él¶
Si el PDF trae capa de texto, la respuesta lleva ese texto, página por página. Sale de la misma pasada que describe el archivo, o sea no cuesta una petición más: antes se extraía para contar cuántas páginas traían texto y después se tiraba.
El enlace no lo reemplaza. resources/read devuelve el PDF, no su texto, así que un cliente
que lo lea recibe base64: sirve para guardar el archivo o para mirarlo, no para leerlo desde
acá. Y el umbral de lo embebido queda por debajo de lo que la plataforma emite de verdad, así
que sin el texto la respuesta de un documento real era su descripción y un puntero.
Cuando el texto no cabe en una respuesta no se manda un pedazo: se dice cuánto es y se pide
por tramos con desde_pagina. Cada tramo termina diciendo hasta qué página llegó y con cuál
seguir, y el último dice que ahí termina el documento. Una página que sola no cabe se corta y
el corte se anuncia en el mismo texto.
El texto respeta la disposición de la hoja, no el orden del flujo del PDF. Medido contra documentos reales de la OJV, eso es lo que hace que el encabezado tabular de un acta de audiencia (etiqueta a la izquierda, valor a la derecha: quién es el denunciante, quién el denunciado, las horas) se lea correcto en vez de con las dos columnas mezcladas, que es como lo lee el modo por flujo. Conserva el texto rotado, que el modo descarta por defecto: un timbre al margen no puede perderse en silencio. El modo lo llama experimental la doc de pypdf; acá se midió, y lo paga con algo de inflación (más alta en los documentos más chicos, donde no muerde el presupuesto). Si falla en una página, cae al modo simple, que nunca entrega menos.
Cada página va rotulada con su número, que es lo que permite citarla. Las que no aportan texto se rotulan con avisos distintos, porque son cosas distintas: una imagen (un escaneo, trae imagen y no se le pasa OCR), una página en blanco (ni texto ni imagen, no hay nada que citar), y una que no se dejó leer (un error de lectura, del que no se sabe qué trae). Marcarlas igual afirmaría lo que no se midió.
Advertencia
El texto es contenido de un tercero Lo escribieron el tribunal y las partes, igual que los marcadores del archivo. Viaja con la advertencia de que se lee como dato y nunca como una instrucción.
Chico viaja entero, grande viaja como enlace¶
Un documento bajo el umbral viene completo en la respuesta. Uno grande viene como enlace,
con su tamaño, y se lee con resources/read sólo si de verdad hace falta: el ebook es el
expediente entero, y meterlo en la respuesta gasta el contexto de la conversación en algo que
casi nunca se lee completo.
El umbral sale de la aritmética de base64, que son cuatro caracteres por cada tres bytes, con el techo de una respuesta de texto. Deja el enlace como caso normal y lo embebido como excepción, que es el lado barato de equivocarse.
No es una elección de comodidad: 18.750 bytes en base64 son exactamente 25.000 caracteres, o sea una respuesta entera. Un documento justo en el límite se come el presupuesto completo y deja cero para el índice, el texto y la advertencia de que el contenido es de un tercero. Por eso el tope va sobre la respuesta y no sobre cada pieza por separado: dos topes que se cumplen cada uno por su lado suman uno que no se cumple.
Un escaneo se declara y NO se transcribe¶
Si el PDF no trae capa de texto es una imagen, y eso se dice. No se le pasa OCR: una transcripción automática de una resolución se ve idéntica a la resolución y no lo es, y eso es peor que una lista vacía, porque la lista vacía se nota.
Y un documento mixto se declara mixto. Un expediente que agrega anexos escaneados a
resoluciones digitales es lo normal, y decir «trae capa de texto» a secas haría dar por
transcribible un archivo del que una parte son imágenes: paginas_con_texto dice cuántas, y lo
que dicen las otras no se puede citar desde acá.
Y una página que no se deja leer no cuesta el archivo entero: se cuenta en
paginas_ilegibles y el resto se describe igual. No se cuenta como página sin texto, porque
eso convertiría un error de lectura en la afirmación de que ahí hay una imagen.
Una página sin texto se separa además en escaneo y hoja en blanco: la que trae imagen
es un escaneo que hay que abrir, y la que no trae ninguna está en blanco y no tiene nada que
citar. Lo distingue page.images, de la misma pasada. Marcar las dos como «imagen» mandaría a
abrir una hoja vacía.
Por lo mismo, si NINGUNA de las páginas leídas trajo texto y alguna falló, capa_de_texto queda
en nulo y no en falso: falso significa escaneo, que es una afirmación sobre todas las
páginas, y de las que fallaron no se sabe. Verdadero, en cambio, se sostiene con una sola: se
vio texto, y que otra haya fallado no lo desmiente.
Si el archivo no se puede abrir, la capa de texto queda nula y no falsa: no saber si tiene
texto no es lo mismo que saber que no tiene. problema_al_leer separa dos casos que no son el
mismo problema: a uno cifrado le falta una contraseña que este servidor no tiene, y uno
truncado o mal formado no se abre con ninguna. Que esté cifrado es lo medido, y no que haya
llegado entero: los dos defectos pueden venir juntos.
El índice sale de la misma lectura¶
Describir el PDF ya obligaba a recorrer sus páginas. De esa pasada salen, sin una petición más:
Campo |
Qué es |
|---|---|
|
CUÁLES páginas traen texto, por tramos y contando desde 1: |
|
Hasta qué página alcanza esa lista. Menor que |
|
Cuántos tramos quedaron sin enumerar |
|
El índice que trae el archivo: |
|
Cuántos quedaron fuera, por cantidad o por profundidad |
|
Cuánto mide, en centímetros |
|
Cuántas de las demás miden distinto |
|
Cuándo dice el archivo que se creó (ISO 8601). Proxy de la firma. Nulo si no la trae |
|
Cuándo dice el archivo que se modificó. Mismo carácter |
fecha_creacion y fecha_modificacion salen de la metadata del PDF, así que son dato de un
tercero y no fecha oficial: sirven para contrastar contra fecha_diligencia, nunca para
reemplazarla. El resumen lo dice cada vez que la trae.
Los tramos van por rangos y no por lista de números porque el índice tiene que ser de tamaño constante: «1 a 40 con texto» son dos entradas para doscientas páginas y siguen siendo dos para tres mil. Se enumeran hasta 20 tramos y hasta 20 marcadores, bajando 2 niveles, con los títulos recortados a 80 caracteres.
Al llegar a cualquiera de esos topes se dice que se cortó y hasta dónde alcanzó. paginas y
paginas_con_texto siguen cubriendo el documento entero, así que los totales no cambian: lo
que se acota es la enumeración, no la cuenta.
Advertencia
Los marcadores son contenido de un tercero Los títulos los escribe quien creó el PDF, que puede ser la contraparte: entran por un canal que parece metadato del archivo y no lo es. Viajan delimitados y con la advertencia de que se leen como datos y no como instrucciones, en una sola línea y recortados.
El recurso pjud://documento¶
Es el otro extremo del enlace. Leerlo vuelve a consultar al Poder Judicial, con su intervalo: no hay copia guardada de nada, que es la regla 5 del proyecto.
Su argumento competencia tiene completado. completion/complete sobre la plantilla
pjud://documento{?competencia,ruta,referencia} devuelve las competencias cuyo detalle publica
documentos, acotadas por lo que se lleve escrito; penal no aparece, porque no publica ninguno.
Los otros dos argumentos no se completan: salen de la actuación que se leyó.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "obtener_documento",
"inputSchema": {
"properties": {
"documento_ruta": {
"description": "El campo `documento_ruta` de la actuación, tal cual. Sólo se aceptan las rutas que el detalle de cada competencia emite: apelaciones (anexoDocRecursoApelaciones.php, docCausaApelaciones.php, newebookapelaciones.php); civil (anexoDocCivil.php, docCertificadoDemanda.php, docCertificadoEscrito.php, docu.php, docuN.php, docuS.php, newebookcivil.php); cobranza (docCertificadoEscrito.php, docDemandaCobranza.php, docLiquidacionCobranza.php, docOficioCobranza.php, docuCobranza.php, newebookcobranza.php); laboral (docAnexoLaboral.php, docCertificadoDemanda.php, docCertificadoEscrito.php, docDiligenciaIdaLaboral.php, docDiligenciaVueltaLaboral.php, docReformadoEscritoLaboral.php, docReformadoLaboral.php, newebooklaboral.php); suprema (docCausaSuprema.php, docEscritosSuprema.php, newebooksuprema.php). Una ruta libre convertiría esto en un proxy contra cualquier página del sitio y por eso se rechaza.\n\nCuando la actuación trae `documento_ruta` en nulo, el sitio abre ese documento con un modal de JavaScript y a qué endpoint llama no está medido: ese documento todavía no se puede pedir, y no hay ruta que inventarle.",
"title": "Documento Ruta",
"type": "string"
},
"documento_referencia": {
"description": "El campo `documento_referencia` de la actuación, tal cual. CADUCA: su JWT declara durar 60 minutos. La plataforma la emite al dibujar el detalle y es un token firmado, no un identificador de sesión: está medido que sirve desde otra sesión. Una guardada de antes no devuelve 'no existe', devuelve otra cosa. Si la herramienta responde que lo recibido no es un PDF, volver a pedir el detalle de la causa y usar la referencia nueva.",
"title": "Documento Referencia",
"type": "string"
},
"competencia": {
"default": "civil",
"description": "Una de: apelaciones, civil, cobranza, laboral, suprema. Son aquellas cuyo detalle publica documentos descargables. La competencia elige bajo qué módulo del sitio cuelga la ruta, así que tiene que ser la MISMA con que se leyó la actuación.",
"title": "Competencia",
"type": "string"
},
"desde_pagina": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Desde qué página entregar el texto, contando desde 1. Sólo hace falta cuando el texto completo no cabe en una respuesta: ahí la herramienta lo dice y con esto se pide por tramos. La respuesta indica con qué página seguir.",
"title": "Desde Pagina"
}
},
"required": [
"documento_ruta",
"documento_referencia"
],
"title": "obtener_documentoArguments",
"type": "object"
},
"outputSchema": null,
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
buscar_jurisprudencia¶
Sentencias de la Corte Suprema desde el Buscador Unificado de Fallos. Sirve sobre todo para
verificar que una cita existe antes de usarla: con rol y anio devuelve la sentencia con
su caratulado, sala, fecha, ministros y enlace permanente.
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
int, opcional |
Rol de la causa en el buscador elegido, sin el año |
|
int, opcional |
Año del rol |
|
str, opcional |
Texto libre: deben aparecer todas estas palabras |
|
str, opcional |
Frase exacta |
|
str, opcional |
Palabras que no deben aparecer |
|
str, opcional |
Rango de fechas, AAAA-MM-DD. Es el formato que el buscador acepta: medido, con DD/MM/AAAA responde un error de Solr y ninguna sentencia |
|
int |
Cuántas traer, de 1 a 250 |
|
int |
Desde qué coincidencia empezar. Cero es la primera; para la siguiente página, |
|
str |
|
|
dict, opcional |
Con qué acotar: nombre de faceta a los valores que se aceptan |
Exige al menos un criterio: sin ninguno el buscador devuelve el índice entero, y eso no es una búsqueda.
Advertencia
Un valor de faceta que no calza no da error: devuelve cero resultados.
El rol de una Corte de Apelaciones no es único a nivel nacional. Medido el 25 de agosto de 2026,
2476-2023 devuelve 13 sentencias de cinco cortes distintas, y con facetas={"corte_origen": ["C.A. de Santiago"]} quedan 7. Eso es lo que hace alcanzable una cita que de otro modo hay que
buscar a mano entre decenas.
Los valores hay que copiarlos de facetas de una búsqueda sin filtrar, porque la plataforma
los publica con su propia ortografía: en esa misma respuesta conviven C.A. de Valparaiso sin
tilde y un libro escrito PROTECCIN. Un valor tecleado de memoria devuelve la lista vacía, que
se leería como que la sentencia no existe; por eso el cliente se detiene con un error cuando una
búsqueda con facetas no devuelve nada.
Cada buscador declara las suyas y pedir una que no declara falla antes de consultar. Salen de
campos_facetas, que cada página del buscador publica:
Buscador |
Facetas que se exponen |
|---|---|
|
comuna, corte de origen, libro, ministros, norma, redactor, resultado, sala, tipo de recurso |
|
corte de origen, libro, materia, sala, tipo de recurso, tribunal |
|
corte de origen, organismo, resultado, temática |
|
juez, materia, tribunal |
|
juez, tribunal |
Dos que la plataforma declara y este servidor no expone: enfermedad y medicamento, del
buscador de salud. Un desglose acotado a un rol publica de qué está enferma y qué toma la persona
que recurrió, que es el mismo criterio por el que no se exponen los buscadores penales ni el
compendio de extranjería. Tampoco se expone la de fecha: sus valores son marcas de tiempo y para
eso están desde y hasta.
Las cuentas son de la consulta, no del índice, y no se suman: una sentencia puede caer en más
de un valor de la misma faceta. Medido en laborales, materia reparte 228 apariciones
sobre 88 sentencias.
Advertencia
ocultas sólo tiene significado en suprema, y está medido.
Buscador |
Rol que existe |
Rol imposible |
Qué cuenta |
|---|---|---|---|
|
2 y 2 |
0 y 0 |
la consulta |
|
8 y 269.264 |
0 y 269.264 |
el índice completo |
En laborales el número que la plataforma entrega es el tamaño del corpus, así que la
diferencia contra lo visible no son coincidencias reservadas. Informar 269.256 ocultas para una
consulta que encontró 8 haría ver cada resultado como una fracción de un universo oculto que no
existe, así que ahí ocultas y coincidencias vienen en nulo.
Nulo no es cero. Cero significa «no hay nada reservado»; nulo significa «en este buscador no
se puede saber», y entonces un resultado vacío puede igual corresponder a algo reservado.
apelaciones está en nulo por MEDICIÓN: el 17 de agosto de 2026 devolvió el mismo número para
un rol que existe y para uno imposible, o sea cuenta el corpus y no la consulta. Los cuatro
intentos anteriores habían muerto por timeout, y el timeout era nuestro.
Advertencia
En suprema, el resultado trae ocultas: cuántas coincidencias existen y no se entregan a una consulta
anónima. Medido el 16 de agosto de 2026 sin filtros, el buscador declaraba 1.223.925
coincidencias y entregaba 300.005.
Si ocultas es mayor que cero, la lista es un subconjunto. No se puede afirmar que algo no
existe porque no aparezca, y condiciones_de_publicacion desglosa todas las
coincidencias por su condición (Excluido salud, Anonimizadas, Reservado restringido,
Publicable, entre otras). Ese desglose suma coincidencias, no ocultas: incluye a las
visibles. El buscador no publica su regla de visibilidad, así que no se puede decir qué
categorías componen las que faltan.
El propio sitio dejó de mostrar ese aviso: los dos mensajes que lo decían siguen en su JavaScript, comentados.
Campos de la respuesta¶
sentencias, más seis campos de completitud (visibles, coincidencias, ocultas,
desplazamiento, no_entregadas y condiciones_de_publicacion) y facetas, el desglose de
esas mismas coincidencias por cada faceta que el buscador declara.
ocultas en cero no significa que la lista esté completa. Son dos recortes distintos y
hay que mirar los dos: ocultas son las coincidencias que la plataforma reserva a una consulta
anónima, y no_entregadas son las visibles que esta llamada no trajo porque filas acota
cuántas se piden. Una búsqueda con 400 visibles y filas en 10 devuelve diez sentencias,
ocultas en cero y no_entregadas en 390.
no_entregadas es además la única señal de recorte que funciona en todos: ocultas sólo trae
número en uno de los siete buscadores expuestos, suprema, y en los otros seis viene en nulo.
Importante
no_entregadas mayor que cero ahora se puede resolver
Se vuelve a llamar con desplazamiento en desplazamiento + filas, hasta que llegue a cero.
no_entregadas cuenta lo que queda después de esta página, así que baja sola a medida que se
avanza.
Medido el 22 de agosto de 2026 contra el buscador de Corte Suprema: con desplazamiento 0, 10 y 250, tres páginas sin una sola sentencia repetida. Hasta esa medición el desplazamiento iba fijo en cero y la coincidencia 251 era inalcanzable.
Pedir más allá de visibles devuelve una lista vacía con HTTP 200, no un error: una página
vacía significa que se pasó del final, no que no haya coincidencias. Y cada página cuesta una
petición con su intervalo, así que se recorre lo que hace falta y no el índice entero.
coincidencias es lo que el buscador declara antes de aplicar su filtro de condición de
publicación. No es el tamaño del índice: el Poder Judicial habla públicamente de más de un
millón y medio de sentencias, y esa diferencia no está explicada.
Cada sentencia trae rol, caratulado, fecha_sentencia (ISO 8601), sala, tipo_recurso,
resultado_recurso, corte_origen, rol_corte_apelaciones, redactor, ministros,
condicion_publicacion, anonimizada y url.
No trae el texto completo del fallo. La respuesta del buscador lo incluye, pero diez sentencias serían megabytes con nombres y cédulas de personas naturales: se entrega el enlace permanente y quien lo necesite entra.
Están verificados diez de los diez buscadores y se exponen siete: suprema, apelaciones,
laborales, civiles, cobranza, familia y salud. El de penales se midió y
queda fuera por decisión, por lo mismo que el detalle de las causas penales: sus caratulados
llegan con el nombre del imputado cuando el fallo no está anonimizado.
Se eligen con el parámetro buscador.
Cada uno declara sus propios campos, y ésa es la razón de que esto sea una tabla y no un
parser por buscador: Corte Suprema identifica sus sentencias con rol_era_sup_s y Apelaciones
con rol_era_ape_s, así que un cliente que asumiera los campos del primero devolvería el rol
vacío en el segundo sin que nada reviente. En laborales el origen es un juzgado y no una
corte, así que corte_origen trae el juzgado.
Los siete restantes se rechazan en vez de adivinar sus campos.
Advertencia
En laborales el rol que el buscador publica no lleva la letra del tipo de causa. Medido:
pedir el rol 364 del año 2020 devuelve O-364-2020 aunque lo buscado sea T-364-2020, que es
otra causa. Una respuesta con el mismo número no prueba que sea la misma causa: hay que
comparar el caratulado.
Es el falso positivo simétrico del que motivó el proyecto. Acá no es que falte un dato: es que sobra uno que parece el correcto.
Esquema que entrega el protocolo
Generado desde el servidor al construir esta página, así que no puede quedar desactualizado respecto del código.
{
"name": "buscar_jurisprudencia",
"inputSchema": {
"properties": {
"rol": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Rol de la causa en el buscador elegido, sin el año.",
"title": "Rol"
},
"anio": {
"anyOf": [
{
"maximum": 2100,
"minimum": 1900,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Año del rol.",
"title": "Anio"
},
"todas": {
"default": "",
"description": "Texto libre: deben aparecer todas estas palabras.",
"title": "Todas",
"type": "string"
},
"literal": {
"default": "",
"description": "Frase exacta.",
"title": "Literal",
"type": "string"
},
"excluir": {
"default": "",
"description": "Palabras que NO deben aparecer.",
"title": "Excluir",
"type": "string"
},
"desde": {
"default": "",
"description": "Fecha inicial, AAAA-MM-DD. Es el formato que el buscador acepta: medido, con DD/MM/AAAA responde un error y ninguna sentencia.",
"title": "Desde",
"type": "string"
},
"hasta": {
"default": "",
"description": "Fecha final, AAAA-MM-DD, igual que `desde`.",
"title": "Hasta",
"type": "string"
},
"filas": {
"default": 10,
"description": "Cuántas sentencias traer.",
"maximum": 250,
"minimum": 1,
"title": "Filas",
"type": "integer"
},
"desplazamiento": {
"default": 0,
"description": "Desde qué coincidencia empezar. Cero es la primera. Para la página siguiente: `desplazamiento + filas`.\n\nPedir más allá de `visibles` devuelve una lista VACÍA, no un error, así que una página vacía acá significa que se pasó del final y no que no haya coincidencias.",
"minimum": 0,
"title": "Desplazamiento",
"type": "integer"
},
"facetas": {
"anyOf": [
{
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Con qué acotar, de nombre de faceta a los valores que se aceptan. Los valores hay que COPIARLOS de `facetas` de ESTA MISMA búsqueda sin filtrar, no de otra: el mismo campo publica valores que conviven y sólo aparecen si algo los trae ('ACOGE,UNIFICACIÓN DE JURISPRUDENCIA' y el mismo con '(M)' son dos valores distintos). Y con su ortografía: 'C.A. de Valparaiso' sin tilde, un libro como 'PROTECCIN'.\n\nUn valor que no calza no da error EN LA PLATAFORMA, devuelve cero: por eso esta herramienta se detiene en vez de entregar la lista vacía, que se leería como que la sentencia no existe. 'SIN INFORMACION' es un valor más y filtra igual. Cada buscador declara sus facetas y pedir una que no declara falla antes de buscar.",
"title": "Facetas"
},
"buscador": {
"default": "suprema",
"description": "Cuál de los buscadores de fallos consultar. Se aceptan: apelaciones, civiles, cobranza, familia, laborales, salud, suprema. En `laborales` el origen es un juzgado y no una corte.",
"title": "Buscador",
"type": "string"
}
},
"title": "buscar_jurisprudenciaArguments",
"type": "object"
},
"outputSchema": {
"$defs": {
"Sentencia": {
"description": "Una sentencia del buscador de fallos.\n\nMetadatos de cita, no el texto completo: una búsqueda de diez sentencias devolvería\nmegabytes de texto con nombres y cédulas de personas naturales. El texto se lee\nentrando por `url`.",
"properties": {
"rol": {
"description": "Rol y año en el buscador consultado. Ej: 34546-2025.",
"title": "Rol",
"type": "string"
},
"caratulado": {
"title": "Caratulado",
"type": "string"
},
"fecha_sentencia": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"description": "Fecha de la sentencia, ISO 8601.",
"title": "Fecha Sentencia"
},
"sala": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Sala que la dictó. NULO: este buscador no publica el campo.",
"title": "Sala"
},
"tipo_recurso": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tipo de recurso. NULO: este buscador no publica el campo.",
"title": "Tipo Recurso"
},
"resultado_recurso": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cómo se resolvió. NULO: este buscador no publica el campo.",
"title": "Resultado Recurso"
},
"corte_origen": {
"description": "Corte de Apelaciones de origen.",
"title": "Corte Origen",
"type": "string"
},
"rol_corte_apelaciones": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Rol ante la corte de origen. NULO: no consta acá, sea porque este buscador no publica el campo o porque la sentencia no lo trae.",
"title": "Rol Corte Apelaciones"
},
"redactor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Quien redactó. NULO: este buscador no publica el campo.",
"title": "Redactor"
},
"ministros": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Quienes firmaron. NULO: este buscador no publica el campo. Una lista VACÍA diría que no firmó nadie, y eso no lo dice ningún buscador.",
"title": "Ministros"
},
"condicion_publicacion": {
"description": "Cómo está publicada. Determina si el texto se ve completo, anonimizado o no se ve.",
"title": "Condicion Publicacion",
"type": "string"
},
"anonimizada": {
"description": "Si el texto publicado viene anonimizado.",
"title": "Anonimizada",
"type": "boolean"
},
"url": {
"description": "Enlace permanente a la sentencia en el buscador.",
"title": "Url",
"type": "string"
},
"palabras": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Extensión del fallo en palabras, según el buscador.",
"title": "Palabras"
},
"paginas": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Extensión en páginas.",
"title": "Paginas"
},
"texto_preview": {
"default": "",
"description": "Primeras líneas del fallo, tal como el buscador las entrega para la lista de resultados. Sirve para decidir si vale pedir el texto completo, que es dos órdenes de magnitud más grande.",
"title": "Texto Preview",
"type": "string"
}
},
"required": [
"rol",
"caratulado",
"fecha_sentencia",
"sala",
"tipo_recurso",
"resultado_recurso",
"corte_origen",
"rol_corte_apelaciones",
"redactor",
"ministros",
"condicion_publicacion",
"anonimizada",
"url"
],
"title": "Sentencia",
"type": "object"
}
},
"description": "Resultado de una búsqueda, con lo que quedó fuera declarado.\n\n`ocultas` no es una advertencia: es la diferencia entre lo que el buscador dice que\ncoincide y lo que una consulta anónima puede ver.",
"properties": {
"sentencias": {
"items": {
"$ref": "#/$defs/Sentencia"
},
"title": "Sentencias",
"type": "array"
},
"visibles": {
"description": "Cuántas coincidencias son visibles para esta consulta.",
"title": "Visibles",
"type": "integer"
},
"coincidencias": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Cuántas coincidencias declara el buscador ANTES de aplicar el filtro de condición de publicación. Nulo cuando ese número, en este buscador, cuenta el corpus entero y no la consulta: informarlo entonces sería dar por medido algo que no lo es.",
"title": "Coincidencias"
},
"ocultas": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Coincidencias que existen y NO se entregan. Si es mayor que cero, la lista es un subconjunto: no se puede afirmar que no exista lo que no aparece.\n\nNULO significa que en este buscador no se puede saber, porque el número que la plataforma entrega cuenta el índice completo. Nulo NO significa cero: significa que la pregunta no tiene respuesta acá, y un resultado sin coincidencias puede igual corresponder a algo reservado.",
"title": "Ocultas"
},
"desplazamiento": {
"default": 0,
"description": "Desde qué coincidencia empieza esta página. Cero es la primera.\n\nSirve para pedir la siguiente: `desplazamiento + filas`. Medido el 22 de agosto de 2026: pedir más allá de `visibles` devuelve una página VACÍA con 200, no un error.",
"title": "Desplazamiento",
"type": "integer"
},
"no_entregadas": {
"description": "Coincidencias visibles que esta llamada NO trajo: las que quedan DESPUÉS de esta página, contando desde `desplazamiento`. Si es mayor que cero, la lista es un subconjunto de lo visible y se puede pedir el resto.\n\nEs distinto de `ocultas`, y hay que mirar los dos: `ocultas` son las que la plataforma reserva, `no_entregadas` son las que sí se podrían ver y no se pidieron. Un resultado con `ocultas` en cero puede igual estar recortado.",
"title": "No Entregadas",
"type": "integer"
},
"condiciones_de_publicacion": {
"anyOf": [
{
"additionalProperties": {
"type": "integer"
},
"type": "object"
},
{
"type": "null"
}
],
"description": "Desglose de TODAS las coincidencias por condición de publicación, visibles incluidas. Suma `coincidencias`, no `ocultas`: la categoría 'Publicable' son justamente las que sí se entregan. Sirve para ver de qué está hecho el universo (anonimizadas, reservadas, excluidas de salud), no para saber cuáles faltan: el buscador no publica la regla de visibilidad, así que no se puede decir qué categorías componen `ocultas`.\n\nNULO donde ese desglose cuenta el índice completo y no la consulta, que son los mismos buscadores en que `coincidencias` viene en nulo: ahí sumaría millones para una búsqueda de decenas.",
"title": "Condiciones De Publicacion"
},
"facetas": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"type": "integer"
},
"type": "object"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Cómo se reparten ESTAS coincidencias, por cada faceta que el buscador declara. Sirve para dos cosas: ver si un rol se repite entre cortes o libros antes de leer nada, y sacar el valor EXACTO con que filtrar en `facetas`, que hay que copiar tal cual.\n\nLas cuentas son de la consulta, no del índice. NO se suman: una sentencia puede aparecer en más de un valor de la misma faceta, y está medido que `materia` suma 228 sobre 88 sentencias.",
"title": "Facetas"
}
},
"required": [
"sentencias",
"visibles",
"coincidencias",
"ocultas",
"no_entregadas",
"condiciones_de_publicacion"
],
"title": "ResultadoJurisprudencia",
"type": "object"
},
"annotations": {
"read_only_hint": true,
"destructive_hint": false,
"idempotent_hint": true,
"open_world_hint": true
}
}
obtener_texto_sentencia¶
El texto completo de una sentencia, de una en una.
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
int |
Rol de la sentencia, sin el año |
|
int |
Año del rol |
|
str |
|
|
int, opcional |
Cuál de las sentencias del rol, empezando en 1. Sólo hace falta cuando el rol trae más de una |
Advertencia
Un rol puede tener más de una sentencia, y la equivocada se ve igual de válida.
Medido en suprema, rol 1933-2025: la de casación en el fondo son 3.646 palabras y trae el razonamiento; la de reemplazo son 157 palabras y sólo confirma. Antes esta herramienta entregaba la que el buscador pusiera primero, y devolvió la de reemplazo, de 157 palabras, sin decir que existía otra.
Y no siempre son dos: el rol 1504-2019 de apelaciones trae tres, medido. Cuando pasan de 10, el mensaje enumera las primeras y dice cuántas quedan fuera.
Ahora se detiene, las enumera con su resultado y su extensión, y hay que elegir con cual. Es
la misma decisión que en el detalle de causa ante dos causas homónimas: entregar una se vería
perfectamente bien.
Está separado de la búsqueda a propósito, y la razón es de tamaño: una sentencia de trece
páginas son unos 25.000 caracteres, medido. Devolver diez con cada búsqueda serían 250.000.
La búsqueda entrega texto_preview, más la extensión en palabras y páginas, que suele bastar
para decidir si vale pedir el resto.
Advertencia
El texto trae los nombres de quienes fueron parte, y cuando el fallo no está anonimizado también sus cédulas.
anonimizada dice si lo entregado es la versión con los datos suprimidos por el propio
tribunal, y fuente dice cuál de los dos campos del buscador se leyó (texto_sentencia o
texto_sentencia_anon). Se informan las dos cosas para que quien lea sepa qué está leyendo.
Campos de la respuesta¶
rol, anonimizada, fuente, palabras, paginas y texto.
Si la sentencia existe en el índice pero está reservada para consultas anónimas, se levanta
PlataformaRechaza con el número de coincidencias reservadas, en vez de devolver un texto
vacío. Distinguir «existe y no se publica» de «no existe» es el punto.
Plantillas¶
Además de las herramientas, el servidor expone plantillas por prompts/list (prompts en
el protocolo). No las llama el modelo: las invoca la persona desde su cliente, donde aparecen
como comandos. Lo que devuelven es texto que entra a la conversación, y la consulta al Poder
Judicial la hace después la herramienta que cada plantilla nombra, con su ritmo.
Los argumentos viajan como texto. Los que no son obligatorios se pueden omitir: cuando falta el código que identifica la causa, la plantilla dice con qué resolverlo antes de abrirla.
Los que aceptan un conjunto cerrado tienen completado por completion/complete, acotado por lo
que se lleve escrito: competencia en computar-plazo y en revisar-causa, y buscador en
verificar-cita. Cada plantilla ofrece las suyas y no la unión, porque las competencias que
publican al ministro de fe no son las mismas que tienen panel del detalle. tipo no se completa:
sus valores dependen de la competencia elegida, así que la única lista honesta es la que ya la
tiene.
computar-plazo¶
Manda a pedir obtener_actuaciones_receptor y a presentar cada actuación con
fecha_diligencia y fecha_registro separadas, más discrepancia_fechas cuando las dos
fuentes del sitio no coinciden. Enumera qué queda fuera de esa lectura. No hace la cuenta de
días hábiles: entrega la fecha desde la que se cuenta.
Argumento |
Obligatorio |
Qué es |
|---|---|---|
|
sí |
Letra del rol en civil, cobranza y laboral; el libro en apelaciones, el código del libro en penal, o VACÍO en suprema |
|
sí |
Número del rol, sin la letra ni el año |
|
sí |
Año del rol |
|
no |
Sólo las que publican al ministro de fe en la Historia. Por defecto |
|
no |
Código del tribunal, donde la competencia lo usa |
|
no |
Código de la corte, donde la competencia la usa |
revisar-causa¶
Manda a pedir obtener_detalle_causa y a enumerar panel por panel cuál trajo datos, cuál vino
vacío y cuál vino en NULO porque esa competencia no lo publica. Avisa si hay exhortos, o sea si
parte de la tramitación ocurre en otro expediente.
Argumento |
Obligatorio |
Qué es |
|---|---|---|
|
sí |
Letra del rol en civil, cobranza y laboral; el libro en apelaciones, el código del libro en penal, o VACÍO en suprema |
|
sí |
Número del rol, sin la letra ni el año |
|
sí |
Año del rol |
|
no |
Sólo las que tienen al menos un panel del detalle medido. Por defecto |
|
no |
Código del tribunal, donde la competencia lo usa |
|
no |
Código de la corte, donde la competencia la usa |
verificar-cita¶
Manda a pedir buscar_jurisprudencia por rol y a informar ocultas y no_entregadas, las dos
cuentas de completitud. Que la búsqueda no devuelva la sentencia no se informa como que la
sentencia no exista.
Argumento |
Obligatorio |
Qué es |
|---|---|---|
|
sí |
Rol de la sentencia citada, sin el año |
|
sí |
Año del rol |
|
no |
Cuál de los buscadores de fallos consultar. Por defecto |
|
no |
Una frase textual de la cita, para contrastarla contra el texto del fallo |
Errores¶
Excepción |
Qué significa |
Qué hacer |
|---|---|---|
|
403 o 429 (rechazo), o |
Si es 403 o 429: detenerse, revisar si la IP quedó bloqueada. Si es por el prefijo o el token: puede ser un cambio de estructura o una caída transitoria, reintentar más tarde y si persiste, reportar |
|
La plataforma rechazó la consulta por sus propias reglas |
El mensaje es el suyo, textual. Corregir los parámetros |
|
Faltan campos que la plataforma exige |
Se detecta antes de consultar, sin gastar una petición |
|
El HTML no tiene la forma esperada, o un 404 en una ruta construida |
La plataforma cambió, o una caída transitoria del host: si otras consultas al mismo host fallan, reintentar; si sólo ésta, reportar |
|
Competencia o buscador no verificado, o falta |
Corregir la llamada o la configuración |
|
La búsqueda no dio con la causa que se pidió |
Revisar rol, año, competencia y el código del tribunal o la corte. No es que la causa no tenga actuaciones: para eso la lista vacía |
|
La búsqueda excedió el tope de páginas |
Hay más resultados de los que caben. Acotar la búsqueda o subir |
|
La petición salió y no volvió en el tiempo de espera |
La plataforma puede estar lenta. Se puede reintentar más tarde, respetando el intervalo. No es que la causa no exista |
|
La plataforma respondió 5xx |
Error suyo, no de la consulta. Se reintenta más tarde, respetando el intervalo |
Todas llegan con su mensaje. El servidor envuelve cada herramienta y cada recurso para que
así sea: desde mcp 2.1 el SDK sólo propaga el texto de las excepciones que él anticipa y
reemplaza el del resto por Error executing tool <nombre>, que le diría al cliente que algo
falló y no qué. El resultado sigue viajando con is_error: true, o sea el cliente ve el error
en vez de una lista vacía que parecería decir «no hubo actuaciones».
Las tres que describen un fallo de la consulta y no un rechazo (PjudNoRespondio,
PlataformaNoDisponible y el EstructuraInesperada de un código HTTP inesperado) dicen
textualmente que no significa que la causa no exista. Sin esa frase, un timeout llegaba
como Error executing tool listar_cortes: timed out y se resumía como que no hay resultados.