Skip to main content
Glama

# Buscador de Jurisprudencia del Tribunal Constitucional (Conector MCP - No Oficial)

Buscador de Jurisprudencia del Tribunal Constitucional

Licencia Python MCP Local

Servidor MCP local para buscar y leer la jurisprudencia del Tribunal Constitucional del Perú —la sistematización jurisprudencial del TC— desde tu harness MCP. Conexión directa con httpx: sin navegador, sin playwright y sin credenciales.

La vista es única: cada búsqueda consulta los dos inventarios del TC (la sistematización actual, con tesauro y buscador avanzado, hasta 2026, y el inventario histórico de resoluciones 2001-2018 con su motor propio) y entrega los resultados fusionados con deduplicación, como si fuera una sola fuente. El agente no necesita saber que existen dos motores: el servidor traduce, combina y declara todo en nota.

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

Fuente de datos

jurisprudencia.sedetc.gob.pe (sistematización actual) + inventario histórico de resoluciones del propio TC (2001-2018)

Autenticación

Ninguna: todo es público

Almacenamiento

Ninguno — el servidor nunca guarda archivos: cada fila trae la URL pública del PDF (resuelta también para el inventario histórico)

Transporte

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

Herramientas

9

Corpus (medido el 16/10/2026)

Métrica

Valor

Sistematización actual

74 854 resoluciones sistematizadas (buscador avanzado) o ≥10 000 por texto (cap del índice Elasticsearch), con sentidos (417), distritos (115), salas (5), tipos (224) y palabras claves (29 603)

Inventario histórico de resoluciones

~88 000 resoluciones 2001-2018 (incluye Aclaraciones, Admisibilidades y de Inconstitucionalidad antiguas que la sistematización no indexa)

Cobertura combinada

~163 000 documentos deduplicados en una sola vista

Related MCP server: TCP Bolivia MCP Server

Instalación

Opción A — Un click (sin terminal)

  1. Descarga juris-sedetc-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-sedetc-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "{ruta}/juris-sedetc-mcp", "server.py"]
    }
  }
}

Reemplaza {ruta} por la carpeta donde clonaste/descomprimiste el proyecto (ej. C:/mcp en Windows o /opt/mcp en Linux/macOS): server.py vive en la RAIZ del repositorio, así que tras clonar queda en {ruta}/juris-sedetc-mcp/server.py.

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-sedetc-mcp.mcpb de Releases e instalarlo de nuevo (arrástralo como la primera vez). Se desactiva con TCJ_UPDATE_CHECK=0.

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

Tools

Tool

Qué hace

buscar_sentencias

Texto COMPLETO en los DOS inventarios (fusionados con dedup): normaliza tildes, comodín *, semántica modo ('todas'/'algunas'/'frase'). Cap 1000 páginas

busqueda_avanzada

Filtros EXACTOS: expediente, demandante/demandado, fecha exacta o RANGO, sentido, distrito, sala, tipo, palabras (ids) y proceso (del inventario histórico). Paginación profunda en la sistematización (>1000 páginas)

resultados_sistematizacion

Resultados por sistematización temática (6 ramas: precedentes vinculantes, tipos de proceso...) con texto/expediente adicionales

resultados_tesauro

Resultados por concepto del TESAURO del TC (sentencias/autos/interlocutorias) con ids del árbol

detalle_sentencia

Ficha completísima por slug: metadatos, tesaurio y fundamentos COMPLETOS (nunca truncados) + url_archivo (PDF)

listar_filtros

Catálogos exactos: tipos (224), distritos (115), salas (5), sentidos (417), tipos de tesaurio (3) y procesos (7 del histórico)

listar_tesauro

Árboles del tesauro NAVEGABLES (raíces + parent_id/depth, con count_subarbol por nodo)

listar_sistematizaciones

Árbol completo de la sistematización (6 ramas con children)

listar_palabras

Catálogo de 29 603 palabras claves con filtro local letra/contiene (alimenta busqueda_avanzada(palabras=))

Cómo se busca (3 niveles)

  1. Descubrir — buscar_sentencias(search='...') para texto completo (multi-inventario) o busqueda_avanzada(...) con filtros exactos; resultados_sistematizacion(ids) y resultados_tesauro(ids, tipo) para los recorridos temáticos. Filas con index GLOBAL 0-based continuo entre páginas y url_pdf en cada fila.

  2. Detalle — detalle_sentencia(slug) para la ficha completa: expediente, sentencias, sentidos, tesauro y los FUNDAMENTOS COMPLETOS (la decisión, nunca truncada).

  3. Documentos — cada fila y ficha trae la url_pdf (URL pública del PDF del TC): descárgalo con la tool de fetch/descarga de tu agente. Los PDFs son públicos y directos; el servidor nunca guarda archivos.

