Skip to main content
Glama
Angelthebestone

Normativa Colombia MCP

Normativa Colombia — servidor MCP

npm Licencia: MIT MCP

Consulta la normativa y la jurisprudencia colombiana desde cualquier asistente de IA que hable Model Context Protocol, sin abrir el navegador ni pelear con formularios.

Conecta seis fuentes oficiales:

  • Gestor Normativo del Departamento Administrativo de la Función Pública — leyes, decretos, resoluciones, circulares y conceptos del sector público, con la consulta temática y los restrictores que explican por qué cada norma aplica a un tema.

  • Relatoría de la Corte Constitucional — 44.839 providencias según su propio índice, con fallos recientes publicados el mismo año.

  • SUIN-Juriscol del Ministerio de Justicia — el estado de vigencia, que ninguna otra fuente del país publica, y 11.599 leyes de 1844 a 2026, muchas de las cuales el Gestor no tiene.

  • Corte Suprema de Justicia — providencias de las salas de Tutelas, Civil, Laboral y Penal, cada una con las normas que cita.

  • Consejo de Estado — providencias tituladas de lo contencioso administrativo, con el problema jurídico que la Sala se planteó, su respuesta y el texto completo. Con esta se completan las tres altas cortes, y las tres entregan texto.

  • Normograma de la DIAN — normativa tributaria, aduanera y cambiaria.

Es un servidor MCP estándar que se comunica por stdio, así que sirve en Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, Continue, LM Studio, agentes propios hechos con los SDK de MCP y cualquier cliente que aparezca después.


Instalación

Opción A — Claude Desktop, con un clic

La más sencilla si usas Claude Desktop: no requiere Node ni tocar archivos de configuración.

  1. Descarga normativa-colombia.mcpb desde Releases.

  2. Abre Claude Desktop → Configuración → Extensiones.

  3. Arrastra el archivo a esa ventana y confirma.

  4. (Opcional: instalar sin ciertas fuentes) En Claude Desktop, abre la configuración de la extensión Normativa Colombia. En el campo Fuentes puedes indicar qué fuentes desactivar (p. ej. -creg,-anh,-upme,-anla,-sectorial para instalar sin fuentes sectoriales y ahorrar contexto) o cuáles conservar (corte,suin). Si lo dejas vacío, incluye todas.

Claude Desktop trae su propio Node, así que no hace falta instalar nada más.

Opción B — cualquier otro cliente MCP, desde npm (recomendada)

La forma más sencilla y la que evita errores de rutas: no hay que clonar nada ni apuntar a archivos locales. Requiere Node 18 o superior.

# sin instalar nada, la forma habitual en clientes MCP
npx -y normativa-colombia-mcp

# o instalado en el proyecto
npm install normativa-colombia-mcp

# o disponible en todo el sistema
npm install -g normativa-colombia-mcp

Casi todos los clientes comparten este formato:

{
  "mcpServers": {
    "normativa-colombia": {
      "command": "npx",
      "args": ["-y", "normativa-colombia-mcp"]
    }
  }
}

Para instalar sin ciertas fuentes (por ejemplo, sin los reguladores sectoriales para reducir consumo de contexto), añade la variable FUENTES en env:

{
  "mcpServers": {
    "normativa-colombia": {
      "command": "npx",
      "args": ["-y", "normativa-colombia-mcp"],
      "env": {
        "FUENTES": "-creg,-anh,-upme,-anla,-sectorial"
      }
    }
  }
}

Cliente

Dónde va esa configuración

Claude Desktop (manual)

claude_desktop_config.json — en Configuración → Desarrollador → Editar configuración

Cursor

.cursor/mcp.json en el proyecto, o ~/.cursor/mcp.json para todos

Windsurf

~/.codeium/windsurf/mcp_config.json

Continue

El bloque mcpServers de su configuración

LM Studio

Program → Install → Edit mcp.json

Agente propio

Como StdioServerParameters del SDK de MCP, en Python o TypeScript

Claude Code no usa archivo; se registra por línea de comandos:

# con todas las fuentes
claude mcp add normativa-colombia -- npx -y normativa-colombia-mcp

# o sin fuentes sectoriales
claude mcp add normativa-colombia -e FUENTES="-creg,-anh,-upme,-anla,-sectorial" -- npx -y normativa-colombia-mcp

VS Code usa la clave servers en vez de mcpServers, en .mcp.json del proyecto o en la configuración de usuario:

{
  "servers": {
    "normativa-colombia": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "normativa-colombia-mcp"],
      "env": {
        "FUENTES": "-creg,-anh,-upme,-anla,-sectorial"
      }
    }
  }
}

Si lo instalaste con npm install -g, el comando es normativa-colombia-mcp a secas, sin argumentos.

Si tu cliente no está en la lista, busca dónde declara servidores MCP por stdio: el comando y los argumentos son siempre los mismos.

Comprobar que quedó bien

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"prueba","version":"1"}}}' \
  | npx -y normativa-colombia-mcp

Debe responder un JSON con "name":"normativa-colombia" y un campo instructions.

Opción C — desde el código

Para desarrollar o para fijar una versión propia. Requiere Node 22 o superior:

git clone https://github.com/Angelthebestone/Normativa-colombiana-MCP.git
cd Normativa-colombiana-MCP
npm install
npm run generar-indice   # índice temático, ~20 MB de descarga, una sola vez
npm run build            # genera server/: el lanzador index.js, el bundle servidor.js y el trozo de unpdf que se carga al leer un PDF

Después se apunta el cliente a node /ruta/absoluta/a/Normativa-colombiana-MCP/server/index.js, con el mismo formato de arriba. Funciona desde cualquier directorio de trabajo.

Carpeta sin espacios: si la ruta local contiene espacios (p. ej. C:\Users\…\normativa mcp\server\index.js), algunos clientes lanzan el comando sin comillas y Node solo ve la primera parte (C:\Users\…\normativa) y sale con código 1. Para instalación local, clona en una carpeta sin espacios o usa la Opción B (npx), que no tiene este problema.

Opción D — con Bun (alternativa opcional)

Node sigue siendo el runtime de referencia: es el de las pruebas (npm run check) y el del .mcpb. El servidor construido en la Opción C también arranca con Bun, y se ha probado a mano con Bun 1.4.2: mismo tools/list, mismas respuestas y TLS íntegro (Bun respeta la cadena de certificados propia del servidor). Arranca unos 40 ms antes y ocupa unos 19 MB menos de memoria; la latencia de cada consulta es la misma, porque la marca el portal. No se prueba en cada versión: si algo falla solo con Bun, reprodúcelo antes con Node.

El cliente se apunta a bun /ruta/absoluta/a/Normativa-colombiana-MCP/server/index.js (misma nota de la carpeta sin espacios). Construir sigue requiriendo Node.

Qué recibe el cliente

Al conectarse, el servidor entrega 28 herramientas, 5 prompts y sus propias instrucciones de uso: a qué tipo de pregunta corresponde cada herramienta, que debe citarse siempre la fuente y que nunca debe afirmarse por cuenta propia que una norma está vigente. Los clientes que respetan el campo instructions del protocolo lo aprovechan sin configurar nada.

Fuente

Herramientas

Cualquiera (punto de entrada)

resolver_cita — cita exacta → norma o sentencia, con su vigencia si consta; acepta lote con citas y validación con validar: true. consultar_vigencia — el estado de vigencia con un nivel de confianza (alta/media/baja). historial_norma — la cadena de reformas que el Gestor anota sobre una norma (qué la modificó, adicionó o derogó y qué artículo afectó cada cambio), ordenada por el año de la norma que la hizo y con la última reforma anotada señalada; filtrable por articulo y paginable con desde/limite. buscar_unificado, analizar_conflicto, historial_norma y resolver_cita (con validar: true) aceptan formato: "json" para devolver el objeto de datos sin pie de texto

Gestor Normativo

buscar_normas (con marca de pertinencia por fila: qué términos menciona cada extracto), buscar_por_tema, obtener_documento (fuente gestor, con sin_temas para omitir el bloque de temas), listar_catalogos, explicar_relacion_tema

Corte Constitucional

buscar_jurisprudencia (tipos acepta «tutela», «auto»…), linea_jurisprudencial (qué providencias citan una sentencia), obtener_documento (fuente corte)

Corte Suprema

buscar_jurisprudencia_suprema, obtener_documento (fuente suprema)

Consejo de Estado

buscar_jurisprudencia_consejo_estado, obtener_documento (fuente consejo)

SUIN-Juriscol

buscar_en_suin (y vigencia vía resolver_cita)

Secretaría del Senado

el Código Civil, artículo por artículo, vía resolver_cita (solo HTTP sin cifrar)

Diario Oficial

buscar_diario_oficial — en qué diario salió una norma (tipo + número) o qué diarios salieron en unas fechas

DIAN

buscar_normativa_tributaria, obtener_documento (fuente dian)

CREG

buscar_resoluciones_creg, obtener_documento (fuente creg)

ANH / UPME / ANLA

buscar_normativa_anh, buscar_normativa_upme, listar_normativa_ambiental_anla

14 reguladores sectoriales

buscar_normativa_sectorial (entidad: sic, superfinanciera, supersalud, ant, unidadvictimas…) + obtener_documento (fuente sectorial)

V2 — jerarquía y conflictos

consultar_por_jerarquia, analizar_conflicto (reúne EVIDENCIA; la búsqueda de tema prueba singular y plural y declara la variante), comparar_articulos, cambios_desde

V2 — perfiles y expedientes

consultar_perfil, expediente (acción crear|agregar|leer|exportar)

Alcance

describir_fuentes — qué cubre cada fuente y qué no, sin consultar la red

Elegir las fuentes al instalar

Cada herramienta se paga en contexto en cada conversación, se use o no. Si no necesitas algunas fuentes, apágalas con la variable de entorno FUENTES (en Claude Desktop, el campo Fuentes de la extensión): sus herramientas desaparecen de la lista y su valor sale de los parámetros de las herramientas compartidas (obtener_documento.fuente, buscar_unificado.fuentes, consultar_perfil.perfil, el nivel jurisprudencia de consultar_por_jerarquia), así que la llamada a una fuente apagada no se puede ni escribir.

FUENTES

Efecto

Herramientas

tools/list

vacía (por defecto)

todas

28

41.862 B

-creg,-anh,-upme,-anla,-sectorial

todas menos la regulación sectorial

23

34.493 B

corte

Gestor Normativo y Corte Constitucional

18

26.590 B

Dos formas, sin mezclar: la lista de las que quieres (corte,suin) o la de las que quitas (-creg,-anh). Claves: corte, suprema, consejo, dian, suin, senado, diario, creg, anh, upme, anla, sectorial. El Gestor Normativo va siempre: es el corpus de resolver_cita y de las herramientas V2. Una clave mal escrita impide arrancar con el motivo en el log, en vez de dejarte sin una fuente sin avisar. Las respuestas declaran lo apagado aparte de lo no consultado (Desactivadas en esta instalación, no consultadas: CREG, ANH…), y describir_fuentes sigue describiendo las fuentes apagadas, marcadas como tales.

Related MCP server: Swedish Law MCP

Qué puedes preguntar

  • «¿Qué dice la Ley 1221 de 2008 sobre el auxilio de conectividad?»

  • «¿Qué normas regulan el teletrabajo en el sector público y por qué aplican?»

  • «¿Qué dice el Decreto 1083 sobre encargos?»

  • «Búscame jurisprudencia reciente de la Corte Constitucional sobre estabilidad laboral reforzada.»

  • «¿La Ley 909 de 2004 sigue vigente?»

  • «¿Qué dice la DIAN sobre la retención en la fuente por servicios?»

  • «Búscame tutelas de la Corte Suprema sobre teletrabajo y dime qué normas citan.»

  • «¿Existe la Ley 74 de 1923 y sigue vigente?» — está derogada, y ni el Gestor la tiene.

  • «¿Qué leyes hay sobre teletrabajo?» — consultar_por_jerarquia con nivel "ley".

  • «Compara el art. 2 de la Ley 909 con el art. 2.2.5.3.1 del Decreto 1083.» — comparar_articulos.

  • «¿Hay conflicto entre la Ley 909 de 2004 y el Decreto 1083 de 2015 en materia de encargos?» — analizar_conflicto (reúne evidencia, no concluye).

  • «¿Qué cambió la Ley 909 de 2004 desde 2020?» — cambios_desde.

  • «Normativa laboral sobre teletrabajo» — consultar_perfil con perfil "laboral".

El servidor incluye además cinco prompts listos, que los clientes que los soportan muestran como comandos: ¿Qué normas aplican sobre un tema?, ¿Esta norma sigue vigente?, Explícame esta norma en lenguaje sencillo, Compara dos normas y Aclarar una consulta ambigua.

Herramientas V2

Sobre la capa común de metadatos, evidencia y normalización:

  • consultar_por_jerarquia filtra por nivel (constitución, ley, decreto, resolución, concepto, jurisprudencia) y explica el carácter de cada uno. El Gestor no cataloga la Constitución como tipo: para ese nivel se orienta.

  • resolver_cita con validar: true comprueba que una cita y su enlace son de verdad: número/año contra el título, dominio del enlace, id de la norma y existencia del artículo. Clasifica en "validada", "parcialmente validada" o "no fue posible validar"; nunca afirma vigencia.

  • analizar_conflicto reúne EVIDENCIA de un posible conflicto entre dos normas (identificación, vigencia según SUIN si consta, jerarquía, reformas anotadas, pasajes sobre un tema). No detecta contradicciones semánticas y el resultado es un conflicto POTENCIAL, no una conclusión jurídica.

  • cambios_desde resume los cambios (modificación, derogación, adición) que el Gestor anota sobre las normas que se le listan, filtrados por el año de la norma modificadora. No rastrea novedades por su cuenta.

  • comparar_articulos compara el texto de un artículo entre dos normas, marca lo añadido/eliminado, clasifica cada diferencia por patrones (plazo, sanción, excepción, sujeto obligado) y agrupa los cambios editoriales por similitud léxica (Dice sobre bigramas ≥0,92): «una línea» → «una sola línea» sale como cambio menor, no como añadido+eliminado. Lo no clasificado se marca "revisar manualmente". Sin modelo semántico.

  • consultar_perfil ejecuta una consulta con las fuentes y filtros preconfigurados de un perfil: laboral, tributario, ambiental, contratacion_estatal, energia. Cada perfil declara su advertencia en la respuesta.

  • expediente con accion="crear|agregar|leer|exportar" agrupa consultas, citas y observaciones de una investigación. Desactivado por defecto: se activa con la variable de entorno EXPEDIENTES=1; la persistencia en disco, con EXPEDIENTES_DIR.

Una regla de oro de las V2: si una cita viene sin año y el número es ambiguo ("Decreto 1072" son cuatro), la herramienta no elige por ti: lista los candidatos y pide el año.

Lo que debes saber antes de confiar en una respuesta

Esto no es asesoría jurídica. Es un buscador que le da a un asistente de IA acceso a fuentes oficiales. Verifica siempre en el enlace que acompaña cada respuesta.

La vigencia viene de SUIN, y solo de SUIN. Ni el Gestor ni la relatoría tienen un campo que diga «esta norma está derogada»: las derogatorias van escritas dentro del texto, y el servidor se limita a avisar cuando detecta marcas de «Derogado» o «Modificado por» (el Decreto 1083 de 2015 contiene 155 notas de modificación). SUIN-Juriscol, del Ministerio de Justicia, sí publica el estado como dato, y es la única fuente del país que lo hace: cuando la norma está en el índice empaquetado, resolver_cita devuelve ese estado con su enlace.

