Skip to main content
Glama

elPeruanoMCP

elPeruanoMCP

Licencia Python MCP Local

Servidor MCP local para buscar y leer el Diario Oficial El Peruano (normas, resoluciones, cuadernillos y PDFs) desde tu harness MCP.

Herramienta no oficial: sin afiliacion con EL PERUANO y sin aceptacion de contribuciones externas. Ver Aviso legal.

Fuente de datos

busquedas.elperuano.pe (publico)

Almacenamiento

Ninguno — el servidor nunca guarda archivos; los PDFs se entregan como URL

Herramientas

9

Instalacion

Opcion 1: .mcpb (one-click, Claude Desktop)

  1. Descarga elperuanoMCP-0.3.1.mcpb de la seccion Releases.

  2. En Claude Desktop: Ajustes > Extensiones > instalar desde archivo, y selecciona el .mcpb.

  3. Claude Desktop se encarga del entorno y las dependencias por ti.

Opcion 2: uv (recomendada para desarrolladores)

  1. Clona el repo: git clone https://github.com/pipaacebedo/elPeruanoMCP

  2. Entra a la carpeta: cd elPeruanoMCP

  3. Instala las dependencias: uv sync

  4. Lanza el servidor: uv run elperuano-mcp serve

Opcion 3: pip (sin uv)

  1. Instala el paquete: pip install .

  2. Lanza el servidor: elperuano-mcp serve

Related MCP server: bora-mcp

Conectar el cliente

  • Claude Code: claude mcp add elPeruanoMCP -- uv --directory RUTA/elPeruanoMCP run elperuano-mcp serve

  • ChatGPT: seccion MCP/connectors de tu setup (config equivalente)

  • Otros harness: config MCP equivalente (command + args)

"mcpServers": {
  "elPeruanoMCP": {
    "command": "uv",
    "args": ["--directory", "RUTA/elPeruanoMCP", "run", "elperuano-mcp", "serve"]
  }
}

Al ser local, no hay autenticacion, tokens ni limites de ningun tipo.

Herramientas

Tool

Uso

buscar_dispositivos

Busqueda full-text con filtros (cuadernillo, sector post-filtro, fecha, rango) y paginacion deduplicada

buscar_por_op

Puntual por numero de orden (NNNNNNN-N); devuelve campos planos

obtener_dispositivo

Sumilla, tipo, numero, sector, fechas, texto integral (+ rango desde/hasta opcional) y pdf_url

obtener_dispositivo_texto

Texto por parrafos en rangos, con metadatos del dispositivo

obtener_cuadernillo_texto

Lee el PDF del cuadernillo en memoria: busca texto dentro del PDF (query) o lee por rangos de paginas

listar_cuadernillos

Cuadernillos por fecha o rango (max 7 dias), con filtro por tipo y pdf_url

descargar_pdf / descargar_cuadernillo

Devuelven la URL publica del PDF (no descargan nada)

listar_tipos_publicacion

Siglas y cuales tipos tienen dispositivos individuales

Como consultar

Necesitas

Como

Frase exacta

Entre comillas dobles: '"prescripcion adquisitiva de dominio"'

Tema que cae en cuadernillos (PC/DJ/JU/CA)

buscar_dispositivos trae cuadernillos_con_coincidencias → obtener_cuadernillo_texto(codigo, query="...") localiza el texto dentro del PDF

Puntual por OP

obtener_dispositivo(op="2558398-1") — el cuadernillo se auto-resuelve

Un dia puntual

fecha="20260923" (acepta 2026-09-23 o 23/09/2026)

Un rango

fecha_ini + fecha_fin

Solo Normas Legales

cuadernillo="NL" (siglas: NL, BO, EX, PC, DJ, JU, SE, CA, IN, TU)

Variables de entorno (opcionales)

Variable

Default

Para que

EPERUANO_BASE_URL

https://busquedas.elperuano.pe

Origen de los datos

EPERUANO_TIMEOUT

60

Timeout HTTP

EPERUANO_CACHE_TTL

300

Cache en memoria (0 = off)

EPERUANO_CACHE_BYTES

32 MB

Presupuesto de cache por bytes

EPERUANO_CACHE_MAX_ENTRY

3 MB

No cachear paginas mayores a esto

EPERUANO_MAX_PAGINAS

20

Tope de paginas por llamada

EPERUANO_MAX_CONCURRENCY

3

