Skip to main content
Glama

up-law-argleg-mcp

Servidor MCP que expone el corpus legal de la base up_law_argleg_db (legislacion nacional argentina + jurisprudencia CSJN + tratados internacionales de Cancilleria) a Claude, con proveniencia verificable en cada respuesta: el abogado puede rastrear cada texto al documento oficial capturado (sha256 + fecha + URL de InfoLEG) y auditar cualquier cita textual con el tool verificar_cita.

Requisitos

  • Docker Desktop (Postgres 16 + pgvector via docker compose del proyecto infoleg)

  • Python >= 3.12 y uv

  • La base up_law_argleg_db cargada (ver proyecto hermano ../infoleg)

Related MCP server: bora-mcp

Instalacion (macOS / Windows)

# 1. base con pgvector (en el proyecto infoleg)
cd ../infoleg && docker compose up -d

# 2. dependencias
cd ../mcp-v2 && uv sync

# 3. schema mcp + roles (idempotente)
uv run up-law-argleg-mcp setup-db

# 4. embeddings (primera vez: 2-4 h; incrementales: minutos)
uv run up-law-argleg-mcp index

# 5. smoke
uv run up-law-argleg-mcp status

Claude Desktop

Agregar a claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "up_law_argleg": {
      "command": "uv",
      "args": ["run", "--directory", "/RUTA/ABSOLUTA/a/mcp-v2", "up-law-argleg-mcp", "serve"]
    }
  }
}

En Windows la ruta usa barras invertidas escapadas: C:\\Users\\...\\mcp-v2.

Servidor HTTP (clientes remotos)

Ademas del modo stdio, el servidor puede exponerse por Streamable HTTP (el transporte que aceptan los conectores remotos de claude.ai y el parametro mcp_servers de la API):

uv run up-law-argleg-mcp serve-http                # 127.0.0.1:8000
uv run up-law-argleg-mcp serve-http --host 0.0.0.0 --port 9000

El endpoint MCP queda en http://HOST:PORT/mcp, en modo stateless (apto para escalar horizontalmente). Configuracion via .env:

  • HTTP_HOST, HTTP_PORT: interfaz y puerto de escucha.

  • HTTP_ALLOWED_HOSTS: lista JSON de dominios publicos aceptados en el header Host al desplegar detras de un proxy (p.ej. '["mcp.ejemplo.ar"]'); vacia = solo localhost, proteccion DNS-rebinding default del SDK.

  • HTTP_RATE_RPM, HTTP_RATE_BURST: rate limit por IP (token bucket, default 120 rpm / burst 20; HTTP_RATE_RPM=0 lo desactiva). Al exceder responde 429 con Retry-After.

  • DB_POOL_MAX: conexiones simultaneas maximas del pool de lectura (default 10).

Las consultas a la base van por un pool de conexiones (psycopg_pool), asi que multiples clientes concurrentes se atienden en paralelo.

Operacion

  • Tras cada sync mensual del ETL infoleg: uv run up-law-argleg-mcp index.

  • uv run up-law-argleg-mcp status muestra frescura y cobertura.

  • Tests: uv run pytest (unit) | uv run pytest -m live (requiere base) | uv run pytest -m model (carga el modelo de embeddings).

Garantia de fidelidad

  • El servidor se conecta con un rol de solo lectura (mcp_reader).

  • Los tools devuelven texto verbatim; el servidor jamas resume.

  • Cada texto viaja con bloque fuente (sha256 del documento oficial, fecha de captura, URL, offsets).

  • verificar_cita confirma si una cita existe literalmente en el corpus, y detecta citas casi-correctas mostrando el diff contra el texto real.

  • La base no determina vigencia: expone el grafo de modificaciones y las observaciones de InfoLEG; el analisis juridico es del profesional.

Créditos

Proyecto de la Facultad de Derecho de la Universidad de PalermoPalermo E-Law / Innovation Hub.

Equipo: Hernán Quadri, Juan Cruz Romano, Aníbal Ramírez y Guido Barosio.

Available Tools

13 tools
buscar_articulosA

