Skip to main content
Glama

Jurisprudencia Nacional Sistematizada (Conector MCP - No oficial)

juris-pj-mcp

Licencia Python MCP Local

Servidor MCP local para buscar y leer la Jurisprudencia Nacional Sistematizada del Poder Judicial del Perú (casaciones, apelaciones, ejecutorias supremas, sentencias de vista, autos y laudos arbitrales) desde tu harness MCP. Conexión directa con httpx: sin navegador, sin playwright y sin credenciales.

Herramienta no oficial: sin afiliación con el Poder Judicial del Perú ni con ninguna entidad del Estado peruano. Ver Aviso legal.

Fuente de datos

jurisprudencia.pj.gob.pe (público)

Autenticación

Ninguna: usa la misma sesión anónima del portal (JSF) y la renueva sola

Almacenamiento

Ninguno — el servidor nunca guarda archivos: los PDFs se entregan como URL pública y el Excel como base64 con cap declarado

Transporte

stdio (Claude Desktop, Claude Code, agentes compatibles con MCP)

Herramientas

10

Corpus (aproximado)

Métrica

Valor

Corpus total del portal

≈687.770 resoluciones (lecturas del 15/10/2026)

Cómo se mide

contador del propio portal: "De un total de N resoluciones, se obtuvieron M resultados" (observado 687.769–687.771 en páginas distintas)

Qué incluye

resoluciones sistematizadas de Corte Suprema y Cortes Superiores de todas las especialidades; los laudos arbitrales viven en el buscador aparte 'Comerciales' (ej. «anulación del laudo» ≈3.100)

Related MCP server: DataJud (CNJ)

Instalación

Opción A — Un click (sin terminal)

  1. Descarga juris-pj-mcp.mcpb desde Releases (asset con nombre fijo: siempre es el mismo archivo, actualizado a la última versión).

  2. Abre Claude Desktop → Ajustes → Extensiones → Instalar desde archivo.

  3. Selecciona el .mcpb y listo.

No requiere Python instalado: el instalador resuelve el runtime y las dependencias automáticamente (runtime UV de MCPB).

Opción B — Manual (CLI y otros agentes)

Primero instala uv si no lo tienes:

# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

Luego, en la carpeta del proyecto:

uv sync

Y añade a la configuración de servidores MCP de tu agente:

{
  "mcpServers": {
    "juris-pj-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "{ruta}/juris-pj-mcp-oss", "server.py"]
    }
  }
}

Reemplaza {ruta} por la carpeta local donde dejaste el proyecto (ej. C:/mcp en Windows o /opt/mcp en Linux/macOS).

El servidor envía sus instrucciones de uso por el handshake MCP: el agente sabe cómo buscar y leer sin prompts adicionales.

Actualizaciones

  • El servidor se auto-chequea en cada arranque: si publicamos una versión más nueva que la tuya, tu agente verá el aviso UPDATE DISPONIBLE y te pedirá descargar juris-pj-mcp.mcpb de Releases e instalarlo de nuevo (arrástralo como la primera vez). Se desactiva con PJ_UPDATE_CHECK=0.

  • Cada versión reemplaza el mismo archivo (juris-pj-mcp.mcpb): la página de Releases siempre muestra una sola tarjeta con la última.

Tools

Tool

Qué hace

buscar_resoluciones

Búsqueda con todos los filtros del buscador público: texto, nivel (Suprema/Superior), distrito + sala (dependientes), especialidad, pretensión/delito y palabras clave (match EXACTO), expediente, tipo de recurso/resolución, año (1998-2026 + 1982), NCPP/NLPT, autos y orden × forma. Paginación por index GLOBAL 0-based continuo; paginas 1..6 en una sola llamada

buscar_laudos

Buscador aparte de anulación/ejecución de laudos arbitrales ('Comerciales'): texto, año, expediente, palabra clave y orden/forma honrados

ficha_resolucion

Ficha/resumen por index: sumilla COMPLETA, palabras clave, sala suprema u órgano y url_pdf

fichas_resoluciones

Lote de fichas de la MISMA búsqueda en una llamada (cap 50; fallidos a faltas con motivo)

url_resolucion

URL pública del PDF por uuid (formato validado localmente)

exportar_excel

XLS de la búsqueda completa en base64 (cap 12 MB declarado; si lo supera: ok:false con tamaños, NUNCA truncado)

buscar_pretensiones

Autocomplete de Pretensión/Delito (valores EXACTOS para el filtro)

buscar_palabras_clave

Autocomplete de Palabras Clave (valores EXACTOS)

listar_salas