Requests simultaneos hacia el sitio

Limitaciones y diseno

Aspecto

Detalle

Filtros web Entidad/Tipo de dispositivo

No aplican server-side: incluye el organismo en consulta o usa sector como post-filtro

coincidencias_texto

Contador de coincidencias de texto del sitio (no dispositivos unicos); dispositivos_unicos cuenta los devueltos

PC/DJ/JU/CA/IN/TU

Sin dispositivo individual: el texto integral vive en el PDF del cuadernillo (obtener_cuadernillo_texto lo lee por paginas o con query)

Streaming

Paginas de busqueda se leen con corte en </main> (algunas superan los 100 MB de HTML; lo util es ~40-140 KB)

Cortesia

Cache por bytes + single-flight + semaforo de concurrencia para no sobrecargar la fuente oficial

Latencia

Busquedas sin filtro de cuadernillo pueden tardar 10-40 s (el sitio genera la pagina completa)

  • Herramienta de terceros no oficial, sin afiliacion con EL PERUANO ni con ninguna entidad publica.

  • Provista tal cual; el autor no responde por el uso que se le de ni por la disponibilidad del sitio.

  • Los datos son de acceso publico en busquedas.elperuano.pe; respeta la fuente: no la uses para scraping masivo.

  • Proyecto personal: no se aceptan contribuciones externas ni se ofrece soporte. Puedes forkarlo y adaptarlo a tu criterio.

Licencia

Apache-2.0.

Available Tools

9 tools
buscar_dispositivosA

Busca dispositivos y cuadernillos en El Peruano.

Args: consulta: texto libre. Frases exactas entre comillas dobles, ej: '"prescripcion adquisitiva de dominio"'. El sitio combina palabras por coincidencia de texto y no garantiza un AND estricto entre todas las palabras. cuadernillo: sigla del tipo de publicacion (ver listar_tipos_publicacion): NL, BO, EX, PC, DJ, JU, SE, CA, IN, TU. Opcional. sector: post-filtro por subcadena sobre el campo sector de los resultados obtenidos (ej: "salud", "transportes"). NO filtra todo el corpus: solo la pagina(s) de resultados actual. fecha: dia puntual YYYYMMDD. fecha_ini, fecha_fin: rango de fechas YYYYMMDD. start: desplazamiento de resultados (pagina N -> start = N*20). paginas: paginas consecutivas a traer en una sola llamada (1 = 20 resultados).

Nota de latencia: sin filtro de cuadernillo, el sitio puede tardar 10-40 s en generar la respuesta (con filtro NL/BO es mas rapido). El sitio pagina por coincidencias de texto y puede repetir dispositivos entre paginas: usa paginas (deduplica internamente) en lugar de start manual.

Devuelve: coincidencias_texto: contador del sitio (coincidencias de texto, no dispositivos unicos). dispositivos_unicos: cantidad de dispositivos individuales devueltos. ms: duracion de la llamada en milisegundos. data: dispositivos con pagina individual (sector, tipo, numero, fecha, titulo, url). cuadernillos_con_coincidencias: cuando las coincidencias caen en cuadernillos SIN pagina individual (PC/DJ/JU/CA/IN/TU) el resultado son cuadernillos (compacto): codigo, fecha, paginas y pdf_url; el texto integral esta en el PDF. siguiente_start: start para la proxima pagina, si hay mas. cacheado: true si la respuesta vino de la cache de resultados. sin_resultados_motivo + nota: cuando no hay resultados, con la causa y sugerencias.

ParametersJSON Schema
NameRequiredDescriptionDefault
fechaNo
startNo
sectorNo
paginasNo
consultaNo
fecha_finNo
fecha_iniNo
cuadernilloNo

TDQS

A4.3/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and delivers: it discloses 10-40s latency that varies by cuadernillo filter, internal deduplication across pages, caching behavior, page-overlap caveat, and explicit no-results handling. This is unusually complete behavioral disclosure for a mutation-free search tool.

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 Args / latency / returns structure is well-organized and front-loads the purpose. It is long, but with 0% schema coverage and a rich return shape nearly every line earns its place; minor tightening is possible.

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

Completeness5/5

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