Busqueda profunda sobre 1,2M articulos vigentes (hibrida: semantica + FTS). Para "que norma regula X" cuando no sabes donde mirar. El texto devuelto es literal de la base, con proveniencia.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
tipo_normaNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It discloses a hybrid semantic+FTS search, that returned text is literal with provenance. However, it does not mention side effects, read-only nature, rate limits, or what happens on no results—leaving gaps for an agent.

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

Conciseness5/5

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

The description is three concise sentences, front-loading the core purpose and usage context. Every sentence adds value—scope, search type, use case, and output nature—without extraneous detail.

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

Completeness2/5

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

Despite adequate purpose and usage guidance, the description is incomplete given the complexity. No output schema exists, parameters are unexplained, and behavioral details like query syntax or pagination are missing. The description leaves significant gaps for an AI agent to invoke correctly.

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

Parameters2/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 explain parameters. It only implicitly covers the 'query' parameter by referencing search intent. The 'limit' and 'tipo_norma' parameters are entirely unexplained, leaving the agent without guidance on how to use or default behaviors.

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 clearly states the tool performs a deep hybrid search over 1.2 million current articles, specifying it is for when the user needs to find which regulation governs a topic but doesn't know where to look. This distinguishes it from sibling tools like buscar_normas (search norms by name) and leer_articulos (read articles).

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool: 'Para "que norma regula X" cuando no sabes donde mirar.' This provides clear guidance for use cases where the user is unsure of the specific norm, making it distinct from searching by known criteria.

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

buscar_fallosB

Busca jurisprudencia CSJN (hibrida sobre sumarios + texto de fallos). voces filtra por descriptor tematico del sumario (ILIKE).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
vocesNo
anio_desdeNo
anio_hastaNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses that voces uses ILIKE filtering but omits whether the tool is read-only, what the return format is, or any rate limits. Behavioral details are minimal.

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 description is short and front-loaded with the main purpose, but it omits necessary details. It earns its place but could include parameter explanations without becoming verbose.

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

Completeness2/5

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

Given 5 parameters, no output schema, and no annotations, the description is incomplete. It provides the basic purpose and one parameter, but fails to explain other parameters, output format, or the hybrid query behavior sufficiently.

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

Parameters2/5

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

With 0% schema description coverage, the description should explain all parameters. It only explains the voces parameter. query, limit, anio_desde, and anio_hasta are left undocumented, leaving the agent without essential meaning.

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 clearly states the tool searches CSJN jurisprudence, using a hybrid of summaries and text. It distinguishes from sibling tools like buscar_articulos and obtener_fallo by specifying the target (fallos) and the hybrid approach.

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 implies usage for searching jurisprudence but does not explicitly state when to use this tool versus siblings like buscar_articulos or obtener_fallo. No when-not-to-use guidance is provided.

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

buscar_normasA

Busca normas por texto libre sobre titulos y resumenes oficiales (FTS), con filtros por tipo (Ley/Decreto/...), organismo y rango de fecha_boletin (YYYY-MM-DD). Devuelve id canonico e id_norma; usar cualquiera en los otros tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoNo
limitNo
queryYes
organismoNo
fecha_desdeNo
fecha_hastaNo

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 discloses that it performs a full-text search (FTS) and returns canonical and norm IDs, but no details on pagination, rate limits, or side effects. It adequately indicates it's a read/search operation.

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

Conciseness5/5

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

The description is two sentences: the first explains the search functionality and filters, the second describes the output and usage. It is front-loaded and concise with no extraneous words.

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 the complexity of a search tool and no output schema, the description specifies returned fields (id_canonico, id_norma) and their purpose in chaining. It lacks mention of pagination but is otherwise fairly complete for its context.

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

Parameters3/5

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

Schema description coverage is 0%, so the description compensates partially. It explains filters for tipo, organismo, and date range (fecha_boletin) with format YYYY-MM-DD, and implies the query parameter. However, it does not mention the 'limit' parameter, leaving 1 of 6 parameters undocumented.

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 clearly states it searches norms by free text on titles and abstracts, with filters by type, organism, and date range. It distinguishes itself from sibling search tools (buscar_articulos, buscar_fallos, buscar_tratados) by focusing specifically on 'normas' and mentioning return values for chaining.

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 implies usage for searching norms and mentions using the returned IDs in other tools, but lacks explicit guidance on when to use this tool versus alternativos or any exclusions.

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

buscar_tratadosB

Busca tratados internacionales (Cancilleria). Con query la busqueda es FTS sobre la ficha (titulo, partes, materias) + texto completo del tratado; sin query lista por filtros (p.ej. solo_jerarquia_constitucional=True da los tratados con jerarquia de la CN art. 75 inc. 22). contraparte filtra por pais/organismo; fechas de firma en YYYY-MM-DD. Usar ficha_id_opaco o id_tratado+catalogo en los otros tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
materiaNo
catalogoNo
contraparteNo
firmado_desdeNo
firmado_hastaNo
estado_tratadoNo
solo_jerarquia_constitucionalNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral expectations. It describes two search modes and specifies date format, but it lacks information about pagination, result structure, whether combining parameters uses AND/OR, or any side effects (e.g., performance implications). This leaves significant behavioral uncertainty.

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 concise, fitting in a single paragraph without extraneous words. It front-loads the tool's purpose and immediately describes the two modes. The cross-reference to other tools adds value but could be placed separately.

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

Completeness2/5

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

With 9 parameters, no output schema, and no annotations, the description is incomplete. Many parameters are left unexplained, and the output format is not described. The tool's complexity demands more completeness to ensure correct agent usage.

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

Parameters3/5

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

Given the schema has 0% description coverage, the description adds crucial meaning for query (FTS over multiple fields), solo_jerarquia_constitucional (filters by constitutional hierarchy), contraparte (country/organization), and implicitly firma dates (YYYY-MM-DD format). However, it does not explain parameters like limit, materia, catalogo, estado_tratado, or firma_desde/hasta explicitly, leaving gaps.

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 the tool searches for international treaties ("Busca tratados internacionales"). It distinguishes between full-text search with query and list filtering without query, which differentiates it from sibling tools like obtener_tratado or leer_tratado that likely retrieve specific treaties.

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 when to use query (full-text search) versus when to rely on filters (without query), and provides an example filter (solo_jerarquia_constitucional). However, it does not explicitly mention when not to use this tool or compare it to alternative siblings for specific use cases.

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

estado_corpusA

Frescura y cobertura del corpus: ultima ingesta por etapa, conteos, cobertura de segmentacion y de embeddings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations exist, so the description must bear all transparency. It mentions the type of information returned but does not disclose behavioral traits such as whether it is safe/read-only, rate limits, or exact response structure. This is a notable gap.

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

Conciseness5/5

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

A single, concise sentence that front-loads the core purpose and key metrics. No unnecessary words or repetition.

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 zero parameters and no output schema, the description adequately covers the tool's purpose and the nature of the data returned. It could be slightly more detailed about the exact output format, but overall it is sufficient for a simple status check.

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?

There are zero parameters, and the schema coverage is 100%. The description does not need to add parameter details. Baseline score of 4 is appropriate as it provides context beyond the empty 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 clearly states the tool provides corpus freshness and coverage metrics (last ingestion by stage, counts, segmentation and embeddings coverage). This distinctively separates it from sibling tools that search or read specific legal documents.

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?

No explicit when-to-use or when-not-to-use guidance is provided. However, as the only tool related to corpus status, usage is implicitly clear. Lack of exclusions or alternatives keeps it at an average score.

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

leer_articulosA

Texto LITERAL de articulos de una norma, con proveniencia por articulo. articulos: "245", "240-250" o "14 bis, 245". Sin articulos devuelve todos. Cita el texto de forma textual y verifica cada cita con verificar_cita antes de responder. documento: texto_actualizado | texto_original (default: el actualizado si existe).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
articulosNo
documentoNo
fragmentoNo

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavior. It reveals that the tool calls verificar_cita to verify citations before responding, and indicates it returns literal text. No mention of destructive actions, auth, or rate limits, but for a read-like tool this is adequate.

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 reasonably compact, using backtick formatting for parameters and a clear instruction. It is slightly verbose with line breaks but remains concise enough for an AI agent.

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

Completeness3/5

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

Given no output schema, the description lacks details on return format and the fragmento parameter. It covers articulos and documento well but omits ref semantics and output structure. Overall adequate but with notable gaps.

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