Salas de un distrito y especialidad de corte superior (cadena dependiente real; cache 30 min)

listar_filtros

Catálogos exactos: nivel, distritos, especialidades, tipos_recurso, tipos_resolucion, años y orden

Cómo se busca (3 niveles)

  1. Descubrir — buscar_resoluciones / buscar_laudos: filas con index GLOBAL (0-based y continuo entre páginas), sumilla COMPLETA, uuid + url_pdf y un ses para continuar. Con SOLO texto se reproduce la búsqueda del home (el conjunto MÁS amplio que entrega el portal); al agregar filtros el sitio refina como en su UI; los filtros SOLOS también son válidos (cualquier combinación, sin texto).

  2. Detalle — ficha_resolucion(ses, index) para una resolución; fichas_resoluciones(ses, indices) para lotes.

  3. Documentos — url_resolucion(uuid) entrega la URL pública del PDF (descarga directa contra el portal) y exportar_excel(ses) el XLS completo de la búsqueda.

Los valores EXACTOS de los filtros salen de listar_filtros, buscar_pretensiones, buscar_palabras_clave y listar_salas: no hay que adivinarlos.

Semántica y validaciones estrictas

  • Sesiones ses: TTL de 15 min deslizante (cada uso renueva) y LRU. Cambiar filtros con el mismo ses re-ejecuta conservando el id; un ses desconocido con filtros arranca una búsqueda NUEVA y lo declara en nota.

  • Índice GLOBAL: 0-based y continuo entre páginas (el portal sirve 10 filas por página); paginas 1..6 trae páginas consecutivas en UNA llamada (con nota de recorte). Una pagina=N fuera de rango responde instantánea (ms≈0, sin red) con el total.

  • Match EXACTO de catálogos: 'Penal' no cae en 'Familia Penal'; 'Nulidad' no cae en 'Recurso de Nulidad'; 'Laboral' no arrastra 'Contencioso Adm. Laboral'.

  • orden por etiqueta o código: 'Nro de Recurso' == '0' (las etiquetas del catálogo funcionan); inválidos → {ok:false} con la lista, sin fallback silencioso. Ídem forma (ASC/DESC).

  • sala validada server-side contra el combo del distrito/especialidad: una sala inexistente devuelve {ok:false} con ejemplos (JAMÁS un filtrado silencioso con el universo entero). 'Todos'/'0' equivalen a no filtrar en distrito, sala y año.

  • Coherencia total↔filas: si un refino queda sin resultados, filas vuelve vacío con total:0 y nota (nunca arrastra filas del landing anterior).

  • Campos: la clave llega SIEMPRE que el sitio publique el label en ESA fila ("" si lo publica vacío); si no lo publica, se omite (nada se inventa). Las sumillas llegan COMPLETAS: el servidor nunca trunca datos.

  • Contrato cerrado: cada tool publica additionalProperties:false — los argumentos listados son los únicos (no hay materia ni tamano_pagina fantasma).

  • Toda respuesta trae ms (latencia real del servidor) y los errores son siempre {ok:false, error, pista} con una pista accionable (catálogos, ejemplos, reintento).

Flujo recomendado para el agente

  1. buscar_resoluciones(texto='...') o con filtros exactos (de las tools de catálogo).

  2. Página siguiente: re-llama con el mismo ses y pagina=N sin cambiar filtros.

  3. ficha_resolucion(ses, index) para el resumen, url_resolucion(uuid) para el PDF y exportar_excel(ses) para el XLS.

  4. buscar_laudos(...) es un buscador aparte (su ses es del buscador de laudos).

Rendimiento (medido, no prometido)

El portal del PJ es lento e intermitente: aterrizaje 9-18 s (hasta ~60 s en horas pico), POST de filtros 2-8 s, cada página paginada 8-12 s (hasta ~30 s), PDF 4-17 s, listar_salas ~15-35 s la primera vez (después cache 30 min). Por eso:

  • Prefiere 1 llamada con paginas=3..6 (hasta 60 filas) a varias llamadas de 1 página.

  • Las llamadas con paginas 4-6 pueden tardar 60-100 s (y hasta ~300 s si el portal se atasca): usa paginas 1-3 si necesitas latencias menores.

  • Watchdog PJ_TOOL_TIMEOUT (300 s) + reintento×1: si el socket del portal se cuelga, la tool responde con error y pista — nunca un hang. El servidor es el único dueño del timeout: configura el techo de petición de tu cliente MCP en ≥310 s — un corte del cliente (p. ej. -32001 Request timed out) no es una falla del servidor (la llamada seguía en curso) y no conviene reintentar a ciegas con los mismos argumentos.

  • Cortesía con la fuente: semáforo de concurrencia y sesiones LRU; los PDFs y el Excel se piden al portal solo cuando el agente los necesita.