No output schema exists, yet the description enumerates the full return shape (coincidencias_texto vs dispositivos_unicos, ms, data fields, cuadernillos_con_coincidencias, siguiente_start, cacheado, sin_resultados_motivo). Combined with the latency and pagination notes, an agent has everything needed to call and interpret it.

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 the description compensates for every one of the 8 parameters: exact-phrase quoting syntax for 'consulta', the ten valid cuadernillo siglas, the crucial post-filter caveat for 'sector' (does not filter the whole corpus), YYYYMMDD formats for dates, and the start/paginas pagination math.

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

Purpose4/5

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

States a specific verb and resource ('Busca dispositivos y cuadernillos en El Peruano'), and the Args section makes the scope concrete. It references listar_tipos_publicacion as a helper but never states how it differs from siblings like buscar_por_op, so sibling differentiation is only partial.

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?

Offers strong intra-tool guidance (use 'paginas' instead of manual 'start', consult listar_tipos_publicacion for siglas, expect long latency without a cuadernillo filter). However it never says when to choose this tool over buscar_por_op or the obtener_* siblings, leaving the choice to inference.

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

buscar_por_opB

Busqueda puntual por numero de orden de publicacion (OP).

Args: op: formato NNNNNNN-N, ej '2558398-1'.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does not say whether this is a pure read, what happens when the OP does not exist, whether auth is required, or anything about the response. For a zero-annotation tool only the input format is given.

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 opening sentence is front-loaded and the args block is compact and scannable. The multi-line 'Args:' formatting is slightly heavier than necessary for a single parameter but costs little.

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?

For a simple one-parameter lookup with no output schema, the essential calling information (the OP format) is present, and return-value detail is not required. However, with no annotations it also omits failure behaviour and result shape, leaving the definition merely adequate.

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% and the lone parameter is typed only as 'string', so the description does the real work: it supplies the NNNNNNN-N pattern and a concrete example ('2558398-1'), which is exactly the extra meaning the schema lacks. It could still note whether leading zeros or a missing dash are tolerated.

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-plus-resource: a point lookup ('busqueda puntual') keyed on the publication order number (OP). It is reasonably distinguishable from siblings like buscar_dispositivos ('buscar' for multiple devices), though it never names an alternative explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description conveys only that this is a point lookup. It does not state when to use it versus buscar_dispositivos or listar_cuadernillos, nor any prerequisite such as needing a known OP. Usage must be inferred entirely from the tool name and the one argument.

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

descargar_cuadernilloA

URL de descarga del PDF completo de un cuadernillo.

Es la unica via de texto para cuadernillos SIN dispositivo individual (PC/DJ/JU/CA/IN/TU). El MCP no descarga ni guarda: devuelve la URL publica para el cliente.

Devuelve tambien url_viewer (pagina visor del cuadernillo). Nota: el sitio publica el archivo con nombres con sufijo de pagina inicial (ej PC20260606_4335.pdf); otras URLs del mismo cuadernillo (sin sufijo) tambien sirven el mismo PDF.

Args: codigo: codigo TIPO+FECHA, ej 'NL20230923' o 'PC20260927'.

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYes

TDQS

A3.9/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 delivers important behavior: the MCP does NOT download or store, it only returns a public URL, plus it also returns url_viewer and explains the initial-page-suffix filename quirk. That is meaningful disclosure; it stops short of full transparency only because it omits auth/rate considerations and any error behavior.

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

Conciseness4/5

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

The description is front-loaded with the core purpose before the caveats, and every paragraph does real work. The filename-suffix note is slightly verbose but is genuinely useful information rather than filler.

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

Completeness4/5

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

With no output schema and no annotations, the description does the heavy lifting: it explains that the return is a URL (not a file) and mentions the secondary url_viewer field, which is exactly the return-value context the agent needs. It is close to complete for a one-parameter URL-resolver tool.

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 compensate. It explains that codigo is a TIPO+FECHA code with examples ('NL20230923', 'PC20260927'), which adds real meaning, but it never enumerates the valid TIPO prefixes (partially listed elsewhere as PC/DJ/JU/CA/IN/TU), leaving format validation incomplete.

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

Purpose4/5

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

The description states a specific verb and resource: it returns the download URL for the complete PDF of a cuadernillo, and it clarifies the scope ('unica via de texto para cuadernillos SIN dispositivo individual'). This distinguishes it from text-based siblings, but it never differentiates itself from the very close sibling descargar_pdf, so an agent cannot fully disambiguate between the two.

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 a clear selection condition: use this for cuadernillos that have no individual device (PC/DJ/JU/CA/IN/TU), and it implies the other path for device-bearing items. However, no explicit when-not guidance or named alternative (e.g. descargar_pdf, obtener_cuadernillo_texto) is given, so the routing is only half-complete.

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

