Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
listar_filtrosA

Lista los valores validos para los filtros del SPIJ.

Args: categoria: una de 'dispositivos', 'agrupaciones', 'tomos', 'materias', 'sectores'. Si se omite, devuelve un resumen con conteos y ejemplos de cada categoria. tomo: solo para categoria='materias': el tomo de jurisprudencia del que se quieren las especialidades, ej 'TRIBUNAL CONSTITUCIONAL'.

'dispositivos': tipos de dispositivo legal (ej DECRETO SUPREMO). 'agrupaciones': grupos del acervo (ej LEGISLACION SUPRANACIONAL). 'tomos': tomos de jurisprudencia (ej TRIBUNAL CONSTITUCIONAL). 'materias': especialidades de un tomo de jurisprudencia (requiere 'tomo'). 'sectores': entidades emisoras (hay cientos; si el tuyo no esta en la lista puedes escribir parte del nombre en buscar_normas y se resuelve automaticamente).

Devuelve: dict con 'ok' y la lista 'valores': son los strings EXACTOS que aceptan buscar_normas y buscar_jurisprudencia.

buscar_normasA

Busca normas legales en el SPIJ (normas generales, administrativas, etc).

Args: consulta: texto libre en el contenido. El buscador hace AND implicito con TODAS las palabras (ej 'transferencia partidas'). OJO: NO acepta comillas ni OR. Si acepta comodin al final de una raiz, ej 'presupuest*'. Empieza con 1-2 palabras. sumilla: texto a buscar solo en la sumilla (resumen) de la norma. dispositivo: tipo de dispositivo legal, ej 'DECRETO SUPREMO'. Acepta parcial ('decreto sup') y se resuelve solo; si es ambiguo devuelve candidatos. Ver listar_filtros. sector: entidad emisora, ej 'ECONOMIA Y FINANZAS'. Acepta parcial. agrupacion: grupo del acervo, ej 'LEGISLACION SUPRANACIONAL'. numero: numero del dispositivo, ej '200-2026-EF' o '31068' (sin prefijo 'Nº'). OJO: algunas leyes no estan indexadas como registro propio; en ese caso la respuesta trae los documentos que lo mencionan (con una nota que lo explica). fecha_ini / fecha_fin: rango de publicacion, formato AAAA-MM-DD. orden: '1' = fecha (recientes primero, default), '2'/'3'/'4' = relevancia. start: desplazamiento (multiplo de 10). Pagina N -> start = (N-1)*10. paginas: paginas consecutivas a traer en una sola llamada (cada pagina = 10 resultados, max 10 paginas). sumilla_chars: maximo de caracteres de la sumilla por documento (0 = sin limite). Para leer la sumilla completa usa detalle_norma(id).

Devuelve: ok, total, desde, hasta, siguiente_start (si hay mas paginas), normas: lista de {id, url_web, codigoNorma, dispositivoLegal, sector, fechaPublicacion, sumilla} (con 'sumilla_total' si se acoto). Ante 0 resultados devuelve 'nota' y 'sugerencias' ({param, consulta, total} de versiones mas cortas de la consulta o de la sumilla, sin filtros categoricos).

buscar_jurisprudenciaA

Busca jurisprudencia en el SPIJ (TC, cortes, precedentes, sentencias).

Args: consulta: texto libre (AND implicito, sin comillas ni OR; comodin * ok). Empieza con 1-2 palabras. tomo: tomo de jurisprudencia, ej 'TRIBUNAL CONSTITUCIONAL'. OJO: se envia al SPIJ pero el indice NO lo aplica (verificado: los totales son identicos con y sin tomo) - filtra con la consulta y/o fechas. materia: especialidad dentro del tomo, ej 'JURISPRUDENCIA ADMINISTRATIVA' del tomo del TC. Ver listar_filtros(categoria='materias'). organismo: filtra LOCALMENTE por organismo emisor, ej 'TC', 'CORTE SUPREMA', 'OSIPTEL', 'CGD' (coincide contra codigo/sector/dispositivo, sin acentos). El servidor escanea hasta 5 paginas del SPIJ y devuelve solo los coincidentes (con 'filtrados' y 'escaneadas'). Es la via correcta: el indice no filtra por tomo. numero: numero de expediente o codigo, ej '03209-2024-PA/TC' (expediente completo del TC funciona). fecha_ini / fecha_fin: rango de publicacion AAAA-MM-DD. orden: '1' = fecha (default), '2'/'3'/'4' = relevancia. start / paginas: igual que buscar_normas (por cada pagina devuelta el servidor puede escanear varias internamente). sumilla_chars: maximo de caracteres de la sumilla por documento (0 = sin limite).

Devuelve: ok, total (del indice), organismo, escaneadas (paginas escaneadas), filtrados (coincidencias encontradas), normas, siguiente_start (si quedan paginas por escanear). Si la consulta base arroja 0 resultados incluye 'sugerencias'; si el indice arroja resultados pero ninguno del organismo pedido, incluye 'organismos_disponibles' (los organismos presentes en lo escaneado). El texto se obtiene con detalle_norma(id) o texto_completo(id).