Tres advertencias sobre ese dato, todas comprobadas:

  • Se entrega literal, nunca traducido a un sí o un no. SUIN distingue «Vigente», «DEROGADO», «Vigencia en Estudio», «Compilado», «Declarado Inexequible» y «Norma no vigente porque agotó su objeto». «Vigencia en Estudio» no significa vigente.

  • El estado se lee del registro del documento, no de su prosa. Donde aparecen los dos se contradicen: la Ley 1541 de 2012 muestra «Vigente» en pantalla y «Vigencia en Estudio» en su campo.

  • El buscador de SUIN no sirve para esto. buscar_en_suin devuelve un campo de vigencia que viene de su índice de búsqueda y contradice la ficha —la Ley 74 de 1923 figura allí como «Vigencia en Estudio» y su ficha dice DEROGADO—, así que se marca como no fiable en cada respuesta.

Y la regla de fondo no cambia: verifica en el enlace antes de actuar.

El buscador del Gestor no busca en el texto completo, solo en los resúmenes temáticos, y une los términos con OR. Su índice de palabras además es muy pobre: «teletrabajo» casa con 3 documentos en todo el portal, y con ninguno de los 43 conceptos que sí están clasificados bajo ese subtema. El servidor compensa de tres formas: quita las palabras vacías antes de consultar, reintenta por el subtema oficial cuando la búsqueda por palabras rinde poco, y busca dentro del articulado en tu computador cuando pides una norma concreta. Además, cada resultado de buscar_normas marca qué términos menciona su extracto y cuáles no, para que un resultado parcial no se lea como totalmente pertinente.

Los códigos se citan por su nombre. resolver_cita entiende "art. 191 del Código de Comercio" además de "art. 191 del Decreto 410 de 1971", y dice contra qué norma resolvió: Comercio (Decreto 410 de 1971), Sustantivo del Trabajo (Decreto 2663 de 1950), Procesal del Trabajo (Decreto 2158 de 1948), Penal (Ley 599 de 2000), Procedimiento Penal (Ley 906 de 2004), General del Proceso (Ley 1564 de 2012), CPACA (Ley 1437 de 2011), Infancia y Adolescencia (Ley 1098 de 2006) y Estatuto Tributario (Decreto 624 de 1989) salen del Gestor.

El Código Civil (Ley 84 de 1873) sale de la Secretaría del Senado, con tres salvedades. El Gestor no lo publica y SUIN no sirve su texto, así que resolver_cita con "art. 946 del Código Civil" lee el artículo de la página de la Secretaría del Senado (medido el 2026-09-28: 48 de 50 artículos de una muestra leídos bien; los otros dos, un «socket hang up» del portal, se declaran como «no respondió», nunca como «no existe»). (1) Solo sirve HTTP sin cifrar —su puerto 443 no abre—: el texto no se puede autenticar en tránsito, y cada respuesta lo dice; quien no lo quiera la apaga con FUENTES=-senado. (2) Los apartes tachados que el portal marca como inexequibles o derogados salen entre ~~ ~~ y la respuesta avisa: no se citan como vigentes. (3) No se reproducen las notas de vigencia, concordancias ni jurisprudencia de cada artículo: son del editor del portal (Avance Jurídico Casa Editorial), que reserva su copia; la respuesta remite al enlace, donde están, y hay que mirarlas antes de citar. El portal es lento e intermitente (una parte tardó 40 s en responder).

Las leyes modificatorias traen el artículo que sustituyen. Cuando una ley está redactada como "El artículo 217 del Código Civil quedará así:", el texto nuevo va debajo con su propia numeración; el extractor lo devuelve junto al artículo pedido en lugar de cortar en los dos puntos. El cuerpo del código modificado es otro documento, y se pide con su propia cita ("art. 217 del Código Civil").

El texto que publica el Gestor es el consolidado. Al comparar un artículo con su reforma (comparar_articulos con con_reforma: true) el «antes» no existe en esas páginas: se contrasta lo que dispuso la reforma con lo que el portal publica hoy, y la respuesta lo declara. Si la ley modificadora solo transcribe una parte, o el extractor no aísla su artículo, el modo lo dice y no calcula un diff que sería engañoso. El portal tampoco anota todas las reformas (medido: la Ley 2466 de 2025 modifica el art. 23 del Código Sustantivo del Trabajo y esa reforma no aparece anotada).

La cita judicial sale compuesta, y lo que no consta se dice. resolver_cita (sentencias de la Corte Constitucional) y obtener_documento (normas del Gestor) traen una línea «Cita oficial: …» armada solo con campos de la fuente. En la relatoría de la Corte, prov_magistrados es el ponente (238 de 240 aciertos medidos traen un solo nombre y el texto de la providencia lo declara). En SAMAI la fecha es la del proceso, no la del fallo, y la Corte Suprema publica la fecha de carga: por eso esas fechas no entran en la cita y se listan como «no consta». Tampoco se inventa la entidad expedidora de una norma: el Gestor no la publica de forma fiable.

Vigencia diferida. Cuando una norma no rige de inmediato —«regirá seis meses después de su promulgación», o por tramos, como la Ley 2277 de 2022—, la cabecera de obtener_documento lo dice a partir de su propio artículo de vigencia (medido sobre 20 normas reales). Solo calcula la fecha cuando el texto lo permite; si falta la fecha de publicación o hay varios tramos, lo declara en vez de suponer.

Un radicado de 23 dígitos (11001-03-28-000-2022-00132-00) se descompone en resolver_cita y se busca en las providencias tituladas del Consejo de Estado (SAMAI). Los dígitos identifican la corporación solo para el Consejo de Estado (03xx) y la Sala Civil de la Corte Suprema (0203); los de un juzgado o un tribunal (31xx, 23xx…) no son de una alta corte y no se rotulan como tales. SAMAI solo titula una parte de sus providencias: no encontrar un radicado no dice nada sobre el proceso, y el estado procesal no está en este servidor. La Corte Suprema no permite buscar por radicado.

El Diario Oficial (buscar_diario_oficial) dice en qué diario salió una norma (tipo + número) o qué diarios salieron en unas fechas. No da el texto: el PDF del diario es de sesión (sin la cookie responde 404) y pesa hasta 15 MB. No sabe qué normas trae cada diario ni filtra por entidad.

Línea jurisprudencial. linea_jurisprudencial lista las providencias que, según la relatoría de la Corte Constitucional, citan una sentencia (su bloque «citaciones»; la premisa de que la relatoría publica «sentencias que reiteran» era falsa: sí publica quién cita a quién). Que una sentencia cite a otra no es que la reitere ni que la respete, la lista puede estar incompleta (medido: T-233/24 menciona la C-337/11 y no consta) y topa en 100. Que una SU posterior la haya superado no se deduce: hay que leer la providencia.

Ritmo de consulta. El servidor hace como máximo una petición por segundo sostenida a cada portal, con ráfagas de hasta cinco, y nunca dos a la vez al mismo sitio. Si un portal responde que está limitando las consultas, espera lo que él indique en vez de insistir. Son servicios públicos y conviene que un asistente automático les pese menos que una persona navegando.

Caché en disco (opcional). Con la variable de entorno CACHE_DIR apuntando a un directorio, las copias de documentos sobreviven a los reinicios del cliente: una providencia de 3,4 MB pasó de 2.278 ms a 26 ms en un proceso nuevo (medido el 2026-09-28) y, cuando la copia vence, se revalida con If-Modified-Since (304, cero bytes). Solo se guardan documentos, nunca buscadores ni APIs; el directorio se poda a 500 ficheros o 256 MB, lo más antiguo primero. Sin la variable no se toca el disco.

Privacidad. Cada consulta viaja a servidores del Estado colombiano, que registran las peticiones y tu dirección IP, igual que si navegaras el sitio. No se envía nada a ningún otro servidor, no hay analítica y no se recoge información tuya. Tenlo en cuenta si vas a consultar sobre un asunto propio.

Datos empaquetados. Se incluyen dos índices, cada uno con su fecha de generación:

  • El temático (12.063 pares tema/subtema, 56.458 asociaciones norma–subtema, 2026-08-01) responde al instante y sigue sirviendo si el portal se cae. Si supera los tres meses, el servidor te lo advierte.

  • El de SUIN (11.613 leyes, 2026-09-24) traduce una cita escrita como texto a su documento sin salir a la red. La vigencia no depende de él: se pide en vivo a la ficha de SUIN por tipo, número y año, para leyes y decretos.

SUIN-Juriscol cambió de portal (septiembre de 2026). La ficha con el estado de vigencia sale ahora del índice público de su buscador nuevo, que trae leyes y decretos y llega hasta 2020: de una norma posterior no hay ficha, y la respuesta lo dice en vez de callarlo. El texto de los documentos ya no se puede leer desde fuera: el visor del portal lo pide a una dirección privada del Ministerio y se queda en blanco (medido con un navegador el 2026-09-24). Se entrega la ficha, el estado y el enlace clásico viewDocument.asp?id=. Comprobado de nuevo el 2026-09-28, cuando el portal anunció su vuelta: el buscador nuevo (lexis.minjusticia.gov.co/buscador/Detallado/1, /2 y /3) consulta el mismo índice, que sigue llegando a 2020, y su visor sigue apuntando a direcciones privadas; la página suin-juriscol.gov.co/suin/normativahistorica es una página del gestor de contenidos del Ministerio y su API responde 404 para ese identificador, así que no hay datos que leer.

Cobertura de la búsqueda tributaria. La primera consulta de cada término a la DIAN tarda unos 20 segundos: su portal devuelve el resultado completo y no admite límite. Las páginas siguientes del mismo término son instantáneas, así que conviene paginar en lugar de repetir búsquedas.

El enlace del Consejo de Estado caduca; el radicado no. buscar_jurisprudencia_consejo_estado entrega, junto a cada providencia, un token firmado que emite el propio buscador y con el que obtener_documento con fuente consejo saca el texto del PDF. Ese token vive una hora: sirve para leer, no para citar. Para citar se usa el radicado. Si caducó, se repite la búsqueda y sale uno nuevo.

El texto de la Corte Suprema se pide con su ruta y su sala. buscar_jurisprudencia_suprema devuelve la referencia, el ponente, la fecha y las normas citadas; obtener_documento con fuente suprema devuelve el texto completo, pero exige la MISMA sala con la que apareció la providencia: el backend la busca dentro de esa sala y desde otra no la encuentra.

La relatoría no indexa frases largas. buscar_jurisprudencia con varias palabras («mora querella policiva») hace que el buscador de la Corte responda con un aviso de «búsquedas flexibles» y 0 resultados. El servidor lo detecta, reintenta con la palabra más distintiva del término («querella») y lo anuncia en la respuesta: «La relatoría no indexa la frase completa; se buscó con el núcleo «X»». Verifica la pertinencia del resultado contra lo que buscabas.

Para desarrolladores

npm install
npm run check              # typecheck + lint + pruebas de biblioteca + de extremo a extremo
npm run medir              # métricas: bundle, arranque, índices y una fila por herramienta (p50/p95/peticiones/bytes)
npm run generar-indice     # regenera datos/indice-tematico.json (~20 MB de descarga)
npm run generar-indice-suin # regenera datos/indice-suin.json (unos segundos: pagina el índice del portal de SUIN)
npm run pack               # produce normativa-colombia.mcpb
npm run salud              # healthcheck interno: sondea en paralelo los portales que consulta el servidor (OK / LENTO / CAÍDO, con latencia)

datos/ sí está versionado: sin él un clon limpio no pasa las pruebas. Regenéralo solo cuando quieras actualizarlo.

Las pruebas consultan los portales oficiales. SIN_RED=1 npm test corre solo la lógica pura, útil para iterar rápido o sin conexión.

No hay integración continua: npm run check se corre a mano antes de publicar. Conviene ejecutarlo cada tanto aunque no se haya tocado el código, porque es lo que detecta que un portal cambió su HTML.

El fichero glama.json de la raíz declara los metadatos del servidor en el registro de Glama (schema oficial con maintainers); se empaqueta en el .mcpb y viaja en el paquete npm. El checklist de calidad y el diagnóstico de las descripciones de las herramientas viven en CALIDAD_HERRAMIENTAS_GLAMA.md (nota de trabajo, no se publica en npm).

Estructura:

Archivo

Responsabilidad

src/index.ts

Herramientas y prompts MCP

src/nucleo/

Núcleo compartido: parse.ts (extracción y limpieza de HTML, troceado, canario anti-rotura), citas.ts (parser de citas), codigos.ts (los códigos por su nombre y su cobertura), http.ts (cliente HTTP con la cadena TLS completa), ca.ts (intermedios TLS), evidencia.ts, compiladas.ts, alternativas.ts, entidades.ts, jerarquia.ts, perfiles.ts, indice.ts, expediente.ts, actualizacion.ts, deduplicar.ts, portal-roto.ts, snapshot.ts

src/herramientas/

Handlers de herramientas MCP: obtener_documento.ts, diff.ts (comparación de artículos), V2 (analizar_conflicto, cambios_desde, comparar_articulos, consultar_jerarquia, consultar_perfil, consultar_vigencia, expedientes, historial_norma, validar_cita, buscar_unificado); resolver_cita está en index.ts

src/fuentes/gestor.ts

Gestor Normativo (HTML raspado, con canarios)

src/fuentes/suin.ts

SUIN-Juriscol: ficha, vigencia e índice empaquetado

src/fuentes/normograma.ts

Normograma de la DIAN (JSON)

src/fuentes/jurisprudencia/

Tres tribunales: corte.ts (relatoría Constitucional, JSON), cortesuprema.ts (GraphQL), consejoestado.ts (WebForms, sin API)

src/fuentes/sectorial/

Reguladores sectoriales (CREG, ANH, UPME, ANLA y 11 más vía buscar_normativa_sectorial)

scripts/medir.ts

Banco de métricas, para que optimizar no sea a ojo

scripts/verificar.ts

npm run verificar: comando único de salud (build → typecheck → lint → unit → cobertura tool→caso → red → barridos)

scripts/barrido-terminos.ts

npm run barrido-terminos: detecta "término que antes rendía y ahora vacío" por fuente (regresión de portal)

test/smoke.ts

Pruebas de biblioteca contra las fuentes reales

test/e2e.ts

Arranca el servidor y le habla por stdio, como cualquier cliente MCP

test/red*.ts

Red de regresión: casos por dominio leyendo content[0].text crudo e isError

Las instrucciones de uso que recibe el modelo están en INSTRUCCIONES, en src/index.ts: son el único mecanismo que orienta qué herramienta se elige, cosa que ninguna prueba puede verificar.

Dos notas para quien vaya a tocar esto:

  • Cuatro portales envían la cadena TLS incompleta. funcionpublica.gov.co presenta un certificado de «Sectigo RSA Organization Validation» pero manda el intermedio de Domain Validation; suin-juriscol.gov.co, sic.gov.co y www.corteconstitucional.gov.co (intermedio «Go Daddy Secure Certificate Authority - G2») omiten directamente el suyo. curl lo tolera porque su bundle ya los trae; Node no. src/nucleo/ca.ts incluye los cuatro intermedios para completar la cadena sin desactivar la verificación: las raíces que los firman sí vienen con Node. No lo cambies por rejectUnauthorized: false.

  • Los códigos HTTP mienten en dos fuentes. El backend de la Corte Suprema responde 200 con una página de mantenimiento ante rutas inventadas, y la relatoría de la Constitucional devuelve el armazón de su SPA en vez de un 404. Por eso los canarios validan la forma de la respuesta y nunca el código de estado.

  • El canario. Si el HTML del portal cambia, los parsers lanzan CanarioError en vez de devolver listas vacías. Es deliberado: una lista vacía silenciosa se lee como «no existe esa norma», y en materia legal esa confusión es el peor fallo posible.

  • Un fallo de red nunca se presenta como un vacío. buscar_unificado distingue "respondió sin nada" de "no se pudo consultar: " por fuente; una fuente caída no autoriza a concluir que no hay resultados ahí.

  • La SIC vive en la sede electrónica. El repositorio viejo (www.sic.gov.co/repositorio-de-normatividad) responde 301 a sedeelectronica.sic.gov.co/transparencia/normativa/busqueda-de-normas/entidad; el adaptador apunta directo a la sede porque pedir no sigue redirecciones.

Contribuir

Las guías están en CONTRIBUTING.md, y hay cuatro reglas que no se negocian: el canario nunca devuelve vacío en silencio, no se desactiva la verificación TLS, no se sube el ritmo de peticiones a los portales y ninguna respuesta afirma vigencia.

Si el servidor te dio una respuesta incorrecta, ese es el reporte más valioso: hay una plantilla de issue para eso.

Para reportar una vulnerabilidad, mira SECURITY.md; no abras un issue público.

Licencia

Código bajo licencia MIT (ver LICENSE). Sobre los contenidos normativos y el acceso automatizado a los portales, mira NOTICE.md.

Available Tools

28 tools
analizar_conflictoAnalizar un posible conflicto entre dos normasA

Reúne para dos normas la EVIDENCIA de un posible conflicto: identificación en el Gestor, vigencia según SUIN cuando consta, nivel en la jerarquía y carácter, notas de reforma del texto (de cualquier artículo de la norma) y pasajes que mencionanun tema. NO detecta contradicciones semánticas: el resultado es un conflicto POTENCIAL, no una conclusión jurídica; verifica en los enlaces antes de actuar. Con formato="json" devuelve un objeto con fecha_consulta, alcance, sobre (si se pidió), evidencias (una por norma, con los mismos campos del texto) y avisos.