descargar_pdfA

URL de descarga del PDF de un dispositivo individual.

El MCP NUNCA almacena archivos: devuelve la URL publica en busquedas.elperuano.pe para que el usuario descargue por su cuenta.

Args: cuadernillo: sigla de publicacion (ver listar_tipos_publicacion). op: numero de orden, ej '2558398-1'.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
cuadernilloYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses the key non-obvious behavior: the MCP never stores files and returns a public URL on busquedas.elperuano.pe that the user must fetch themselves. It omits auth requirements, error cases, and URL validity/expiry, but the core behavior is well conveyed.

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 return value and the storage caveat, then the params. Sized well for a two-parameter tool, though the Args block restates field names already visible in the schema.

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

Completeness4/5

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

No output schema exists, so the description correctly specifies what the tool returns (a public URL). Combined with the param explanations and the sibling cross-reference, an agent has enough to invoke this correctly; permission/error behavior is the only notable gap.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: it explains that cuadernillo is a publication sigla (pointing to listar_tipos_publicacion) and that op is an order number with an example. Only formatting details such as accepted op patterns are missing.

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

Purpose4/5

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

The description states a specific resource (the PDF download URL for a single dispositivo) and corrects the misleading tool name by making clear it returns a URL rather than a file. It implicitly contrasts with descargar_cuadernillo (single device vs. whole cuadernillo) but never names that sibling 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 implied rather than stated: it is for a single device and the user downloads on their own. It cross-references listar_tipos_publicacion to resolve the cuadernillo sigla, which is genuinely useful, but there is no explicit when-to-use / when-not-to-use guidance versus the sibling download/list tools.

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

listar_cuadernillosA

Lista cuadernillos publicados en una fecha o rango (con pdf_url).

Args: fecha: YYYYMMDD, AAAA-MM-DD o DD/MM/AAAA (vacio = los ultimos publicados). fecha_fin: opcional; con fecha, recorre el rango hasta esta fecha (maximo 7 dias INCLUSIVE por llamada). tipo: filtro por sigla de los cuadernillos listados (ej "NL").

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoNo
fechaNo
fecha_finNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it delivers useful behavior: the default of returning the last published items and the hard 7-day inclusive cap per call for ranges. It omits auth requirements and any note that listing is read-only, but the meaningful operational constraints are present.

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 primary action, then a clean Args block that maps one entry per parameter. No filler sentences; the structure is efficient and skimmable.

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, annotation-free tool with no output schema, the description covers all inputs and hints at the output (pdf_url). It is nearly complete; only output shape and auth context are unaddressed, which are minor given the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: it documents accepted date formats (YYYYMMDD, AAAA-MM-DD, DD/MM/AAAA), the empty-value default, fecha_fin's option/range semantics, and an example for tipo ('NL'). Only tipo's full vocabulary is left to the sibling listar_tipos_publicacion.

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 (Lista) and resource (cuadernillos publicados) with a date/range scope and hints at the return content (con pdf_url). It distinguishes itself implicitly from download/text siblings like descargar_cuadernillo and obtener_cuadernillo_texto, though it never names an alternative explicitly.

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?

Explains the default when fecha is empty ('vacio = los ultimos publicados') and the range constraint, which steers correct invocation. It does not explicitly say when to prefer this over siblings such as obtener_cuadernillo_texto, so it stops short of full routing guidance.

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

listar_tipos_publicacionA

Siglas de cuadernillos (tipoPublicacion) y sus titulos.

PC/DJ/JU/CA/IN/TU no tienen dispositivo individual; para esos la busqueda devuelve cuadernillos_con_coincidencias y el texto integral solo vive en el PDF del cuadernillo (descargar_cuadernillo).

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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 behavioral burden. It usefully discloses that certain types have no individual device and that search results come back as cuadernillos_con_coincidencias, but it says nothing about the shape, ordering, or stability of this tool's own output. Some value added, but gaps remain.

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?

Two sentences, front-loaded with the core purpose followed by the edge-case caveat. No filler, though the parenthetical shorthand ('tipoPublicacion') is terse and could confuse without domain familiarity.

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 simple parameterless listing tool with no output schema or annotations, the description covers what is returned and the important domain caveat about PDF-only full text. Only a more explicit statement of the return structure would push this higher.

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, so there is no schema semantics to compensate for; the baseline for a parameterless tool is 4.

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

