Skip to main content
Glama
edwin042331-hue

dgcp-mcp-server

dgcp-mcp-server

CI License: MIT Node.js >= 20 MCP

Servidor Model Context Protocol que conecta cualquier asistente de IA (Claude, Cursor, Gemini CLI...) con la API oficial de datos abiertos de la Dirección General de Contrataciones Públicas de República Dominicana (DGCP).

Pregúntale a tu IA "¿cuál es la última licitación?", "¿qué puedo ofertar hoy con mi RPE?", "¿a qué precio se han comprado estas laptops?" o "¿hay colusión en este proceso?" y responde con datos oficiales, exactos y con la hora de República Dominicana.

  • Fuente: https://datosabiertos.dgcp.gob.do/api-dgcp/v1 (solo lectura, sin credenciales).

  • Marco legal: Ley 47-25 de Contrataciones Públicas, su Reglamento (Decreto 52-26) y los umbrales 2026 (Resolución PNP-03-2026), con régimen transitorio de la Ley 340-06 para procesos convocados antes.


Herramientas (17)

Consulta

Herramienta

Qué responde

dgcp_ultimas_licitaciones

Lo último publicado (hoy, esta semana), del más reciente al más antiguo, con hora RD y tiempo restante para ofertar.

dgcp_buscar_licitaciones

Procesos abiertos o en cualquier estado. Con estado: "abierto" revisa el universo completo de procesos publicados, no una muestra. Admite términos alternativos ("laptop, computadora, servidor"), institución por nombre/acrónimo/código, montos, fechas y orden.

dgcp_buscar_contratos

Quién ganó, cuánto, cuándo, forma y plazo de pago. Filtros exactos por proceso, RPE o institución.

dgcp_buscar_ofertas

Todas las ofertas de un proceso o de una empresa, ordenables por precio.

dgcp_buscar_proveedores

Ficha RPE por RPE, RNC/cédula o nombre, con alerta si figura en la lista oficial de inhabilitados.

Inteligencia

Herramienta

Qué responde

dgcp_inteligencia_proceso

Expediente 360° de un proceso: ficha y cronograma, artículos con código UNSPSC y precio estimado, documentos del pliego, ofertas, adjudicación, a quién le compra la institución, control de legalidad (plazo mínimo, modalidad vs. umbral, fecha límite de aclaraciones) y garantías según la ley aplicable.

dgcp_oportunidades_para_mi

Qué licitaciones abiertas encajan con lo que vende tu empresa, cruzando todos los rubros UNSPSC registrados en tu RPE con los artículos de cada proceso vigente. Encuentra lo que una búsqueda por palabras pierde.

dgcp_precios_referencia

A qué precio unitario el Estado contrató realmente un artículo (mínimo, P25, mediana, P75, máximo por unidad de medida) con ejemplos recientes. Para fijar precio o detectar sobreprecios.

dgcp_plan_compras

Lo que una institución planea comprar en el año (PACC): monto, modalidad y fecha prevista. Para anticiparse a la licitación.

dgcp_radiografia_proveedor

Perfil completo de una empresa: ficha, inhabilitaciones, rubros, todos sus contratos, clientes principales y tasa de éxito (procesos ganados / ofertados).

dgcp_scorecard_institucion

Cómo compra y paga una institución: plazos de pago frente al máximo legal de 30 días, concentración de proveedores (HHI), cumplimiento de la cuota MIPYME y procesos con plazo de convocatoria inferior al mínimo legal.

dgcp_calculadora_legal

Modalidad y plazo mínimo según el monto, umbrales 2026, garantías, anticipo y reglas MIPYME, y si la modalidad usada es inferior a la legal.

Preparación de ofertas y defensa

Herramienta

Qué hace

dgcp_generador_propuesta_sncc

Borradores de carta de presentación, declaración jurada (Arts. 38-39 Ley 47-25), oferta económica con ITBIS, garantías y checklist, con los datos reales del proceso.

dgcp_simulador_puntuacion

Escenarios de precio con la fórmula de proporcionalidad inversa y recomendación según tu margen mínimo.

dgcp_auditoria_colusion

Cruza cada oferente de un proceso con su ficha RPE y con la lista de inhabilitados: teléfonos, correos, dominios, domicilios o contactos compartidos, ofertas idénticas, empresas recién creadas.

dgcp_auditor_pliego_trampa

Marcas sin equivalencia, exclusividades, criterios subjetivos y plazos insuficientes; redacta la solicitud de aclaración (Art. 102).

dgcp_generador_recurso_impugnacion

Recurso de reconsideración (Arts. 204-205) o jerárquico impropio ante la DGCP (Arts. 207-208), con cálculo del vencimiento y medida cautelar opcional (Art. 211).

Las herramientas jurídicas son asistencia técnica: el resultado debe revisarlo un abogado.


Related MCP server: mcp-colombia-secop

Instalación

Requisitos: Node.js 20 o superior.

git clone https://github.com/edwin042331-hue/dgcp-mcp-server.git
cd dgcp-mcp-server
npm ci
npm run build

En Windows, instalar.ps1 hace todo lo anterior, prueba la conexión con la API y registra el servidor en Claude Desktop y Gemini CLI:

powershell -ExecutionPolicy Bypass -File .\instalar.ps1

Claude Code

claude mcp add dgcp -- node /ruta/absoluta/dgcp-mcp-server/dist/index.js

Claude Desktop, Cursor, Gemini CLI y otros clientes

{
  "mcpServers": {
    "dgcp": {
      "command": "node",
      "args": ["/ruta/absoluta/dgcp-mcp-server/dist/index.js"]
    }
  }
}

Claude Desktop: %APPDATA%\Claude\claude_desktop_config.json (Windows) o ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).

Variables de entorno (opcionales)

Variable

Default

Uso

DGCP_PETICIONES_POR_MINUTO

120

Tope propio de seguridad; además se pausa si la API avisa que quedan ≤3 peticiones.

DGCP_CONCURRENCIA

6

Peticiones simultáneas máximas.

DGCP_TIMEOUT_MS

35000

Timeout por intento HTTP.

DGCP_REINTENTOS

3

Reintentos ante 429, 5xx y errores de red.

DGCP_CACHE_TTL_MS

600000

Vida de la caché (los datos cambian 4 veces al día).

DGCP_CACHE_MAX_MB

96

Tope de memoria de la caché.

DGCP_MAX_PAGINAS

6

Páginas de 1000 registros por consulta.


Frescura de los datos

La API de la DGCP se alimenta de un Data Warehouse que se actualiza a las 00:00, 07:00, 14:00 y 21:00 (hora RD). Lo publicado en el portal transaccional después del último corte aparece en el siguiente. Cada respuesta indica el corte vigente y el próximo, para que nunca se confunda ese desfase con un error.

Cómo funciona por dentro

  • Filtros del servidor. La API sí filtra por código de proceso, RPE, RNC, unidad de compra, estado, MIPYME y fechas; el servidor los usa en vez de descargar páginas a ciegas, y declara la cobertura de cada respuesta ("100% de 686 procesos").

  • Hora de República Dominicana. La API rotula sus fechas con Z (UTC) pero son hora local RD. Interpretarlas como UTC adelanta cada cierre 4 horas; aquí se corrige en un solo lugar (src/utils/fechas.ts).

  • Resiliencia. Limitador de tasa adaptativo (ventana deslizante, concurrencia acotada y pausa según x-ratelimit-remaining), reintentos con backoff exponencial y jitter que respetan Retry-After, deduplicación de peticiones idénticas en vuelo, caché LRU acotada por bytes, presupuestos de tiempo para herramientas pesadas y errores devueltos al modelo con isError y una sugerencia accionable.

  • Normativa verificada. src/normativa.ts concentra cada umbral, plazo y porcentaje, cada uno atado al artículo que lo establece en los textos oficiales.

Detalle técnico de la API y sus particularidades: docs/API-DGCP.md.

Desarrollo

npm run check        # typecheck + pruebas unitarias (sin red)
npm run smoke:live   # compila y ejecuta las 17 herramientas contra la API real
npm run inspect      # MCP Inspector en el navegador

Las pruebas unitarias simulan fetch y el reloj: no dependen de la red ni de la hora. La prueba en vivo (scripts/smoke-live.mjs) sirve para validar cambios contra la API real antes de publicar.

Guía de contribución: CONTRIBUTING.md. Cambios por versión: CHANGELOG.md.

Licencia y aviso

MIT. Iniciativa independiente de transparencia con datos públicos; no está afiliada a la DGCP. Los análisis, cálculos y borradores son asistencia técnica automatizada: no sustituyen el pliego de condiciones, las decisiones de los comités de contrataciones ni la asesoría legal.

Available Tools

17 tools
dgcp_auditoria_colusionAuditoria forense de colusion entre oferentes (DGCP)A
Read-onlyIdempotent

Audita TODAS las ofertas de un proceso y cruza a cada oferente con su ficha oficial del RPE (consulta exacta por RPE) y con la lista de inhabilitados de la DGCP. Banderas: telefonos, correos, dominios, domicilios o personas de contacto compartidos; ofertas identicas o casi identicas (<=0.5%); empresas creadas poco antes del proceso; oferentes inhabilitados o con RPE no activo; multiples ofertas de un mismo oferente. Base legal: Art. 116 Ley 47-25 (exclusion por practicas colusorias) y Art. 36 (multiplicidad de participacion). Son indicios para verificar, no prueba.

NameRequiredDescriptionDefault
codigo_procesoYesCodigo oficial del proceso a auditar.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and open-world. The description adds substantial value beyond those structured fields: it enumerates the specific detection flags, the external data sources consulted, and the legal basis, and notably cautions that results are 'indicios para verificar, no prueba' – a critical behavioral caveat about output interpretation that annotations do not convey. No output schema exists, so disclosing that results are indicators rather than proof is exactly the kind of context needed.

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 action, followed by a compact list of flags and the legal basis. It is dense but every clause (sources, flags, legal articles, indicator disclaimer) earns its place without 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?

For a single-parameter read-only analysis tool with no output schema, the description covers the data sources, the concrete signals examined, the legal grounding, and the interpretation caveat. The main residual gap is that it does not sketch the structure of the audit report returned, though the indicator disclaimer partially compensates.

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 coverage is 100% with only one required parameter, and the schema already documents codigo_proceso as the official process code. The description adds no new syntax or format detail beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: it audits all offers in a process, cross-referencing each bidder against its official RPE record and the DGCP disqualified list. This is clearly distinguishable from siblings like dgcp_buscar_ofertas or dgcp_radiografia_proveedor, which are lookup tools rather than cross-analysis of an entire process.

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

Usage Guidelines3/5

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

The description implies when it applies (forensic collusion audit for a process) but does not explicitly state when to use it versus alternatives such as dgcp_inteligencia_proceso or dgcp_radiografia_proveedor, nor does it state exclusions or prerequisites.

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

dgcp_auditor_pliego_trampaAuditor de pliegos dirigidos (DGCP)A
Read-onlyIdempotent

Revisa si un proceso tiene senales de pliego dirigido o barreras indebidas:

  • Marcas o nombres comerciales en titulo, articulos o el extracto del pliego (Art. 91 P. II Ley 47-25: prohibidas salvo que no exista otra forma de describir el objeto).

  • Exigencias de exclusividad y criterios subjetivos de evaluacion (Art. 91 P. I: especificaciones que crean obstaculos innecesarios).

  • Plazo de convocatoria inferior al minimo (Art. 101) y fecha limite para pedir aclaraciones (Art. 102). Genera la solicitud de aclaracion lista para el buzon del portal. Pega en 'extracto_pliego' las especificaciones del PDF para un analisis completo.

NameRequiredDescriptionDefault
codigo_procesoYesCodigo oficial del proceso.
extracto_pliegoNoTexto de clausulas o especificaciones tecnicas del pliego a auditar (copiado del PDF).

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by stating that it generates a clarification request ready for the portal inbox and that pasting the pliego extract enables a complete analysis.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then uses a tight bullet list to detail legal checks before closing with an input instruction. Every sentence contributes useful information, and there is no redundant or filler content.

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 complex legal-audit tool with no output schema, the description explains what it checks, the legal basis, and the expected output (a clarification request). It is nearly complete, though it does not describe the return format or any limitations of the analysis beyond the input guidance.

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 100%, so the schema already documents both parameters. The description adds meaning for 'extracto_pliego' by explaining that it should contain the PDF's specifications and that providing it enables a complete analysis; 'codigo_proceso' is left to the schema.

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

Purpose5/5

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

The description uses a specific verb and resource: reviewing a process for signs of a directed tender ('pliego dirigido') or improper barriers. It enumerates the exact legal checks (trademarks, exclusivity, subjective criteria, deadlines), which clearly distinguishes it from sibling tools such as dgcp_auditoria_colusion or dgcp_generador_recurso_impugnacion.

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 clear context for when to use the tool: auditing a procurement process for directed-tender signals, and it instructs the agent to paste the pliego extract for complete analysis. However, it does not explicitly name when not to use it or point to alternative sibling tools for related tasks.

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

dgcp_buscar_contratosBuscar contratos adjudicados (DGCP)A
Read-onlyIdempotent

Contratos firmados por el Estado dominicano: quien gano, cuanto, cuando, forma y plazo de pago. Filtros exactos en el servidor: codigo_proceso, rpe, institucion (resuelta a su codigo oficial), con cobertura total del filtro. Sin esos filtros solo se analizan los ~3,000 contratos mas recientes (la API no filtra contratos por fecha ni por texto).

NameRequiredDescriptionDefault
rpeNoRPE del adjudicatario (filtro exacto en servidor).
limiteNoResultados a mostrar (default 10).
terminoNoPalabras en descripcion, proveedor o codigos (alternativas separadas por coma).
monto_maxNo
monto_minNo
proveedorNoNombre (o parte) del adjudicatario.
institucionNoInstitucion: nombre, acronimo o codigo de unidad de compra.
codigo_procesoNoCodigo del proceso (filtro exacto en servidor).
estado_contratoNoActivo, Cerrado, Cancelado, Rescindido, Modificado, 'Flujo en aprobacion'.

TDQS

A4.4/5.0
Behavior4/5

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

Con readOnlyHint=true, destructiveHint=false e idempotentHint=true ya declaradas, la descripción añade detalles no cubiertos por anotaciones: que ciertos filtros son exactos en servidor, que institucion se resuelve a código oficial, y la limitación de la API (solo ~3,000 contratos recientes sin filtro). No menciona paginación ni formato de salida, pero cubre bien las restricciones clave.

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

Conciseness5/5

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

Dos frases bien estructuradas, con la información de filtros exactos y la advertencia de cobertura limitada colocadas en orden de importancia. No hay relleno y cada oración aporta información operativa.

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?

Para una herramienta de solo lectura con 9 parámetros opcionales, sin esquema de salida, la descripción cubre lo esencial: qué devuelve, qué filtros son exactos y la limitación de la API. Queda un pequeño vacío sobre los parámetros de rango de monto y el parámetro limite, pero no impide el uso correcto.

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?

La cobertura del esquema es del 78%, lo que da una base alta. La descripción añade valor semántico al aclarar que codigo_proceso, rpe e institucion son filtros exactos en servidor y que institucion se resuelve a su código oficial, información que el esquema solo insinúa. Sin embargo, no cubre monto_min/monto_max, estado_contrato ni limite.

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

Purpose5/5

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

States a specific verb (buscar) and resource (contratos adjudicados/firmados por el Estado) y enumera los datos que devuelve (quién ganó, cuánto, cuándo, forma y plazo de pago). Se distingue claramente de hermanos como dgcp_buscar_licitaciones u dgcp_buscar_ofertas.

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?

Explica cuándo usar filtros exactos y advierte que sin esos filtros solo se analizan los ~3,000 contratos más recientes porque la API no filtra por fecha ni por texto. No nombra explícitamente alternativas (p.ej. dgcp_inteligencia_proceso), pero da contexto operativo suficiente para elegir parámetros.

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

dgcp_buscar_licitacionesBuscar licitaciones y procesos de compra (DGCP)A
Read-onlyIdempotent

Busca procesos de compra publica del Estado dominicano usando los filtros del servidor de la API DGCP.

  • estado 'abierto' (default) descarga el universo COMPLETO de procesos publicados (no una muestra) y deja solo los que aun reciben ofertas.

  • 'institucion' se resuelve al codigo oficial de la unidad de compra (filtro exacto en el servidor).

  • 'termino' acepta alternativas separadas por coma en una sola llamada: 'computadora, laptop, servidor'.

  • Orden por defecto: lo mas reciente publicado primero. Usa orden='cierre_proximo' para ver lo que vence antes.

  • Las horas se muestran en hora de Republica Dominicana.

Para "la ultima licitacion" o "lo nuevo de hoy" usa dgcp_ultimas_licitaciones.

NameRequiredDescriptionDefault
ordenNo'recientes' (default) = lo ultimo publicado primero. 'cierre_proximo' = lo que vence antes. 'monto_mayor'.
estadoNo'abierto' (default) = publicado y con cierre futuro. 'evaluacion' = sobres abiertos. 'todos' = sin filtro.
limiteNoResultados a mostrar (default 10).
mipymeNoSolo procesos dirigidos a MIPYMES.
terminoNoPalabras a buscar en titulo/descripcion. Separa alternativas con coma: 'software, licencias, laptop' (coincide cualquiera).
modalidadNoTexto de la modalidad: 'Licitacion Publica', 'Contratacion Menor', 'Comparacion de Precios', 'Excepcion'...
monto_maxNoMonto estimado maximo (DOP).
monto_minNoMonto estimado minimo (DOP).
institucionNoNombre, acronimo o codigo de la institucion. Ej: 'MINERD', 'Impuestos Internos', '141'.
mipyme_mujerNoSolo procesos dirigidos a MIPYMES de mujeres.
codigo_procesoNoCodigo exacto del proceso, ej. 'MIP-CCC-LPN-2026-0005'.
publicado_desdeNoFecha de publicacion desde (YYYY-MM-DD, hora RD).
publicado_hastaNoFecha de publicacion hasta, inclusive (YYYY-MM-DD).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/openWorld, so the bar is lower; the description still adds real behavioral context: 'abierto' pulls the COMPLETE universe rather than a sample, institucion is server-side resolved to an official code, ordering defaults, and that times are in RD timezone. It stops short of mentioning rate limits or pagination of results.

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

Conciseness5/5

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

Front-loaded with the core behavior, then bulleted filters, then the sibling-routing line last. Each bullet earns its place and nothing is redundant with the schema or annotations.

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 13-parameter search tool with no output schema, the description covers defaults, filter quirks, ordering, timezone, and routing. It does not describe the shape of returned results, which leaves a modest gap even though no output schema exists to cover it.

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 100%, so baseline is 3, but the description contributes semantics beyond the schema: 'termino' accepts comma-separated alternatives matching any, institucion resolves to the purchasing unit code, and the default orden. This meaningfully enriches how parameters should be used.

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

Purpose5/5

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

States a specific verb+resource: searching Dominican State public procurement processes via DGCP API filters. It also explicitly distinguishes itself from dgcp_ultimas_licitaciones, so an agent can route without opening either schema.

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?

Explicitly names the alternative for recency queries ('para la ultima licitacion o lo nuevo de hoy usa dgcp_ultimas_licitaciones') and explains default behavior for estado and orden. It does not address other potentially confusable siblings like dgcp_buscar_contratos or dgcp_buscar_ofertas, so it falls short of full when-not coverage.

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

dgcp_buscar_ofertasBuscar ofertas presentadas (DGCP)A
Read-onlyIdempotent

Ofertas que las empresas presentaron en procesos de compra: quien compitio y a que precio. Con codigo_proceso devuelve TODAS las ofertas de ese proceso (filtro exacto en servidor); con rpe, todas las de una empresa. Nota: la API casi siempre deja estado_evaluacion en "Pendiente"; el ganador real se ve en dgcp_buscar_contratos.

NameRequiredDescriptionDefault
rpeNoRPE del oferente (filtro exacto en servidor).
ordenNo'recientes' (default) o 'precio_menor' (util para comparar ofertas de un proceso).
limiteNoResultados a mostrar (default 10).
terminoNoPalabras en oferente, nombre de oferta o codigos.
monto_maxNo
monto_minNo
proveedorNoNombre (o parte) del oferente.
institucionNoInstitucion: nombre, acronimo o codigo.
codigo_procesoNoCodigo del proceso: devuelve TODAS sus ofertas (filtro exacto en servidor).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine non-obvious context: exact server-side filtering semantics for codigo_proceso and rpe, and the data-quality caveat that estado_evaluacion is almost always 'Pendiente' so the winner must be read elsewhere. Return format and pagination limits are not described.

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

Conciseness5/5

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

Three tight sentences: what the tool returns, the two key filters, and the critical caveat. Front-loaded and free of 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?

For a nine-parameter read-only search with no output schema, the description covers purpose, the two highest-value filters, and an important evaluation-status gotcha. It could note result ordering/defaults and how monto/proveedor/institucion narrow results, but nothing critical is missing for correct invocation.

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 78%, so the schema already documents most parameters. The description reinforces codigo_proceso and rpe behavior (exact server filter, returns ALL matches) but says nothing about orden, limite, termino, monto_min/max, proveedor, or institucion beyond what the schema states, so baseline 3 fits.

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

Purpose5/5

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

States a specific verb and resource ('Ofertas que las empresas presentaron en procesos de compra') and even summarizes the payload ('quien compitio y a que precio'). It distinguishes itself from the sibling dgcp_buscar_contratos by naming it as the place to find the actual winner, so an agent can route without opening schemas.

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 concrete when-to-use routing: codigo_proceso returns all bids for one process, rpe returns all bids for one company, and points to dgcp_buscar_contratos when the winner is needed. It does not cover when NOT to use this tool versus other search siblings (licitaciones, proveedores), so it stops short of explicit exclusions.

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

dgcp_buscar_proveedoresBuscar proveedores del Estado / RPE (DGCP)A
Read-onlyIdempotent

Ficha oficial en el Registro de Proveedores del Estado: RPE, RNC, estado, MIPYME/MICM, rubro, ubicacion, contacto y constancia. Busca por RPE o RNC/cedula de forma exacta en el servidor. Por nombre, identifica la empresa a traves de su actividad reciente en contratos y ofertas. Avisa si el proveedor figura en la lista oficial de inhabilitados o suspendidos.

NameRequiredDescriptionDefault
rncNoRNC o cedula (exacto).
rpeNoNumero de RPE (exacto).
estadoNoEstado en el RPE: Activo, Suspendido, Cancelado, Desactualizado...
limiteNo
terminoNoRPE, RNC/cedula o nombre de la empresa. Los numeros se buscan de forma exacta.
provinciaNoProvincia, ej. 'SANTIAGO' (filtro de servidor; requiere tambien estado).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, and the description adds real behavioral context: exact server-side matching for identifiers, name lookup inferred from recent contracts and bids, and a flag for officially disqualified or suspended suppliers. It omits pagination/limit behavior, but that is a minor gap given the 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.

Conciseness4/5

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

Three sentences, front-loaded with the record contents, then search mechanics, then the disqualification warning. Mostly efficient, though the opening field enumeration is somewhat list-like and could be tightened.

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 6-parameter, zero-required lookup with no output schema, the description usefully describes returned fields and search modes. However, it never explains how to call the tool when no identifier is supplied or how multiple matches are handled, leaving a real gap for a tool with all-optional parameters.

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 coverage is 83%, so the schema already documents most parameters (rnc, rpe, estado, termino, provincia). The description adds the server-side exact-match semantics for numeric lookups and the name-resolution heuristic, but says nothing about 'limite' or the provincia-requires-estado constraint. Baseline 3 is appropriate.

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+resource ('Buscar proveedores' in the Registro de Proveedores del Estado) and enumerates the fields returned (RPE, RNC, estado, MIPYME/MICM, rubro, ubicacion, contacto, constancia). It is clearly a registry lookup, but it never distinguishes itself from the sibling dgcp_radiografia_proveedor, which also profiles suppliers.

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?

Explains the two search modes (exact RPE/RNC on the server vs. name resolved through recent contract/bid activity), which implies usage but not when to prefer this tool over dgcp_radiografia_proveedor or other supplier-oriented siblings. No exclusions or prerequisites are given.

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

dgcp_generador_propuesta_snccGenerador de borradores de oferta (Sobre A y B)A
Read-onlyIdempotent

Genera borradores de la carta de presentacion, la declaracion jurada de no estar en el regimen de inhabilidades (Arts. 38-39 Ley 47-25), la oferta economica con ITBIS y el checklist del expediente, con los datos reales del proceso. Ajusta las garantias y el anticipo si el oferente es MIPYME (Arts. 174-175 Ley 47-25). Usa siempre los formularios estandar que publica el pliego del proceso: esto es un borrador para completarlos.

NameRequiredDescriptionDefault
rncYes
rpeYes
es_mipymeNotrue si el oferente es MIPYME certificada.
aplica_itbisNofalse si el bien o servicio esta exento de ITBIS (default true, 18%).
razon_socialYesRazon social del oferente.
codigo_procesoYesCodigo oficial del proceso.
descripcion_ofertaNoDescripcion breve de lo ofertado.
plazo_entrega_diasNoPlazo de entrega o ejecucion en dias calendario (default 15).
representante_legalYes
cedula_representanteYes
monto_ofertado_subtotalYesSubtotal de la oferta antes de ITBIS (DOP).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower. The description still adds meaningful behavior: the output is explicitly a draft requiring completion on official pliego forms, and legal-article-conditional adjustments (Arts. 38-39, 174-175 Ley 47-25) are disclosed. It does not describe the output's format or whether anything is persisted, which keeps it from 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.

Conciseness4/5

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

Three tight sentences that lead with what gets generated, then the conditional MIPYME logic, then the draft caveat. The document enumeration is long but every item is load-bearing information about the output, so it stays dense rather than padded.

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 an 11-parameter, 7-required generator with no output schema, the description does the important work: it identifies which documents come back and warns that the result is an incomplete draft. What is missing is the shape of the return (plain text, file link, structured sections) and any note on how the optional ITBIS/MIPYME flags change the generated content.

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 coverage is 64% and the description names no parameters directly. It does implicitly map conceptual inputs onto two optional parameters (es_mipyme via the MIPYME adjustment clause, aplica_itbis via the ITBIS reference), and 'datos reales del proceso' gestures at codigo_proceso, but the remaining required fields like rnc, rpe and cedula_representante get no added meaning beyond the schema.

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

Purpose5/5

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

States a specific verb (genera borradores) and enumerates the exact artifacts produced: carta de presentación, declaración jurada de inhabilidades, oferta económica con ITBIS y checklist del expediente. This clearly separates it from every sibling, all of which are search/analysis tools rather than document generators.

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

Usage Guidelines3/5

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

It gives useful context (a draft to be completed, built from real process data and the pliego's standard forms) and conditions the guarantee/advance calculations on MIPYME status. However, it never states when to reach for this tool versus alternatives such as dgcp_calculadora_legal or dgcp_simulador_puntuacion, and offers no exclusions or prerequisites, leaving route selection implicit.

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

dgcp_generador_recurso_impugnacionGenerador de recurso administrativo (Ley 47-25)A
Read-onlyIdempotent

Redacta el recurso correcto segun la Ley 47-25:

  • Reconsideracion: primero y obligatorio, ante el organo responsable del proceso, en 10 dias habiles (Arts. 204-205).

  • Jerarquico impropio: contra la decision de la reconsideracion, ante la DGCP, en 10 dias habiles (Arts. 207-208).

  • Medida cautelar: instancia separada ante la DGCP mientras el recurso este pendiente (Art. 211); los recursos NO suspenden el acto por si solos (Art. 201). Calcula el vencimiento del plazo si se indica la fecha de notificacion. Si el proceso fue convocado bajo la Ley 340-06, lo advierte.

NameRequiredDescriptionDefault
hechosYesRelato breve de lo ocurrido y por que perjudica al recurrente.
agraviosNoNormas o principios violados, si se conocen.
tipo_recursoNo'reconsideracion' (default): primer recurso, ante la institucion (Art. 204). 'jerarquico_impropio': contra la decision de la reconsideracion, ante la DGCP (Art. 207).
representanteYesRepresentante legal.
acto_impugnadoYesActo que se impugna: 'Acta de adjudicacion No. X', 'Informe de evaluacion', 'Pliego de condiciones'...
codigo_procesoYesCodigo del proceso.
rnc_recurrenteYes
rpe_recurrenteNo
empresa_recurrenteYes
fecha_notificacionNoFecha (YYYY-MM-DD) en que se notifico o publico el acto: calcula el vencimiento del plazo.
incluir_medida_cautelarNotrue = agrega la instancia separada de medida cautelar ante la DGCP (Art. 211).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations mark it readOnly/idempotent/non-destructive, consistent with a drafting/calculation tool. The description adds real depth beyond annotations: deadline computation (10 dias habiles per Arts. 204-205/207-208), the warning that recursos do not suspend the act (Art. 201), and the Ley 340-06 notice behavior. However it doesn't clarify output format or whether missing fecha_notificacion yields an error or skipped calculation.

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

Conciseness5/5

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

Front-loaded single verb phrase followed by a tight bulleted breakdown of the three recourses with articles and deadlines. Every bullet earns its place by adding legal specifics an agent would need; no 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?

For a drafting tool with 11 params, 6 required, no output schema and no return-value info, the description is quite complete on legal behavior. Remaining gaps: no explanation of what documento is produced or how output is structured, which matters since there is no output schema.

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 coverage is 73%, and the schema already documents key params (tipo_recurso enum, fecha_notificacion pattern, incluir_medida_cautelar, hechos, agravios). The description reinforces the tipo_recurso semantics and the fecha_notificacion deadline use, but adds no new meaning for the undocumented params (rpe_recurrente, rnc_recurrente). Baseline 3 fits.

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

Purpose5/5

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

States a specific verb (Redacta/redacta el recurso) and resource (recurso administrativo bajo Ley 47-25), and distinguishes the three recourse types with their scope and governing articles. Clearly differentiated from sibling tools like dgcp_calculadora_legal or dgcp_generador_propuesta_sncc.

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 each recourse type's sequence (reconsideracion primero y obligatorio, jerarquico impropio contra su decision, medida cautelar como instancia separada) and deadlines, giving a clear map of when each applies. Lacks an explicit 'do not use this when...' exclusion, but the sequencing is strongly implied.

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

dgcp_inteligencia_procesoExpediente 360 de un proceso de compra (DGCP)A
Read-onlyIdempotent

Arma el expediente completo de una licitacion en una sola llamada, con consultas exactas a la API:

  1. Ficha y cronograma (hora RD) con cuenta regresiva y regimen legal aplicable (Ley 47-25 o 340-06 transitoria).

  2. Articulos solicitados (codigo UNSPSC, cantidades y precio unitario estimado por la institucion).

  3. Documentos del pliego publicados (enlaces directos).

  4. Ofertas recibidas y contratos adjudicados del proceso.

  5. Historial de la institucion: a quien le compra y cuanto (ultimos contratos).

  6. Control de legalidad: plazo minimo del Art. 101, modalidad vs umbral (posible fraccionamiento), fecha limite de aclaraciones.

  7. Garantias, anticipo MIPYME y plazo de pago segun la Ley 47-25 y el Dec. 52-26.

NameRequiredDescriptionDefault
codigo_procesoYesCodigo oficial del proceso, ej. 'MIP-CCC-LPN-2026-0005'.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds real value beyond that: it discloses the response content (countdown, UNSPSC line items, direct document links, awarded contracts) and that computed legal checks such as the Art. 101 minimum term and possible fraccionamiento are performed — but says nothing about cost, latency, or partial-failure behavior for a call that fans out to many queries.

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 core purpose in one sentence, then a numbered list of the returned sections. The list is long but every item is load-bearing, since there is no output schema to describe the payload; minor verbosity in the legal-regime phrasing.

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, the description correctly compensates by enumerating what the dossier contains, which is exactly what an agent needs to decide the call is worthwhile. It is close to complete; only the absence of any note on response size or when partial data may be missing keeps it from a 5.

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 100% and there is a single parameter, so the schema (with format example 'MIP-CCC-LPN-2026-0005') already carries the parameter burden. The description adds no syntax, validation, or lookup guidance beyond what the schema provides — baseline 3.

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

Purpose5/5

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

States a specific verb and resource — 'Arma el expediente completo de una licitacion en una sola llamada' — and then enumerates the seven sections it assembles. The 'una sola llamada' framing distinguishes it from the narrow sibling lookups (dgcp_buscar_licitaciones, dgcp_buscar_contratos, dgcp_buscar_ofertas) that this tool aggregates.

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: the agent can infer this is the one-shot dossier builder versus the single-purpose siblings, but there is no explicit 'use this when you need everything at once; use X when you need only offers' routing. No exclusions or prerequisites are given.

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

dgcp_oportunidades_para_miOportunidades abiertas para mi empresa (por rubro UNSPSC)A
Read-onlyIdempotent

Responde "que licitaciones ABIERTAS ahora mismo puedo ofertar". Toma TODOS los rubros UNSPSC registrados de tu empresa en el RPE (o los codigos que indiques) y los cruza con los articulos de los procesos publicados recientemente que siguen recibiendo ofertas. Es exacto por codigo de producto: encuentra oportunidades que una busqueda por palabras pierde. Ordena por cierre mas proximo e informa que porcentaje de los procesos abiertos cubrio.

NameRequiredDescriptionDefault
limiteNo
mipymeNoSolo procesos dirigidos a MIPYMES.
terminoNoFiltro adicional por palabras (alternativas separadas por coma).
rpe_o_rncNoRPE o RNC de tu empresa: se usan sus rubros UNSPSC registrados en el RPE.
dias_atrasNoAntiguedad maxima de publicacion a revisar (default 14 dias).
codigos_unspscNoFamilias/clases/subclases UNSPSC a vigilar (alternativa o complemento al RPE). Ej: ['43210000','81110000'].

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: results are sorted by nearest closing date and it reports the percentage of open processes covered. It does not mention rate limits or result format, but adds meaningful traits over the annotations.

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?

A single dense paragraph, front-loaded with the core question it answers, followed by mechanism and differentiator. Every sentence carries information, though it is a fairly long run-on block that could be broken up.

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 must convey return behavior; it does so by stating ordering (nearest closing) and coverage reporting. With 6 parameters and 0 required, it explains the main default flow (RPE-derived rubros), though it does not spell out defaults for limite or behavior when no codes/RPE are resolvable.

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 83% (high), so the baseline is 3. The description goes further by explaining the relationship between the RPE-based auto-selection and manually supplied codes ('Toma TODOS los rubros UNSPSC registrados de tu empresa en el RPE (o los codigos que indiques)'), clarifying how rpe_o_rnc and codigos_unspsc interact.

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

Purpose5/5

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

States a specific verb+resource+scope: 'licitaciones ABIERTAS ahora mismo puedo ofertar' by crossing registered UNSPSC rubros against recently published processes still receiving offers. It also contrasts itself with a word-based search ('encuentra oportunidades que una busqueda por palabras pierde'), which distinguishes it from search-style siblings.

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?

Frames usage around the question 'which open tenders can I bid on now' and implicitly excludes keyword-search approaches by noting it finds what word searches miss. However, it does not explicitly name an alternative sibling (e.g. buscar_licitaciones vs ultimas_licitaciones) or state when-not-to-use, so it falls short of full explicit guidance.

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

dgcp_plan_comprasPlan Anual de Compras (PACC) de una institucionA
Read-onlyIdempotent

Lo que una institucion PLANEA comprar en el ano segun su Plan Anual de Compras y Contrataciones (PACC) publicado: descripcion, monto presupuestado, modalidad prevista, fecha estimada de inicio y si esta reservado a MIPYMES. Permite anticiparse a las licitaciones antes de que se publiquen.

NameRequiredDescriptionDefault
anioNoAno del plan (default: el actual).
limiteNo
terminoNoFiltra por descripcion (alternativas separadas por coma).
institucionYesNombre, acronimo o codigo de la institucion.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds useful content context (the plan is forward-looking, fields returned) but says nothing about pagination, result caps implied by 'limite', or data freshness. Adequate but not rich beyond annotations.

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 resource definition. The field enumeration is long-ish but earns its place because there is no output schema, so it tells the agent what comes back. Minor redundancy, otherwise tight.

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, describing the returned fields (description, budgeted amount, modality, start date, MIPYME flag) is exactly the right compensation, and annotations carry the safety profile. The remaining gap is behavioral: the 'limite' parameter and result-capping are unexplained anywhere.

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 coverage is 75% (anio, termino, institucion documented; limite bare). The description does not touch any parameter - it only lists returned fields - so it adds no meaning beyond the schema. With high-ish coverage, the baseline 3 is correct and it doesn't compensate for the undocumented 'limite'.

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

Purpose5/5

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

Names a specific resource (the published PACC / annual procurement plan) and its content, with a clear verb sense of 'what the institution PLANS to buy.' The closing line 'Permite anticiparse a las licitaciones antes de que se publiquen' differentiates it from the licitaciones/contratos siblings, which cover already-published events.

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

Usage Guidelines4/5

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

The anticipation framing ('anticiparse a las licitaciones antes de que se publiquen') clearly signals when to reach for this tool - for forward-looking planning rather than searching published tenders. It stops short of explicitly naming an alternative sibling or stating when NOT to use it, so it's not a 5.

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

dgcp_precios_referenciaPrecios historicos adjudicados por articulo (UNSPSC)A
Read-onlyIdempotent

A que precio unitario el Estado ha contratado realmente un articulo: estadisticas (minimo, percentil 25, mediana, percentil 75, maximo) por unidad de medida sobre los contratos mas recientes de ese codigo UNSPSC, con ejemplos (institucion, proveedor, fecha). Sirve para fijar el precio de una oferta o detectar sobreprecios. Los codigos UNSPSC de cada articulo salen en dgcp_inteligencia_proceso.

NameRequiredDescriptionDefault
terminoNoFiltra por descripcion del articulo (alternativas separadas por coma), ej. 'toner, cartucho'.
codigo_unspscYesSubclase (recomendado), clase o familia UNSPSC del articulo. Sale en dgcp_inteligencia_proceso.
unidad_medidaNoSolo esta unidad de medida, ej. 'Unidad', 'Caja', 'Galon'.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description still adds behavior beyond them: results are computed over 'los contratos más recientes' (a recency window, not all history) and the response includes concrete examples with institución, proveedor and fecha — useful since there is no output schema. Rate limits or caching behavior are not disclosed.

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 tightly packed sentences, front-loaded with the core action and price statistics before the use-case justification and the prerequisite pointer. No filler, though the first sentence is long and could be split for faster scanning.

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, the description usefully outlines the returned content (per-unit-of-measure statistics plus institution/supplier/date examples) and the scope over recent contracts. It leaves the exact aggregation window and result cardinality unspecified, but an agent has enough to call it correctly.

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 100% and every parameter (termino, codigo_unspsc, unidad_medida) is documented in the schema with format hints and examples. The description adds no parameter-level syntax or defaults beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific resource and scope: unit prices the State actually paid for a given UNSPSC code, with named statistics (mínimo, p25, mediana, p75, máximo) broken down by unit of measure. It is clearly distinguishable from siblings like dgcp_buscar_contratos or dgcp_inteligencia_proceso, which are referenced as the source of UNSPSC codes rather than as competing price tools.

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 concrete use cases ('fijar el precio de una oferta o detectar sobreprecios') and tells the agent where the required codigo_unspsc comes from ('salen en dgcp_inteligencia_proceso'), which routes the workflow correctly. It stops short of explicit when-not-to-use conditions or a named sibling for an alternative price source.

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

dgcp_radiografia_proveedorRadiografia de un proveedor del Estado (DGCP)A
Read-onlyIdempotent

Perfil completo y exacto de una empresa en compras publicas a partir de su RPE, RNC o nombre: ficha RPE, alerta de inhabilitacion/suspension, rubros UNSPSC registrados, TODOS sus contratos (monto total, clientes principales, ultimos contratos) y sus ofertas (tasa de exito: procesos ganados / procesos ofertados).

NameRequiredDescriptionDefault
terminoYesRPE, RNC/cedula o nombre de la empresa.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so safety is covered. The description adds real value on the read side with no output schema present: it discloses the returned payload (total contract amount, main clients, latest contracts, win/bid success rate, disqualification alert). It omits ambiguity behavior (what happens if a name matches several companies) and any limits on volume.

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?

One front-loaded sentence with a colon-delimited payload list; every clause names actual output content rather than filler. It is dense but nothing is redundant, and the purpose precedes the enumeration.

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, the description carries the burden of describing the return shape and does so thoroughly across ficha, alerts, rubros, contracts and bids. Gaps are minor: no mention of how ambiguous name matches are resolved, pagination, or freshness of the underlying data.

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 100% for the single parameter, so baseline is 3. The description restates 'RPE, RNC o nombre' almost verbatim from the schema and adds no format rules or disambiguation semantics for the free-text name path, which is the one genuinely ambiguous input.

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 resource (a state supplier) and an exact input key (RPE, RNC or name), then enumerates what the profile contains: RPE record, suspension alert, UNSPSC rubros, contracts and bids. That enumeration implicitly separates it from single-facet siblings like dgcp_buscar_contratos or dgcp_buscar_ofertas, but no sibling is named 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 Guidelines3/5

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

Usage is only implied: the 'complete and exact profile of a company' framing suggests a per-supplier aggregate lookup, which is the obvious reading next to 16 sibling tools. There is no explicit statement of when to prefer this over dgcp_buscar_proveedores (search) or the individual contract/bid search tools, and 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.

dgcp_scorecard_institucionScorecard de una institucion compradora (DGCP)A
Read-onlyIdempotent

Perfil exacto de como compra y paga una institucion (filtro por su codigo oficial de unidad de compra):

  • Plazos de pago pactados frente al maximo legal de 30 dias (Art. 148 P. III Ley 47-25) y metodo de pago.

  • Concentracion de proveedores: top 5 y HHI.

  • Cumplimiento de la cuota MIPYME del ano (dato oficial DGCP).

  • Mezcla de modalidades (peso de excepciones y compras directas) y auditoria de plazos de convocatoria de sus procesos recientes (Art. 101).

NameRequiredDescriptionDefault
institucionYesNombre, acronimo o codigo de la institucion. Ej: 'MINERD', 'INFOTEP', '141'.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds value by disclosing the concrete contents of the profile (payment-term vs legal 30-day limit, top-5/HHI concentration, MIPYME quota, modality mix, Art. 101 timeline audit), which tells the agent what behavior to expect beyond a generic read.

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 a one-line purpose followed by a compact bullet list of the four computed dimensions; every bullet carries distinct information. Slightly dense but no 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, the description usefully compensates by itemizing what the scorecard contains. For a read-only, single-parameter tool it is essentially complete; only the choice among sibling analytical tools is left unaddressed.

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?

With a single parameter and 100% schema description coverage, the schema already documents that the field accepts name, acronym or code, with examples. The description's 'filtro por su codigo oficial de unidad de compra' arguably narrows this to codes only, adding little and slightly under-describing the actual flexibility.

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 analytical artifact (a purchasing/payment profile) and enumerates its dimensions, so an agent knows exactly what this tool produces. It does not, however, name or differentiate itself from the obvious sibling dgcp_radiografia_proveedor (the supplier-side analog), so it stops short of full sibling disambiguation.

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: it is a per-institution analytical scorecard, and the parenthetical tells the agent how to target it (official purchase-unit code). There is no explicit 'use this when...' statement and no mention of when a sibling such as dgcp_inteligencia_proceso or dgcp_radiografia_proveedor would be the better choice.

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

dgcp_simulador_puntuacionSimulador de precio y puntuacion economicaA
Read-onlyIdempotent

Simula escenarios de precio (85% a 100% del presupuesto) con la formula de proporcionalidad inversa usada en los pliegos: puntos = (precio minimo / precio ofertado) x puntos maximos. Muestra margen y puntaje total por escenario y recomienda el que maximiza el puntaje respetando tu margen minimo. Para precios rivales reales usa dgcp_buscar_ofertas (ofertas de procesos similares) o dgcp_precios_referencia. Verifica siempre la formula exacta en el pliego.

NameRequiredDescriptionDefault
costo_totalYesTu costo total de ejecucion (DOP).
peso_tecnico_maxNoPuntos maximos tecnicos segun el pliego (default 70).
margen_minimo_pctNoMargen minimo aceptable en % (default 8).
monto_referencialYesPresupuesto estimado oficial (DOP).
peso_economico_maxNoPuntos maximos economicos segun el pliego (default 30).
precios_competidoresNoPrecios esperados o historicos de rivales (ver dgcp_buscar_ofertas / dgcp_precios_referencia).
puntaje_tecnico_esperadoNoPuntos tecnicos que esperas obtener (default 70).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish a safe, idempotent, closed-world read, so the description's job is to add substance. It does: it discloses the exact scoring formula, the 85%-100% search band, what each scenario returns (margin and total score), and that the recommendation respects the user's minimum margin — none of which is visible in the schema or annotations.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action and formula, followed by the output/recommendation, then the sibling routing and the verification caveat. No filler and nothing redundant with the schema.

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?

For a 7-parameter tool with no output schema, the description compensates by describing the return content (per-scenario margin and score, plus a recommendation) and the scoring logic. All inputs are documented in the schema, so the agent has what it needs to call this correctly.

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 100%, so baseline is 3, but the description adds real meaning about how inputs are used: the scenario band relates to monto_referencial, and it tells the agent where precios_competidores values should come from rather than being invented. It does not clarify peso_economico vs peso_tecnico interaction, so it is not a full 5.

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

Purpose5/5

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

Names a specific verb and artifact: it simulates price scenarios between 85% and 100% of the budget using the inverse-proportionality formula, and outputs margin plus total score per scenario with a recommendation. It also distinguishes itself from siblings by pointing at dgcp_buscar_ofertas and dgcp_precios_referencia as the tools for real rival prices.

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?

Explicitly routes the agent: 'Para precios rivales reales usa dgcp_buscar_ofertas ... o dgcp_precios_referencia', which tells it when this simulator is the wrong source of data. It also warns to verify the exact formula in the pliego, but does not state when the simulator should be skipped entirely.

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

dgcp_ultimas_licitacionesUltimas licitaciones publicadas (DGCP)A
Read-onlyIdempotent

Devuelve lo ULTIMO publicado en compras publicas de RD, del mas reciente al mas antiguo, con fecha y hora RD de publicacion y el tiempo que queda para ofertar. Usala para "dame la ultima licitacion", "que salio hoy", "lo nuevo de esta semana". Indica tambien el corte de datos de la DGCP: la API se actualiza a las 00:00, 07:00, 14:00 y 21:00, asi que lo publicado en el portal despues del ultimo corte aparece en el siguiente.

NameRequiredDescriptionDefault
diasNoCuantos dias hacia atras mirar (default 3).
limiteNoResultados a mostrar (default 10).
mipymeNoSolo procesos dirigidos a MIPYMES.
terminoNoFiltro opcional por palabras (alternativas separadas por coma).
institucionNoFiltro opcional por institucion (nombre, acronimo o codigo).
solo_abiertasNotrue (default) = solo las que aun reciben ofertas.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely new behavioral context the annotations do not: the DGCP data-refresh cutoffs (00:00, 07:00, 14:00, 21:00) and the resulting lag for anything published after the last cutoff. It does not cover pagination or result-size behavior, so not 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.

Conciseness4/5

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

Three tight sentences: capability and ordering, usage triggers, then the data-freshness caveat. Nothing is padding, and the most decision-relevant information (what it returns and the recency scope) is front-loaded.

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

Completeness4/5

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

For a six-parameter, zero-required read tool with no output schema, the description covers purpose, triggers, ordering and the important data-lag caveat. Return-content hints (date/time and time remaining to bid) partially compensate for the missing output schema; nothing critical is absent, though pagination/size behavior is left to the schema.

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 100%, so the six parameters are already fully documented in the schema, establishing the baseline of 3. The description adds no syntax, defaults, or interaction details beyond the schema (its mention of ordering and cutoffs is not parameter-related).

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 lo ULTIMO publicado en compras publicas de RD') plus the ordering ('del mas reciente al mas antiguo') and returned fields. It implicitly distinguishes itself from the dgcp_buscar_licitaciones search sibling via the recency framing, 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?

Provides concrete trigger phrases in quotes ('dame la ultima licitacion', 'que salio hoy', 'lo nuevo de esta semana') that map cleanly onto recency-intent queries. It gives clear when-to-use context but no explicit when-not-to-use or named alternative, so it stops short of a 5.

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. 17 tool updatesv5.0.0
    • Changeddgcp_auditor_pliego_trampa3 fields changed
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo oficial del proceso en la DGCP (ej. 'MICM-CCC-LPN-2026-0007')."New value: +"Codigo oficial del proceso."
      • addedInput schema / properties / codigo_proceso / minLength
        Added value: +3
      • changedInput schema / properties / extracto_pliego / description
        Previous value: -"Texto, clausula o requerimiento del pliego de condiciones que sospechas que esta amarrado o dirigido."New value: +"Texto de clausulas o especificaciones tecnicas del pliego a auditar (copiado del PDF)."
    • Changeddgcp_auditoria_colusion3 fields changed
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo oficial del proceso a auditar (ej. 'TSS-DAF-CM-2026-0055')."New value: +"Codigo oficial del proceso a auditar."
      • addedInput schema / properties / codigo_proceso / minLength
        Added value: +3
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "default": 15,
        -  "description": "Paginas a escanear en ofertas y proveedores para la auditoria forense (default 15)",
        -  "maximum": 25,
        -  "minimum": 1,
        -  "type": "integer"
        -}
    • Changeddgcp_buscar_contratos10 fields changed
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo del proceso de licitacion asociado (ej. 'HLA-DAF-CD-2026-0121')."New value: +"Codigo del proceso (filtro exacto en servidor)."
      • changedInput schema / properties / estado_contrato / description
        Previous value: -"Estado del contrato (ej. 'Activo', 'Cerrado', etc.)."New value: +"Activo, Cerrado, Cancelado, Rescindido, Modificado, 'Flujo en aprobacion'."
      • changedInput schema / properties / institucion / description
        Previous value: -"Nombre o parte del nombre de la institucion (unidad de compra)."New value: +"Institucion: nombre, acronimo o codigo de unidad de compra."
      • changedInput schema / properties / limite / description
        Previous value: -"Cuantos resultados devolver (default 10)"New value: +"Resultados a mostrar (default 10)."
      • removedInput schema / properties / monto_max / description
        Removed value: -"Monto maximo contratado en DOP"
      • removedInput schema / properties / monto_min / description
        Removed value: -"Monto minimo contratado en DOP"
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "description": "Cuantas paginas de la API escanear (default 5, 100 contratos c/u)",
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / proveedor / description
        Previous value: -"Nombre o razon social de la empresa adjudicataria."New value: +"Nombre (o parte) del adjudicatario."
      • changedInput schema / properties / rpe / description
        Previous value: -"Numero de Registro de Proveedores del Estado (RPE) del adjudicatario."New value: +"RPE del adjudicatario (filtro exacto en servidor)."
      • changedInput schema / properties / termino / description
        Previous value: -"Texto a buscar en descripcion, codigo de contrato o proceso, proveedor o institucion."New value: +"Palabras en descripcion, proveedor o codigos (alternativas separadas por coma)."
    • Changeddgcp_buscar_licitaciones15 fields changed
      • addedInput schema / properties / codigo_proceso
        Added value: +{
        +  "description": "Codigo exacto del proceso, ej. 'MIP-CCC-LPN-2026-0005'.",
        +  "type": "string"
        +}
      • changedInput schema / properties / estado / description
        Previous value: -"'abierto' = publicado Y con fecha de cierre futura (lo que casi siempre se quiere)"New value: +"'abierto' (default) = publicado y con cierre futuro. 'evaluacion' = sobres abiertos. 'todos' = sin filtro."
      • changedInput schema / properties / estado / enum
        Previous value: -[
        -  "abierto",
        -  "publicado",
        -  "adjudicado",
        -  "cerrado",
        -  "apertura",
        -  "todos"
        -]New value: +[
        +  "abierto",
        +  "publicado",
        +  "evaluacion",
        +  "cerrado",
        +  "adjudicado",
        +  "desierto",
        +  "cancelado",
        +  "suspendido",
        +  "todos"
        +]
      • changedInput schema / properties / institucion / description
        Previous value: -"Nombre (o parte) de la institucion. Ej: 'Impuestos Internos', 'Educacion'"New value: +"Nombre, acronimo o codigo de la institucion. Ej: 'MINERD', 'Impuestos Internos', '141'."
      • changedInput schema / properties / limite / description
        Previous value: -"Cuantos resultados devolver (default 10)"New value: +"Resultados a mostrar (default 10)."
      • changedInput schema / properties / mipyme / description
        Previous value: -"Solo procesos dirigidos a MIPYMES"New value: +"Solo procesos dirigidos a MIPYMES."
      • changedInput schema / properties / mipyme_mujer / description
        Previous value: -"Solo procesos dirigidos a MIPYMES de mujeres"New value: +"Solo procesos dirigidos a MIPYMES de mujeres."
      • changedInput schema / properties / modalidad / description
        Previous value: -"Texto de la modalidad. Ej: 'Licitacion Publica', 'Compras Menores'"New value: +"Texto de la modalidad: 'Licitacion Publica', 'Contratacion Menor', 'Comparacion de Precios', 'Excepcion'..."
      • changedInput schema / properties / monto_max / description
        Previous value: -"Monto maximo estimado en DOP"New value: +"Monto estimado maximo (DOP)."
      • changedInput schema / properties / monto_min / description
        Previous value: -"Monto minimo estimado en DOP"New value: +"Monto estimado minimo (DOP)."
      • addedInput schema / properties / orden
        Added value: +{
        +  "description": "'recientes' (default) = lo ultimo publicado primero. 'cierre_proximo' = lo que vence antes. 'monto_mayor'.",
        +  "enum": [
        +    "recientes",
        +    "cierre_proximo",
        +    "monto_mayor"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "description": "Cuantas paginas de la API escanear (default 5, 100 procesos c/u)",
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • addedInput schema / properties / publicado_desde
        Added value: +{
        +  "description": "Fecha de publicacion desde (YYYY-MM-DD, hora RD).",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / publicado_hasta
        Added value: +{
        +  "$ref": "#/properties/publicado_desde",
        +  "description": "Fecha de publicacion hasta, inclusive (YYYY-MM-DD)."
        +}
      • changedInput schema / properties / termino / description
        Previous value: -"Texto a buscar en titulo y descripcion. Ej: 'software', 'laptop', 'servidor'"New value: +"Palabras a buscar en titulo/descripcion. Separa alternativas con coma: 'software, licencias, laptop' (coincide cualquiera)."
    • Changeddgcp_buscar_ofertas11 fields changed
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo del proceso de licitacion (ej. 'HLA-DAF-CD-2026-0129')."New value: +"Codigo del proceso: devuelve TODAS sus ofertas (filtro exacto en servidor)."
      • removedInput schema / properties / estado_evaluacion
        Removed value: -{
        -  "description": "Estado de evaluacion (ej. 'Pendiente', 'Adjudicada', 'Descalificada', etc.).",
        -  "type": "string"
        -}
      • changedInput schema / properties / institucion / description
        Previous value: -"Nombre de la institucion contratante."New value: +"Institucion: nombre, acronimo o codigo."
      • changedInput schema / properties / limite / description
        Previous value: -"Cuantos resultados devolver (default 10)"New value: +"Resultados a mostrar (default 10)."
      • removedInput schema / properties / monto_max / description
        Removed value: -"Monto maximo de la oferta en DOP"
      • removedInput schema / properties / monto_min / description
        Removed value: -"Monto minimo de la oferta en DOP"
      • addedInput schema / properties / orden
        Added value: +{
        +  "description": "'recientes' (default) o 'precio_menor' (util para comparar ofertas de un proceso).",
        +  "enum": [
        +    "recientes",
        +    "precio_menor"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "description": "Cuantas paginas de la API escanear (default 5, 100 ofertas c/u)",
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / proveedor / description
        Previous value: -"Nombre o razon social del oferente participante."New value: +"Nombre (o parte) del oferente."
      • changedInput schema / properties / rpe / description
        Previous value: -"Numero de RPE del oferente."New value: +"RPE del oferente (filtro exacto en servidor)."
      • changedInput schema / properties / termino / description
        Previous value: -"Texto a buscar en nombre de la oferta, codigo de proceso, oferente o institucion."New value: +"Palabras en oferente, nombre de oferta o codigos."
    • Changeddgcp_buscar_proveedores9 fields changed
      • changedInput schema / properties / estado / description
        Previous value: -"Estado en el RPE (ej. 'Activo', 'Inactivo')."New value: +"Estado en el RPE: Activo, Suspendido, Cancelado, Desactualizado..."
      • removedInput schema / properties / limite / description
        Removed value: -"Cuantos resultados devolver (default 10)"
      • removedInput schema / properties / mipyme
        Removed value: -{
        -  "description": "true = solo proveedores clasificados como MIPYME.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "description": "Cuantas paginas de la API escanear (default 5, 100 proveedores c/u)",
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / provincia / description
        Previous value: -"Provincia del proveedor (ej. 'Distrito Nacional', 'Santiago', etc.)."New value: +"Provincia, ej. 'SANTIAGO' (filtro de servidor; requiere tambien estado)."
      • changedInput schema / properties / rnc / description
        Previous value: -"Numero de RNC o identificacion del proveedor (numero_documento)."New value: +"RNC o cedula (exacto)."
      • changedInput schema / properties / rpe / description
        Previous value: -"Numero de Registro de Proveedores del Estado (RPE)."New value: +"Numero de RPE (exacto)."
      • removedInput schema / properties / rubro
        Removed value: -{
        -  "description": "Rubro que provee: 'Bienes', 'Servicios', 'Obras'.",
        -  "type": "string"
        -}
      • changedInput schema / properties / termino / description
        Previous value: -"Texto a buscar en razon social, RNC, contacto, direccion o correo."New value: +"RPE, RNC/cedula o nombre de la empresa. Los numeros se buscan de forma exacta."
    • Changeddgcp_calculadora_legal6 fields changed
      • removedInput schema / properties / es_mipyme / default
        Removed value: -false
      • changedInput schema / properties / es_mipyme / description
        Previous value: -"true si la empresa oferente cuenta con certificación MIPYME del MICM"New value: +"true si el oferente es MIPYME certificada."
      • changedInput schema / properties / modalidad_planteada / description
        Previous value: -"Modalidad utilizada por la institución para validar si es correcta o si incurre en fraccionamiento."New value: +"Modalidad usada por la institucion, para verificar si es inferior a la legal."
      • changedInput schema / properties / monto_estimado / description
        Previous value: -"Monto estimado del proceso en pesos dominicanos (DOP)."New value: +"Presupuesto estimado en DOP."
      • removedInput schema / properties / tipo_objeto / default
        Removed value: -"bienes_servicios"
      • changedInput schema / properties / tipo_objeto / description
        Previous value: -"Tipo de contratación: 'bienes_servicios' u 'obras'"New value: +"Default 'bienes_servicios'."
    • Changeddgcp_generador_propuesta_sncc18 fields changed
      • addedInput schema / properties / aplica_itbis
        Added value: +{
        +  "description": "false si el bien o servicio esta exento de ITBIS (default true, 18%).",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / cedula_representante / description
        Removed value: -"Numero de cedula del representante legal."
      • addedInput schema / properties / cedula_representante / minLength
        Added value: +3
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo oficial del proceso en la DGCP (ej. 'INFOTEP-DAF-CM-2026-0080')."New value: +"Codigo oficial del proceso."
      • addedInput schema / properties / codigo_proceso / minLength
        Added value: +3
      • addedInput schema / properties / descripcion_oferta
        Added value: +{
        +  "description": "Descripcion breve de lo ofertado.",
        +  "type": "string"
        +}
      • removedInput schema / properties / descripcion_servicio
        Removed value: -{
        -  "description": "Breve descripcion de los bienes, software o consultoria a ofertar.",
        -  "type": "string"
        -}
      • addedInput schema / properties / es_mipyme
        Added value: +{
        +  "description": "true si el oferente es MIPYME certificada.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / monto_ofertado_subtotal / description
        Previous value: -"Monto subtotal de tu oferta economica antes de ITBIS en DOP."New value: +"Subtotal de la oferta antes de ITBIS (DOP)."
      • addedInput schema / properties / plazo_entrega_dias
        Added value: +{
        +  "description": "Plazo de entrega o ejecucion en dias calendario (default 15).",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / razon_social / description
        Previous value: -"Nombre o razon social de tu empresa oferente."New value: +"Razon social del oferente."
      • addedInput schema / properties / razon_social / minLength
        Added value: +2
      • removedInput schema / properties / representante_legal / description
        Removed value: -"Nombre completo del representante legal o titular."
      • addedInput schema / properties / representante_legal / minLength
        Added value: +3
      • removedInput schema / properties / rnc / description
        Removed value: -"Numero de RNC o identificacion tributaria de tu empresa."
      • addedInput schema / properties / rnc / minLength
        Added value: +3
      • removedInput schema / properties / rpe / description
        Removed value: -"Numero de Registro de Proveedores del Estado (RPE)."
      • removedInput schema / properties / tiempo_entrega_dias
        Removed value: -{
        -  "default": 15,
        -  "description": "Tiempo de entrega o ejecucion en dias calendario.",
        -  "exclusiveMinimum": 0,
        -  "type": "integer"
        -}
    • Changeddgcp_generador_recurso_impugnacion18 fields changed
      • removedInput schema / properties / acto_atacado
        Removed value: -{
        -  "description": "Acto que se impugna (ej. 'Acta de Adjudicación No. XX', 'Pliego de Condiciones', 'Acta de Descalificación Técnica').",
        -  "type": "string"
        -}
      • addedInput schema / properties / acto_impugnado
        Added value: +{
        +  "description": "Acto que se impugna: 'Acta de adjudicacion No. X', 'Informe de evaluacion', 'Pliego de condiciones'...",
        +  "minLength": 3,
        +  "type": "string"
        +}
      • addedInput schema / properties / agravios
        Added value: +{
        +  "description": "Normas o principios violados, si se conocen.",
        +  "type": "string"
        +}
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo oficial del proceso licitado."New value: +"Codigo del proceso."
      • addedInput schema / properties / codigo_proceso / minLength
        Added value: +3
      • removedInput schema / properties / empresa_recurrente / description
        Removed value: -"Nombre de tu empresa que somete el recurso."
      • addedInput schema / properties / empresa_recurrente / minLength
        Added value: +2
      • addedInput schema / properties / fecha_notificacion
        Added value: +{
        +  "description": "Fecha (YYYY-MM-DD) en que se notifico o publico el acto: calcula el vencimiento del plazo.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / hechos
        Added value: +{
        +  "description": "Relato breve de lo ocurrido y por que perjudica al recurrente.",
        +  "minLength": 10,
        +  "type": "string"
        +}
      • addedInput schema / properties / incluir_medida_cautelar
        Added value: +{
        +  "description": "true = agrega la instancia separada de medida cautelar ante la DGCP (Art. 211).",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / motivo_agravio
        Removed value: -{
        -  "description": "Causal de violación (ej. 'Descalificación arbitraria habiendo cumplido ficha técnica', 'Adjudicación a empresa con precio superior sin justificación', 'Colusión demostrada entre oferentes').",
        -  "type": "string"
        -}
      • changedInput schema / properties / representante / description
        Previous value: -"Nombre del representante legal."New value: +"Representante legal."
      • addedInput schema / properties / representante / minLength
        Added value: +3
      • removedInput schema / properties / rnc_recurrente / description
        Removed value: -"RNC de tu empresa."
      • addedInput schema / properties / rnc_recurrente / minLength
        Added value: +3
      • addedInput schema / properties / rpe_recurrente
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tipo_recurso
        Added value: +{
        +  "description": "'reconsideracion' (default): primer recurso, ante la institucion (Art. 204). 'jerarquico_impropio': contra la decision de la reconsideracion, ante la DGCP (Art. 207).",
        +  "enum": [
        +    "reconsideracion",
        +    "jerarquico_impropio"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "codigo_proceso",
        -  "acto_atacado",
        -  "motivo_agravio",
        -  "empresa_recurrente",
        -  "rnc_recurrente",
        -  "representante"
        -]New value: +[
        +  "codigo_proceso",
        +  "acto_impugnado",
        +  "hechos",
        +  "empresa_recurrente",
        +  "rnc_recurrente",
        +  "representante"
        +]
    • Changeddgcp_inteligencia_proceso3 fields changed
      • changedInput schema / properties / codigo_proceso / description
        Previous value: -"Codigo oficial del proceso (ej. 'TSS-DAF-CM-2026-0055' o 'HLA-DAF-CD-2026-0121')."New value: +"Codigo oficial del proceso, ej. 'MIP-CCC-LPN-2026-0005'."
      • addedInput schema / properties / codigo_proceso / minLength
        Added value: +3
      • removedInput schema / properties / paginas_historial
        Removed value: -{
        -  "description": "Paginas a escanear en contratos y ofertas para buscar antecedentes (default 12 = 1,200 registros)",
        -  "maximum": 25,
        -  "minimum": 1,
        -  "type": "integer"
        -}
    • Addeddgcp_oportunidades_para_mi
    • Addeddgcp_plan_compras
    • Addeddgcp_precios_referencia
    • Changeddgcp_radiografia_proveedor3 fields changed
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "description": "Páginas de contratos a escanear para auditoría de facturación estatal (default 15 = 1,500 contratos)",
        -  "maximum": 25,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / termino / description
        Previous value: -"Nombre de la empresa, RNC (con o sin guiones) o número de RPE a auditar."New value: +"RPE, RNC/cedula o nombre de la empresa."
      • addedInput schema / properties / termino / minLength
        Added value: +2
    • Changeddgcp_scorecard_institucion3 fields changed
      • changedInput schema / properties / institucion / description
        Previous value: -"Nombre o parte del nombre de la institucion a auditar (ej. 'IDAC', 'Hospital', 'MICM', 'Ayuntamiento')."New value: +"Nombre, acronimo o codigo de la institucion. Ej: 'MINERD', 'INFOTEP', '141'."
      • addedInput schema / properties / institucion / minLength
        Added value: +2
      • removedInput schema / properties / paginas
        Removed value: -{
        -  "default": 20,
        -  "description": "Paginas de contratos a escanear para calcular la salud de pago (default 20 = 2,000 contratos)",
        -  "maximum": 30,
        -  "minimum": 1,
        -  "type": "integer"
        -}
    • Changeddgcp_simulador_puntuacion13 fields changed
      • removedInput schema / properties / costo_ejecucion_base
        Removed value: -{
        -  "description": "Tus costos reales directos e indirectos de ejecucion en DOP.",
        -  "exclusiveMinimum": 0,
        -  "type": "number"
        -}
      • addedInput schema / properties / costo_total
        Added value: +{
        +  "description": "Tu costo total de ejecucion (DOP).",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / margen_minimo_pct
        Added value: +{
        +  "description": "Margen minimo aceptable en % (default 8).",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / monto_referencial / description
        Previous value: -"Monto estimado oficial del proceso en DOP."New value: +"Presupuesto estimado oficial (DOP)."
      • removedInput schema / properties / peso_economico_max / default
        Removed value: -30
      • changedInput schema / properties / peso_economico_max / description
        Previous value: -"Puntos maximos del Sobre Economico segun pliego (default 30)."New value: +"Puntos maximos economicos segun el pliego (default 30)."
      • removedInput schema / properties / peso_tecnico_max / default
        Removed value: -70
      • changedInput schema / properties / peso_tecnico_max / description
        Previous value: -"Puntos maximos del Sobre Tecnico segun pliego (default 70)."New value: +"Puntos maximos tecnicos segun el pliego (default 70)."
      • changedInput schema / properties / precios_competidores / description
        Previous value: -"Array con precios estimados o historicos de competidores (opcional)."New value: +"Precios esperados o historicos de rivales (ver dgcp_buscar_ofertas / dgcp_precios_referencia)."
      • addedInput schema / properties / precios_competidores / items / exclusiveMinimum
        Added value: +0
      • removedInput schema / properties / puntaje_tecnico_esperado / default
        Removed value: -70
      • changedInput schema / properties / puntaje_tecnico_esperado / description
        Previous value: -"Puntos que esperas obtener en el Sobre A (default 70)."New value: +"Puntos tecnicos que esperas obtener (default 70)."
      • changedInput schema / required
        Previous value: -[
        -  "monto_referencial",
        -  "costo_ejecucion_base"
        -]New value: +[
        +  "monto_referencial",
        +  "costo_total"
        +]
    • Addeddgcp_ultimas_licitaciones
  2. 13 tool updatesv4.1.0
    • First observeddgcp_auditor_pliego_trampa
    • First observeddgcp_auditoria_colusion
    • First observeddgcp_buscar_contratos
    • First observeddgcp_buscar_licitaciones
    • First observeddgcp_buscar_ofertas
    • First observeddgcp_buscar_proveedores
    • First observeddgcp_calculadora_legal
    • First observeddgcp_generador_propuesta_sncc
    • First observeddgcp_generador_recurso_impugnacion
    • First observeddgcp_inteligencia_proceso
    • First observeddgcp_radiografia_proveedor
    • First observeddgcp_scorecard_institucion
    • First observeddgcp_simulador_puntuacion

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct purposes (search vs audit vs generate vs simulate), but a few overlap: dgcp_buscar_licitaciones vs dgcp_ultimas_licitaciones, dgcp_buscar_proveedores vs dgcp_radiografia_proveedor, and dgcp_inteligencia_proceso as a superset of individual searches. Detailed descriptions actively guide selection.

Naming Consistency3/5

All tools use the dgcp_ prefix and snake_case, but the naming strategy mixes verb-first (buscar_) and noun-first (plan_, radiografia_, calculadora_) conventions across similar functions, making it less predictable. Still readable, but not a single consistent pattern.

Tool Count4/5

17 tools is slightly above the typical 3-15 range, but the breadth of the domain (search, analysis, legal, generation, audit) justifies the count; no tool appears redundant.

Completeness5/5

The set covers the full procurement lifecycle: search processes, contracts, offers, suppliers, plans; deep analysis (inteligencia, radiografia, precios, scorecard); legal compliance; proposal/recurso generation; and audits. No obvious missing operation for an analysis-focused server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Allows AI assistants to query public procurement opportunities, purchase orders, and government entities from Chile's Mercado Público (ChileCompra) API in real time.
    6
    12
    5 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query Ecuador government procurement (SERCOP/Compras Públicas) data without API keys, via natural language or direct tools.
    45 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Integrates public APIs from the Brazilian Compras.gov.br procurement ecosystem to support price research, supplier sanctions, contract analysis, and procurement planning.
    100
    7
    MIT