Los valores EXACTOS de los filtros salen de listar_filtros, listar_tesauro, listar_sistematizaciones y listar_palabras: no hay que adivinarlos.

Semántica del merge (lo que el agente ve como una sola fuente)

  • total = suma de ambos inventarios (cota superior); los documentos repetidos en ambos se OMITEN de las filas y el conteo va en nota.

  • paginas = máximo de ambos; el inventario histórico se agota en la página 1000 de su motor (desde ahí el bloque trae solo sistematización y lo declara la nota); en busqueda_avanzada la sistematización sí pagina más allá de 1000 (path SQL del portal).

  • index GLOBAL 0-based continuo entre páginas (fórmula cerrada, sin estado): reserva 10 posiciones por inventario en cada página, así que pueden existir huecos cuando un inventario se agota o no participa.

  • Deduplicación por documento (expediente tipo NNNNN-AAAA-TT): la sistematización (más rica) gana; el histórico aporta las resoluciones que la sistematización no indexa (~30-50% del inventario histórico).

  • Filtros traducidos: expediente, partes, año de publicación singular y proceso aplican al histórico; sentido/distrito/sala/palabras solo a la sistematización (con nota cuando no aplican al histórico). Si pasas search, el histórico filtra SOLO por texto (su motor no combina texto con otros filtros) — combinación que además es la ruta con paralelización.

  • Contrato cerrado: additionalProperties:false en TODAS las tools; errores siempre {ok:false, error, pista} con pista accionable; toda respuesta trae ms.

Rendimiento (medido, no prometido)

Ambos motores se consultan EN PARALELO en cada búsqueda: el bloque típico responde en 1-3 s (el promedio del estrés v5 fue ~2-3 s por tool). Catálogos con cache 30 min. Watchdog TCJ_TOOL_TIMEOUT (300 s): si un motor se atasca, la tool responde con error y pista — nunca un hang.

Particularidades de los motores del TC (documentadas al modelo)

  • El índice de la sistematización no matchea tildes ('pension' sí, 'Pensión' no): el servidor normaliza siempre; el inventario histórico SÍ maneja acentos y multi-palabra (con modo 'todas'/'algunas'/'frase').

  • Comillas no: en el buscador de texto simple, una frase entre comillas dispara el cap del índice (≥10 000): el servidor las quita y avisa.

  • BUG del índice de la sistematización: texto+distrito juntos devuelven 0 aunque por separado funcionen — el servidor lo auto-diagnostica y el bloque se compensa con las filas del inventario histórico.

  • fecha_publicacion exacta degrada al AÑO completo (bug del portal): para un día exacto usa el rango D,D.

  • El proceso del inventario histórico no se combina con search (el motor lo rechaza): el servidor lo aplica solo cuando no hay texto.

  • Las fechas espurias del corpus (1969-12-31, 1970-01-01) viajan COMPLETAS marcadas (fecha_sentencia_sospechosa/fecha_ingreso_sospechosa).

  • El tesauro de interlocutorias está VACÍO en el backend (counts 0); el code de los nodos puede no cuadrar con su posición (dato upstream: navega por id).

  • El catálogo de distritos incluye filas espurias upstream (nombres tipo fecha): usa las de distrito real.

Variables de entorno (opcionales)

Variable

Default

Para qué

TCJ_TIMEOUT

60

Timeout HTTP por request contra la sistematización

TCJ_HISTORICO_BASE

motor oficial

Base del inventario histórico de resoluciones

TCJ_HISTORICO_TIMEOUT

40

Timeout HTTP del motor histórico

TCJ_MERGE

1

Desactiva la integración del inventario histórico con 0

TCJ_TOOL_TIMEOUT

300

Watchdog por tool (5 min máx): toda tool responde aunque un motor cuelgue

TCJ_CACHE_TTL

1800

Duración del caché de catálogos (segundos)

TCJ_UPDATE_CHECK

1

Desactiva el chequeo de versiones con 0

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

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

  • Los datos son de acceso público (jurisprudencia.sedetc.gob.pe y el buscador de resoluciones del TC); respeta la fuente: no la uses para scraping masivo.

Licencia

Apache-2.0

Available Tools

9 tools
buscar_sentenciasBuscando sentenciasA