Purpose4/5

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

The description names a specific resource ('Siglas de cuadernillos (tipoPublicacion) y sus titulos'), which is a clear verb-less but resource-explicit statement of what the tool returns. It does not explicitly differentiate itself from siblings like listar_cuadernillos, but the distinct resource (publication-type acronyms) makes the purpose legible.

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 second sentence gives real routing context: for PC/DJ/JU/CA/IN/TU the full text lives only in the booklet PDF, pointing indirectly at descargar_cuadernillo. However, it never states plainly when to call this tool versus listar_cuadernillos or the buscar_* siblings, so usage is only implied.

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

obtener_cuadernillo_textoA

Busca texto DENTRO del PDF de un cuadernillo (query) o lee su texto por paginas, en rangos controlados.

Es la unica via de lectura del texto integral para cuadernillos SIN pagina individual (PC/DJ/JU/CA/IN/TU): el PDF se descarga en memoria y se procesa pagina por pagina; nunca se guarda en disco.

Args: codigo: codigo TIPO+FECHA, ej 'PC20260927'. pagina_desde, pagina_hasta: rango de paginas del PDF (1-indexed, inclusivo). Maximo 10 paginas por llamada. query: opcional; texto a buscar en TODAS las paginas del PDF (case-insensitive). Si se indica, el resultado son las paginas que contienen el texto, con extractos de contexto (ignora pagina_desde/pagina_hasta). Para PDFs de cientos de paginas.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
codigoYes
pagina_desdeNo
pagina_hastaNo

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 does real work: PDF is downloaded in memory and processed page by page, never persisted to disk, max 10 pages per call, query is case-insensitive and overrides the page range. Useful operational context 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?

Purpose and the exclusivity note are front-loaded, followed by a well-structured Args block. Slightly verbose but every sentence carries usable information; little waste.

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

Completeness4/5

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

No output schema or annotations, yet the description explains what results look like for the query path (matching pages with context extracts) and how the page-range path behaves. Sufficient for an agent to invoke correctly; minor gaps on pagination or result size for the range path.

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 entirely, and it does: codigo format example ('PC20260927'), pagina_desde/hasta are 1-indexed and inclusive with a 10-page cap, and query semantics (case-insensitive, scans ALL pages, ignores the page range).

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 specific verbs (busca/lee) and resource (texto del PDF de un cuadernillo) and clarifies it is the only integral-text reading path for booklet types without individual pages (PC/DJ/JU/CA/IN/TU). This differentiates it from siblings like descargar_pdf or obtener_dispositivo_texto, though the alternative tool is not named explicitly.

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

Usage Guidelines4/5

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

Gives clear context: use query for searching across all pages (large PDFs), or use pagina_desde/pagina_hasta to read a page range. It also specifies when it is the sole option (booklet types without individual pages). No explicit 'when not to use' or named sibling alternative.

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

obtener_dispositivoA

Devuelve el dispositivo completo: sumilla, tipo, numero, sector, fechas y texto integral, mas pdf_url y thumbnail.

Nota: el texto integral puede ser muy largo. Para documentos extensos usa obtener_dispositivo_texto (rangos de parrafos) o limita aqui con desde/hasta para no saturar el contexto.

Args: cuadernillo: sigla de publicacion (ver listar_tipos_publicacion). op: numero de orden, ej '2558398-1'. desde, hasta: opcionales; rango de parrafos 1-indexed (inclusivo). Vacios = texto completo.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNo
desdeNo
hastaNo
cuadernilloNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does disclose a key behavioral trait: the integral text can be very long and can saturate context, plus the mitigation options. It omits any auth/permission or error behavior, but the size warning is the most relevant trait for a read tool.

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 return payload, then a useful nota, then a clean Args block. Every sentence earns its place; minor length overhead from restating fields that are self-evident from the title.

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

Completeness4/5

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

With no annotations, no output schema and 0% schema coverage, the description bears the whole load and covers both parameters and return fields plus a size warning. Slight gap on error/permission behavior, but nothing critical for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate entirely, and it does: cuadernillo (sigla, cross-referenced to listar_tipos_publicacion), op (numero de orden with an example format), and desde/hasta (optional, 1-indexed inclusive range, empty = full text). All four parameters gain meaning absent from the schema.

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

Purpose4/5

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

States a specific verb and resource ('Devuelve el dispositivo completo') and enumerates the returned fields (sumilla, tipo, numero, sector, fechas, texto integral, pdf_url, thumbnail). It partially distinguishes itself from the sibling obtener_dispositivo_texto, but doesn't fully delineate against buscar_* siblings by name.

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?

Explicitly names the alternative (obtener_dispositivo_texto) and the condition that selects it ('documentos extensos'), and offers a second mitigation (limitar con desde/hasta). This is textbook when/when-not/alternative guidance.

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

obtener_dispositivo_textoA

Texto de un dispositivo por parrafos, en dosis controladas (para documentos largos sin saturar el contexto).

Incluye los metadatos del dispositivo (sumilla, tipo, numero, sector, fecha). Sin tope de parrafos: usa rangos razonables.

Args: cuadernillo: sigla de publicacion. op: numero de orden. desde, hasta: rango de parrafos (1-indexed, inclusivo).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNo
desdeNo
hastaNo
cuadernilloNo

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 the full behavioral burden. It usefully discloses what is returned (paragraphs plus metadata fields), the indexing convention (1-indexed, inclusive), and that there is no paragraph ceiling. It omits error handling and what happens with empty op or null cuadernillo.

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

Conciseness4/5

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

Front-loads the core purpose and return content before the Args block, and is tightly sized. Minor redundancy between the opening parenthetical and the later range guidance, but nothing wasteful.

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?

No output schema and no annotations, so the description is the only behavioral source. It covers return contents and all parameters adequately, but leaves gaps: the optional/default nature of cuadernillo, behavior of empty op, and failure modes are unaddressed.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does document all four parameters: cuadernillo (sigla de publicacion), op (numero de orden), and desde/hasta (1-indexed inclusive paragraph range). It adds real meaning over the bare schema, though 'sigla de publicacion' and 'numero de orden' remain light on format/valid values.

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 action and resource: it returns the text of a legal 'dispositivo' split into paragraphs, and notes it also returns the device metadata (sumilla, tipo, numero, sector, fecha). This implicitly distinguishes it from the metadata-only sibling obtener_dispositivo, though it never names any sibling 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?

Gives a usage context ('para documentos largos sin saturar el contexto') and an operating hint ('sin tope de parrafos: usa rangos razonables'), which implies when to reach for it over the full-text sibling. However, it never names an alternative tool or states an explicit when-not condition.

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.3.1
    • First observedbuscar_dispositivos
    • First observedbuscar_por_op
    • First observeddescargar_cuadernillo
    • First observeddescargar_pdf
    • First observedlistar_cuadernillos
    • First observedlistar_tipos_publicacion
    • First observedobtener_cuadernillo_texto
    • First observedobtener_dispositivo
    • First observedobtener_dispositivo_texto

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Most tools target distinct actions/resources: exact OP lookup, free-text search, notebook listing, PDF URL retrieval, and type listing. However, obtener_dispositivo and obtener_dispositivo_texto overlap in retrieving dispositivo content, and buscar_por_op vs buscar_dispositivos could require attention, though descriptions clarify their boundaries.

Naming Consistency4/5

Names follow a mostly consistent Spanish verb_noun snake_case pattern: buscar_*, obtener_*, listar_*, descargar_*. The use of 'por' in buscar_por_op is a minor deviation, but the overall convention is predictable.

Tool Count5/5

9 tools is well-scoped for a read-only legal publication search/retrieval server. Each tool earns its place, covering discovery, retrieval, and download operations without excessive redundancy.

Completeness4/5

The surface covers the core lifecycle: listing publication types, searching by OP and free text, retrieving full or paragraph-limited dispositivo text, listing notebooks, and getting PDF URLs. Minor gaps include no corpus-wide sector filtering and no direct listing of individual dispositivos per notebook, but these are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Peruvian public-data lookups including SUNAT RUC registrations, BCRP exchange rates, and SEACE tenders. Provides official open-data access through tools for Claude, Cursor, and other MCP clients.
    MIT
  • 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 for Peruvian government data, enabling search and anomaly detection in public procurement (OSCE) and legislative tracking (Congress), plus semantic search over both domains.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to search Colombian energy and gas resolutions and legal opinions, read them in chunks or by internal search, and explore each rule's regulatory graph with validity computed from the texts themselves.
    4
    MIT