ParametersJSON Schema
NameRequiredDescriptionDefault
sobreNoTema opcional para buscar artículos de ambas que lo mencionen
formatoNoSalida: "markdown" (texto legible, por defecto) o "json" (un objeto con fecha_consulta, alcance, evidencias y avisos, sin cabecera ni pie)markdown
norma_aYesCita de la primera norma, ej. "Ley 909 de 2004"
norma_bYesCita de la segunda norma

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does well: it discloses that the output is evidence-gathering only, that no semantic contradiction detection happens, that results are potential not conclusive, and it describes the JSON return shape (fecha_consulta, alcance, sobre, evidencias, avisos). It omits any mention of permissions, limits, or cost.

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 action and evidence list, then limitations, then output format — a logical order. It is dense and contains a typo ('mencionanun'), and the single long semicolon-chained sentence is harder to scan than it needs to be.

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 cover return values, and it does for the JSON mode (listing the object's fields). The default markdown output is only labeled 'texto legible', leaving its structure underspecified, but overall an agent has enough to call and interpret the tool.

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 the baseline is 3. The description adds genuine value beyond the schema by explaining that 'sobre' drives a passage search across both norms and by detailing what formato="json" returns, which the schema only hints at.

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: 'Reúne para dos normas la EVIDENCIA de un posible conflicto', then enumerates exactly which evidence types are gathered (identificación en el Gestor, vigencia SUIN, jerarquía, notas de reforma, pasajes temáticos). This is clearly distinguishable from siblings like comparar_articulos or consultar_vigencia.

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 states a when-not: 'NO detecta contradicciones semánticas' and warns 'el resultado es un conflicto POTENCIAL, no una conclusión jurídica; verifica en los enlaces antes de actuar'. It gives clear context for use, though it never names a specific sibling tool to use instead when a semantic comparison is actually wanted.

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

buscar_diario_oficialBuscar en el Diario Oficial (Imprenta Nacional)A

Diarios Oficiales publicados: número, tipo de edición (Ordinaria, Extraordinaria, Especial, Oficio o Tributario) y fecha de publicación. Sirve para saber qué salió publicado y cuándo, incluso el mismo día, antes de que el Gestor Normativo lo catalogue. Filtra por número de diario, por rango de fechas y por el tipo y el número de una norma (encuentra el diario que la publicó: tipo="LEY" y numero_norma="2466" devuelve el 53.160). NO dice qué normas contiene cada diario ni trae su texto, y el PDF del diario no tiene enlace estable.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoNoTipo de norma: los diarios que la contienen; solo filtra junto con numero_norma
desdeNoFecha de publicación inicial, "2026-09-01" o "01/09/2026"
hastaNoFecha de publicación final, "2026-09-30" o "30/09/2026"
limiteNoCuántos diarios mostrar (hasta 50); el portal los sirve de 10 en 10
numeroNoNúmero del diario, ej. "53.640"; identifica uno solo
numero_normaNoNúmero de la norma, sin el año (ej. "2466"); exige tipo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the fields returned, the freshness property (same-day), and candid limitations (no norm content, no text, no stable PDF link). It omits auth/permission or rate-limit behavior, but the disclosure of what is and isn't available is substantial.

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 dense sentences that are front-loaded with the returned fields, then usage, then limitations. Nearly every clause earns its place, though the filter list and caveats are packed tightly enough to slightly reduce scanability.

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

Completeness5/5

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

No output schema and no annotations exist, so the description must explain results and constraints itself, which it does: it names the returned fields, the filter combinations, and the three things the tool cannot provide. An agent has enough to call it correctly and interpret the result.

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?

At 100% schema coverage the baseline is 3, and the description goes beyond it by explaining the cross-parameter dependency and giving a worked example ('tipo="LEY" y numero_norma="2466" devuelve el 53.160'). This clarifies the joint use of tipo and numero_norma that the schema only states as 'exige tipo'.

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 (Diario Oficial), and enumerates exactly what it returns: número, tipo de edición and fecha de publicación. It also situates the tool against the Gestor Normativo, so an agent can distinguish it from the cataloguing/search tools in the sibling set.

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 a clear when-to-use condition ('para saber qué salió publicado y cuándo, incluso el mismo día, antes de que el Gestor Normativo lo catalogue') plus two explicit exclusions ('NO dice qué normas contiene ... ni trae su texto'). It stops short of naming a specific sibling tool to use instead for norm content, which is the only gap.

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

buscar_en_suinBuscar en SUIN-JuriscolA

Busca en los 56.832 documentos de SUIN-Juriscol (MinJusticia) por título, epígrafe, materia o entidad emisora: leyes, decretos y resoluciones desde 1844, incluidos documentos que el Gestor Normativo no tiene. NO busca dentro del articulado ni sirve para citas exactas ("LEY 909 DE 2004" no devuelve nada): para una cita usa resolver_cita. El campo de vigencia que devuelve es el del BUSCADOR y NO es fiable: contradice la ficha del propio documento; para el estado real usa resolver_cita. SU ÍNDICE TIENE HUECOS: "Teletrabajo" devuelve cero pese a estar en el título de la Ley 1221 de 2008, y una frase larga empareja por palabras comunes. Ante un vacío, NO concluyas que no existe: prueba buscar_por_tema.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeNoCuántos saltarse antes de empezar
textoYesPalabras del título, epígrafe o materia. Ej.: "servicio militar", "Buenaventura"
limiteNo
sectorNoSector administrativo, ej. "Hacienda y Crédito Público"
vigenciaNoFiltra por el estado que declara el BUSCADOR, que no siempre coincide con la ficha

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden, and it does so richly: it warns the vigencia field returned is the searcher's own and unreliable, that the index has gaps ('Teletrabajo' returns zero), and that long phrases match by common words. These are exactly the behavioral caveats an agent needs.

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

Conciseness5/5

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

Dense but front-loaded: capability, then scope limits, then the unreliable-field warning, then the index-gap caveat and fallback. Every sentence earns its place with no redundancy.

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?

With no output schema and no annotations, the description supplies the behavioral, safety-relevant and fallback context an agent needs. Nothing essential for correct invocation is missing.

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 80%, so the schema already documents texto, desde, sector and vigencia. The description clarifies that the vigencia filter reflects the searcher's state, which doesn't always match the document sheet, adding modest value; limite remains undocumented in both.

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 ('Busca en los 56.832 documentos de SUIN-Juriscol') and enumerates searchable fields (título, epígrafe, materia, entidad emisora) and coverage (1844 onward, includes docs the Gestor Normativo lacks). It clearly distinguishes itself from resolver_cita and buscar_por_tema.

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

Usage Guidelines5/5

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

Explicitly states when NOT to use it ('NO busca dentro del articulado ni sirve para citas exactas') and routes to resolver_cita for citations, plus buscar_por_tema after an empty result. Usage conditions and alternatives are fully spelled out.

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

buscar_jurisprudenciaBuscar jurisprudencia de la Corte ConstitucionalA

Sentencias y autos de la relatoría de la Corte Constitucional (44.839 providencias, con fallos de 2026 publicados el mismo año). Es la vía para jurisprudencia constitucional: el Gestor tiene muy poca. Devuelve sentencia, tipo, fecha, síntesis y la ruta para obtener_documento con fuente="corte". La relatoría no indexa frases largas: con varias palabras se reintenta con la más distintiva y la respuesta lo anuncia ("se buscó con el núcleo «X»"). Es la CORTE CONSTITUCIONAL, no la Suprema ni el Consejo de Estado: para esos, usa su buscador propio.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeNoFecha inicial AAAA-MM-DD (por defecto 1992-01-01)
hastaNoFecha final AAAA-MM-DD
tiposNoTipos a incluir; por defecto C, T y SU (doctrina). Los autos (A) son mayoría por volumen y suelen ser trámite: pídelos explícitamente. Se aceptan sus nombres: "tutela", "constitucionalidad", "unificacion", "auto".
limiteNoCuántas providencias mostrar (hasta 100)
terminoYesObligatorio. Términos a buscar en la relatoría, ej. "teletrabajo"

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses corpus size (44.839 providencias), recency, the return fields (sentencia, tipo, fecha, síntesis), the handoff to obtener_documento with fuente='corte', and a non-obvious behavioral trait — the relatoría does not index long phrases, so it retries with the most distinctive word and announces this in the response. It omits pagination/rate behavior, but otherwise this is rich.

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 resource and its distinguishing claim, then the return shape, then the query caveat, then the sibling routing. Every sentence earns its place with no filler.

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 search tool with no output schema and no annotations, the description supplies the return fields, corpus scope, query behavior caveat, and cross-tool handoff, which is everything an agent needs to invoke and interpret it 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 the baseline is 3, but the description adds real meaning beyond the schema: it explains the long-phrase indexing limitation and the automatic retry with the distinctive core, which directly affects how 'termino' should be supplied. The 'fuente=corte' link also clarifies downstream usage.

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: search Constitutional Court sentencias and autos from the relatoría, with coverage count and recency. It explicitly distinguishes itself from buscar_jurisprudencia_suprema and buscar_jurisprudencia_consejo_estado, so an agent can route without opening sibling schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use: this is the route for constitutional jurisprudence because the Gestor covers little of it, and it names the sibling tools to use for Suprema and Consejo de Estado instead. It also gives a concrete usage rule — request autos (A) explicitly since they are mostly procedural and excluded by default.

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

buscar_jurisprudencia_consejo_estadoBuscar jurisprudencia del Consejo de EstadoA

Providencias tituladas del Consejo de Estado, el supremo de lo contencioso administrativo (nulidad y restablecimiento, contratación estatal, nulidad electoral, reparación directa, conceptos de la Sala de Consulta): tribunal DISTINTO de la Corte Constitucional y de la Suprema. Cada resultado trae el problema jurídico y su respuesta, más el enlace a la ficha en SAMAI. CÓMO BUSCA: con exacto=true (activado) busca la FRASE EXACTA y, si no aparece, se amplía solo a OR avisándolo; en modo OR el número de páginas mide el corpus, no la pertinencia. Avanza con pagina.

ParametersJSON Schema
NameRequiredDescriptionDefault
textoYesTérminos a buscar, ej. "nulidad electoral", "liquidación del contrato"
exactoNoFrase exacta en SAMAI (activado); si no aparece, se amplía solo a OR con aviso. Ponlo en false para ampliar a propósito.
limiteNoCuántas mostrar de la página (hasta 10)
paginaNoPágina de resultados, desde 1. SAMAI pagina en bloques de ~10 y no admite un desplazamiento libre, por eso aquí se pide la página y no el "desde" del resto de herramientas.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explains the exact-match-then-OR-fallback behavior with a notice, and warns that in OR mode the page count measures corpus size, not relevance. It also mentions each result includes the legal problem, its answer, and the SAMAI link. Missing: rate limits, auth, or what a failure/empty result looks like.

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

Conciseness4/5

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

Front-loads what the tool returns and its tribunal scope, then the search mechanics, then pagination. Dense but each sentence carries routing or behavioral information. Parenthetical enum-like listings add bulk but serve disambiguation.

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 search tool with no output schema and no annotations, the description covers scope, result shape (problema jurídico, respuesta, SAMAI link), and search-mode behavior. Remaining gaps are edge-case handling (empty results, timeouts) but nothing an agent strictly needs to invoke 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 value by explaining why 'pagina' exists (SAMAI paginates in ~10 blocks without free offset) and reinforcing the exacto OR fallback. The 'limite' nuance of per-page display is partly covered by 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+resource (buscar providencias del Consejo de Estado) and explicitly distinguishes the tribunal from the Corte Constitucional and the Suprema, which is essential given sibling tools like buscar_jurisprudencia_suprema. It also enumerates the subject matters (nulidad y restablecimiento, contratación estatal, nulidad electoral, reparación directa, conceptos de la Sala de Consulta).

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 'tribunal DISTINTO de la Corte Constitucional y de la Suprema' clause gives clear when-to-use guidance by differentiating from sibling jurisprudence tools. It also explains how to advance results with 'pagina'. It does not name specific sibling tools or give explicit when-not-to-use conditions, but the tribunal distinction is a strong routing cue.

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

buscar_jurisprudencia_supremaBuscar jurisprudencia de la Corte Suprema de JusticiaA

Providencias de la Corte Suprema por sala: Tutelas, Civil, Laboral o Penal, desde 1991. Complementa a buscar_jurisprudencia, que es de la Corte CONSTITUCIONAL: son tribunales distintos. Cada resultado trae las NORMAS QUE CITA (resolubles con resolver_cita) y una RUTA con la que obtener_documento con fuente="suprema" devuelve el texto. CÓMO BUSCA: sobre el texto completo y sin descartar palabras comunes, así que "de" devuelve 69.454 resultados; por eso busca la FRASE EXACTA por defecto. Usa términos distintivos.

ParametersJSON Schema
NameRequiredDescriptionDefault
anioNoAño de cuatro dígitos
salaNoSala de la Corte. Obligatoria: sin ella el buscador no responde.Tutelas
desdeNoCuántas saltarse antes de empezar
textoYesTérminos a buscar, ej. "despido sin justa causa"
exactoNoFrase exacta (activado). Con false el buscador une con OR: "despido sin justa causa" pasa de 20.233 a 176.012 providencias y en la sala Penal es inservible. Ponlo en false solo para ampliar a propósito.
limiteNoCuántas mostrar. El buscador entrega páginas de 10 como máximo; para ver más, usa desde.
magistradoNoNombre del magistrado ponente

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the search engine semantics (full-text, no stopword filtering, exact-phrase default), the consequence of exacto=false (result explosion, unusable in Penal), and the shape of each result (cited norms, a ruta). It omits any auth/permission or rate-limit notes, which is a minor gap for a public legal dataset.

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 resource and scope, then differentiation, then output, then search behavior. Every clause carries signal, though the paragraph is dense and long enough that the search-semantics detail could be trimmed.

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 appropriately explains what each result contains (normas and a ruta for retrieval) and the search behavior of a 7-parameter tool. Combined with the 100%-covered schema, an agent has what it needs; only auth/limit context is absent.

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 baseline is 3. The description restates the exacto behavior and notes sala's obligatoriness, but these are already documented in the schema fields, so it adds little parameter meaning beyond what the structured data provides.

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?

Starts with a specific verb+resource and coverage: 'Providencias de la Corte Suprema por sala: Tutelas, Civil, Laboral o Penal, desde 1991.' It explicitly disambiguates from the same-named sibling by naming the different tribunal (Corte Constitucional vs Corte Suprema), 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?

Gives explicit routing context by naming buscar_jurisprudencia and explaining that these are distinct courts, plus follow-up chaining (resolver_cita for cited norms, obtener_documento with fuente="suprema" for full text). It lacks guidance against the other search siblings (e.g., buscar_por_tema), so it is clear but not exhaustive.

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

buscar_normasBuscar normas en el Gestor NormativoA

Busca leyes, decretos, resoluciones, conceptos y sentencias del sector público colombiano. IMPORTANTE: el buscador del portal indexa solo los resúmenes temáticos, NO el articulado completo, y une los términos con OR. Usa pocas palabras y muy distintivas. Para buscar dentro del texto de una norma concreta, usa obtener_documento con fuente="gestor" y buscar_en_texto. Para una cita exacta, usa resolver_cita.

ParametersJSON Schema
NameRequiredDescriptionDefault
anioNoAño de cuatro dígitos, como texto. Ej.: "2004"
temaNoNombre del tema, o su id de listar_catalogos con prefijo: "tema-24457"
limiteNo
numeroNoNúmero de la norma, como texto. Ej.: "909"
entidadNoNombre o id: "Corte Constitucional", "Congreso de la República"
subtemaNoid de listar_catalogos con catalogo="subtemas" y prefijo ("sub-38968"), o su nombre si además indicas tema. El "ts-" de buscar_por_tema no vale aquí.
palabrasNoTérminos distintivos; evita frases largas
tipo_documentoNoNombre o id del catálogo de tipos del Gestor: "Ley", "Decreto", "Resolución", "Concepto". Uno que no esté se rechaza con la lista, sin buscar

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses critical search behavior: the portal indexes only thematic summaries, not full articulado, and joins terms with OR. It does not cover auth, rate limits, or return format, but the key limitations are stated.

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 purpose and the critical indexing caveat before alternatives. Four sentences, no waste, and the most important limitation is marked clearly with IMPORTANTE.

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 8-parameter search tool with no output schema and no annotations, the description covers scope, indexing limitation, query behavior, and two alternatives. It could mention return format or pagination, but the core invocation guidance is complete enough.

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 88%, so the baseline would be 3. The description adds meaningful semantics for the main query parameter by explaining OR-joining and advising few distinctive terms, which goes beyond the schema descriptions. It does not explain every filter, but it exceeds the baseline.

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: busca leyes, decretos, resoluciones, conceptos y sentencias del sector público colombiano. It distinguishes this tool from two siblings by directing full-text search to obtener_documento and exact citations to resolver_cita.

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

Usage Guidelines5/5

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

Explicitly tells the agent when to use this tool versus alternatives: use obtener_documento for text inside a specific norm, and resolver_cita for an exact citation. It also gives concrete query advice for the free-text search: use few, highly distinctive words.

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

buscar_normativa_anhBuscar normativa de la ANH (hidrocarburos)A

Resoluciones, acuerdos y circulares de la Agencia Nacional de Hidrocarburos (785 documentos): contratos de exploración y producción, regalías, fiscalización y reservas. ÚSALA para hidrocarburos y regalías; NO devuelve el texto (publica en PDF), solo el epígrafe, el PDF y la ficha. Para leyes o decretos nacionales de cualquier sector usa resolver_cita. Por defecto OCULTA los actos de personal, que son dos de cada tres; pídelos con incluir_administrativos=true si de verdad los buscas.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoNo
desdeNoFecha inicial AAAA-MM-DD
hastaNoFecha final AAAA-MM-DD
textoNoPalabra clave, ej. "regalías", "fiscalización"
numeroNoNúmero del acto, como texto
paginaNoPágina de 20; hay 40 en total sin filtros
incluir_administrativosNoIncluir nombramientos, encargos y demás actos de personal. Por defecto se ocultan.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses that no full text is returned (only epígrafe, PDF link, and ficha) and, critically, that administrative/personnel acts are hidden by default and constitute two of every three documents. The latter is a non-obvious default that materially changes result counts.

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?

Dense but front-loaded: scope first, then the routing rule, then the default-hiding caveat with the flag that overrides it. Every sentence carries routing or behavioral information; none is filler.

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

Completeness5/5

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

No output schema exists, and the description compensates by stating exactly what is returned (epígrafe, PDF, ficha). Combined with the coverage of the hidden-default behavior, an agent has everything needed to call it 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 description coverage is already 86%, so the baseline is 3; the description adds real value by explaining why incluir_administrativos defaults to false and how large its effect is. It does not add syntax or format detail for the remaining filters (tipo, desde/hasta, texto, numero, pagina), which the schema already documents.

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 resource (regulations of the Agencia Nacional de Hidrocarburos, 785 documents) and enumerates the subject matter: exploration/production contracts, royalties, fiscalización, reserves. It also distinguishes itself from resolver_cita for national laws/decrees, so the agent can route without opening the schema.

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

Usage Guidelines5/5

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

Explicit when-to-use (hidrocarburos y regalías), explicit when-not (leyes o decretos nacionales de cualquier sector → resolver_cita), and a conditional on the incluir_administrativos flag. Nothing is left to inference.

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

buscar_normativa_sectorialBuscar normativa de un regulador sectorialA

Actos administrativos —resoluciones, circulares, acuerdos— de los reguladores y ministerios sectoriales que el Gestor Normativo NO cataloga; elige cuál en entidad. CUÁNDO NO USARLA: para leyes y decretos nacionales de cualquier sector usa resolver_cita o buscar_por_tema, que dan texto completo y vigencia; el Decreto Único Reglamentario de cada sector (1071, 1072, 1074, 1076, 1079…) ya está en el Gestor. Casi todas entregan PDF sin texto extraíble, y la mayoría no publica estado de vigencia; donde aparece (ANM, Supersociedades) es la fila del propio portal, no una verificación: para el estado real de una ley o un decreto, resolver_cita. LOS FILTROS NO SE COMPORTAN IGUAL EN TODAS: el Invima exige texto o año; la Superfinanciera y la Supertransporte se quedan en el año en curso si no indicas otro; la ANM no aplica el año a las circulares. Cada respuesta dice qué hizo, pero no lo adivines: indica el año si lo esperabas.

ParametersJSON Schema
NameRequiredDescriptionDefault
anioNoAño de cuatro dígitos
textoNoFiltra por número, año o epígrafe
limiteNo
paginaNo
entidadYesRegulador a consultar. Usa describir_fuentes para ver qué sector cubre cada uno.
categoriaNoTipo de acto o categoría (cada fuente declara cuáles soporta; solo Unidad de Víctimas lo filtra hoy)
solo_entidadNoSolo INVIMA/Supersalud: excluye la compilación sectorial del normograma (leyes, decretos y sentencias) y deja solo los actos que la entidad expide (Resolución, Circular…).

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it warns that most results are non-extractable PDFs, that validity status is unreliable and only a portal row where present, and that filter behavior differs per source. These are exactly the operational caveats an agent needs and cannot obtain from the schema.

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 purpose and a capitalized 'CUÁNDO NO USARLA' block, followed by caveats; every sentence carries usable information. It is dense and long, but no sentence is filler, so it stays within appropriate bounds for a multi-source tool.

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 7-parameter, multi-source tool with no output schema, the description covers the main retrieval and validity pitfalls. It omits operational details like auth needs or pagination behavior beyond limite/pagina, but the described response behavior ('Cada respuesta dice qué hizo') fills the most important gap.

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

Parameters4/5

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

Schema coverage is 71% and the description adds real meaning: it instructs choosing the regulator via `entidad` and details per-source filter behavior (Invima requires texto or año, Superfinanciera/Supertransporte default to the current year, ANM ignores año for circulares). This directly enriches `anio`/`texto`/`entidad` beyond the schema, though it stops short of covering every parameter.

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 (actos administrativos de reguladores sectoriales que el Gestor NO cataloga), and immediately distinguishes it from siblings resolver_cita and buscar_por_tema. An agent can tell exactly which corpus this tool covers versus the national law/decreto corpus.

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

Usage Guidelines5/5

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

Contains an explicit 'CUÁNDO NO USARLA' section naming the alternatives (resolver_cita, buscar_por_tema) and the condition that routes to them, plus notes that the Decreto Único Reglamentario is already in the Gestor. When-not and alternatives are both specified.

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

buscar_normativa_tributariaBuscar normativa tributaria, aduanera y cambiaria (DIAN)A

Normograma de la DIAN: decretos, resoluciones, conceptos y circulares en materia tributaria, aduanera y cambiaria, que ninguna otra herramienta cubre. Devuelve el extracto y el enlace; para leer el documento usa obtener_documento con fuente="dian". AVISO: la primera búsqueda de cada término tarda ~20 s (el portal devuelve el resultado completo y no admite tope), pero las páginas siguientes del MISMO término son instantáneas: pagina con desde en vez de lanzar búsquedas nuevas.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeNoCuántos saltarse antes de empezar
textoYesTérminos a buscar, ej. "retención en la fuente", "declaración de importación"
limiteNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the ~20 s first-search latency, the fact that the portal returns the complete result set with no cap, and that subsequent pages of the same term are instant. It does not state auth/permission requirements, which would be the remaining gap for a mutation-free read tool.

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

Conciseness5/5

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

Front-loads the scope, then the return format, then the routing tip, then the latency caveat. Every sentence delivers an actionable fact with no filler, despite the description being relatively dense.

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

Completeness5/5

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

No output schema and no annotations, yet the description covers return shape (extracto + enlace), follow-up tool, latency, pagination, and rate-limiting behavior. Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 67%, so the schema documents texto and desde, but the description adds real meaning: it explains that 'desde' is the pagination lever to reuse an existing result set rather than issuing a new search. This is operational semantics the schema's terse 'Cuántos saltarse antes de empezar' does not convey. 'limite' gains no extra explanation.

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 (el normograma de la DIAN: decretos, resoluciones, conceptos y circulares en materia tributaria, aduanera y cambiaria) with a clear verb of search, and explicitly distinguishes itself from siblings ('que ninguna otra herramienta cubre'). An agent can tell this apart from buscar_normas or buscar_normativa_anh 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?

Routes the agent to the correct follow-up: 'para leer el documento usa obtener_documento con fuente="dian"'. It also gives pagination guidance ('pagina con desde en vez de lanzar búsquedas nuevas'). What's missing is explicit when-not guidance against the close sibling buscar_normas, but the usage context is otherwise clear.

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

buscar_normativa_upmeBuscar circulares y resoluciones de la UPMEA

Circulares y resoluciones de la Unidad de Planeación Minero Energética: convocatorias de transmisión y de gas, planes de expansión y actos administrativos. NO devuelve el texto: son PDF. OJO CON LAS FECHAS: la fecha que publica su portal es la de PUBLICACIÓN EN LA WEB, no la de la norma — la "Resolución 1163 de 2024" figura publicada en 2025. El número y el año reales están en el título.

ParametersJSON Schema
NameRequiredDescriptionDefault
textoNoTérminos a buscar, ej. "transmisión", "plan de expansión"
limiteNo
paginaNo
incluir_administrativosNoIncluir nombramientos y demás actos de personal. Por defecto se ocultan.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and excels: it warns that the tool returns PDFs, not full text, and highlights the critical date discrepancy between web publication and the actual norm date. These are non-obvious, high-impact behavioral traits that an agent must know.

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, each purposeful: first defines scope, second warns about PDF-only output, third warns about date semantics. There is zero fluff, and the most critical caveats are 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 4-parameter search tool without an output schema, the description covers what is searched, the PDF-only limitation, and the crucial date quirk. It omits details about result format or pagination, but the essential operational context is present and sufficient 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 covers only 50% of parameters (texto and incluir_administrativos have descriptions). The description adds semantic context by giving example search topics (transmission, expansion plans) and mentioning administrative acts, but it does not clarify the behavior of limite or pagina. This partial compensation warrants a middle score.

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

Purpose5/5

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

The description clearly specifies the tool's resource (UPME circulars and resolutions) and enumerates content types (transmission/gas calls, expansion plans, administrative acts). The explicit UPME name distinguishes it from sibling sector-specific tools like buscar_resoluciones_creg and buscar_normativa_anh, and the verb is implied by the tool name and title.

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

Usage Guidelines4/5

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

The description gives a clear context of when to use the tool by listing its coverage areas and the issuing entity. It does not explicitly name alternatives or state when not to use it, but the specificity strongly implies the intended use case.

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

buscar_por_temaBuscar por tema y subtemaA

Consulta temática oficial: devuelve tema, subtema y las normas, sentencias y conceptos asociados, desde un índice empaquetado (instantáneo, funciona aunque el portal esté caído). Cada resultado trae temsubid ("ts-38872") y normid para pedir después explicar_relacion_tema. El prefijo "ts-" es parte del id: pégalo tal cual y no lo cruces con el "sub-" ni el "tema-" de listar_catalogos, que son otras dos taxonomías del portal con los mismos números.

ParametersJSON Schema
NameRequiredDescriptionDefault
textoYesTema a buscar, ej. "teletrabajo", "encargo", "prima de servicios"
limiteNo

TDQS

A4.1/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does substantial work: it discloses the data source ('índice empaquetado'), availability behavior ('instantáneo, funciona aunque el portal esté caído'), and the shape of each result (tema, subtema, normas, sentencias, conceptos, plus temsubid and normid). The main gap is that it never addresses the 'limite' cap or pagination behavior.

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

Conciseness4/5

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

Front-loads the purpose in the first clause, then result shape, then the id-handling warning. Three dense sentences with no filler. The id-taxonomy warning is longer than average but earns its place by preventing real id-format errors.

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

Completeness4/5

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

With no output schema and no annotations, the description must carry return and safety information, and it does describe the returned fields and offline behavior. Remaining shortfalls — the 'limite' semantics and explicit sibling selection among the many search tools — are minor for a simple two-parameter lookup.

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 exactly 50%: 'texto' is documented with examples while 'limite' has only structural constraints and no description. The description adds no meaning about either parameter (its 'ts-' discussion is about returned ids, not inputs), so it neither compensates for the coverage gap nor exceeds the schema. 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 ('tema, subtema y las normas, sentencias y conceptos asociados') and frames itself as the 'Consulta temática oficial', so the verb+resource is unambiguous. It actively distinguishes itself from siblings by naming explicar_relacion_tema (follow-up) and listar_catalogos (a different taxonomy), so an agent can place it without opening other 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 clear context: it is the thematic index lookup, works offline, and routes the agent to explicar_relacion_tema afterwards using temsubid/normid. It also warns against conflating its 'ts-' ids with the 'sub-'/'tema-' ids from listar_catalogos. It stops short of stating explicit when-not-to-use conditions against the other search siblings (buscar_normas, buscar_unificado, etc.).

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

buscar_resoluciones_cregBuscar resoluciones de la CREG (energía y gas)A

Resoluciones de la Comisión de Regulación de Energía y Gas: tarifas, conexión, comercialización, plantas solares y gas natural. Es la ÚNICA fuente sectorial cuyo texto se puede leer aquí (obtener_documento con fuente="creg") y la única que publica una señal de vigencia, en compilaciones separadas de no derogadas y derogadas; esa señal se traslada literal, no la conviertas en un sí o un no. Para leyes o decretos nacionales de otros sectores usa resolver_cita.

ParametersJSON Schema
NameRequiredDescriptionDefault
anioNoAño de cuatro dígitos, desde 1994. SIN ÉL solo se mira el año en curso, que trae muy pocas.
textoNoFiltra por número, año o epígrafe. Ej.: "solar", "gas natural", "101-104"
limiteNoCuántas resoluciones mostrar (hasta 50)
compilacionNo"vigentes" = las que la CREG lista como no derogadas expresamente ni anuladasvigentes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that this is the only sectoral source whose text is readable here, that it is the only one publishing a vigencia signal, that the signal comes in separate compilations (vigentes vs derogadas), and warns not to reduce that signal to a boolean. Missing auth/rate-limit or return-shape notes, but the behavioral quirks disclosed are substantive.

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 resource scope, then the differentiating traits, then the routing instruction. Dense with useful caveats and no filler, though the parenthetical about how to interpret the vigencia signal is a touch long.

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 4-param search tool with no output schema and no annotations, it covers scope, sibling routing, and the key vigencia caveat. An agent has enough to call it correctly; only return format details are absent, which is a minor gap.

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%, so all four parameters are already documented, including the compilacion enum and the anio default behavior. The description adds the meaning of the vigencia signal in the results, but does not extend parameter syntax beyond the schema. Baseline 3 is correct when the schema does the heavy lifting.

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 (resoluciones de la CREG) with the topical scope spelled out (tarifas, conexión, comercialización, plantas solares, gas natural). It also distinguishes itself from siblings by naming resolver_cita and referencing obtener_documento, so an agent can tell it apart without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'Para leyes o decretos nacionales de otros sectores usa resolver_cita,' and points to obtener_documento(fuente="creg") as the way to read full text. This is clear when-to-use and when-to-use-something-else guidance.

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

buscar_unificadoBuscar en varias fuentes a la vezA

Busca en paralelo en Gestor Normativo, Corte Constitucional, SUIN-Juriscol y DIAN, y agrega los resultados con su fuente y su enlace (con perfil "salud" añade INVIMA y Supersalud; con "mineria", la ANM). Úsala cuando la consulta es abierta o por materia y no hay herramienta obvia; para una cita exacta sigue siendo mejor resolver_cita y para un tribunal concreto, su buscador propio. Cada resultado declara su fuente; la vigencia de SUIN se rotula SEGÚN EL BUSCADOR y no es la ficha oficial. Cuando la fuente sirve su texto, cada resultado trae "Para leer", la llamada lista a obtener_documento. Con formato="json" devuelve un objeto con fecha_consulta, alcance, texto, resultados (cada uno con su "Para leer" cuando existe), sin_resultados, fallidas y avisos.

ParametersJSON Schema
NameRequiredDescriptionDefault
textoYesTérminos a buscar, ej. "teletrabajo"
limiteNoCuántos resultados por fuente (máximo 30)
perfilNoPerfil sectorial: prioriza la fuente que mejor responde a ese sector (tributario → DIAN; salud → INVIMA y Supersalud; mineria → ANM)
formatoNoSalida: "markdown" (texto legible, por defecto) o "json" (un objeto con fecha_consulta, alcance, texto, resultados, sin_resultados, fallidas y avisos, sin cabecera ni pie)markdown
fuentesNoFuentes a consultar; sin él se usan todas menos DIAN (que va con perfil=tributario)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries real weight: it discloses parallel execution, per-source attribution ('cada resultado declara su fuente'), the important caveat that SUIN vigencia is labeled 'SEGÚN EL BUSCADOR' and is not the official ficha, the profile-dependent source expansion, and the 'Para leer' handoff to obtener_documento. It does not address rate limits or explicitly state read-only nature, but for a search tool the behavioral picture is strong.

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

Conciseness4/5

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

Purpose and the source list are front-loaded, followed by routing guidance and output behavior. It is a dense single paragraph, but every clause (profiles, vigencia caveat, json shape) earns its place with little padding.

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 5-parameter tool with no output schema and no annotations, the description compensates well: it explains the json return object fields (fecha_consulta, alcance, texto, resultados, sin_resultados, fallidas, avisos) and the markdown-vs-json difference, so an agent knows what to expect from either format.

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 baseline is 3, and most param detail in the description (perfil union of sectors, fuentes default excluding DIAN, formato json field list) is duplicated from the schema field descriptions. The description adds only marginal meaning beyond what the schema already documents.

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 (busca) and resource (múltiples fuentes jurídicas nombradas: Gestor Normativo, Corte Constitucional, SUIN-Juriscol, DIAN), and explicitly distinguishes itself from siblings by naming resolver_cita for exact citations and 'su buscador propio' for a specific tribunal. An agent can pick this apart from the individual source tools without opening any schema.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use ('cuando la consulta es abierta o por materia y no hay herramienta obvia') plus when-not/alternatives ('para una cita exacta sigue siendo mejor resolver_cita', 'para un tribunal concreto, su buscador propio'). Routing is unambiguous for the sibling list provided.

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

cambios_desdeCambios registrados sobre normas desde una fechaA

Resume los cambios (modificación, derogación, adición) que el Gestor anota sobre LAS NORMAS QUE SE LISTAN, filtrándolos por el año de la norma modificadora. NO rastrea novedades automáticamente ni descubre normas nuevas.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeYesFecha AAAA-MM-DD; se filtra por el AÑO de la norma modificadora
normasYesCitas de normas a revisar, ej. ["Ley 909 de 2004"]

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals two critical traits: the date input is filtered by the YEAR of the modifying norm (not exact date), and the tool does not discover or track new norms automatically. This goes beyond the schema and helps avoid misuse, though it doesn't describe the return format.

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

Conciseness5/5

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

The description is two sentences with no redundant wording. The first sentence front-loads the core purpose, and the second adds a crucial limitation. Every word earns its place, making it highly concise and well-structured.

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

Completeness4/5

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

The description covers purpose, parameters, and key behavioral limitations. Since there is no output schema, the description could benefit from a brief note about the return format, but for a tool with only two simple parameters and clear schema descriptions, it is largely complete. The explicit inclusion of change types (modification, repeal, addition) adds useful context.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters fully documented in the input schema (e.g., 'desde' states 'se filtra por el AÑO de la norma modificadora'). The description adds no additional param semantics beyond reinforcing that only listed norms are considered, so 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?

The description clearly states the tool's function: 'Resume los cambios' (summarizes changes: modification, repeal, addition) on explicitly listed norms. It also distinguishes its scope by stating it does NOT automatically track novelties or discover new norms, differentiating it from sibling tools that search or retrieve norms.

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

Usage Guidelines4/5

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

The description implies when to use the tool: when you have a specific list of norms and want changes since a date. The negative statement 'NO rastrea novedades automáticamente ni descubre normas nuevas' provides a clear exclusion, though it does not name alternative tools. This gives better guidance than no context, but lacks explicit references to siblings.

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

comparar_articulosComparar dos artículos de normas distintasA

Compara el texto de un artículo entre dos normas, marca lo añadido y lo eliminado, clasifica cada diferencia por patrones de texto (plazo, sanción, excepción, sujeto obligado, prohibición u obligación) y detecta cambios editoriales por similitud léxica (Dice bigramas, ≥0,92); lo que no encaja se marca «revisar manualmente». Con con_reforma=true no hace falta la segunda norma: busca la última reforma que el portal anota al artículo, extrae el artículo de la norma modificadora y lo contrasta con el texto vigente (la página consolida; no publica la redacción anterior). Sin modelo semántico.

ParametersJSON Schema
NameRequiredDescriptionDefault
norma_aYesCita de la norma base, ej. "Ley 909 de 2004"
norma_bNoCita de la segunda norma, ej. "Decreto 1083 de 2015"; no se usa con con_reforma=true
articulo_aYesNúmero del artículo de la norma base, ej. "31"
articulo_bNoNúmero de artículo de la segunda norma; no se usa con con_reforma=true
con_reformaNotrue: compara el artículo contra la última reforma que el portal le anota (no pidas norma_b)

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the classification taxonomy, the Dice bigram similarity threshold (≥0.92), the 'revisar manualmente' fallback for unmatched text, the absence of a semantic model, and a key limitation — that the portal consolidates text and does not publish the prior wording, so the comparison is against the last reform rather than a full history.

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 action and efficient overall, but the single dense paragraph with multiple parenthetical asides is slightly run-on and could be split for easier 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?

No output schema exists, and the description compensates by describing the result content (marked diffs, classification, manual-review flag) and the con_reforma caveat. It stops short of specifying the response structure, which leaves a small gap for a tool with no output schema.

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 the baseline is 3, but the description adds real meaning beyond the schema by clarifying that norma_b/articulo_b are unused under con_reforma=true and what that flag actually triggers (locating the last annotated reform and extracting the modifying article).

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 (compare one article's text across two norms) and further specifies the output behavior: marking additions/deletions, classifying differences, and flagging unmatched cases. This is clearly distinct from sibling tools like buscar_normas or historial_norma, which retrieve rather than diff.

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 explains the two operating modes and when each applies: default two-norm comparison, or con_reforma=true when only one norm is available. It does not name sibling alternatives or state when NOT to use this tool, so it falls short of a full 5.

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

consultar_perfilConsultar un perfil sectorial preconfiguradoA

Ejecuta la consulta con las fuentes y los filtros preconfigurados de un perfil sectorial (laboral, tributario, ambiental, contratación estatal o energía) y devuelve los resultados con el sector y la advertencia del perfil, que es lo que declara sus límites. NO uses un perfil para lo que no cubre: si la materia es otra, usa buscar_normas o resolver_cita.

ParametersJSON Schema
NameRequiredDescriptionDefault
textoYesConsulta dentro del perfil, ej. "teletrabajo"
limiteNoCuántos resultados devolver (máximo 20; por defecto 10)
perfilYesId del perfil, de describir_fuentes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full disclosure burden. It adds useful behavior (results include the sector and an 'advertencia' that declares the profile's limits) and a scoping constraint, but says nothing about permissions, pagination, or mutation/read semantics.

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

Conciseness5/5

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

Two tight sentences with the core action front-loaded and the usage guardrail immediately after; every clause earns its place with 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 and no annotations, the description covers purpose, the routing rule, and partially what the call returns (sector + advertencia). It is nearly complete for a 3-parameter read tool, though richer return/error behavior would push it higher.

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 texto, limite and perfil are already documented, including the enum and the 1-20 range. The description adds no syntax or format detail beyond what the schema provides, 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 verb ('Ejecuta la consulta') plus the resource (fuentes y filtros preconfigurados de un perfil sectorial) and even enumerates the five sector values. An agent can distinguish it from the many buscar_* siblings without opening any schema.

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

Usage Guidelines5/5

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

Explicitly gives the when-not condition ('NO uses un perfil para lo que no cubre: si la materia es otra') and names the concrete alternatives, buscar_normas and resolver_cita. This is a textbook routing instruction.

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

consultar_por_jerarquiaConsultar normativa por nivel de autoridadA

Busca normativa colombiana por nivel de autoridad (constitución, ley, decreto, resolución, concepto o jurisprudencia) y explica el carácter de cada nivel: vinculante, orientador o informativo. Devuelve los documentos de ese nivel con su título y su enlace, y el carácter del nivel. ÚSALA cuando la pregunta pida un nivel concreto (p. ej. "¿qué leyes hay sobre X?"); para buscar sin nivel usa buscar_normas o buscar_por_tema. No es asesoría jurídica: verifica siempre en el enlace.

ParametersJSON Schema
NameRequiredDescriptionDefault
nivelYesNivel de autoridad: constitución, ley, decreto, resolución, concepto o jurisprudencia
textoYesTérminos a buscar dentro del nivel, ej. "teletrabajo"
limiteNoCuántos documentos devolver (máximo 20; por defecto 10)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full transparency burden. It discloses the output composition (documents with title and link, plus the character of the level), explains that levels are classified as vinculante/orientador/informativo, and adds a caveat that it is not legal advice and to verify on the link. It omits edge behaviors like pagination or no-result handling, but it gives substantial behavioral context beyond the schema.

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

Conciseness5/5

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

The description is concise and well structured: three sentences lead with the core action, then describe the output, then give usage direction and a caveat. Every sentence adds value with no filler or repetition.

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

Completeness4/5

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

Given there is no output schema, the description properly explains what is returned (documents with title, link, and level character) and covers legal caveats. It also provides usage alternatives. Minor gaps remain about result ordering and no-result behavior, but the description is largely complete for a search tool of this complexity.

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

Parameters3/5

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

The schema already covers 100% of the parameters, so the baseline is 3. The description restates the 'nivel' options and explains the character of each level, but it does not add new meaning to 'texto' or 'limite' beyond what their schema descriptions already provide.

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 opens with a specific verb and resource: 'Busca normativa colombiana por nivel de autoridad', lists the exact levels allowed, and states the returned data (documents with title, link, and level character). It also explicitly contrasts with sibling tools by saying 'para buscar sin nivel usa buscar_normas o buscar_por_tema', so it clearly distinguishes itself from siblings.

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

Usage Guidelines5/5

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

The description contains explicit when-to-use guidance: 'ÚSALA cuando la pregunta pida un nivel concreto' and gives the alternative: 'para buscar sin nivel usa buscar_normas o buscar_por_tema'. This is direct, actionable, and names specific sibling tools as alternatives.

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

consultar_vigenciaConsultar la vigencia de una normaA

Devuelve el estado de vigencia de una norma ("Vigente", "Derogado", "Vigencia en Estudio", "Compilado"... tal como lo publica la ficha de SUIN, para leyes y decretos) con un nivel de confianza: alta (la ficha respondió) o baja (no consta, o la fuente no respondió). Una sentencia ("C-337/11") no se consulta en SUIN: se verifica en la relatoría de la Corte Constitucional y se dice si existe. Nunca inventa el estado: si no consta, lo dice y orienta. La respuesta encabeza con la línea de alcance (qué fuente se consultó y cuál no).

ParametersJSON Schema
NameRequiredDescriptionDefault
citaYesCita de la norma, ej. "Ley 909 de 2004" o "Decreto 1072 de 2015"

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses two confidence tiers (alta/baja), a no-fabrication guarantee ('Nunca inventa el estado'), the response leading with a scope line, and source-failure behavior. It stops short of describing latency or rate characteristics.

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

Conciseness3/5

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

Front-loaded with the core purpose, but the single dense paragraph stacks parentheticals and multiple asides (status list, confidence, sentence exception, no-fabrication rule, scope line) that make it harder to scan than it needs to be.

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 one-param read tool with no output schema, the description adequately explains what comes back: status values, confidence level, and the leading scope line stating which source was and wasn't consulted. Little an agent needs to call it correctly is missing.

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

Parameters3/5

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

One required param with 100% schema description coverage, so the schema already documents the cita format with examples. The description's mention of 'C-337/11' adds marginal domain context but no syntax or format detail beyond the schema; baseline 3 applies.

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: 'Devuelve el estado de vigencia de una norma' with the exact enum-like values (Vigente, Derogado, etc.). It clarifies the domain edge (laws/decrees in SUIN, not sentences), though it never names a sibling tool by name for differentiation.

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 a clear when-not case: a sentencia like 'C-337/11' is not looked up in SUIN but verified in the Corte Constitucional relatoría. However, it gives no guidance on choosing between this and sibling tools like historial_norma or buscar_en_suin for the norm case.

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

describir_fuentesQué cubre este MCP, y qué noA

Declara el alcance real: qué fuente responde cada pregunta, qué NO está cubierto y con qué fecha se generaron los índices que viajan empaquetados. Úsala ANTES de concluir que algo "no existe" a partir de una búsqueda vacía, y para saber si el índice de vigencia sigue fresco. No consulta la red. Con el parámetro fuente devuelve SOLO el alcance de esa fuente, que es lo que suele hacer falta; sin él, el cuadro completo, que es largo.

ParametersJSON Schema
NameRequiredDescriptionDefault
fuenteNoClave de una sola fuente ("creg", "suin", "sic"…). Sin ella se devuelven todas.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations, so the description carries the burden. It states 'No consulta la red' (a real behavioral trait an agent needs), discloses that the full output is long, and that results are pre-packaged indexes with a generation date. It does not describe the response shape or performance, but the safety/behavioral profile is well covered.

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, then usage guidance, then a note about behavior. Four tight sentences, each earning its place. The final clause about the full table being 'largo' is slightly redundant but useful for output-size expectations.

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, no-output-schema, metadata-listing tool with no annotations, the description covers purpose, when to use, network behavior, and the parameter's effect. The only gap is that it does not hint at the return structure (e.g., that it lists per-source coverage and index dates), which is minor given no output schema requirement.

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 the baseline is 3, but the description adds genuinely useful semantics: passing `fuente` returns ONLY that source's scope, which the description notes is what is typically needed, versus the long full table without it. That is practical guidance beyond the enum/description in 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 and object ('Declara el alcance real: qué fuente responde cada pregunta') and clearly distinguishes itself from the many buscar_* siblings by declaring it is about coverage scope, not retrieval. An agent can tell what this tool does versus buscar_por_tema or buscar_unificado without opening the schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it: 'Úsala ANTES de concluir que algo "no existe" a partir de una búsqueda vacía' and to check index freshness. It also gives the selection rule for the parameter. This is exactly the when/when-not guidance the dimension rewards.

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

expedienteExpediente temporal de investigaciónA

Crea, agrega, lee o exporta un expediente para agrupar consultas, citas y observaciones de una investigación. Se activa con EXPEDIENTES=1 (DESACTIVADO por defecto). En memoria es TEMPORAL (expira según EXPEDIENTES_TTL_MS; por defecto no expira); con EXPEDIENTES_DIR persiste en disco y sobrevive a reinicios. accion="crear" devuelve el id; "agregar" guarda una entrada en la sección de un expediente YA CREADO; "leer" lo devuelve agrupado; "exportar" lo escribe como markdown en la ruta pedida.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoId del expediente (obligatorio para agregar, leer y exportar)
rutaNoDónde escribir la exportación: un archivo o un directorio (solo accion="exportar")
campoNoSección donde guardar la entrada (solo accion="agregar")
textoNoContenido de la entrada a guardar (solo accion="agregar")
accionYesQué hacer: crear un expediente, agregar una entrada, leer su contenido o exportarlo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses the env-var gating, the temporary in-memory mode with TTL expiry, the persistence mode via EXPEDIENTES_DIR that survives restarts, and per-action side effects (crear returns id, exportar writes markdown). It still omits error behavior (e.g. agregar to a missing id) and any permission details beyond the activation flag.

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?

It is front-loaded with the purpose, then configuration, then the action semantics, so the reader gets the gist immediately. The prose is dense but every clause adds operational information; only the env-var detail is slightly buried mid-sentence.

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 stateful, multi-action tool with no output schema, the description covers persistence, lifespan and the return of each action, which is what the agent most needs. Remaining gaps are minor: exact shape of 'leer' output and failure modes are unspecified.

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 schema already documents id, ruta, campo, texto and accion, including their per-action applicability. The description largely restates these constraints (id required for agregar/leer/exportar, ruta only for exportar) and adds little beyond the schema, 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?

The description names the concrete resource (un expediente) and enumerates the four specific verbs it supports (crear, agregar, leer, exportar), each with its effect explained. It is unmistakably distinct from the sibling set, which are all stateless search/lookup 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?

It gives real usage context: the tool is disabled by default (EXPEDIENTES=1) and 'agregar' only works against an 'expediente YA CREADO'. However, it never frames when an agent should reach for this tool rather than, say, just answering, nor does it name any exclusion.

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

explicar_relacion_temaExplicar por qué una norma aplica a un subtemaA

Devuelve el "restrictor": el extracto que explica por qué esa norma es pertinente para ESE subtema en concreto. Ambos identificadores deben salir de la MISMA fila de buscar_por_tema, y el temsubid va con su prefijo ("ts-38872"): un id de listar_catalogos (catalogo="subtemas") o de otros catálogos se rechaza aquí. Para ver todos los restrictores de una norma de una vez, usa obtener_documento con fuente="gestor" y mira su bloque "Temas asociados".

ParametersJSON Schema
NameRequiredDescriptionDefault
normidYesnormid de la misma fila de buscar_por_tema
temsubidYestemsubid de buscar_por_tema, con su prefijo: "ts-38872"

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose meaningful validation behavior: it rejects temsubid values sourced from listar_catalogos or other catalogs. It also reveals the coupling requirement between the two ids. It stops short of describing output format or failure modes in depth, but covers the key behavioral constraint well.

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 return value before constraints and the alternative. Dense and largely waste-free, though the parenthetical prefix example and the alternative tool reference add some length.

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 two-parameter tool with no output schema or annotations, the description supplies the essential context: what it returns, where the ids come from, what gets rejected, and an alternative for bulk retrieval. It is close to complete, with only return structure left implicit.

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 the baseline is 3, but the description adds real meaning: it specifies the temsubid prefix format ("ts-38872") and, crucially, the cross-parameter constraint that both ids must originate from the same buscar_por_tema row, which the schema does not convey.

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 returns the "restrictor", defined inline as the extract explaining why a norm is pertinent to a specific subtopic. This is clearly distinguishable from siblings like buscar_por_tema and obtener_documento, which it explicitly references.

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

Usage Guidelines5/5

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

Explicit when-to-use: both identifiers must come from the SAME row of buscar_por_tema. It names the alternative (obtener_documento with fuente="gestor") and its purpose, and states an explicit exclusion (ids from listar_catalogos are rejected here).

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

historial_normaHistorial de reformas de una normaA

Devuelve la cadena de reformas que el Gestor anota sobre una norma: qué norma la modificó, adicionó, derogó, sustituyó... y qué artículo afectó cada cambio, con la nota literal citable. Las ordena por el año de la norma que introduce cada cambio (las notas sin año van al final, sin ordenar) y señala la última reforma ANOTADA, que no es necesariamente la que rige: el portal no siempre anota todas las reformas. La vigencia se consulta con resolver_cita. Con formato="json" devuelve {fecha_consulta, alcance, titulo, url, total, cambios, ultima_reforma, avisos}, solo el objeto.

ParametersJSON Schema
NameRequiredDescriptionDefault
citaYesCita de la norma, ej. "Ley 100 de 1993"
desdeNoCuántos cambios saltarse antes de empezar (los demás no caben en la respuesta)
limiteNoCuántos cambios mostrar (hasta 100)
formatoNoSalida: "markdown" (texto legible, por defecto) o "json" (solo el objeto de datos, sin cabecera ni pie)markdown
articuloNoFiltra a las notas de reforma de ese artículo de la norma (ej. "6"); sin él se devuelven todas

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses ordering behavior (by year, undated notes last and unordered), the crucial caveat that the last ANNOTATED reform is not necessarily the one in force, and that the portal may not annotate all reforms. It omits any auth/rate-limit or failure-mode context, but for a read operation this is rich disclosure.

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, then layered with ordering rules, the caveat, and the alternative. Dense but every sentence carries functional information; only the JSON field enumeration is slightly verbose.

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, but the description compensates by describing the JSON object structure and the ordering/warning semantics. Combined with 100% parameter coverage, an agent has nearly everything needed to invoke and interpret the result.

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 schema already documents cita, desde, limite, formato and articulo, making 3 the baseline. The description adds the JSON return shape for formato="json", but adds no extra syntax or semantics for the other parameters.

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: returns the chain of reforms the Gestor annotates on a norm, with per-article detail and literal citable notes. It is clearly distinguishable from siblings, notably resolver_cita, which it names for the vigencia query.

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 vigencia use case to resolver_cita and frames this tool as the reform-history source, which is strong context. It does not spell out a full when-not-to-use boundary, so it falls just short of the top score.

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

linea_jurisprudencialLínea jurisprudencial: quién cita una sentenciaA

Devuelve las providencias que la relatoría registra como CITANTES de una sentencia de la Corte Constitucional (el bloque "citaciones" de su ficha oficial), con tipo, fecha, tema, la ruta para obtener_documento y el enlace, en cabeza las SU y las C. Son citas, no una línea verificada: la respuesta repite que mencionar no es reiterar y que la relación puede estar incompleta. La sentencia se identifica con la relatoría, con su ponente y su fecha tal como los da la ficha.

ParametersJSON Schema
NameRequiredDescriptionDefault
limiteNoCuántas providencias citantes mostrar (hasta 100)
sentenciaYesCita de la sentencia, ej. "C-337/11", "T-099/24" o "SU-371/21"

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses the returned fields (tipo, fecha, tema, ruta para obtener_documento, enlace), the ordering (SU and C first), and a strong reliability caveat that mentionar no es reiterar and the relation may be incomplete. It does not cover permissions, rate limits, or pagination behavior.

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

Conciseness4/5

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

The key output is front-loaded in the first clause, and the caveat sentences about citations vs. verified lines are substantive rather than filler. Sentences are long and dense, but every element earns its place.

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 describe return contents, and it does so thoroughly (fields, ordering, route/link to the document). For a read-only two-parameter tool with no annotations, the main remaining gap is that the limite/pagination behavior and the read-only nature are only implied.

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%, so both parameters are already documented (sentencia with format examples, limite with bounds). The description adds only the identification convention (relatoría + ponente + fecha) and says nothing about the limite parameter, so it does not meaningfully exceed 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 precise verb and resource: it returns the providencias the relatoría registers as CITANTES of a Corte Constitucional sentencia, and even names the underlying data block ("citaciones"). This clearly separates it from generic search tools like buscar_jurisprudencia and from obtener_documento, which it references only as a downstream route.

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 conveys the intended context (consult who cites a given sentence) and warns that the result is citations, not a verified 'línea'. However, it never states when to prefer this over siblings such as buscar_jurisprudencia or resolver_cita, so the routing decision is left largely implicit.

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

listar_catalogosListar catálogos de búsquedaA

Valores válidos para los filtros de buscar_normas: tipos de documento, años, entidades y temas, más los subtemas de un tema (subtemas con tema_id), los conceptos de Función Pública (conceptos_fp con numero/anio) y el listado curado del DAFP (normas_fp). En temas el filtro es obligatorio por volumen, y sus ids llevan prefijo ("tema-24457") porque el portal tiene tres taxonomías que reutilizan los mismos números. OJO CON EL ALCANCE: estos catálogos son SOLO del Gestor Normativo de Función Pública y solo sirven en buscar_normas; no cubren la DIAN (su normograma está en buscar_normativa_tributaria), ni SUIN-Juriscol, ni las tres altas cortes. Que "DIAN" no aparezca entre las entidades no significa que no haya normativa suya: significa que el Gestor no la cataloga como entidad emisora.

ParametersJSON Schema
NameRequiredDescriptionDefault
anioNoAño del concepto (solo catalogo="conceptos_fp")
desdeNo
filtroNoTexto para filtrar; obligatorio en "temas"
limiteNo
numeroNoNúmero del concepto (solo catalogo="conceptos_fp")
tema_idNoId del tema (solo catalogo="subtemas"), con prefijo "tema-…"
catalogoYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the scope boundary (only Gestor Normativo de Función Pública, only valid for buscar_normas), the mandatory filter for 'temas', the prefixed id format, and a non-obvious caveat that DIAN's absence from 'entidades' is a cataloging choice rather than a data gap. It does not address pagination behavior (desde/limite) or response shape, leaving a modest gap.

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 dense but front-loaded: it opens with what the tool returns, then constraints, then scope warnings. The closing DIAN caveat is somewhat repetitive in its phrasing, but each sentence carries actionable information rather than filler.

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

Completeness4/5

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

For a 7-parameter catalog tool with no annotations and no output schema, the description is nearly complete: catalog-to-parameter mapping, mandatory-filter rules, id conventions, and scope limits are all covered. The only omission is pagination behavior for desde/limite, which is minor.

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 57%, so the description must compensate, and it does: it maps each catalogo value to its companion parameters (subtemas uses tema_id, conceptos_fp uses numero/anio), states that filtro is obligatory for 'temas', and explains the 'tema-' prefix convention. Only desde and limite remain undocumented in both places.

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

Purpose5/5

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

The description states a specific verb and resource: it returns the valid values for the filters of buscar_normas, enumerating the catalog types (tipos, anios, entidades, temas, subtemas, conceptos_fp, normas_fp). It also explicitly distinguishes itself from siblings, naming buscar_normativa_tributaria as the correct tool for DIAN material and excluding SUIN-Juriscol and the high courts.

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

Usage Guidelines5/5

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

It states when to use it (to obtain valid filter values for buscar_normas), when not to (does not cover DIAN, SUIN-Juriscol, or the three high courts), and names the alternative tool for the DIAN case. It even flags the mandatory-filter condition for 'temas', which is usage guidance in itself.

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

listar_normativa_ambiental_anlaNormativa ambiental clasificada por la ANLAA

La ANLA mantiene en su sistema "Eureka" una CURADURÍA de la normativa nacional que aplica al licenciamiento ambiental, agrupada por tema. Lo que aporta es la CLASIFICACIÓN, no documentos nuevos: casi todo lo que lista son leyes y decretos que resolver_cita ya resuelve mejor, con texto completo y con vigencia. Úsala para descubrir QUÉ normas aplican a un tema ambiental, y resuelve cada una con resolver_cita.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeNoEureka pagina sola y con distinto tamaño según la sección: no lo calcules, usa el que dice la respuesta
textoNoFiltra las entradas de esa sección por título o resumen
seccionNoleyes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool provides classification, not new documents, and implies it lacks full-text and validity data by stating resolver_cita handles those. It does not detail output format or pagination behavior, but it does a good job of setting expectations for a curated list tool.

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

Conciseness4/5

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

The description is three focused sentences with no filler. It front-loads the source and classification purpose, states what the tool does not provide, and gives a clear usage directive. The heavy use of caps is slightly noisy but does not detract from clarity.

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

Completeness4/5

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

Given the lack of annotations and output schema, the description provides sufficient context for a list/discovery tool: it explains the curation source, the limitation (no new documents), and the relationship to resolver_cita. It does not describe the response structure, but the purpose is simple enough that the description, together with the schema, sets adequate context.

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

Parameters3/5

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

The schema already describes 'desde' and 'texto' (67% coverage), so the description need not repeat them. However, the description adds no parameter-specific meaning and does not compensate for the undocumented 'seccion' property beyond the title's theme focus. 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?

The description states a clear, specific purpose: it lists environmental regulations classified by ANLA/Eureka. It explicitly says 'Lo que aporta es la CLASIFICACIÓN, no documentos nuevos' and instructs the agent to use it 'para descubrir QUÉ normas aplican a un tema ambiental,' clearly distinguishing it from siblings like resolver_cita.

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

Usage Guidelines5/5

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

It gives explicit guidance: use this tool to discover which regulations apply to an environmental topic, and then use resolver_cita to resolve each one. It names the alternative tool and explains why resolver_cita is better for full text and validity, making the when-to-use decision unambiguous.

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

obtener_documentoObtener el texto de un documento por fuenteA

Devuelve el texto (troceado, nunca entero) de una de las siete fuentes con texto. CADA FUENTE EXIGE LO SUYO y los parámetros de otra no valen con ella: gestor necesita id; corte, ruta; suprema, ruta y sala; consejo, token; dian, link; creg, ruta; sectorial, entidad y url. Una combinación que no encaje se rechaza antes de salir a la red, diciendo qué falta y el ejemplo mínimo que funciona. Dentro del texto: buscar_en_texto localiza un término, articulo (gestor) o seccion (corte, suprema, consejo) una parte puntual, e historial (gestor) los cambios anotados. Respeta limite_caracteres (200–40.000, por defecto 8000), informa total/mostrado/omitido y devuelve el "desde" exacto del trozo siguiente.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSolo gestor: id numérico de la norma
urlNoSolo sectorial: enlace del acto a leer, tal como lo devuelve buscar_normativa_sectorial
linkNoSolo dian: nombre del archivo, ej. "decreto_1625_2016.htm"
rutaNocorte/suprema/creg: ruta del documento
salaNoSolo suprema: la MISMA sala con la que se encontró
desdeNo
tokenNoSolo consejo: token que devuelve buscar_jurisprudencia_consejo_estado
enteroNoEn vez de trocear, escribe el documento a disco y devuelve la ruta con un trozo del texto
fuenteYesDe qué fuente sale el documento
entidadNoSolo sectorial: id del regulador (los lista buscar_normativa_sectorial)
seccionNoSolo corte, suprema y consejo: devuelve solo esa parte de la providencia. "consideraciones" es la motivación de la MAYORÍA; "salvamentos" y "aclaraciones" son los votos particulares, que NO son doctrina de la Sala.
articuloNoSolo gestor: número de artículo
historialNoSolo gestor: en vez del texto, devuelve los cambios anotados sobre la norma
sin_temasNoSolo gestor: omite el bloque de temas asociados (ahorra contexto cuando solo se quiere el articulado)
max_pasajesNoMáximo de pasajes con buscar_en_texto (por defecto 10)
ruta_destinoNoCarpeta donde guardar el archivo (con entero o para descargar el PDF/Word sin devolver texto)
buscar_en_textoNoDevuelve solo los fragmentos que mencionan este término
limite_caracteresNoTope del TEXTO devuelto; se ajusta al rango 200–40.000

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: chunked-not-whole returns, validation failure before the network with a stated missing-parameter and a working minimal example, total/shown/omitted reporting, the exact 'desde' cursor for the next chunk, and the disk-write alternative via 'entero'.

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 behavior and the source-parameter matrix, then the return-metadata contract. Dense but every clause carries information; the liberal ALL-CAPS emphasis is stylistic noise rather than waste.

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 an 18-parameter, no-annotation, no-output-schema tool, the description covers invocation rules per source, error behavior, and return shape including pagination. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 94%, so the per-parameter meanings are already documented with 'Solo X' prefixes. The description usefully synthesizes the source-to-parameter matrix in one place, but adds little semantic detail beyond what the schema fields already state.

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 resource (devuelve el texto de un documento) and immediately constrains scope: 'troceado, nunca entero'. It enumerates the seven sources and distinguishes the tool from siblings by defining exactly which source each invocation targets.

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 explicit per-source parameter requirements ('gestor necesita id; corte, ruta; suprema, ruta y sala...') and states that mismatched combinations are rejected before network access. It implies but does not explicitly state the workflow position relative to siblings like buscar_normas, so routing guidance is strong but not fully spelled out.

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

resolver_citaResolver una cita normativaA

Ruta rápida y exacta para citas como "Ley 909 de 2004", "Decreto 1083", "C-337/11" o "artículo 6 de la Ley 1221 de 2008". Úsala SIEMPRE que la pregunta mencione una norma concreta: el buscador por palabras es impreciso. Los CÓDIGOS se citan por su nombre ("art. 191 del Código de Comercio", "art. 164 del CPACA") y la respuesta dice contra qué norma se resolvió. Acepta un LOTE con citas (["Ley 909 de 2004", "C-337/11"]), que resuelve cada una en una sola llamada, y varios ARTÍCULOS de la MISMA norma con articulos (["705", "710"]) y cita apuntando a la norma: se descarga una vez y la ficha no se repite.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoEnlace a comprobar (solo con validar=true)
citaNoEj.: "Ley 909 de 2004", "C-337/11", "art. 6 de la Ley 1221 de 2008", "art. 191 del Código de Comercio"
citasNoVarias citas a la vez, ej. ["Ley 909 de 2004", "C-337/11"]: cada una se resuelve y se devuelve con su enlace
formatoNoSolo con validar=true: "json" devuelve el resultado como objeto (fecha_consulta, y por cita: resultado, comprobaciones, titulo, url, nota), sin cabecera ni pie, para encadenarlo sin releer texto.
validarNoEn vez de la resolución, comprueba que la cita (y el enlace, si se da con url) coincide con lo que devuelve el Gestor: número/año, dominio y artículo. Clasifica en "cita validada", "parcialmente validada" o "no fue posible validar". NUNCA afirma vigencia.
contextoNoPor defecto true. Con false se omite el extracto de tema asociado y queda solo la identificación, la vigencia y el texto pedido.
articulosNoVarios artículos de la MISMA norma en una sola llamada, ej. ["705", "707", "710"]. Se usa con cita apuntando a la norma ("Decreto Ley 624 de 1989"); la norma se descarga una vez y se extrae cada artículo.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It adds useful context about batch resolution and avoiding repeated downloads for multiple articles, but it does not describe permissions, read-only nature, error behavior, or the validation mode, which is only covered in the schema.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and usage rule, and every sentence has a practical function. It is dense but not bloated, though the multiple examples and batching explanation make it slightly longer than strictly necessary.

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

Completeness4/5

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

Given the rich schema descriptions, the description is complete enough for an agent to select and invoke the tool correctly. It covers purpose, usage routing, batch behavior, and article extraction, but omits the validation mode and does not compensate for the absence of annotations with broader behavioral context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters, including examples, defaults, and the validar/formato/contexto behavior. The description reinforces the batch citas and articulos patterns, but adds little parameter meaning beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb and resource: resolving legal citations such as laws, decrees, and rulings. It distinguishes this from imprecise word-based search and gives concrete citation examples, so an agent can identify the tool's purpose without opening the 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?

It gives an explicit usage condition: use it whenever the question mentions a concrete norm, because word search is imprecise. It also explains batch citations and multiple articles from the same norm. However, it does not name a specific sibling tool as the alternative and gives no explicit when-not condition.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.15.1
    • Changedanalizar_conflicto1 field changed
      • addedInput schema / properties / formato
        Added value: +{
        +  "default": "markdown",
        +  "description": "Salida: \"markdown\" (texto legible, por defecto) o \"json\" (un objeto con fecha_consulta, alcance, evidencias y avisos, sin cabecera ni pie)",
        +  "enum": [
        +    "markdown",
        +    "json"
        +  ],
        +  "type": "string"
        +}
    • Addedbuscar_diario_oficial
    • Changedbuscar_jurisprudencia1 field changed
      • changedInput schema / properties / tipos / description
        Previous value: -"Tipos a incluir; por defecto C, T y SU (doctrina). Los autos (A) son mayoría por volumen y suelen ser trámite: pídelos explícitamente."New value: +"Tipos a incluir; por defecto C, T y SU (doctrina). Los autos (A) son mayoría por volumen y suelen ser trámite: pídelos explícitamente. Se aceptan sus nombres: \"tutela\", \"constitucionalidad\", \"unificacion\", \"auto\"."
    • Changedbuscar_unificado1 field changed
      • addedInput schema / properties / formato
        Added value: +{
        +  "default": "markdown",
        +  "description": "Salida: \"markdown\" (texto legible, por defecto) o \"json\" (un objeto con fecha_consulta, alcance, texto, resultados, sin_resultados, fallidas y avisos, sin cabecera ni pie)",
        +  "enum": [
        +    "markdown",
        +    "json"
        +  ],
        +  "type": "string"
        +}
    • Changedcomparar_articulos6 fields changed
      • changedInput schema / properties / articulo_a / description
        Previous value: -"Número de artículo de la primera norma, ej. \"12\""New value: +"Número del artículo de la norma base, ej. \"31\""
      • changedInput schema / properties / articulo_b / description
        Previous value: -"Número de artículo de la segunda norma, ej. \"12\""New value: +"Número de artículo de la segunda norma; no se usa con con_reforma=true"
      • addedInput schema / properties / con_reforma
        Added value: +{
        +  "default": false,
        +  "description": "true: compara el artículo contra la última reforma que el portal le anota (no pidas norma_b)",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / norma_a / description
        Previous value: -"Cita de la primera norma, ej. \"Ley 909 de 2004\""New value: +"Cita de la norma base, ej. \"Ley 909 de 2004\""
      • changedInput schema / properties / norma_b / description
        Previous value: -"Cita de la segunda norma, ej. \"Decreto 1083 de 2015\""New value: +"Cita de la segunda norma, ej. \"Decreto 1083 de 2015\"; no se usa con con_reforma=true"
      • changedInput schema / required
        Previous value: -[
        -  "norma_a",
        -  "articulo_a",
        -  "norma_b",
        -  "articulo_b"
        -]New value: +[
        +  "norma_a",
        +  "articulo_a"
        +]
    • Changeddescribir_fuentes1 field changed
      • changedInput schema / properties / fuente / enum
        Previous value: -[
        -  "gestor",
        -  "corte-constitucional",
        -  "corte-suprema",
        -  "consejo-de-estado",
        -  "dian",
        -  "suin",
        -  "creg",
        -  "anh",
        -  "upme",
        -  "anla",
        -  "minagricultura",
        -  "ica",
        -  "anm",
        -  "ant",
        -  "supersociedades",
        -  "sic",
        -  "invima",
        -  "superfinanciera",
        -  "supersalud",
        -  "mintrabajo",
        -  "supertransporte",
        -  "unidadvictimas",
        -  "parques",
        -  "corte",
        -  "suprema",
        -  "consejo"
        -]New value: +[
        +  "gestor",
        +  "corte-constitucional",
        +  "corte-suprema",
        +  "consejo-de-estado",
        +  "dian",
        +  "suin",
        +  "senado",
        +  "diario",
        +  "creg",
        +  "anh",
        +  "upme",
        +  "anla",
        +  "minagricultura",
        +  "ica",
        +  "anm",
        +  "ant",
        +  "supersociedades",
        +  "sic",
        +  "invima",
        +  "superfinanciera",
        +  "supersalud",
        +  "mintrabajo",
        +  "supertransporte",
        +  "unidadvictimas",
        +  "parques",
        +  "corte",
        +  "suprema",
        +  "consejo"
        +]
    • Changedexplicar_relacion_tema1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "normid"
        -]New value: +[
        +  "temsubid",
        +  "normid"
        +]
    • Changedhistorial_norma2 fields changed
      • changedInput schema / properties / articulo / description
        Previous value: -"Filtra a los cambios que afectaron ese artículo (ej. \"6\"); sin él se devuelven todos"New value: +"Filtra a las notas de reforma de ese artículo de la norma (ej. \"6\"); sin él se devuelven todas"
      • addedInput schema / properties / formato
        Added value: +{
        +  "default": "markdown",
        +  "description": "Salida: \"markdown\" (texto legible, por defecto) o \"json\" (solo el objeto de datos, sin cabecera ni pie)",
        +  "enum": [
        +    "markdown",
        +    "json"
        +  ],
        +  "type": "string"
        +}
    • Addedlinea_jurisprudencial
    • Changedresolver_cita1 field changed
      • addedInput schema / properties / formato
        Added value: +{
        +  "description": "Solo con validar=true: \"json\" devuelve el resultado como objeto (fecha_consulta, y por cita: resultado, comprobaciones, titulo, url, nota), sin cabecera ni pie, para encadenarlo sin releer texto.",
        +  "enum": [
        +    "markdown",
        +    "json"
        +  ],
        +  "type": "string"
        +}
  2. 9 tool updatesv1.14.0
    • Changedbuscar_jurisprudencia1 field changed
      • changedInput schema / properties / tipos / description
        Previous value: -"Tipos a incluir. Por defecto C, T y SU (doctrina). Los autos (A) son mayoría por volumen y suelen ser trámite, así que hay que pedirlos explícitamente: [\"A\"] o [\"C\",\"T\",\"SU\",\"A\"]."New value: +"Tipos a incluir; por defecto C, T y SU (doctrina). Los autos (A) son mayoría por volumen y suelen ser trámite: pídelos explícitamente."
    • Changedbuscar_jurisprudencia_consejo_estado1 field changed
      • changedInput schema / properties / exacto / description
        Previous value: -"Buscar la frase exacta (entre comillas en el buscador SAMAI). Viene activado; si la frase no aparece en la página, se amplía solo a OR con un aviso. Ponlo en false para ampliar a propósito."New value: +"Frase exacta en SAMAI (activado); si no aparece, se amplía solo a OR con aviso. Ponlo en false para ampliar a propósito."
    • Changedbuscar_jurisprudencia_suprema1 field changed
      • changedInput schema / properties / exacto / description
        Previous value: -"Buscar la frase exacta; viene activado. Con exacto=false el buscador une las palabras con OR y \"despido sin justa causa\" devuelve 176.012 providencias contra 20.233 con la frase: en la sala Penal ese modo llega a 33.607 resultados y es inservible. Ponlo en false solo para ampliar a propósito una búsqueda que quedó corta."New value: +"Frase exacta (activado). Con false el buscador une con OR: \"despido sin justa causa\" pasa de 20.233 a 176.012 providencias y en la sala Penal es inservible. Ponlo en false solo para ampliar a propósito."
    • Changedbuscar_normas1 field changed
      • changedInput schema / properties / tipo_documento / description
        Previous value: -"Nombre o id: \"Ley\", \"Decreto\", \"Sentencia\", \"Concepto\""New value: +"Nombre o id del catálogo de tipos del Gestor: \"Ley\", \"Decreto\", \"Resolución\", \"Concepto\". Uno que no esté se rechaza con la lista, sin buscar"
    • Changedbuscar_normativa_sectorial1 field changed
      • changedInput schema / properties / solo_entidad / description
        Previous value: -"Solo INVIMA/Supersalud: limita a los actos de los tipos que la propia entidad expide (Resolución, Circular...), excluyendo la compilación sectorial del normograma (leyes, decretos del Ministerio, sentencias)."New value: +"Solo INVIMA/Supersalud: excluye la compilación sectorial del normograma (leyes, decretos y sentencias) y deja solo los actos que la entidad expide (Resolución, Circular…)."
    • Changedconsultar_perfil2 fields changed
      • changedInput schema / properties / perfil / description
        Previous value: -"Id del perfil: laboral, tributario, ambiental, contratacion_estatal, energia"New value: +"Id del perfil, de describir_fuentes"
      • addedInput schema / properties / perfil / enum
        Added value: +[
        +  "laboral",
        +  "tributario",
        +  "ambiental",
        +  "contratacion_estatal",
        +  "energia"
        +]
    • Changeddescribir_fuentes1 field changed
      • addedInput schema / properties / fuente / enum
        Added value: +[
        +  "gestor",
        +  "corte-constitucional",
        +  "corte-suprema",
        +  "consejo-de-estado",
        +  "dian",
        +  "suin",
        +  "creg",
        +  "anh",
        +  "upme",
        +  "anla",
        +  "minagricultura",
        +  "ica",
        +  "anm",
        +  "ant",
        +  "supersociedades",
        +  "sic",
        +  "invima",
        +  "superfinanciera",
        +  "supersalud",
        +  "mintrabajo",
        +  "supertransporte",
        +  "unidadvictimas",
        +  "parques",
        +  "corte",
        +  "suprema",
        +  "consejo"
        +]
    • Changedobtener_documento2 fields changed
      • changedInput schema / properties / seccion / description
        Previous value: -"Solo corte: devuelve solo esa parte de la providencia"New value: +"Solo corte, suprema y consejo: devuelve solo esa parte de la providencia. \"consideraciones\" es la motivación de la MAYORÍA; \"salvamentos\" y \"aclaraciones\" son los votos particulares, que NO son doctrina de la Sala."
      • changedInput schema / properties / seccion / enum
        Previous value: -[
        -  "antecedentes",
        -  "consideraciones",
        -  "decision"
        -]New value: +[
        +  "encabezado",
        +  "antecedentes",
        +  "consideraciones",
        +  "decision",
        +  "salvamentos",
        +  "aclaraciones",
        +  "notas"
        +]
    • Changedresolver_cita1 field changed
      • changedInput schema / properties / contexto / description
        Previous value: -"Por defecto true. Con false se omite el extracto de tema asociado y se devuelve solo la identificación, la vigencia y el texto pedido. Útil cuando ya se conoce la norma y solo se quiere el articulado."New value: +"Por defecto true. Con false se omite el extracto de tema asociado y queda solo la identificación, la vigencia y el texto pedido."
  3. 7 tool updatesv1.13.0
    • Changedbuscar_jurisprudencia_consejo_estado1 field changed
      • addedInput schema / properties / exacto
        Added value: +{
        +  "default": true,
        +  "description": "Buscar la frase exacta (entre comillas en el buscador SAMAI). Viene activado; si la frase no aparece en la página, se amplía solo a OR con un aviso. Ponlo en false para ampliar a propósito.",
        +  "type": "boolean"
        +}
    • Changedbuscar_normativa_sectorial1 field changed
      • addedInput schema / properties / solo_entidad
        Added value: +{
        +  "description": "Solo INVIMA/Supersalud: limita a los actos de los tipos que la propia entidad expide (Resolución, Circular...), excluyendo la compilación sectorial del normograma (leyes, decretos del Ministerio, sentencias).",
        +  "type": "boolean"
        +}
    • Changedbuscar_unificado3 fields changed
      • changedInput schema / properties / fuentes / items / enum
        Previous value: -[
        -  "gestor",
        -  "corte",
        -  "suin",
        -  "dian"
        -]New value: +[
        +  "gestor",
        +  "corte",
        +  "suin",
        +  "dian",
        +  "invima",
        +  "supersalud",
        +  "anm"
        +]
      • changedInput schema / properties / perfil / description
        Previous value: -"Perfil sectorial: prioriza la fuente que mejor responde a ese sector (tributario → DIAN)"New value: +"Perfil sectorial: prioriza la fuente que mejor responde a ese sector (tributario → DIAN; salud → INVIMA y Supersalud; mineria → ANM)"
      • changedInput schema / properties / perfil / enum
        Previous value: -[
        -  "laboral",
        -  "tributario",
        -  "ambiental",
        -  "contratacion",
        -  "energia"
        -]New value: +[
        +  "laboral",
        +  "tributario",
        +  "ambiental",
        +  "contratacion",
        +  "energia",
        +  "salud",
        +  "mineria"
        +]
    • Addedconsultar_vigencia
    • Addedhistorial_norma
    • Changedobtener_documento1 field changed
      • addedInput schema / properties / sin_temas
        Added value: +{
        +  "description": "Solo gestor: omite el bloque de temas asociados (ahorra contexto cuando solo se quiere el articulado)",
        +  "type": "boolean"
        +}
    • Changedresolver_cita3 fields changed
      • addedInput schema / properties / articulos
        Added value: +{
        +  "description": "Varios artículos de la MISMA norma en una sola llamada, ej. [\"705\", \"707\", \"710\"]. Se usa con cita apuntando a la norma (\"Decreto Ley 624 de 1989\"); la norma se descarga una vez y se extrae cada artículo.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / cita / description
        Previous value: -"Ej.: \"Ley 909 de 2004\", \"C-337/11\", \"art. 6 de la Ley 1221 de 2008\""New value: +"Ej.: \"Ley 909 de 2004\", \"C-337/11\", \"art. 6 de la Ley 1221 de 2008\", \"art. 191 del Código de Comercio\""
      • addedInput schema / properties / contexto
        Added value: +{
        +  "description": "Por defecto true. Con false se omite el extracto de tema asociado y se devuelve solo la identificación, la vigencia y el texto pedido. Útil cuando ya se conoce la norma y solo se quiere el articulado.",
        +  "type": "boolean"
        +}
  4. 20 tool updatesv1.11.2
    • Removedbuscar_conceptos_fp
    • Changedbuscar_normas1 field changed
      • changedInput schema / properties / subtema / description
        Previous value: -"id de listar_subtemas con prefijo (\"sub-38968\"), o su nombre si además indicas tema. El \"ts-\" de buscar_por_tema no vale aquí."New value: +"id de listar_catalogos con catalogo=\"subtemas\" y prefijo (\"sub-38968\"), o su nombre si además indicas tema. El \"ts-\" de buscar_por_tema no vale aquí."
    • Changedbuscar_normativa_sectorial2 fields changed
      • addedInput schema / properties / categoria
        Added value: +{
        +  "description": "Tipo de acto o categoría (cada fuente declara cuáles soporta; solo Unidad de Víctimas lo filtra hoy)",
        +  "type": "string"
        +}
      • changedInput schema / properties / entidad / enum
        Previous value: -[
        -  "minagricultura",
        -  "ica",
        -  "anm",
        -  "supersociedades",
        -  "sic",
        -  "invima",
        -  "superfinanciera",
        -  "mintrabajo",
        -  "supertransporte",
        -  "parques"
        -]New value: +[
        +  "minagricultura",
        +  "ica",
        +  "anm",
        +  "ant",
        +  "supersociedades",
        +  "sic",
        +  "invima",
        +  "superfinanciera",
        +  "supersalud",
        +  "mintrabajo",
        +  "supertransporte",
        +  "unidadvictimas",
        +  "parques"
        +]
    • Addedbuscar_unificado
    • Addedexpediente
    • Removedexpediente_agregar
    • Removedexpediente_crear
    • Removedexpediente_leer
    • Changedlistar_catalogos5 fields changed
      • addedInput schema / properties / anio
        Added value: +{
        +  "description": "Año del concepto (solo catalogo=\"conceptos_fp\")",
        +  "type": "string"
        +}
      • changedInput schema / properties / catalogo / enum
        Previous value: -[
        -  "tipos",
        -  "anios",
        -  "entidades",
        -  "temas"
        -]New value: +[
        +  "tipos",
        +  "anios",
        +  "entidades",
        +  "temas",
        +  "subtemas",
        +  "conceptos_fp",
        +  "normas_fp"
        +]
      • addedInput schema / properties / desde
        Added value: +{
        +  "default": 0,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / numero
        Added value: +{
        +  "description": "Número del concepto (solo catalogo=\"conceptos_fp\")",
        +  "type": "string"
        +}
      • addedInput schema / properties / tema_id
        Added value: +{
        +  "description": "Id del tema (solo catalogo=\"subtemas\"), con prefijo \"tema-…\"",
        +  "type": "string"
        +}
    • Removedlistar_normas_fp
    • Removedlistar_subtemas
    • Addedobtener_documento
    • Removedobtener_documento_dian
    • Removedobtener_norma
    • Removedobtener_providencia_consejo_estado
    • Removedobtener_providencia_suprema
    • Removedobtener_resolucion_creg
    • Removedobtener_sentencia
    • Changedresolver_cita4 fields changed
      • addedInput schema / properties / citas
        Added value: +{
        +  "description": "Varias citas a la vez, ej. [\"Ley 909 de 2004\", \"C-337/11\"]: cada una se resuelve y se devuelve con su enlace",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / url
        Added value: +{
        +  "description": "Enlace a comprobar (solo con validar=true)",
        +  "type": "string"
        +}
      • addedInput schema / properties / validar
        Added value: +{
        +  "description": "En vez de la resolución, comprueba que la cita (y el enlace, si se da con url) coincide con lo que devuelve el Gestor: número/año, dominio y artículo. Clasifica en \"cita validada\", \"parcialmente validada\" o \"no fue posible validar\". NUNCA afirma vigencia.",
        +  "type": "boolean"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "cita"
        -]
    • Removedvalidar_cita
  5. 11 tool updatesv1.10.2
    • Changedbuscar_conceptos_fp1 field changed
      • addedInput schema / properties / limite / description
        Added value: +"Cuántos conceptos mostrar (hasta 100; por defecto 20)"
    • Changedbuscar_jurisprudencia1 field changed
      • addedInput schema / properties / limite / description
        Added value: +"Cuántas providencias mostrar (hasta 100)"
    • Changedbuscar_resoluciones_creg1 field changed
      • addedInput schema / properties / limite / description
        Added value: +"Cuántas resoluciones mostrar (hasta 50)"
    • Changedconsultar_perfil1 field changed
      • addedInput schema / properties / limite / description
        Added value: +"Cuántos resultados devolver (máximo 20; por defecto 10)"
    • Changedconsultar_por_jerarquia1 field changed
      • addedInput schema / properties / limite / description
        Added value: +"Cuántos documentos devolver (máximo 20; por defecto 10)"
    • Changedexpediente_agregar3 fields changed
      • addedInput schema / properties / campo / description
        Added value: +"Sección del expediente donde se guarda la entrada"
      • changedInput schema / properties / id / description
        Previous value: -"Id devuelto por expediente_crear"New value: +"Id que devuelve expediente_crear; debe existir y no haber expirado"
      • addedInput schema / properties / texto / description
        Added value: +"Contenido de la entrada a guardar, tal cual"
    • Changedexpediente_leer1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id que devuelve expediente_crear; debe existir y no haber expirado"
    • Changedobtener_documento_dian1 field changed
      • addedInput schema / properties / max_pasajes / description
        Added value: +"Máximo de pasajes con buscar_en_texto (por defecto 10)"
    • Changedobtener_providencia_consejo_estado1 field changed
      • addedInput schema / properties / max_pasajes / description
        Added value: +"Máximo de pasajes con buscar_en_texto (por defecto 10)"
    • Changedobtener_providencia_suprema1 field changed
      • addedInput schema / properties / max_pasajes / description
        Added value: +"Máximo de pasajes con buscar_en_texto (por defecto 10)"
    • Changedobtener_resolucion_creg1 field changed
      • addedInput schema / properties / max_pasajes / description
        Added value: +"Máximo de pasajes con buscar_en_texto (por defecto 10)"
  6. 9 tool updatesv1.10.1
    • Addedanalizar_conflicto
    • Addedcambios_desde
    • Addedcomparar_articulos
    • Addedconsultar_perfil
    • Addedconsultar_por_jerarquia
    • Addedexpediente_agregar
    • Addedexpediente_crear
    • Addedexpediente_leer
    • Addedvalidar_cita
  7. 15 tool updatesv1.9.0
    • Changedbuscar_jurisprudencia_consejo_estado3 fields changed
      • changedInput schema / properties / limite / description
        Previous value: -"El buscador entrega páginas de 9 como máximo"New value: +"Cuántas mostrar de la página (hasta 10)"
      • changedInput schema / properties / limite / maximum
        Previous value: -9New value: +10
      • addedInput schema / properties / pagina
        Added value: +{
        +  "default": 1,
        +  "description": "Página de resultados, desde 1. SAMAI pagina en bloques de ~10 y no admite un desplazamiento libre, por eso aquí se pide la página y no el \"desde\" del resto de herramientas.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedbuscar_jurisprudencia_suprema2 fields changed
      • changedInput schema / properties / exacto / default
        Previous value: -falseNew value: +true
      • changedInput schema / properties / exacto / description
        Previous value: -"Buscar la frase exacta. MUY recomendable con frases: sin esto el buscador une las palabras con OR y \"despido sin justa causa\" devuelve 176.012 providencias contra 20.233 con exacto=true."New value: +"Buscar la frase exacta; viene activado. Con exacto=false el buscador une las palabras con OR y \"despido sin justa causa\" devuelve 176.012 providencias contra 20.233 con la frase: en la sala Penal ese modo llega a 33.607 resultados y es inservible. Ponlo en false solo para ampliar a propósito una búsqueda que quedó corta."
    • Changedbuscar_normas2 fields changed
      • changedInput schema / properties / subtema / description
        Previous value: -"subtemaid de listar_subtemas, o su nombre si además indicas tema. NO sirve el temsubid de buscar_por_tema."New value: +"id de listar_subtemas con prefijo (\"sub-38968\"), o su nombre si además indicas tema. El \"ts-\" de buscar_por_tema no vale aquí."
      • changedInput schema / properties / tema / description
        Previous value: -"Nombre o id de tema del catálogo"New value: +"Nombre del tema, o su id de listar_catalogos con prefijo: \"tema-24457\""
    • Addedbuscar_normativa_anh
    • Addedbuscar_normativa_sectorial
    • Addedbuscar_normativa_upme
    • Addedbuscar_resoluciones_creg
    • Addeddescribir_fuentes
    • Changedexplicar_relacion_tema3 fields changed
      • changedInput schema / properties / temsubid / description
        Previous value: -"temsubid de buscar_por_tema (no vale el id de listar_subtemas)"New value: +"temsubid de buscar_por_tema, con su prefijo: \"ts-38872\""
      • removedInput schema / properties / temsubid / pattern
        Removed value: -"^\\d+$"
      • changedInput schema / required
        Previous value: -[
        -  "temsubid",
        -  "normid"
        -]New value: +[
        +  "normid"
        +]
    • Addedlistar_normativa_ambiental_anla
    • Changedlistar_subtemas3 fields changed
      • changedInput schema / properties / tema_id / description
        Previous value: -"id de tema del catálogo, como texto"New value: +"id de tema de listar_catalogos, con su prefijo: \"tema-24457\""
      • removedInput schema / properties / tema_id / pattern
        Removed value: -"^\\d+$"
      • removedInput schema / required
        Removed value: -[
        -  "tema_id"
        -]
    • Addedobtener_providencia_consejo_estado
    • Addedobtener_providencia_suprema
    • Addedobtener_resolucion_creg
    • Changedobtener_sentencia1 field changed
      • changedInput schema / properties / seccion / description
        Previous value: -"Devuelve solo esa parte. \"decision\" trae el RESUELVE, que es lo que casi siempre se busca: en la T-099/24 son 39.906 caracteres en vez de 140.162."New value: +"Devuelve solo esa parte. \"decision\" trae el RESUELVE, que es lo que casi siempre se busca y suele ser una fracción del texto; la respuesta dice cuántos caracteres son de cuántos."
  8. 16 tool updatesv1.6.0
    • First observedbuscar_conceptos_fp
    • First observedbuscar_en_suin
    • First observedbuscar_jurisprudencia
    • First observedbuscar_jurisprudencia_consejo_estado
    • First observedbuscar_jurisprudencia_suprema
    • First observedbuscar_normas
    • First observedbuscar_normativa_tributaria
    • First observedbuscar_por_tema
    • First observedexplicar_relacion_tema
    • First observedlistar_catalogos
    • First observedlistar_normas_fp
    • First observedlistar_subtemas
    • First observedobtener_documento_dian
    • First observedobtener_norma
    • First observedobtener_sentencia
    • First observedresolver_cita

TDQS

A3.7/5.0

Scored across 28 tools

Disambiguation2/5

Hay muchas herramientas de búsqueda solapadas: buscar_normas, buscar_por_tema, buscar_unificado, buscar_en_suin, buscar_jurisprudencia y las búsquedas sectoriales compiten entre sí según fuente o enfoque. Aunque las descripciones explican cada matiz, el agente debe leer textos muy largos para elegir correctamente y varias fronteras siguen siendo borrosas.

Naming Consistency3/5

La mayoría de nombres usa verbo en infinitivo + objeto en español, pero hay verbos mezclados (buscar, listar, resolver, explicar, consultar, obtener) y varios nombres empiezan por sustantivo, como linea_jurisprudencial, historial_norma o expediente. El conjunto sigue siendo legible, pero no mantiene un patrón uniforme.

Tool Count2/5

Veintiocho herramientas es un número excesivo para el propósito aparente, aunque el dominio abarque múltiples fuentes jurídicas colombianas. La superficie se vuelve pesada y obliga a una carga de selección alta, más cercana a un catálogo exhaustivo que a un conjunto bien acotado.

Completeness4/5

El conjunto cubre búsqueda, resolución de citas, vigencia, historial normativo, comparación de artículos, obtención de texto y expedientes para varias fuentes relevantes de Colombia. Faltan o quedan limitados algunos accesos documentales directos en fuentes sectoriales, pero en general la cobertura es amplia y permite trabajar de punta a punta.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers