elPeruanoMCP
You can search, read, and retrieve public documents from El Peruano via a local MCP server without storing any files.
Full-text search dispositivos and cuadernillos with filters by cuadernillo, sector post-filter, date, date range, and pagination.
Look up a specific dispositivo by OP number.
Fetch a dispositivo's metadata, integral text, PDF URL, and thumbnail.
Fetch a dispositivo's text by paragraph ranges.
Read or search inside cuadernillo PDFs by page range or text query.
List cuadernillos by date or up to 7-day range, optionally filtered by type.
Get public PDF download URLs for dispositivos and cuadernillos; the server never downloads or stores them.
List publication types and identify which have individual dispositivos.
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.
Búsquedas El Peruano (Conector MCP - No oficial)

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 el asset
elPeruanoMCP.mcpb(nombre fijo, siempre la ultima version) de 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.
Related MCP server: CREG MCP Server
Actualizacion
El servidor se auto-chequea en cada arranque: si publicamos una version mas nueva que la tuya, tu agente vera el aviso
UPDATE DISPONIBLEy te pedira descargarelPeruanoMCP.mcpbde Releases e instalarlo de nuevo (arrastralo como la primera vez). Se desactiva conEPERUANO_UPDATE_CHECK=0.Cada version reemplaza el mismo archivo (
elPeruanoMCP.mcpb): la pagina de Releases siempre muestra una sola tarjeta con la ultima.
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
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_dispositivosBuscando 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.
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"). 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?
With no annotations, the description carries full burden and does so well: it discloses the 10-40s latency without a cuadernillo filter, cross-page duplicate results, internal deduplication, caching via `cacheado`, and a structured no-results path (`sin_resultados_motivo` + `nota`). It omits auth/rate-limit context, but the operational behavior is unusually well disclosed.
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 purpose followed by clearly headed Args and Devuelve blocks, so an agent can scan to the relevant field. It is long, but for an 8-parameter tool with zero schema documentation every section earns its place; only marginal 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 and no annotations exist, so the description must carry everything, and it does: it enumerates return fields (coincidencias_texto vs dispositivos_unicos, data, cuadernillos_con_coincidencias, siguiente_start, cacheado, sin_resultados_motivo), explains the compact-cuadernillo case, and covers pagination and latency. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for all 8 parameters and it does: `consulta` explains quoting for exact phrases and non-strict AND, `cuadernillo` lists valid siglas and points to listar_tipos_publicacion, `sector` clarifies substring post-filtering scope, `start` gives the page-to-offset formula, and `paginas` explains batching and dedup. This is exemplary coverage of otherwise undocumented parameters.
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"), immediately telling the agent what corpus is searched. It references one sibling (listar_tipos_publicacion) as a lookup aid, but never disambiguates itself from buscar_por_op or the obtener_* tools, so routing is only partially enabled.
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 concrete in-tool guidance (use `paginas` instead of manual `start` due to duplicate devices, `sector` is only a post-filter on the current page), which is genuinely useful. However, it never states when to choose this tool over buscar_por_op or when the obtener_* tools are the right follow-up, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buscar_por_opBuscando por orden de publicaciónC
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 provided, so the description carries the full behavioral burden. 'Búsqueda puntual' weakly implies a read-only exact lookup, but it says nothing about error/not-found behavior, permissions, or the response shape — significant gaps for a tool with zero annotation coverage.
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 short lines, front-loaded with the purpose before the arg detail, with no wasted prose. The 'Args:' block is slightly awkward but not bloated.
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 should hint at what a successful lookup yields and what happens when the OP is not found. It covers the input format adequately but leaves the return value and failure mode entirely unspecified.
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 parameter is nothing but 'type: string, title: Op'. The description compensates well by specifying the required format 'NNNNNNN-N' and giving a concrete example ('2558398-1'), which is exactly the information an agent needs and that the schema lacks.
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 verb+resource: an exact ('puntual') lookup by publication order number (OP). However, it never says what the search returns (a device? a publication record?) or how it relates to the sibling tools like buscar_dispositivos and obtener_dispositivo, so the agent cannot fully tell it apart from its neighbors.
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 word 'puntual' implies an exact-match lookup rather than a bulk listing, but there is no explicit when-to-use guidance, no prerequisites, and no mention of when to prefer buscar_dispositivos or the obtener_* siblings instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
descargar_cuadernilloResolviendo URL del 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 burden and discloses meaningful behavior: the MCP does not download or store anything, it only returns a public URL, and it additionally returns url_viewer. It also warns about the page-suffix naming quirk. Auth/permission and error behavior are not covered.
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 purpose, then behavior, then args in a clean order. Most sentences earn their place, though the detailed note about the page-suffix filename is somewhat tangential to the core call.
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 one-parameter, no-output-schema tool, the description covers purpose, return values (URL plus url_viewer), and the non-download semantics adequately. Minor gaps remain around error cases and whether the returned URL requires any authorization.
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 define the single parameter, and it does: codigo is TIPO+FECHA with concrete examples ('NL20230923', 'PC20260927'). The format and examples go well beyond the bare 'string' schema, compensating for the zero coverage.
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 resource (URL de descarga del PDF completo de un cuadernillo) and clarifies the actual verb is 'resolver/return URL', not download, correcting the misleading name 'descargar'. It distinguishes its domain by noting it is the only text route for cuadernillos SIN dispositivo individual, though it does not name the specific sibling to use otherwise.
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 clear use context: it is the only text path for cuadernillos that lack an individual device (PC/DJ/JU/CA/IN/TU), which implicitly excludes them from the device-based tools. It stops short of explicitly naming the alternative sibling (e.g. obtener_dispositivo_texto) for those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
descargar_pdfResolviendo URL del 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 delivers the single most important trait: the MCP never stores files and only returns a public URL on busquedas.elperuano.pe. This directly clarifies that despite the name 'descargar_pdf', no file is downloaded. It omits auth or rate-limit context, keeping it short of a 5.
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?
Three compact, front-loaded sentences: purpose first, then the key caveat, then arg definitions. No filler; the only slight redundancy is the title restating URL resolution.
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 two-parameter tool with no annotations and no output schema, the description covers purpose, the critical non-storage behavior, and both parameters. An agent can call it correctly without further inference, though sibling routing remains implicit.
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: it explains 'cuadernillo' as a publication code with a pointer to listar_tipos_publicacion and 'op' as an order number with the concrete example '2558398-1'. Both required params gain meaning beyond the bare string types.
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 download URL of the PDF for an individual 'dispositivo'. The phrase 'de un dispositivo individual' implicitly contrasts with the sibling descargar_cuadernillo (bulk publications), helping disambiguation, though no sibling is 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?
It tells the agent to use listar_tipos_publicacion for the 'cuadernillo' code and clarifies the user must perform the actual download, but it never states when to prefer this tool over siblings like obtener_dispositivo, buscar_por_op, or descargar_cuadernillo.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_cuadernillosListando 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 present, the description carries the full burden and does disclose valuable traits: results include pdf_url, an empty fecha defaults to the latest publications, and the range is capped at 7 days inclusive per call. It omits permissions/auth, pagination, and the full return shape, so it adds context but not a complete behavioral picture.
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 purpose is front-loaded in one sentence, followed by a compact Args block. Every line carries useful information with no filler; only minor stylistic roughness prevents a 5.
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, and the description names the key returned field (pdf_url) and the important 7-day range constraint. Given the absence of annotations, this is a fairly complete picture for a list tool, though pagination and result ordering are left unstated.
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 largely does: it enumerates accepted date formats (YYYYMMDD, AAAA-MM-DD, DD/MM/AAAA), explains the empty-value default, clarifies fecha_fin's optional rango semantics and 7-day limit, and gives an example sigla for tipo. This meaningfully exceeds what the bare schema provides.
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) plus the scope (published in a date or range, with pdf_url). An agent distinguishes it from the singular obtener_*/descargar_* siblings. It does not explicitly differentiate itself from the other listar_* tool (listar_tipos_publicacion), keeping it from 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?
Usage is implied by the fecha/fecha_fin mechanics and the note that an empty fecha returns the latest published items, which tells the agent how to get 'most recent'. However, there is no explicit when-to-use guidance versus descargar_cuadernillo, obtener_cuadernillo_texto, or the buscar_* siblings, so the routing decision is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_tipos_publicacionListando tipos de publicaciónA
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?
No annotations exist, so the description carries the full burden. It discloses one meaningful behavioral trait: some publication types lack an individual dispositivo and their integral text is only in the PDF. It does not describe the shape of the returned listing or any ordering/completeness guarantees, leaving a gap for a no-annotation 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?
Two short sentences/paragraphs with no filler; the core listing purpose is front-loaded before the caveat. The second sentence is slightly tangential in that it describes behavior of other tools, but it earns its place as cross-tool routing context.
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 is the only source of truth. It conveys what is returned at a high level and one important caveat, but it never describes the structure of the listing or how the siglas map to the sibling search/retrieval tools, so an agent must infer the rest.
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 parameter semantics to explain; the baseline of 4 applies. The description does not introduce spurious parameter-like concepts.
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 the resource and its output content clearly: it returns the abbreviations (siglas) of cuadernillos, identified as tipoPublicacion, together with their titles. That is enough to distinguish it from the lookup/retrieval siblings like buscar_dispositivos or descargar_cuadernillo, though it never explicitly says it enumerates all valid type codes.
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 adds useful downstream context — that PC/DJ/JU/CA/IN/TU have no individual dispositivo and that their full text only lives in the booklet PDF — effectively pointing to descargar_cuadernillo. However, it never states when to call this tool itself (e.g. to discover valid tipoPublicacion values before searching), so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
obtener_cuadernillo_textoLeyendo el texto del cuadernilloA
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 carries the full behavioral burden and does well: the PDF is downloaded into memory, processed page by page, never persisted to disk, with a hard cap of 10 pages per call and case-insensitive matching across all pages. It omits permission/auth requirements, error behavior for invalid codigo, and what the returned page text looks like.
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 capability and scope before the Args block; each sentence adds distinct information (search vs range mode, memory-only processing, page cap, query behavior) with no filler or repetition.
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 4-parameter tool with 0% schema description coverage and no annotations or output schema, the description covers access mode, limits, parameter semantics, and roughly what query returns (pages plus context extracts). Return shape for the page-range mode and failure modes for a bad codigo are the remaining minor gaps.
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 fully: codigo is specified as TIPO+FECHA with a concrete example ('PC20260927'), pagina_desde/pagina_hasta are 1-indexed and inclusive with a 10-page maximum, and query is optional, case-insensitive over all pages, and overrides the range. Every parameter gains meaning beyond the bare 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+resource ('Busca texto DENTRO del PDF de un cuadernillo' / reads its text by pages) and immediately scopes itself within the tool family by declaring it is the only integral-text read path for cuadernillos without an individual page (PC/DJ/JU/CA/IN/TU), which separates it from siblings like obtener_dispositivo_texto.
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 conditional guidance: use query to search across an entire PDF (recommended for PDFs of hundreds of pages), otherwise read controlled page ranges, and explicitly states query ignores pagina_desde/pagina_hasta. It implies the alternative (per-page tools) by defining its audience as cuadernillos WITHOUT an individual page, but never names that sibling or states a hard 'do not use when' condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
obtener_dispositivoObteniendo 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.
Args: cuadernillo: sigla de publicacion (ver listar_tipos_publicacion). Opcional: si se omite, se auto-resuelve por OP. 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 are provided, so the description carries the full burden. It discloses a meaningful behavioral trait (the integral text can be very long) and documents default behavior (cuadernillo auto-resolved from OP; empty desde/hasta returns full text). It omits auth/permission or error behavior, but for a read-only retrieval tool the disclosure is solid.
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 return contents, then a usage note, then a structured Args block. Every sentence carries information and nothing is padded, though the Args block is somewhat verbose in restating each parameter.
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 or annotations, the description fills the gap by describing the returned fields, the parameter semantics, and the alternative tool. It is complete for calling the tool correctly, with only incidental gaps around error or edge-case behavior.
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 thoroughly: cuadernillo is a publication sigla that is optional and auto-resolved from OP; op is a numero de orden with a format example ('2558398-1'); desde/hasta are optional 1-indexed inclusive paragraph ranges where empty means full text. This adds real meaning well beyond the bare schema titles.
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 distinguishes itself from obtener_dispositivo_texto, though it does not clearly set itself apart from buscar_por_op or buscar_dispositivos.
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 routes the agent: for long documents use obtener_dispositivo_texto with paragraph ranges, or constrain this call with desde/hasta. It also points to listar_tipos_publicacion for the cuadernillo argument. Both the alternative and the condition selecting it are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
obtener_dispositivo_textoLeyendo el texto del dispositivoA
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. Opcional: si se omite, se auto-resuelve por OP. 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?
No annotations are provided, so the description carries the full burden. It does disclose useful behavior: paragraphs are 1-indexed inclusive, ranges are the paging mechanism, returned content includes metadata (sumilla, tipo, numero, sector, fecha), and there is no paragraph cap. It omits error behavior (invalid op/cuadernillo), what auto-resolution means on failure, and any auth or rate considerations, leaving meaningful gaps for a read tool with zero annotation coverage.
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 core purpose, then return contents, then a per-argument list – a sensible ordering with little waste. There is minor tension between 'dosis controladas' and 'Sin tope de parrafos: usa rangos razonables', which slightly muddies an otherwise tight description.
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 cover what a caller needs: purpose, the paragraph-paging model, return content (text + metadata), and all four arguments. What is missing is guidance on how to obtain 'op'/cuadernillo correctly (the sibling lookup tools) and any error or edge behavior, which keeps it short of full completeness.
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 carry the parameters, and it largely does: cuadernillo is optional and auto-resolved from OP, op is the orden de publicación, and desde/hasta are an inclusive 1-indexed paragraph range. The added semantics (optionality, indexing convention, auto-resolution) are not in the schema; only 'op' remains thinly described as just 'numero de orden'.
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+resource: retrieve the text of a dispositivos (device/legal item) paragraph by paragraph, plus its metadata. The 'texto' scope implicitly distinguishes it from obtener_dispositivo (metadata only) and obtener_cuadernillo_texto (whole-quadernillo text), but no sibling is named explicitly, so the differentiation is left to inference.
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 contextual cue for use – 'dosis controladas (para documentos largos sin saturar el contexto)' and 'Sin tope de parrafos: usa rangos razonables' – which hints at pagination strategy. However, it never says when to prefer this over obtener_dispositivo or obtener_cuadernillo_texto, and gives no prerequisites or exclusions.
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 have distinct purposes: buscar_por_op is a targeted OP lookup while buscar_dispositivos is free-text search, and descargar_pdf vs descargar_cuadernillo target different resources. The one soft overlap is obtener_dispositivo vs obtener_dispositivo_texto (both return device text), but the descriptions explicitly state when to use the paragraph-ranged variant.
All tools follow a consistent Spanish verb_noun snake_case pattern: buscar_*, obtener_*, listar_*, descargar_*. No mixing of conventions, and names clearly telegraph the action and target resource.
Nine tools is well-scoped for a read-only gazette access server, covering search, retrieval, listing, and download without redundancy. Each tool earns its place, no bloat.
The surface covers the full read lifecycle: search by OP and free text, fetch device/full text, list publication types and cuadernillos, and obtain device/cuadernillo PDF URLs plus in-PDF text search. Minor gaps (e.g. no sector-wide corpus filtering, only page-level post-filter) are documented workarounds rather than dead ends.
Maintenance
Related MCP Connectors
Official MCP connector for Legalize: read and search its whole open corpus, at any point in time.
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
- 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
- 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
- AlicenseAqualityBmaintenanceEnables local MCP clients to search and read Peru's official legal information system, including legal norms and jurisprudence, with tools for full-text search, structure mapping, targeted reading, and filters. It provides clean content without storing files, using stdio transport and public session authentication.77Apache 2.0
- AlicenseAqualityBmaintenanceEnables local, credential-free searching and reading of Peru's public procurement system—including selection processes, contracts, documents, and annual procurement plans—through MCP tools, returning clean data and direct download URLs without storing files.251Apache 2.0