Parameters3/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 add meaning. It explains articulos format (e.g., '245', '240-250') and default, and documento options (texto_actualizado/texto_original) with default. However, ref and fragmento parameters are not explained, leaving gaps.

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 'Texto LITERAL de articulos de una norma, con proveniencia por articulo' which clearly defines the tool's function: retrieving literal article text with provenance. It also specifies behavior when articulos is omitted and differentiates from sibling tools like buscar_articulos.

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 provides guidelines: 'Sin articulos devuelve todos' indicates when to omit parameter, and 'Cita el texto de forma textual y verifica cada cita con verificar_cita antes de responder' gives a specific usage instruction. However, it does not explicitly compare with siblings or state when not to use.

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

leer_falloA

Texto completo LITERAL de un fallo, paginado en fragmentos. Citar textual y verificar con verificar_cita.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_falloYes
fragmentoNo

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses pagination behavior but does not mention other traits like read-only nature, rate limits, or error conditions. Since there are no annotations, the description carries the full burden and is only partially transparent.

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

Conciseness5/5

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

The description is extremely concise, conveying essential information in a single sentence without superfluous words.

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

Completeness3/5

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

The description covers the core functionality but lacks details on output format, return structure, and differentiation from similar tools like 'obtener_fallo'. Without an output schema, more context would be beneficial.

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

Parameters3/5

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

The description explains the 'fragmento' parameter by mentioning pagination, adding value beyond the schema. However, it does not clarify the 'id_fallo' parameter, leaving it unexplained despite 0% schema description coverage.

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 returns the literal full text of a ruling with pagination. It references a sibling tool for verification, but does not explicitly differentiate from 'obtener_fallo', which may serve a similar function.

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 advises to use the tool for verbatim quoting and to verify with 'verificar_cita', providing a specific use case. However, it lacks guidance on when to avoid this tool or how it compares to other reading tools like 'obtener_fallo'.

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

leer_tratadoA

Texto completo LITERAL de un tratado (extraido del documento oficial de Cancilleria), paginado en fragmentos y con proveniencia (sha256 + URL). Citar textual y verificar con verificar_cita.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
casoNo
catalogoNo
fragmentoNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that the tool returns paginated fragments and includes provenance (sha256, URL). However, it lacks details on read-only nature, authentication needs, rate limits, or side effects.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It is front-loaded with the core purpose and includes a practical usage note.

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

Completeness2/5

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

Given 4 parameters and no output schema or annotations, the description is insufficient. It does not explain how to use parameters (ref, caso, catalogo, fragmento) or what the output structure looks like beyond mentioning fragments and provenance.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain any parameters. It fails to add meaning beyond the schema, despite the need to compensate for low coverage.

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 clearly states the tool retrieves the full literal text of a treaty, paginated in fragments with provenance. It uses a specific verb ('leer') and resource ('tratado'), and distinguishes from siblings like 'buscar_tratados' (search) and 'obtener_tratado' (likely metadata).

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 advises to use the tool for textual citation and verification, and mentions 'verificar_cita' as a follow-up. However, it does not explicitly state when not to use or provide alternative tools for other scenarios.

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

modificacionesC

Grafo de modificaciones de una norma segun InfoLEG. direccion: entrantes (que la modifican) | salientes (a cuales modifica) | ambas.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
direccionNoambas

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose all behavioral traits. It explains the 'direccion' parameter and its values, but omits crucial details like output format, pagination, error handling, or any side effects. The agent lacks information about what to expect from the tool, making it less transparent.

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

Conciseness5/5

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

The description is extremely concise: one sentence with a key parameter explanation. Every word adds value, no redundancy. It front-loads the main purpose, then explains the direction parameter. Ideal for an agent to quickly grasp the tool's function.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description should provide more context about what the graph looks like (e.g., structure, result format). It only covers direction, leaving the agent uncertain about the return value. For a two-parameter tool, completeness is lacking.

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

Parameters3/5

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

The input schema has 0% description coverage, so the description must compensate. It explains the 'direccion' parameter with its three enum values, adding meaning beyond the schema. However, the required 'ref' parameter is not described; its purpose is only loosely inferred from the tool name and description. The compensation is partial, earning a mid score.

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 the tool retrieves a modification graph of a norm from InfoLEG. The verb is implied by 'grafo de modificaciones', and it distinguishes from sibling tools (e.g., buscar_normas, obtener_norma) which perform different actions on norms. However, it could be more explicit about the action (e.g., 'get' or 'retrieve').

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies usage for modification queries but does not provide when-not-to-use scenarios or mention sibling alternatives like buscar_normas for general norm searching. The agent must infer context from tool name and siblings.

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

obtener_falloC

Ficha de un fallo CSJN: caratula, fecha, tomo/pagina, sumarios completos con voces y holdings, y proveniencia del PDF.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_falloYes

TDQS

C2.9/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 burden. It describes the output content (fields of the record) but does not disclose behavioral traits like read-only nature, idempotency, authorization requirements, or potential errors. For a simple retrieval, the output description provides moderate transparency.

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 a single sentence that front-loads the main purpose ('Ficha de un fallo CSJN') and then lists key fields. It is efficient and avoids unnecessary words, though the colon-separated list could be slightly more structured.

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

Completeness3/5

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

Given the tool's low complexity (one required integer parameter, no output schema), the description adequately lists output fields. However, it omits details about error handling, empty results, or the relationship to the input ID. It is minimally complete but not thorough.

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

Parameters1/5

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

The single parameter 'id_fallo' has no description in the schema (0% coverage), and the description does not explain its format, purpose, or constraints beyond what the property name implies. The description adds no value for parameter understanding.

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 returns a 'Ficha de un fallo CSJN' and lists key fields (caratula, fecha, tomo/pagina, sumarios, proveniencia del PDF), which specifies the resource and output content. However, it does not explicitly distinguish from sibling tools like 'leer_fallo' or 'buscar_fallos', so it lacks full differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'leer_fallo' for full text, 'buscar_fallos' for search). No context about prerequisites, limitations, or exclusions.

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

obtener_normaA

Ficha completa de una norma: metadatos, textos capturados, indice de articulos, resumen de modificaciones y observaciones de InfoLEG. ref acepta id canonico (ley_20744), alias (ccyc) o id_norma numerico. La base NO determina vigencia: solo presenta el grafo de modificaciones.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries full responsibility. It discloses that the tool returns multiple components (metadata, texts, index, modifications, observations) and explicitly states a key behavioral limitation: 'La base NO determina vigencia: solo presenta el grafo de modificaciones.' This is valuable beyond schema.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states purpose and components; the second explains input formats and a key behavioral caveat. Well-structured and front-loaded.

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, but the description lists the expected return components (metadata, texts, article index, modifications summary, observations). It also clarifies a limitation about validity determination. For a tool with one parameter and no annotations, this is nearly complete.

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?

With 0% schema description coverage, the description fully compensates by detailing that 'ref' accepts canonical id (ley_20744), alias (ccyc), or numeric id_norma. This adds critical meaning missing from the 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 specifies that the tool returns a 'Ficha completa de una norma' with detailed components (metadata, texts, article index, modifications, InfoLEG observations). It clearly distinguishes from sibling tools like 'buscar_normas' (search) and 'leer_articulos' (read articles) by focusing on a comprehensive single-norm retrieval.

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 explains that 'ref' accepts three formats (canonical id, alias, numeric id_norma) and clarifies that the tool does not determine validity, only presenting the modification graph. This provides context for when to use the tool, though it lacks explicit comparison to alternatives like 'modificaciones'.

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

obtener_tratadoA

Ficha completa de un tratado: fechas del ciclo de vida (firma, entrada en vigor, ratificacion, denuncia...), contrapartes, firmantes, jerarquia constitucional si la tiene, normas aprobatorias vinculadas y archivos capturados. ref acepta ficha_id_opaco o id_tratado numerico (si el id existe en ambos catalogos, desambiguar con catalogo).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
catalogoNo

TDQS

A4.3/5.0
Behavior4/5

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

The description fully discloses the tool's output (list of treaty attributes) and implies a read-only operation. Since no annotations exist, it carries the full burden and does so adequately, though it could mention whether the operation has side effects or requires authentication.

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

Conciseness5/5

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

The description is concise: two sentences that first describe the output, then clarify parameter usage. No extraneous information, well structured.

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 the absence of an output schema, the description provides a solid overview of the return value. It could be more complete by mentioning error handling (e.g., what happens when `ref` is not found), but overall it sufficiently covers the tool's purpose and parameters.

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?

With schema description coverage at 0%, the description compensates by explaining that `ref` accepts two types of IDs (ficha_id_opaco or numeric id_tratado) and that `catalogo` is used for disambiguation when the ID exists in both bilateral and multilateral catalogues. This adds significant meaning 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 clearly states it returns a complete file of a treaty, listing specific data like dates, counterparts, signatories, hierarchy, norms, and files. It distinguishes the tool from siblings (e.g., buscar_tratados, leer_tratado) by emphasizing the detailed, comprehensive nature of the output.

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 how to use the `ref` and `catalogo` parameters (e.g., disambiguating when an ID exists in both catalogues). However, it does not explicitly state when to prefer this tool over siblings like `leer_tratado` or `buscar_tratados`, leaving the user to infer.

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

verificar_citaA

Verifica que un texto citado exista LITERALMENTE en el corpus. Resultados: VERIFICADA (con ubicacion y fuente) | NO_ENCONTRADA | NO_ENCONTRADA_CON_SIMILAR (existe un pasaje parecido, NO verificado, con diff). modo: estricta (solo whitespace flexible) | tolerante (tildes, mayusculas, comillas). Usar sobre toda cita textual antes de responder.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
modoNoestricta
textoYes
articuloNo

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses possible results (VERIFICADA, NO_ENCONTRADA, NO_ENCONTRADA_CON_SIMILAR), two modes (estricta and tolerante), and confirms literal matching. No mention of side effects or rate limits, but for a read-only verification tool, disclosure is adequate.

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 relatively concise, using a few sentences to convey purpose, modes, and results. It is front-loaded with the main action. Could be formatted with bullet points for clarity, but no unnecessary information.

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

Completeness3/5

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

Given 4 parameters and no output schema or annotations, the description provides a good overview but omits details for 'ref' and 'articulo' parameters. The result types are listed, but no format or structure is given. Adequate for basic use, but incomplete for full understanding.

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

Parameters2/5

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

Schema description coverage is 0%, so description must compensate. It explains 'texto' (input text) and 'modo' (strict/tolerant modes), but does not explain 'ref' or 'articulo' at all. With 4 parameters, only 2 are partially described, leaving gaps.

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 tool name 'verificar_cita' and description clearly state it verifies if a cited text exists literally in the corpus. It distinguishes itself from sibling tools which are for searching articles, rulings, etc.

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 explicitly says 'Usar sobre toda cita textual antes de responder' (use for every textual citation before answering), providing clear guidance. It does not give explicit exclusion or alternatives, but the context makes it clear this is the specific tool for citation verification.

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. 13 tool updatesv0.1.0
    • First observedbuscar_articulos
    • First observedbuscar_fallos
    • First observedbuscar_normas
    • First observedbuscar_tratados
    • First observedestado_corpus
    • First observedleer_articulos
    • First observedleer_fallo
    • First observedleer_tratado
    • First observedmodificaciones
    • First observedobtener_fallo
    • First observedobtener_norma
    • First observedobtener_tratado
    • First observedverificar_cita

TDQS

A3.8/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct operation and document type: buscar for search, leer for reading literal text, obtener for metadata, plus specialized tools for modifications, corpus status, and citation verification. No overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in Spanish: buscar_ (search), leer_ (read), obtener_ (get). Exceptions like modificaciones, estado_corpus, and verificar_cita are nouns or verb+noun but are clearly differentiated and fit the domain.

Tool Count5/5

With 13 tools, the server covers all essential operations for legal research (search, read, metadata, modifications, citation verification) without being overwhelming. Each tool has a clear purpose.

Completeness5/5

The tool set provides a complete workflow: search across articles, rulings, norms, and treaties; read full literal texts; retrieve detailed metadata; explore modification graphs; verify citations; and check corpus health. No obvious gaps for the intended domain.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for searching and extracting official announcements, decrees, and resolutions from the Argentine Official Gazette (Boletín Oficial de la República Argentina). It enables LLMs to perform real-time searches and retrieve verbatim legal text with complete juridical fidelity.
    14
    19 npm
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables searching and retrieving judicial decisions from the Uruguayan National Public Jurisprudence Database (BJN).
    -