Limitaciones y diseño (particularidades del portal)

  • La ficha popup "Ver" del portal (resoluciones relacionadas del expediente) queda vacía o cuelga sin navegador: toda la data estable (sumilla, sala, expediente, uuid) vive en la fila y se expone completa.

  • Los buscadores "por Normas" y "por Juez Supremo" no se pueden poblar sin el JS del sitio: no hay tools para ellos.

  • El autocomplete de Pretensión/Delito especializado de la Corte Suprema siempre devuelve vacío → el filtro pretension aplica en Corte Suprema (como en la web).

  • El portal sirve SIEMPRE 10 filas por página (verificado): no existe tamano_pagina; usa paginas para leer más de una página por llamada.

  • Las filas de Corte Suprema publican sala_suprema/norma_derecho_interno en lugar de especialidad/organo_jurisdiccional (son el mismo nivel de datos, alternados por el sitio según el nivel).

  • Inestabilidad upstream: los HTTP 500 y micro-cortes del PJ se traducen a {ok:false, error, pista} reintentables (es el portal, no el servidor).

Variables de entorno (opcionales)

Variable

Default

Para qué

PJ_TIMEOUT

240

Timeout HTTP (read/connect) por request; deja ventana al reintento ×1 bajo el watchdog

PJ_TOOL_TIMEOUT

300

Watchdog por tool (5 min máx): toda tool responde aunque el portal cuelgue

PJ_VERIFY

1

Validación TLS del portal (0 si tu red la interfiere)

PJ_MAX_CONCURRENCY

2

Requests simultáneos hacia el portal

PJ_INFLIGHT_CAP

8

Tope global de requests en vuelo

PJ_SESION_TTL

900

TTL deslizante de las sesiones (segundos)

PJ_SESION_MAX

10

Máximo de sesiones vivas (LRU)

PJ_EXCEL_MAX_MB

12

Cap del Excel en base64

  • Proyecto independiente, no oficial, sin relación con el Poder Judicial del Perú ni con ninguna entidad del Estado peruano.

  • Provisto tal cual; sin garantía de disponibilidad del portal ni de exactitud de los datos. Para uso jurídico serio, verifica siempre en la fuente oficial.

  • Los datos son de acceso público en jurisprudencia.pj.gob.pe; respeta la fuente: no la uses para scraping masivo.

Licencia

Apache-2.0

Available Tools

10 tools
buscar_laudosBuscando laudosA

Busca resoluciones de ANULACION y EJECUCION DE LAUDOS ARBITRALES (buscador 'Comerciales' del home del PJ). Usa la misma vista de resultados; la sesion es del buscador de laudos.

Args: texto: texto del contenido de las resoluciones de laudos (ej 'anulacion del laudo'). anio: anio de la resolucion ('2026'..'1998' o '1982'; catalogo propio del buscador de laudos). expediente: numero del expediente. palabra_clave: palabra clave EXACTA (lista con buscar_palabras_clave). orden: 'Nro de Recurso', 'Anio', 'Pretension/Delito', 'Tipo de Resolucion', 'Sala Suprema' o 'Fecha Resolucion' (default; el buscador de laudos ordena por fecha DESC). forma: 'ASC' o 'DESC' (default). pagina: numero de pagina (1-based; 10 filas por pagina). paginas: paginas consecutivas (1..6). ses: sesion de una busqueda previa de laudos para la pagina siguiente.

Devuelve: {'ok', 'ses', 'modo': 'laudos', 'total', 'paginas', 'pagina', 'tamano_pagina', 'filas': [mismas filas de buscar_resoluciones; sumilla COMPLETA]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
sesNo
anioNo
formaNo
ordenNo
textoNo
paginaNo
paginasNo
expedienteNo
palabra_claveNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does add real behavioral context: the default sort ('ordena por fecha DESC'), 10 rows per page, and a 1..6 limit on consecutive pages. It says nothing about permissions, rate limits, or failure behavior, which an unannotated mutation-adjacent fetch tool should ideally cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose before the Args/Devuelve blocks, and each documented argument and the return dict earn their place given the 0% schema coverage. It is dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description supplies the return shape ({'ok','ses','modo','total','paginas','pagina','tamano_pagina','filas'}) and notes that sumilla is COMPLETA relative to buscar_resoluciones. Combined with full parameter documentation, an agent has enough to invoke and read results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate entirely, and it does: every one of the 9 parameters is documented, including the anio catalog ('2026'..'1998' or '1982'), the exact-word requirement with a cross-reference to buscar_palabras_clave, and the full set of 'orden' values with their default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Busca resoluciones de ANULACION y EJECUCION DE LAUDOS ARBITRALES') and ties it to the 'Comerciales' searcher, which is more precise than the bare name. It hints at differentiation via 'la sesion es del buscador de laudos' but never explicitly tells the agent why to pick this over the sibling buscar_resoluciones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through mechanism rather than stated: 'ses' is described as the session for the next page, and palabra_clave points to buscar_palabras_clave for obtaining the exact keyword. There is no explicit when-to-use/when-not guidance or named alternative against which this tool competes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buscar_palabras_claveBuscando palabras claveA

Sugerencias del AUTOCOMPLETE de Palabras Clave (sistematizacion de sumillas del PJ). Los valores EXACTOS se usan como 'palabra_clave' en buscar_resoluciones y buscar_laudos.

Args: q: texto inicial (1+ caracteres; ej 'indemnizacion', 'reivindicacion').

Devuelve: {'ok', 'q', 'sugerencias': [...], 'nota'}: hasta 50 sugerencias.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the return shape ({'ok','q','sugerencias','nota'}) and the cap of up to 50 suggestions. It doesn't discuss failure modes or rate limits, but for a read-only suggestion endpoint there is little behavioral surface to disclose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with purpose and integration, then Args and Returns blocks. Every element is relevant, and since no output schema exists, documenting the return dict earns its place rather than being redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-annotation, no-output-schema tool, the description covers purpose, usage in the broader search workflow, the parameter contract, and the return shape. It is nearly self-sufficient; only edge behaviors (empty results, error note semantics) are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for the single parameter, and it does: it defines q as initial text, specifies the 1+ character minimum, and gives concrete examples ('indemnizacion', 'reivindicacion'). This adds real meaning beyond the bare 'Q: string' in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource (keyword autocomplete suggestions) and states the scope of what it returns. It distinguishes itself by naming the sibling tools (buscar_resoluciones, buscar_laudos) whose keyword values it feeds, though the operating verb is implicit rather than a clean verb+resource phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the workflow context: the exact returned values are used as 'palabra_clave' in buscar_resoluciones and buscar_laudos, which tells the agent to call this before those searches. It lacks an explicit when-not-to-use clause, but the integration guidance is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buscar_pretensionesBuscando pretensionesA

Sugerencias del AUTOCOMPLETE de Pretension/Delito (inventario sistematizado del PJ). Los valores EXACTOS se usan como filtro 'pretension' en buscar_resoluciones (solo Corte Suprema).

Args: q: texto inicial (1+ caracteres; ej 'prescripcion', 'indemnizacion', 'pension').

Devuelve: {'ok', 'q', 'sugerencias': [...], 'nota'}: hasta 50 sugerencias.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the result cap (hasta 50 sugerencias), the return object shape, and the scope limitation (solo Corte Suprema). It does not document the 'nota' field or error behavior, but for a read-only lookup this is solid disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into a purpose line followed by explicit Args/Devuelve sections, with the key constraint front-loaded. It is dense but every sentence carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter autocomplete with no output schema and no annotations, the definition covers input constraints, output shape, result limits, and the downstream use case. The only minor gap is the undocumented 'nota' return field, which is not critical to correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it defines q as an initial text with a minimum of 1 character and gives three concrete examples ('prescripcion', 'indemnizacion', 'pension'). This adds real semantics beyond the bare 'string' type, though it does not specify normalization or partial-match rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and function: autocomplete suggestions over the systematized inventory of 'Pretension/Delito' values. It also names the sibling it feeds (buscar_resoluciones), so an agent can distinguish its role from other buscar_* tools. Slightly indirect phrasing ('Sugerencias del AUTOCOMPLETE') keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It conveys the core usage pattern: the EXACT returned values are used as the 'pretension' filter in buscar_resoluciones. This effectively tells the agent when this tool is useful (to obtain valid filter values) and which sibling consumes them. It stops short of an explicit when-not statement or an alternative for non-Corte-Suprema searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buscar_resolucionesBuscando resolucionesA

Busca RESOLUCIONES en la Jurisprudencia Nacional Sistematizada del PJ (busca en el CONTENIDO de casaciones, apelaciones, ejecutorias supremas, autos, sentencias de vista, laudos...).

Args: texto: texto libre del contenido de las resoluciones (ej 'prescripcion adquisitiva'); el sitio filtra en AND implicito (2+ palabras = interseccion). Con SOLO texto reproduce la busqueda del home (conjunto completo, ~mas resultados); al agregar filtros el sitio refina su busqueda (como en su UI). nivel: 'Corte Suprema' (default) o 'Corte Superior'. distrito: distrito judicial (solo con nivel='Corte Superior'; catalogo en listar_filtros categoria='distritos'; ej 'Lima Norte'). especialidad: especialidad EXACTA (ciltra por nombre completo: 'Penal', 'Familia Penal', 'Laboral', 'Contencioso Adm. Laboral'...; catalogo en listar_filtros categoria='especialidades'; en Corte Superior depende del distrito). sala: organo jurisdiccional (sala) EXACTO del distrito (valor de listar_salas(distrito, especialidad); solo Corte Superior; requiere distrito). pretension: pretension/delito EXACTA (hallala con buscar_pretensiones; ej 'Prescripcion Adquisitiva de Dominio'). Solo Corte Suprema. palabra_clave: palabra clave EXACTA (busca con buscar_palabras_clave; ej 'CONFIRMARON'). expediente: numero del expediente (ej '00258-2024' o '00258-2024-0-0905-JR-CI-02'). tipo_recurso: tipo de recurso EXACTO (ej 'Casacion', 'Nulidad'; catalogo en listar_filtros categoria='tipos_recurso'). tipo_resolucion: 'Auto', 'Ejecutoria Suprema' o 'Sentencia de Vista' (exacto). anio: anio de la resolucion ('1998'..'2026' o '1982'). ncpp: 'si' para solo resoluciones del Nuevo Codigo Procesal Penal (con especialidad='Penal'). nlpt: 'si' para solo resoluciones de la Nueva Ley Procesal del Trabajo (con especialidad='Laboral'). autos: 'si' para incluir autos calificatorios. orden: 'Nro de Recurso', 'Anio', 'Pretension/Delito', 'Tipo de Resolucion', 'Sala Suprema' o 'Fecha Resolucion' (default; el sitio ordena por fecha DESC). forma: 'ASC' o 'DESC' (default). pagina: numero de pagina (1-based; 'index' es GLOBAL y continuo entre paginas; el sitio sirve 10 filas por pagina). paginas: paginas consecutivas a traer en UNA llamada (1..6; ~8-12 s cada una; si pides mas de 6 hay 'nota' de recorte). ses: sesion de una busqueda previa para la pagina siguiente o para re-buscar (filtros distintos re-ejecutan conservando el 'ses'; un 'ses' desconocido con filtros lanza busqueda NUEVA con id nuevo y lo declara en 'nota').

Devuelve: {'ok', 'ses', 'modo', 'total', 'paginas', 'pagina', 'tamano_pagina' (10; dato del sitio), 'siguiente_pagina', 'filas': [{index, recurso, expediente, tipo_resolucion, fecha_resolucion, sumilla (COMPLETA, sin truncar), palabras_clave, especialidad?, organo_jurisdiccional? (en filas de instancia), sala_suprema? (en filas de Corte Suprema), pretension_delito, norma_derecho_interno?, uuid, url_pdf}]}. El sitio omite 'especialidad/organo' en filas de Corte Suprema y publica 'sala_suprema/norma_derecho_interno' en su lugar (y viceversa): son datos alternativos del mismo campo. Los 'index' se usan con ficha_resolucion.

ParametersJSON Schema
NameRequiredDescriptionDefault
sesNo
anioNo
ncppNo
nlptNo
salaNo
autosNo
formaNo
nivelNo
ordenNo
textoNo
paginaNo
paginasNo
distritoNo
expedienteNo
pretensionNo
especialidadNo
tipo_recursoNo
palabra_claveNo
tipo_resolucionNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden and delivers: implicit AND intersection for multi-word text, text-only reproduces the home search while filters refine it, index is global and continuous across pages, 10 rows per page, paginas 1..6 costing ~8-12s each with a 'nota' when truncated, and detailed ses reuse semantics including new-id declaration when an unknown ses is passed with filters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line and the Args block is a disciplined one-item-per-parameter list with no filler. It is necessarily long for 19 parameters plus session/pagination behavior, though a few parentheticals (default, note) are repeated more than needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe the return payload, and it does in detail: ok/ses/modo/total/paginas/pagina/tamano_pagina/siguiente_pagina plus the per-row fields, including the site quirk that especialidad/organo and sala_suprema/norma_derecho_interno are mutually exclusive representations of the same concept. Nothing an agent needs to call and consume this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must document all 19 parameters, and it does: it gives meaning, format and examples for texto, nivel, distrito, especialidad, sala, pretension, palabra_clave, expediente, tipo_recurso, tipo_resolucion, anio, ncpp, nlpt, autos, orden, forma, pagina, paginas and ses, including which helper tool supplies valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (buscar RESOLUCIONES en la Jurisprudencia Nacional Sistematizada del PJ) and further scopes it to the content of casaciones, apelaciones, ejecutorias, autos, etc. It names related helpers (ficha_resolucion, listar_filtros, listar_salas) so an agent can position this tool among its siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives rich conditional guidance: filters only make sense with a level, distrito only applies with nivel='Corte Superior', sala requires distrito, pretension is Corte Suprema-only, ncpp/nlpt require specific especialidades, and it points to listar_filtros/buscar_pretensiones/buscar_palabras_clave for valid values. It never explicitly contrasts the tool against top-level alternatives like buscar_laudos or fichas_resoluciones, so a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

exportar_excelExportando a ExcelA

Exporta la BUSQUEDA ACTUAL de la sesion a EXCEL (XLS) en base64 (mismo boton 'Exportar' del sitio).

Args: ses: sesion devuelta por buscar_resoluciones o buscar_laudos.

Devuelve: {'ok', 'ses', 'formato': 'xls', 'tamano_bytes', 'base64', 'nota'}: decodifica base64 y guarda con extension .xls. Si supera el cap declarado devuelve ok:false CON el tamano y la pista de reduccion (NUNCA trunca el archivo).

ParametersJSON Schema
NameRequiredDescriptionDefault
sesYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the return payload keys, that output is base64 to be decoded and saved as .xls, and importantly the cap behavior (ok:false with size and a reduction hint, NEVER truncating the file). It omits auth/permission needs and rate limits, but error and output semantics are unusually well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then cleanly separates Args and Devuelve. The return-value block is dense but earns its place given no output schema exists; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema and no annotations, the description supplies purpose, parameter provenance, return shape, and error/cap behavior. Nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does by defining 'ses' as the session returned by buscar_resoluciones or buscar_laudos. That tells the agent where the required value comes from, which is the key semantic gap the bare string schema leaves open.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Exporta la BUSQUEDA ACTUAL de la sesion a EXCEL (XLS) en base64') and anchors it to the site's 'Exportar' button. This clearly distinguishes it from the search/list siblings (buscar_resoluciones, listar_salas, etc.), which are all read/query tools rather than exporters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes usage context by noting it exports the CURRENT session search and that 'ses' comes from buscar_resoluciones or buscar_laudos, which routes the agent to run a search first. It stops short of explicit when-not-to-use guidance or naming alternatives, but for a single export tool the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ficha_resolucionObteniendo ficha de resoluciónA

FICHA/RESUMEN completo de una resolucion por 'index': recurso, expediente, especialidad, tipo de resolucion, fecha, organo jurisdiccional, pretension/delito, sumilla COMPLETA (sin truncar), palabras clave y URL del PDF.

Args: ses: sesion devuelta por buscar_resoluciones o buscar_laudos. index: 'index' global de la fila (0-based; el de las filas de la busqueda).

Devuelve: {'ok', 'ses', 'index', 'fila': {recurso, expediente, tipo_resolucion, fecha_resolucion, sumilla (COMPLETA), palabras_clave, especialidad?/organo_jurisdiccional? o sala_suprema?/norma_derecho_interno? (alternativos del sitio), pretension_delito, uuid, url_pdf}, 'nota' (si la fila no expone PDF)}: el PDF con url_resolucion.

ParametersJSON Schema
NameRequiredDescriptionDefault
sesYes
indexYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose meaningful behavior: the return dict shape, the 'ok'/'nota' fields, the edge case where a row exposes no PDF, and that some fields are site-dependent alternatives (especialidad?/organo_jurisdiccional? or sala_suprema?). It stops short of stating read-only semantics or error behavior explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and then uses clearly labeled Args and Devuelve (returns) sections. It is dense and the return enumeration is long, but the structure is organized and every element carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description thoroughly explains the returned dict, including the 'nota' case and alternative field sets, and documents both parameters. For a simple 2-param read tool, an agent has enough to invoke it and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: 'ses' is defined as the session returned by the search tools, and 'index' is defined as the global 0-based row index from the search results. This adds real meaning beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns the complete FICHA/RESUMEN of a resolution looked up by 'index', and enumerates the fields that come back. It distinguishes itself from the search siblings by naming buscar_resoluciones/buscar_laudos as the source of 'ses', though it does not explicitly differentiate itself from fichas_resoluciones (plural).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: by describing 'ses' as coming from buscar_resoluciones or buscar_laudos and 'index' as the row index from those searches, it outlines the intended two-step workflow. However, it gives no explicit when-to-use vs the sibling fichas_resoluciones and no exclusions or preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fichas_resolucionesObteniendo fichas en loteA

Lote de fichas/resumenes de la MISMA busqueda en UNA llamada (cap 50; suma sumillas COMPLETAS).

Args: ses: sesion de la busqueda. indices: lista de 'index' globales (ej [0, 1, 2]; duplicados se procesan una sola vez).

Devuelve: {'ok', 'ses', 'fichas': [...], 'faltas': [{index, motivo}], 'nota'}: los indices fallidos van a 'faltas' con su motivo.

ParametersJSON Schema
NameRequiredDescriptionDefault
sesYes
indicesYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the cap of 50, duplicate handling, and that failed indices are returned in 'faltas' with reasons, but it omits safety traits such as read-only nature or session prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with Args and Devuelve sections, front-loading the batch purpose and return shape. It is appropriately sized for a two-parameter tool with no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description supplies the return structure, failure handling, cap, and parameter meanings. It could be more complete by explicitly stating that 'ses' and valid indices come from a prior search call, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It defines both parameters: 'ses' as the search session and 'indices' as a list of global indices with an example and a note that duplicates are processed once, adding meaningful semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves a batch of records/summaries from the same search in one call, with a cap and deduplication note. It is specific about the resource and scope, though it does not explicitly name sibling tools like ficha_resolucion to sharpen differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives context that all indices must come from the same search and that this is a batch operation with a 50-item cap. However, it does not state when to prefer this over ficha_resolucion for a single record or buscar_resoluciones for searching, leaving alternatives implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_filtrosListando catálogosA

Valores EXACTOS para los filtros del buscador: nivel, distritos, especialidades, tipos_recurso, tipos_resolucion, anios y orden. Los errores de match son EXACTOS (por ejemplo 'Penal' no confunde con 'Familia Penal').

Args: categoria: 'todos' (resumen) o 'nivel', 'distritos', 'especialidades', 'tipos_recurso', 'tipos_resolucion', 'anios', 'orden'.

Devuelve: {'ok', 'categoria', ...}: los valores alimentan los filtros de buscar_resoluciones y buscar_laudos. Nota: en Corte Superior las especialidades y salas disponibles dependen del distrito (listar_salas). 'Todos'/'0' equivale a no filtrar.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoriaNotodos

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose real behavior: exact-match semantics with the 'Penal' vs 'Familia Penal' example, the district-dependency of certain catalogs, and the 'Todos'/'0' no-filter equivalence. It also sketches the return shape, but omits auth/permission needs or rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then cleanly sectioned into Args and Devuelve. The only waste is that the category list appears twice (first sentence and Args block), a minor redundancy rather than a structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only catalog tool with no output schema, the description supplies the return shape, the consumer tools, and the key caveats. It stops short of documenting the full output fields (indicated only by '...'), but an agent can invoke it correctly from what is given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter has no enum in the schema, so the description must compensate. The Args block enumerates the valid categoria values ('todos', 'nivel', 'distritos', 'especialidades', 'tipos_recurso', 'tipos_resolucion', 'anios', 'orden') and explains 'todos' as the summary mode, which is exactly the missing information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete resource (the exact catalog values behind the search filters: nivel, distritos, especialidades, tipos_recurso, tipos_resolucion, anios, orden) and its role as supplier of inputs to buscar_resoluciones and buscar_laudos. That explicitly separates it from the sibling search tools, which consume rather than produce these values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent the values 'alimentan los filtros de buscar_resoluciones y buscar_laudos', and adds a conditional caveat that in Corte Superior specialties/salas depend on the district (pointing to listar_salas) and that 'Todos'/'0' means no filter. Clear context for when to call it, though it never states a when-not-to-use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_salasListando salasA

Lista los ORGANOS JURISDICCIONALES (salas) de un distrito y especialidad (corte superior). El 'nombre' es el filtro 'sala' EXACTO con nivel='Corte Superior'.

Args: distrito: distrito judicial (ej 'Lima Norte'; catalogo en listar_filtros categoria='distritos'). especialidad: especialidad (ej 'Civil'; catalogo en listar_filtros categoria='especialidades').

Devuelve: {'ok', 'distrito', 'especialidad', 'salas': [{codigo, nombre}], 'nota'}: usa el 'nombre' EXACTO como filtro 'sala' (o el 'codigo'); ~15 s la primera vez, 30 min de cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
distritoYes
especialidadYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses caching behavior (~15s first call, 30 min cache) and the return shape. It omits auth/permission requirements and error behavior, but the cache disclosure is meaningful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the main purpose, then uses Args/Devuelve sections for scannability. Content is dense but organized; a few phrases repeat the 'nombre EXACTO' filter guidance, slightly redundant but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-param, no-output-schema tool, the description supplies the return structure, catalog sources, downstream filter usage, and caching latency. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: both distrito and especialidad get example values and pointers to the enumerating tool (listar_filtros categoria='distritos'/'especialidades'). This fully disambiguates the two required params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lista) and resource (órganos jurisdiccionales/salas) scoped by distrito and especialidad (corte superior). It clearly distinguishes itself from siblings like listar_filtros by explaining that this returns the sala catalog rather than the filter catalog it consumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: pass the returned EXACT 'nombre' (or 'codigo') as the 'sala' filter in downstream tools, and points to listar_filtros for valid distrito/especialidad values. It does not, however, state explicit when-not-to-use conditions versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

url_resolucionGenerando URL del PDFA

URL PUBLICA de descarga del PDF de una resolucion (ServletDescarga del PJ; sin sesion ni token).

Args: uuid: 'uuid' de la fila o ficha (formato 8-4-4-4-12 hexadecimal).

Devuelve: {'ok', 'url', 'archivo'}: GET publico del PDF; el servidor MCP no lo descarga. Un uuid inexistente/malformado devuelve 500 del sitio.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does well: it discloses that access is public/unauthenticated via the PJ ServletDescarga, that the MCP server only returns the URL rather than fetching the PDF, and that a bad uuid yields a 500 from the site. This is meaningful error and side-effect context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and capitalized, and the Args/Devuelve structure is easy to scan. It is slightly longer than strictly necessary with the docstring-style headers, but no sentence is pure waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema and no annotations, the description covers the essentials: what is produced (a URL), the return dict keys {ok, url, archivo}, auth expectations, and error behavior. Only the choice relative to sibling data tools is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (schema only declares a generic string), so the description must compensate. It does by specifying the uuid identifies a row/record and giving the concrete format (8-4-4-4-12 hexadecimal), which is genuinely useful validation guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (generate a public download URL) and resource (PDF of a resolution), which clearly separates it from data-fetching siblings like ficha_resolucion or buscar_resoluciones. It does not name an alternative sibling explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the URL is public and needs no session/token, implying usage, and notes the MCP server does not download the file. However, it never says when to prefer this over ficha_resolucion or the buscar_* siblings, leaving the routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.2.5
    • First observedbuscar_laudos
    • First observedbuscar_palabras_clave
    • First observedbuscar_pretensiones
    • First observedbuscar_resoluciones
    • First observedexportar_excel
    • First observedficha_resolucion
    • First observedfichas_resoluciones
    • First observedlistar_filtros
    • First observedlistar_salas
    • First observedurl_resolucion

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

The two search tools target clearly distinct corpora (national jurisprudence vs arbitration laudos), and the single/batch ficha pair is well differentiated by cardinality. The two autocomplete helpers (buscar_pretensiones, buscar_palabras_clave) are close in shape but feed different filters, so boundaries remain clear.

Naming Consistency4/5

Almost all tools follow a consistent Spanish verb_noun snake_case pattern (buscar_*, listar_*, exportar_*), which is highly predictable. Minor deviation: url_resolucion uses a noun rather than a verb, and ficha_resolucion/fichas_resoluciones differ only by number.

Tool Count5/5

Ten tools is well-scoped for a jurisprudence search service: two searches, two retrieval modes, PDF URL, export, two autocompletes, and two catalog helpers. Every tool has a distinct, non-redundant role.

Completeness4/5

The surface covers the full read-only lifecycle: filter discovery, searching, fetching individual/batch records, resolving PDF URLs, and exporting results. As a read-only corpus there is no create/update/delete need, though pagination-depth or related-resolution features are not exposed.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying public Brazilian court proceedings metadata and movements via the CNJ/DataJud API, covering multiple courts.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables searching and reading Peru's Official Gazette for norms, resolutions, booklets, and PDFs through a local MCP harness. It provides full-text search with date and booklet filters, plus retrieval of document summaries, integral text, and public PDF URLs.
    9
    1
    Apache 2.0