Busca en el TEXTO COMPLETO de TODAS las resoluciones del Tribunal Constitucional, COMBINANDO los dos inventarios del TC en una sola vista: (a) la sistematizacion actual (indice Elasticsearch del portal, hasta 2026) y (b) el inventario historico de resoluciones (2001-2018). El server QUITA TILDES del texto (el indice NO matchea acentos) y fusiona las filas con dedup de documento.

Args: search: texto a buscar en el contenido del fallo (multi-palabra si funciona en el motor historico; el comodin '' tambien: 'funcionarios'). Con total 0 prueba otra palabra clave o pasa a busqueda_avanzada. page: pagina 1-based (cap de 1000 paginas en ambos inventarios). modo: (inventario historico) 'todas' (contenga TODAS las palabras; default), 'algunas' (contenga ALGUNAS) o 'frase' (la frase completa).

Devuelve: {'ok', 'total' (suma de ambos inventarios), 'pagina', 'tamano_pagina' (variable: hasta 20 filas por bloque), 'paginas' (maximo entre inventarios), 'siguiente_pagina', 'filas': [{index GLOBAL, numero_expediente, numero_sentencia?, demandante, demandado, fecha_publicacion, fecha_sentencia?, fecha_ingreso?, sentido?, tipo?, distrito?, sala?, tesaurio?, slug?, url_pdf, extractos/texto}], 'ms', 'nota'?}: las filas del bloque primero vienen de la sistematizacion actual y luego del inventario historico; los documentos repetidos en ambos se omiten (dedup, declarado en 'nota'). El TEXTUAL para fichas completas: detalle_sentencia (si la fila trae 'slug').

ParametersJSON Schema
NameRequiredDescriptionDefault
modoNo
pageNo
searchYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 behavioral burden and delivers: accent/tilde stripping so unmatched accents are explained, cross-inventory dedup of repeated documents surfaced in 'nota', block ordering (current index first, then historical), a 1000-page cap, and variable page size of up to 20 rows. These are non-obvious traits an agent could not infer from schema or annotations.

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?

It is long and dense, but front-loaded with purpose and then cleanly partitioned into Args and Devuelve sections, so every part earns its place. Slight verbosity in the return-value paragraph keeps it from a 5.

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 tool merging two heterogeneous sources with an output schema present, the definition covers query syntax, pagination limits, dedup semantics, row ordering, and how to chain into detalle_sentencia. 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: 'search' explains multi-word behavior and the '*' wildcard, 'page' explains 1-based indexing and the 1000-page cap, and 'modo' supplies the effective enum ('todas'|'algunas'|'frase') that the schema's untyped anyOf string omits. This fully compensates for the coverage gap.

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 names a specific verb (Busca) and a precisely scoped resource: full text of ALL Tribunal Constitucional resolutions, explicitly clarifying that it merges the current systematization index and the historical inventory. It routes the agent away from the sibling busqueda_avanzada, so it is distinguishable without opening any schema.

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 gives concrete fallback conditions: 'Con total 0 prueba otra palabra clave o pasa a busqueda_avanzada' and points to detalle_sentencia for full records when a 'slug' is present. Alternatives are named with conditions, though the other siblings (resultados_sistematizacion, resultados_tesauro, listar_*) are not contrasted.

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

busqueda_avanzadaBuscando con filtros avanzadosA

Busqueda AVANZADA del TC: texto, expediente, partes, fecha o RANGO, sentido, distrito, sala, tipo y palabras claves por id. COMBINA los dos inventarios del TC en una vista unica: los filtros aplican a ambos cuando tienen equivalente (expediente, partes, año de publicacion, tipo de proceso) y al inventario sistematizado cuando son avanzados (sentido, distrito, sala, palabras).

Args: search: texto completo (server quita tildes). Si se pasa, el inventario historico se consulta SOLO por texto (su motor no acepta otras combinaciones con texto) y 'modo' define su semantica. numero_expediente: ej '00148-2026-HC'. nombre_demandante: nombre EXACTO de la parte (ej 'Fernando Catalan Contreras'). nombre_demandado: nombre EXACTO de la entidad demandada. fecha_publicacion: 'YYYY-MM-DD' o RANGO con comas ('2020-01-01,2020-12-31'). VERIFICADO: una fecha EXACTA opera como el ANIO COMPLETO (el backend la degrada); para un dia exacto usa rango '2020-01-01,2020-01-01'. sentencia_sentido: id o nombre EXACTO ('Improcedente', 'Fundada en parte'; catalogo listar_filtros categoria='sentidos'). Solo aplica al inventario sistematizado. id_sentencia_distrito: id o nombre ('Lima'; servir listar_filtros categoria='distritos'). Solo aplica a la sistematizacion. id_sentencia_sala: id o nombre ('Sala 1'; categoria='salas'). Solo sistematizacion. id_sentencia_tipo: id o nombre ('Sentencia'; categoria='tipo'). Solo sistematizacion. palabras: ids (o nombres exactos) del catalogo de palabras (listar_palabras), separados por coma ('1,3'). Solo sistematizacion. proceso: tipo de proceso del inventario historico ('Amparo', 'Habeas Corpus', 'Cumplimiento', 'Inconstitucionalidad', 'Conflicto de Competencia', 'Habeas Data', 'Queja'; catalogo listar_filtros categoria='procesos'). Se ignora si 'search' esta presente. modo: 'todas' | 'algunas' | 'frase' (para el texto en el inventario historico; default 'todas'). page: pagina 1-based (sin cap practico en la sistematizacion; el inventario historico no pasa de 1000 paginas).

Devuelve: {'ok', 'total' (suma de inventarios), 'pagina', 'tamano_pagina' (variable), 'paginas', 'siguiente_pagina', 'filas': [{index GLOBAL, slug, numero_expediente, numero_sentencia, demandante, demandado, fecha_publicacion, fecha_sentencia?, fecha_ingreso?, sentido?, tipo?, distrito?, sala?, sistematizacion?, tesaurio?, tipo_resolucion?, url_pdf, texto? (inventario historico: sin 'extracto')}], 'ms', 'nota'?}: bloque con filas de la sistematizacion primero y del inventario historico despues; dups omitidos ('nota').

ParametersJSON Schema
NameRequiredDescriptionDefault
modoNo
pageNo
searchNo
procesoNo
palabrasNo
nombre_demandadoNo
fecha_publicacionNo
id_sentencia_salaNo
id_sentencia_tipoNo
nombre_demandanteNo
numero_expedienteNo
sentencia_sentidoNo
id_sentencia_distritoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/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 behavioral burden and does so well: it discloses that the server strips accents, that the historic inventory can only be queried by text when 'search' is present (its engine rejects other text combinations), that an EXACT fecha_publicacion is silently degraded to the whole year (with the range workaround), that the historic inventory caps at 1000 pages, and that duplicate rows are dropped with a 'nota'. These are exactly the non-obvious traits an agent needs.

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 a two-sentence summary of scope and inventory-merging before the parameter list, and the Args section is dense but well organized. The main cost is the lengthy 'Devuelve' block spelling out the return payload, which duplicates information already carried by the output schema and could be trimmed.

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 13-parameter merge tool with zero annotation and zero schema-description coverage, the description supplies everything an agent needs: filter applicability per inventory, format rules, catalog references, pagination limits, dedup behavior, and response shape. Nothing material for correct invocation 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 for all 13 parameters, and it does: every argument gets format, example, catalog source, and applicability scope (e.g. '00148-2026-HC' for expediente, comma ranges for fecha_publicacion, exact names for demandante/demandado, 'todas'|'algunas'|'frase' for modo, 1-based page). This meaning is entirely absent from the schema and is fully supplied here.

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: an AVANZADA search of the TC that merges the two inventories into a single unified view, with filters applying to both when equivalents exist. The scope is concrete and an agent can picture the operation. It does not distinguish itself from near-siblings such as buscar_sentencias, 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?

The description explains in detail which filters apply to which inventory (both when equivalent, sistematizacion-only when advanced) and notes that 'proceso' is ignored when 'search' is present, which is genuine conditional guidance. However, it never states when to choose this tool over the sibling tools (buscar_sentencias, resultados_sistematizacion, etc.); it only routes to the catalog helpers listar_filtros and listar_palabras for id values. Tool-selection guidance is implied rather than explicit.

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

detalle_sentenciaObteniendo ficha de sentenciaA

FICHA COMPLETA de una sentencia/auto/interlocutoria del TC por slug: expediente, sentencia, demandante/demandado, fechas, sentido, contexto de sala, tesaurio de conceptos y fundamentos COMPLETOS (la decision integral; NUNCA truncada) y URL del PDF del TC.

Args: slug: el 'slug' de filas de los buses (ej '00148-2026-hc-1440-2026').

Devuelve: {'ok', 'slug', 'detalle': {todo el contenido publicado por el TC para esa resolucion (con 'fundamentos' COMPLETOS y 'url_archivo'/PDF)}, 'ms', 'nota'?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully discloses that 'fundamentos' are returned complete and never truncated and that a PDF URL is included, which is genuine behavioral context for a read tool. However it says nothing about auth requirements, rate limits, error cases, or what happens on an invalid slug.

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 an Args/Devuelve block that mirrors the actual interface. It is reasonably tight, with minor redundancy from the repeated uppercase 'COMPLETOS'/'COMPLETA' emphasis, but nothing is wasted enough to hurt the score.

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 tool the definition covers what it does, what the one argument means, and the shape of the response (including that an output schema also exists). Missing only auth/error context and sibling routing, so it is nearly complete for its complexity.

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 largely does: it explains that 'slug' comes from the row entries of 'los buses' and gives a concrete example ('00148-2026-hc-1440-2026') that makes the expected format inferable. The origin phrase 'filas de los buses' remains vague, keeping it short of a 5.

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: retrieving the 'FICHA COMPLETA' of a TC sentencia/auto/interlocutoria by slug, and enumerates the fields it returns. It is clearly a detail-fetch tool, distinguishable in nature from the sibling search/list tools, though it never names them explicitly.

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 only implied: the emphasis on 'COMPLETA ... NUNCA truncada' hints this is the full-detail counterpart to the search results, but there is no explicit 'use after buscar_sentencias' statement, no prerequisites, and no named alternative. Adequate but leaves the agent to infer the workflow.

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

listar_filtrosListando filtrosA

Catálogo EXACTO para busqueda_avanzada: 'tipo' (tipos de resolucion, 224 registros), 'distritos' (115), 'salas' (5), 'sentidos' (417 con patron ES 'search_elastic'), 'tipos_tesauro' (3) y 'procesos' (los 7 tipos de proceso del inventario historico). 'todos' trae SOLO el recuento de cada catalogo. Las categorias de detalle se PAGINAN localmente (100 valores por pagina; la respuesta de sentidos completa pesa ~86 KB y puede ser truncada por el cliente: usa page).

Args: categoria: 'todos' (resumen de counts) o 'tipo', 'distritos', 'salas', 'sentidos', 'tipos_tesauro', 'procesos'. page: pagina del detalle (1-based; 100 valores por pagina; solo aplica a categorias de detalle). paginas: paginas consecutivas a traer en UNA llamada (1..3; si pides mas hay 'nota' de recorte).

Devuelve: {'ok', 'categoria', 'valores': [{id, nombre, slug, search_elastic?(sentidos)}], 'total', 'pagina', 'paginas_filtradas', 'siguiente_pagina'?, 'ms', 'nota'?}: los 'id' alimentan busqueda_avanzada; los nombres son EXACTOS (el server resuelve id con nombre/slug).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
paginasNo
categoriaNotodos

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full burden and largely meets it: it discloses local pagination (100 values/page), the 1..3 'paginas' cap with a 'nota' truncation flag, and that the full 'sentidos' response is ~86 KB and may be client-truncated. It stops short of stating read-only/auth expectations, but the behavioral surface is 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-loaded with the catalog list and counts, then Args, then returns; every sentence carries operational detail. It is dense and somewhat long, but no clear filler remains.

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?

Despite an output schema existing, the description adds the exact return shape (id/nombre/slug/search_elastic), the pagination cursor fields, and the truncation 'nota'. Combined with the parameter constraints, nothing an agent needs to call and chain this into busqueda_avanzada 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% and no enums exist, so the description must compensate fully — and it does, defining 'categoria' values, 'page' as 1-based at 100 values/page with detail-only applicability, and 'paginas' bounded at 1..3 with its overflow behavior. Every parameter is semantically documented beyond the bare schema.

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 names a specific verb+resource ('Catálogo EXACTO para busqueda_avanzada') and enumerates exactly which catalogs it returns, with record counts for each. An agent can immediately distinguish it from sibling busqueda_avanzada, which consumes these ids rather than producing them.

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 states the downstream consumer explicitly ('los id alimentan busqueda_avanzada') and distinguishes 'todos' (counts only) from detail categories. It does not, however, contrast usage against other sibling listar_* tools such as listar_tesauro or listar_palabras, so routing among those is left to inference.

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

listar_palabrasListando palabras claveA

Catalogo de PALABRAS CLAVES del TC (29 603 exactas) con filtrado LOCAL por letra inicial o por contenido (sin acentos). Usa los 'id' en busqueda_avanzada(palabras='1,3').

Args: letra: letra inicial (ej 'a'); filtrado LOCAL (el backend no filtra). contiene: sub-cadena a buscar (LOCAL; sin acentos: la comparacion es case-insensitive). page: pagina del resultado FILTRADO (100 palabras por pagina). paginas: paginas consecutivas a traer en UNA llamada (1..3; si buscas mas hay 'nota' de recorte).

Devuelve: {'ok', 'total_filtradas', 'pagina', 'paginas_filtradas', 'tamano_pagina': 100, 'siguiente_pagina', 'palabras': [{id, nombre, slug}], 'ms', 'nota'?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
letraNo
paginasNo
contieneNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 filtering is LOCAL (backend doesn't filter), that comparison is case-insensitive and accent-insensitive, the 100-per-page size, and the 1..3 consecutive-pages cap with a 'nota' on truncation. It omits any permission/auth context, but for a read-only catalog this is minor.

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 purpose, then cleanly separated into Args and Devuelve sections, so an agent can scan to the parameter it needs. It is information-dense rather than padded, though 'filtrado LOCAL' is repeated and the return-block detail is somewhat redundant given an output schema exists.

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?

Covers the essentials for a 4-param, 0%-coverage tool: filtering semantics, pagination limits, truncation behavior, and the id-based chaining into busqueda_avanzada. Because an output schema exists, the Devuelve block is a bonus rather than a necessity; the definition is complete enough to invoke 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 coverage is 0%, so the description must compensate, and it fully does: all four parameters are documented with meaning beyond the schema — letra as initial letter with example, contiene as a substring with accent/case rules, page as the page of the FILTERED result, and paginas as consecutive pages in one call with a 1..3 bound. This is exactly what a 0%-coverage schema needs.

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 resource ('Catalogo de PALABRAS CLAVES del TC') with a concrete scale (29 603 exactas) and the operations (local filtering by initial letter or content). An agent immediately knows this returns a keyword catalog. It doesn't explicitly contrast itself with sibling listers like listar_tesauro or listar_filtros, though the downstream reference to busqueda_avanzada clarifies its role.

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 downstream context: 'Usa los id en busqueda_avanzada(palabras=1,3)', which tells the agent exactly why and how to consume the output. It also warns that filtering is LOCAL and the backend does not filter, which shapes invocation. It lacks explicit when-not-to-use or sibling-alternative guidance.

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

listar_sistematizacionesListando sistematizacionesA

Arbol COMPLETO de la SISTEMATIZACION del TC (6 ramas tematicas con children por tipo/nodo). Usa los 'id' en resultados_sistematizacion (ej '1' = Precedentes vinculantes, '268' = Habeas corpus).

Devuelve: {'ok', 'sistematizacion': [{id, nombre, slug, children: [...]}], 'ms'}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does convey that the tree is COMPLETE (no pagination or filtering implied) and sketches the return shape, which is useful, but it says nothing about auth, rate limits, or why the tree is static/cacheable. An output schema already exists, so the return-value sketch earns only partial credit.

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?

Purpose and the cross-tool routing are front-loaded in the first sentence, with the return block last. The 'Devuelve:' block is largely redundant given an output schema exists, costing a little efficiency but not enough to break the structure.

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 zero-parameter, read-only listing whose output schema already documents the response, the description supplies what is missing: how many branches exist, how children are organized, and how the ids feed the sibling tool. Nothing essential for correct invocation is absent.

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?

The tool takes zero parameters, which is the baseline-4 case. The description introduces id concepts ('1', '268') but these belong to resultados_sistematizacion, not to this tool's inputs, so no additional parameter meaning is needed or expected.

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+resource: returns the COMPLETE taxonomy tree of the TC's systematization, with 6 thematic branches and type/node children. This clearly separates it from siblings like resultados_sistematizacion (which returns results) and listar_tesauro/listar_filtros (other taxonomies).

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?

Explicitly routes the agent to a sibling workflow: 'Usa los "id" en resultados_sistematizacion', telling the agent the ids produced here are consumed there, and with concrete examples ('1' = Precedentes vinculantes, '268' = Habeas corpus). No exclusions versus listar_tesauro/listar_filtros are given, so it stops short of a full 5.

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

listar_tesauroListando arboles del tesaurioA

Arbol de conceptos del TESAURO del TC NAVEGABLE (el arbol completo puede exceder el limite de contexto del cliente: NUNCA se entrega de un bote; se navega). SIN parent_id devuelve las RAICES (nivel 1) con su 'count_subarbol' (acumulado de todo el subarbol). Con parent_id devuelve el SUBARBUS del nodo hasta 'depth' niveles.

Args: tipo: 'sentencias' (default), 'autos' o 'interlocutorias'. parent_id: id del nodo padre (de una respuesta previa); omitido/'' = raices del arbol. depth: niveles de children a incluir bajo el parent (1..4; default 1; cap local a 4).

Devuelve: {'ok', 'tipo', 'parent_id', 'depth', 'nodos': [{id, nombre, slug, code, count_subarbol, children? (si depth>1)}], 'ms', 'nota'?}: cada nodo trae 'count_subarbol' (el TOTAL ACUMULADO del subarbol, publicado por el TC) y 'nota' cuando el nodo no existe o no tiene children. IMPORTANTISIMO: los 'count_subarbol' del arbol NO son el 'total' de resultados_tesauro (que cuenta solo asignaciones DIRECTAS al nodo): el acumulado suma todo el subarbol. El 'code' del TC puede NO cuadrar con la posicion del nodo (dato upstream inconsistente, ej nodo 458 con code 6.6.7 colgando de la rama 1.1.2): NAVEGA por 'id', nunca reconstruyas la ruta por 'code'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoNosentencias
depthNo
parent_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 does so richly: it warns about context-limit navigation, explains that count_subarbol is an accumulated subtree total distinct from resultados_tesauro's direct count, and flags upstream 'code' inconsistency with an explicit instruction to navigate by 'id'. It also mentions the 'nota' field emitted when a node has no children.

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 navigable-tree concept, then Args and Devuelve sections. Every sentence earns its place given the complexity, but the formatting is chatty and somewhat verbose for an agent-facing definition.

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?

Although an output schema exists, the description still clarifies the return shape and the non-obvious count semantics and code-vs-id trap. For a navigation tool with subtle footguns, nothing an agent needs in order 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 fully does: it documents each of the three params (tipo values 'sentencias'/'autos'/'interlocutorias', parent_id as prior-node id or null for roots, depth range 1..4 with default 1 and a local cap). This adds authoritative syntax and defaults beyond the bare schema.

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+resource: it navigates/lists the concept tree ('Arbol de conceptos del TESAURO del TC NAVEGABLE'), and clarifies the two modes (roots without parent_id vs subtree with it). It even distinguishes itself from the sibling resultados_tesauro by contrasting their count semantics, so an agent can tell the two apart 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 clear usage context: must be navigated rather than fetched whole ('NUNCA se entrega de un bote'), omit parent_id for roots, pass a parent_id from a prior response for subtrees, and use depth for levels. It does not enumerate explicit when-not-to-use conditions or name the alternative tools by name, which keeps it short of a 5.

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

resultados_sistematizacionBuscando por sistematizacionA

Resultados por concepto SISTEMATIZADO del TC (la vista 'sistematizacion' del portal): precedentes vinculantes, tipos de proceso (habeas corpus, amparo, cumplimiento...), y las sub-categorias del arbol. Los 'id' EXACTOS vienen de listar_sistematizaciones.

Args: sistematizaciones: id(s) separados por coma ('268' = Habeas corpus; '1' = Precedentes vinculantes; varios: '268,269'). search: texto adicional a filtrar dentro de esa sistematizacion (server quita tildes). numero_expediente: filtra por expediente adicional (ej '00148-2026-HC'). page: pagina 1-based.

Devuelve: {'ok', 'total', 'pagina', 'tamano_pagina', 'paginas', 'siguiente_pagina', 'filas': [filas comunes], 'ms', 'nota'?}: 'index' GLOBAL y 'slug' para detalle_sentencia.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
numero_expedienteNo
sistematizacionesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 burden. It does disclose useful behavior: the server strips accents from 'search', and the response carries a global 'index' plus 'slug' for detalle_sentencia. It never states that this is a read-only query, nor does it describe pagination mechanics beyond the field names.

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 summary followed by an explicit Args/Devuelve split, which makes it easy to scan. The Devuelve section overlaps with the output schema, so a little of it is redundant, but nothing is 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?

Four parameters are all documented, the id source is named, and return fields are pointed at even though an output schema already exists. An agent has enough to call the tool correctly; the remaining gap is the absence of any statement about read-only safety and how the two text filters combine.

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 has to compensate and largely does: it explains comma-separated id syntax with concrete examples ('268' = Habeas corpus, '1' = Precedentes vinculantes, '268,269'), clarifies that 'search' filters within the sistematizacion, gives an expediente example, and notes page is 1-based. Only the interaction between 'search' and 'numero_expediente' is left unstated.

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?

Names a specific resource and view ('la vista sistematizacion del portal del TC') and enumerates what the results contain (precedentes vinculantes, tipos de proceso, sub-categorias del arbol). It also points at the sibling that supplies the ids, so an agent can distinguish it from listar_sistematizaciones, though it never contrasts itself against the parallel sibling resultados_tesauro.

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?

States the prerequisite that exact ids come from listar_sistematizaciones, which is genuine routing guidance, but gives no when-to-use vs resultados_tesauro/busqueda_avanzada and no exclusions or fallback behavior. Usage is implied rather than stated.

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

resultados_tesauroBuscando por tesaurioA

Resultados por concepto del TESAURO del TC (acumulados con 'count' por nodo; el id viene del arbol de listar_tesauro). 'Derecho a la vida' (id de tesauro=sentencias), autos de tutela de derechos, interlocutorias.

Args: tesaurios: id(s) separados por coma del arbol ELEGIDO (ej '4' = Derecho a la vida; '1,2' = multi). tipo: 'sentencias' (default), 'autos' o 'interlocutorias' (EXACTO). page: pagina 1-based.

Devuelve: {'ok', 'total', 'pagina', 'tamano_pagina', 'paginas', 'siguiente_pagina', 'filas': [filas comunes], 'ms', 'nota'?}: ATENTO: el 'total' cuenta los documentos asignados DIRECTAMENTE al nodo; el 'count_subarbol' de listar_tesauro es el ACUMULADO de todo el subarbol (publicado por el TC) y NO coincide en nodos agregados (ej: raiz 63493 vs total directo 7; hoja '4' si cuadra con 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
tipoNosentencias
tesauriosYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 a genuine behavioral subtlety: 'total' counts only documents assigned directly to the node, whereas listar_tesauro's 'count_subarbol' is the accumulated subtree count (with a concrete example, raiz 63493 vs 7). Auth, rate limits, and empty-result behavior are not covered, but the most misleading counterintuitive trait is surfaced.

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

Conciseness3/5

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

The Args/Devuelve blocks are structured and front-loaded, but the 'Devuelve' line largely restates an output schema that already exists, and the note about total vs count_subarbol is buried after the field list. It is longer than it needs to be, with some duplication of structured data.

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 3-parameter query tool with an existing output schema and no annotations, the description covers purpose, id sourcing, exact parameter values, and the count-discrepancy caveat. The return-shape restatement is redundant given the output schema, but no decision-relevant information 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% and the schema has no enums or defaults documented beyond raw values, so the description must compensate — and it does: 'tesaurios' is comma-separated ids from the chosen tree with examples ('4', '1,2'), 'tipo' enumerates the exact accepted strings and its default, and 'page' is 1-based. Nothing needed to call the tool is left implicit.

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+resource: returns documents/results by TESAURO concept node of the TC, accumulated by 'count' per node. It also anchors its identity by stating the ids come from the tree returned by sibling listar_tesauro, so an agent can distinguish it from buscar_sentencias or resultados_sistematizacion without opening any schema.

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 names the prerequisite source of the 'tesaurios' ids (el arbol de listar_tesauro) and pins the exact accepted values for 'tipo'. It doesn't state when-not to use it versus busqueda_avanzada or buscar_sentencias, but the routing context is clear enough.

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. 9 tool updatesv0.4.0
    • First observedbuscar_sentencias
    • First observedbusqueda_avanzada
    • First observeddetalle_sentencia
    • First observedlistar_filtros
    • First observedlistar_palabras
    • First observedlistar_sistematizaciones
    • First observedlistar_tesauro
    • First observedresultados_sistematizacion
    • First observedresultados_tesauro

TDQS

A4/5.0

Scored across 9 tools

Disambiguation3/5

The three retrieval tools overlap heavily: buscar_sentencias, busqueda_avanzada and resultados_sistematizacion all query the same two TC inventories with text/keyword filters, so an agent must read long prose to decide which to call. The descriptions do provide explicit disambiguation hints (text-only vs. multi-filter vs. concept id, and cross-references between tools), which keeps it usable but not clean. listar_tesauro/listar_sistematizaciones/listar_filtros are clearly distinct, so only the search cluster is ambiguous.

Naming Consistency4/5

All names are lowercase snake_case Spanish, and clear families emerge: listar_* for catalog/tree navigation (4 tools) and resultados_* for filtered result sets (2 tools). Minor deviations exist — buscar_sentencias (verb) vs. busqueda_avanzada (noun) vs. detalle_sentencia (noun) — but the pattern is still predictable and readable.

Tool Count5/5

Nine tools is well-scoped for a jurisprudence search server with two inventories, two concept trees (tesauro and sistematizacion), a keyword catalog and a filter catalog. Each tool has a clear job and none feels like filler.

Completeness4/5

The surface covers the full read-only lifecycle: discovery (filtros, palabras, sistematizaciones, tesauro trees), search (full-text and multi-filter), and full-record retrieval via slug with PDF URL. Minor gaps: no way to fetch or page through PDF/binary content, and the heavy overlap between the three search tools suggests the surface could be consolidated rather than extended.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers