elPeruanoMCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@elPeruanoMCPbusca normas legales sobre minería en julio de 2026"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
elPeruanoMCP

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)
Descarga
elperuanoMCP-0.3.1.mcpbde la seccion Releases.En Claude Desktop: Ajustes > Extensiones > instalar desde archivo, y selecciona el
.mcpb.Claude Desktop se encarga del entorno y las dependencias por ti.
Opcion 2: uv (recomendada para desarrolladores)
Clona el repo:
git clone https://github.com/pipaacebedo/elPeruanoMCPEntra a la carpeta:
cd elPeruanoMCPInstala las dependencias:
uv syncLanza el servidor:
uv run elperuano-mcp serve
Opcion 3: pip (sin uv)
Instala el paquete:
pip install .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 serveChatGPT: 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 |
| Busqueda full-text con filtros (cuadernillo, sector post-filtro, fecha, rango) y paginacion deduplicada |
| Puntual por numero de orden (NNNNNNN-N); devuelve campos planos |
| Sumilla, tipo, numero, sector, fechas, texto integral (+ rango |
| Texto por parrafos en rangos, con metadatos del dispositivo |
| Lee el PDF del cuadernillo en memoria: busca texto dentro del PDF ( |
| Cuadernillos por fecha o rango (max 7 dias), con filtro por tipo y |
| Devuelven la URL publica del PDF (no descargan nada) |
| Siglas y cuales tipos tienen dispositivos individuales |
Como consultar
Necesitas | Como |
Frase exacta | Entre comillas dobles: |
Tema que cae en cuadernillos (PC/DJ/JU/CA) |
|
Puntual por OP |
|
Un dia puntual |
|
Un rango |
|
Solo Normas Legales |
|
Variables de entorno (opcionales)
Variable | Default | Para que |
|
| Origen de los datos |
|
| Timeout HTTP |
|
| Cache en memoria (0 = off) |
|
| Presupuesto de cache por bytes |
|
| No cachear paginas mayores a esto |
|
| Tope de paginas por llamada |
|
| Requests simultaneos hacia el sitio |
Limitaciones y diseno
Aspecto | Detalle |
Filtros web Entidad/Tipo de dispositivo | No aplican server-side: incluye el organismo en |
| Contador de coincidencias de texto del sitio (no dispositivos unicos); |
PC/DJ/JU/CA/IN/TU | Sin dispositivo individual: el texto integral vive en el PDF del cuadernillo ( |
Streaming | Paginas de busqueda se leen con corte en |
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) |
Aviso legal
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
Available Tools
9 toolsbuscar_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.
| Name | Required | Description | Default |
|---|---|---|---|
| fecha | No | ||
| start | No | ||
| sector | No | ||
| paginas | No | ||
| consulta | No | ||
| fecha_fin | No | ||
| fecha_ini | No | ||
| cuadernillo | No |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| cuadernillo | Yes |
TDQS
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.
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.
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.
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.
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.
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").
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | ||
| fecha | No | ||
| fecha_fin | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| codigo | Yes | ||
| pagina_desde | No | ||
| pagina_hasta | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | ||
| desde | No | ||
| hasta | No | ||
| cuadernillo | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | ||
| desde | No | ||
| hasta | No | ||
| cuadernillo | No |
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v0.3.1- First observed
buscar_dispositivos - First observed
buscar_por_op - First observed
descargar_cuadernillo - First observed
descargar_pdf - First observed
listar_cuadernillos - First observed
listar_tipos_publicacion - First observed
obtener_cuadernillo_texto - First observed
obtener_dispositivo - First observed
obtener_dispositivo_texto
TDQS
Scored across 9 tools
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.
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.
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.
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
Related MCP Connectors
- LegalizeOAuthdev.legalize
Official MCP connector for Legalize: read and search its whole open corpus, at any point in time.
- CromaOAuthcom.usecroma
Colombian, Peruvian, and Mexican public data: judicial cases, registries, legislation, web search.
Public Indian legal search MCP for Roop judgments, statutes, and corpus grounding.
Resolve, search and verify legal citations against the official sources, with provenance.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP 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
- AlicenseAqualityCmaintenanceMCP 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.1419 npm3MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Peruvian government data, enabling search and anomaly detection in public procurement (OSCE) and legislative tracking (Congress), plus semantic search over both domains.-
- AlicenseAqualityCmaintenanceEnables 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.4MIT