estructura_normaA

Devuelve el INDICE de encabezados de una norma del SPIJ, con el offset de cada uno para leer secciones concretas con texto_completo(id, offset=X, max_chars=N).

Args: id: identificador del SPIJ, ej 'H1453062' (lo dan buscar_*).

Devuelve: ok, id, url_web, fuente, total_caracteres, total_encabezados, encabezados: lista de {tipo: 'seccion'|'articulo', titulo, offset} (hasta 150; con 'siguiente_encabezado' si hay mas). Los offsets apuntan al mismo texto canonico que sirve texto_completo. Si la norma no tiene encabezados (sentencias del TC son prosa), 'encabezados' viene vacia: usa buscar_en_norma o lectura por rangos.

buscar_en_normaA

Busca una palabra o frase DENTRO del texto completo de una norma del SPIJ, y devuelve cada ocurrencia con su offset (para leer alrededor con texto_completo(id, offset=X, max_chars=N)). Ideal para saltar a secciones concretas (ej 'RATIFICAN', 'Artículo 8', 'DISPOSICIONES FINALES') sin leer todo el texto. La busqueda ignora acentos y mayusculas.

Args: id: identificador del SPIJ, ej 'H1385488'. texto: palabra o frase a buscar dentro de la norma (1-8 palabras). contexto: caracteres de contexto alrededor de cada ocurrencia (50-500, default 200). max_matches: maximo de ocurrencias a devolver (1-25, default 10).

Devuelve: ok, id, url_web, total_caracteres, matches: lista de {offset, extracto}, hay_mas (si quedan ocurrencias).

detalle_normaA

Devuelve los METADATOS y el TEXTO de una norma del SPIJ por su id.

Args: id: identificador del SPIJ, ej 'H1453062' (lo devuelve buscar_normas). offset: desde que caracter del texto empezar (0 = inicio). max_chars: maximo de caracteres de texto a devolver en esta llamada (0 = usa el limite por defecto). Si el texto es mas largo, 'siguiente_offset' indica por donde continuar. desde_final: si es True, devuelve los ULTIMOS max_chars caracteres (en sentencias judiciales la decision 'RESUELVE' esta al final).

Devuelve: ok, id, url_web (para abrir la norma en el sitio SPIJ), codigoNorma, dispositivoLegal, sector, fechaPublicacion, ruta, titulo, sumilla, texto (texto plano, sin HTML), total_caracteres, texto_truncado, siguiente_offset (si hay mas texto).

Nota: si el texto es muy largo para tu contexto, lee por rangos con offset (ej offset=20000) o la cola con desde_final=True.

texto_completoA

Devuelve el TEXTO COMPLETO de una norma o jurisprudencia del SPIJ.

Ruta robusta: obtiene el documento word del SPIJ (ruta que incluye el acervo completo de jurisprudencia) y devuelve texto plano. Si esa ruta falla, usa el texto del detalle.

Args: id: identificador del SPIJ, ej 'H1352213' (lo dan buscar_*). offset: desde que caracter del texto empezar (0 = inicio). max_chars: maximo de caracteres a devolver en esta llamada (0 = usa el limite por defecto). Si hay mas texto, 'siguiente_offset' indica por donde continuar. desde_final: si es True, devuelve los ULTIMOS max_chars caracteres (en sentencias judiciales la decision 'RESUELVE' esta al final; combinado con max_chars=3000 la lees directo).

Devuelve: ok, id, url_web, codigoNorma, fechaPublicacion, dispositivoLegal, texto (texto plano), total_caracteres, texto_truncado, siguiente_offset (si hay mas; None con desde_final).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation3/5

Buscar_normas and buscar_jurisprudencia are clearly split by domain, and estructura_norma versus buscar_en_norma serve distinct navigation purposes. However, detalle_norma and texto_completo heavily overlap: both retrieve text by id with offset/max_chars/desde_final, and the agent may hesitate which to use for a given document.

Naming Consistency3/5

All names use consistent snake_case and Spanish, which is readable. But the pattern mixes verb-first (listar_filtros, buscar_normas, buscar_jurisprudencia) with noun-first (estructura_norma, detalle_norma, texto_completo) and a prepositional form (buscar_en_norma), so there is no single predictable convention.

Tool Count5/5

Seven tools is well within the ideal 3–15 range for a read-only legal search server. Each tool has a distinct role (filter discovery, two search domains, outline, within-document search, retrieval), and none appears superfluous.

Completeness4/5

The read-only lifecycle is largely covered: filter discovery, norm and jurisprudence search, document structure, within-document search, and text retrieval via metadata or full-text routes. Minor gaps include no explicit batch retrieval or dedicated jurisprudence metadata tool, but the existing tools offer workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues