npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cedula360-mcp

v1.16.0

Published

Servidor MCP de Cédula 360 — verificación de información pública oficial colombiana (ADRES, Rama Judicial, DIAN, RUES, sanciones/PEP, Legal IA, MiniMax) vía tu API key c360_live_*.

Readme

cedula360-mcp

Servidor MCP (Model Context Protocol) de Cédula 360 — verificación de información pública oficial colombiana (ADRES, Rama Judicial, DIAN, RUES, SECOP, sanciones/PEP), Asistente Legal IA, MiniMax, OSINT (huella digital pública), envío de SMS y TerminalForge (orquestación de 14 agentes IA de terminal) — expuesto como 68 herramientas para LLMs y CLIs (Claude Code, OpenCode, Cursor, Cline, Windsurf…), usando tu misma API key c360_live_* (planes Premium+).

Genera tu API key en https://cedula360.tech/#api.

Uso

Remoto (recomendado, sin instalar nada)

Ya está hospedado en https://mcp.cedula360.tech/mcp (Streamable HTTP):

claude mcp add --transport http cedula360 https://mcp.cedula360.tech/mcp \
  --header "X-API-Key: c360_live_TU_KEY"

Local (stdio) — este paquete

# Claude Code
claude mcp add cedula360 -e CEDULA360_API_KEY=c360_live_TU_KEY -- npx -y cedula360-mcp
// Cursor / Cline / Windsurf / Continue (mcp.json)
{
  "mcpServers": {
    "cedula360": {
      "command": "npx",
      "args": ["-y", "cedula360-mcp"],
      "env": { "CEDULA360_API_KEY": "c360_live_TU_KEY" }
    }
  }
}

Variables de entorno

| Variable | Descripción | Default | |---|---|---| | CEDULA360_API_KEY | Tu API key c360_live_* (modo stdio) | — (requerida) | | CEDULA360_API_BASE | Base de la API REST | https://cedula360.tech/api | | TERMINALFORGE_API_BASE | Base de la API de TerminalForge | https://terminalforge.alexanderoviedofadul.dev/api/v1 | | MCP_HTTP | 1 para modo Streamable HTTP remoto | (stdio) | | MCP_PORT | Puerto en modo HTTP | 8133 |

Herramientas

Las 68, por grupos:

Verificación y fuentes oficiales
consultar, radicado, dian_rut, rues, dominio, telefono, ip, estado_cedula, simit, samai, emplazados, abogado, abogado_antecedentes, sanciones, exportar, gating

Asistente legal y jurisprudencia
legal_preguntar, legal_buscar, legal_fuente, corte_sentencias, corte_pretensiones, corte_derechos

Términos procesales (desde v1.13.0)
terminos_vencimiento, terminos_festivos, terminos_habiles_entre

Anonimización de datos personales (desde v1.14.0)
habeas_anonimizar, habeas_detectar, habeas_re_renderizar, habeas_revertir, habeas_modelos, habeas_salud

Documentos y correo (desde v1.12.0)
pdf_comprimir, pdf_operacion, pdf_a_texto, pdf_comparar, documento_inspeccionar, correo_analizar

OSINT (huella digital pública)
osint_leer, osint_buscar, osint_github_email, osint_youtube_transcribir

MiniMax multimodal
minimax_buscar, minimax_chat, minimax_imagen

Mensajería
enviar_sms, sms_saldo

Orquestación TerminalForge
tf_listar_agentes, tf_ejecutar_agente, tf_estado_job

Orquestación multiagente (desde v1.15.0)
orquesta_consultar, orquesta_complejidad, orquesta_agentes, orquesta_especialistas, orquesta_meta_analisis, orquesta_etica

Litigio por especialidad (desde v1.16.0)
litigios_especialidades, litigios_skill, litigios_articulo, litigios_normas, litigios_terminos, litigios_fases, litigios_documento, litigios_evaluar, litigios_consultar

Tu cuenta
mi_perfil, mi_uso, alertas_listar, alertas_crear

⚠️ Esta lista se mantiene contra el código: backend/tests/unit/mcpReadme.test.js falla si el servidor declara una herramienta que aquí no está, o al revés. El README llegó a tener 20 herramientas sin mencionar acumuladas en varias versiones — y es la primera cosa que lee quien instala el paquete.

Justicia y ejercicio profesional (desde v1.9.0)

| Tool | Qué responde | Coste | |---|---|---| | samai | Procesos contencioso-administrativos del Consejo de Estado (segunda instancia), por radicado o parte procesal — lo que el CPNU de la Rama Judicial no muestra | Gratis, ~1 s | | emplazados | Emplazamientos del Art. 108 del CGP: la citación pública a quien no se pudo notificar en persona. Quien no comparece termina con curador ad litem | Premium+, ~25-60 s | | abogado | Vigencia de la tarjeta profesional (Registro Nacional de Abogados del CSJ): inscripción, número y estado de la TPA, domicilio profesional | Gratis, ~8 s | | abogado_antecedentes | Sanciones disciplinarias vigentes ante la CNDJ. Una tarjeta vigente no descarta una suspensión encima | Premium+, ~25 s |

⚠️ En emplazados y abogado_antecedentes, un success:false significa «no se pudo comprobar», nunca «no tiene». Ambos portales usan reCAPTCHA v3 por puntaje y pueden rechazar la consulta; convertir ese fallo en un resultado negativo sería afirmar algo que no se verificó.

enviar_sms es la única herramienta con efectos secundarios y costo (envía un SMS real vía LabsMobile, consume 1 de la cuota mensual + créditos). Requiere plan de pago (personal en adelante). Las demás son de lectura/consulta. sms_saldo reporta los créditos disponibles y no consume cuota.

Las herramientas tf_* orquestan los 14 agentes IA de terminal de TerminalForge (claude, anthropic, zai GLM-5.3, minimax MiniMax-M3, opencode, gemini, codex, deepseek CodeWhale, kimi, vibe, abacusai, mmx, mini-agent, agy) con la misma API key — redacción jurídica, extracción JSON, análisis, con fallback automático y modo sync/async.

El gating por plan se respeta dentro de cada herramienta (Legal=Business+, MiniMax=Enterprise+, TerminalForge=Premium+). Cada salida de IA legal es un borrador para revisión profesional, no asesoría jurídica autónoma.

Términos procesales (desde v1.13.0)

| Tool | Qué responde | |---|---| | terminos_vencimiento | Vencimiento de un término con el calendario oficial de festivos y, opcional, el judicial (vacancia 20-dic a 10-ene, Semana Santa, 17-dic). Hasta 200 términos por llamada = 1 consulta | | terminos_festivos | Festivos del año con su nombre y de qué fecha vienen si la Ley Emiliani los movió · hábiles por mes · tramos de vacancia. Sin cuota | | terminos_habiles_entre | Días hábiles entre dos fechas, con la cuenta civil y la judicial |

🔴 No calcules términos por tu cuenta. El día de partida no cuenta (CGP art. 118), los festivos se trasladan al lunes (Ley 51 de 1983) y la Ley 2578 de 2026 añadió el 9 de julio: 2026 tiene 19 festivos y 242 días hábiles. Un término mal calculado no da error — vence otro día.

⚠️ Si aviso_vacancia no es null, el término atraviesa vacancia judicial y hay dos fechas posibles según si el despacho tiene vacaciones colectivas. Da las dos; elegir una es decidir con un dato que la API no tiene.

Anonimización de datos personales (desde v1.14.0)

| Tool | Qué hace | |---|---| | habeas_anonimizar | Sustituye nombres, cédula, radicado, teléfono, dirección, correo y fecha de nacimiento por pseudónimos coherentes, y devuelve el mapeo reversible | | habeas_detectar | Cataloga el PII sin alterar el texto | | habeas_re_renderizar | Tapa a mano lo que el detector dejó pasar (sin cuota) | | habeas_revertir | Deshace la anonimización con su mapeo, con hash de custodia | | habeas_modelos | Qué modelos hay y cuáles salen de la máquina | | habeas_salud | Estado del servicio |

🔴 Antes de usar o mostrar el texto, lee entidades_no_reemplazadas. Si no está vacía, el documento NO está anonimizado: pasa cuando el detector marca un tramo más ancho que el dato (p. ej. «Apoderada Maria Fernanda Rojas») y el filtro lo descarta entero, dejando el nombre. Ciérralo con habeas_re_renderizar.

🔴 El mapeo es la llave para deshacer y no se guarda en el servidor: conviene conservarlo. Y no lo muestres junto al texto anonimizado — el mapeo contiene los originales, así que publicar los dos juntos anula el ejercicio.

El reconocimiento de nombres corre local: el texto no sale del servidor y la respuesta lo declara en salio_a_internet. ⚠️ Con sin_ner: true no se anonimizan los nombres.

⚠️ La anonimización automática es un borrador: un nombre con errata, un apodo o una firma escaneada no los ve ningún detector.

Litigio por especialidad del derecho colombiano (desde v1.16.0)

El portafolio litigioso colombiano como datos consultables: 8 especialidades, 29 cuerpos normativos con 10.109 artículos de texto literal, 35 skills forenses, 39 etapas procesales, 65 términos y 71 minutas de escritos. Todo determinista: ningún modelo interviene, y solo normativa colombiana.

| Tool | Qué hace | Coste | |---|---|---| | litigios_especialidades | Las 8 especialidades con su flujo, sus skills y sus normas clave | sin cuota | | litigios_skill | El skill de una clase de litigio, con sus 7 secciones separadas | sin cuota | | litigios_articulo | El texto literal de un artículo, con la vigencia de su norma | sin cuota | | litigios_normas | El catálogo de cuerpos normativos, o una búsqueda en su articulado | sin cuota | | litigios_terminos | Los términos de una especialidad, o el vencimiento de uno | catálogo sin cuota · cálculo 1 | | litigios_fases | Las etapas del proceso y qué documento toca en cada una | sin cuota | | litigios_documento | Genera el escrito de una especialidad y fase desde su minuta | catálogo sin cuota · generar 1 | | litigios_evaluar | Revisión de forma del escrito + la rúbrica del Factor Calidad del CSJ | 1 consulta | | litigios_consultar | Qué normas, términos, skills y escritos aplican a un caso | 1 consulta |

🔴 Tres cosas que un LLM presentará mal si nadie se lo impide, y por eso están en las descripciones de las tools:

  • vence: null no significa «no hay plazo». 13 de los 65 términos no se pueden calcular —los fija el juez, dependen de la etapa, se resuelven en estrados—, y la clase dice cuál es el caso. Decir «no tiene plazo» cuando el plazo lo fija el juez hace que nadie lo busque en el auto.
  • Los seis meses de la inmediatez de la tutela no son una fecha de vencimiento. SU-391/2016 dice expresamente que no es caducidad taxativa, así que llegan en referencia_orientativa: una tutela presentada más tarde puede admitirse si la demora se justifica.
  • Un escrito con completo: false no está listo para radicar, y los huecos no se rellenan a ojo: inventar el número de un radicado o de una autorización produce un documento que parece correcto y es falso.

Y litigios_articulo devuelve una lista, no un artículo: el articulado permanente y el transitorio comparten numeración, así que el artículo «1» de la Constitución tiene seis entradas y solo una es «Colombia es un Estado social de derecho».

Orquestación multiagente (desde v1.15.0)

Varios modelos de familias distintas —OpenAI, Google, Zhipu, Moonshot, DeepSeek, NVIDIA, Mistral, MiniMax y el Mentor jurídico con RAG sobre derecho colombiano— responden la misma consulta, y un agregador juzga cuál acertó y sintetiza. No es una cascada que prueba un modelo y salta al siguiente: es varios trabajando a la vez sobre la misma pregunta.

| Tool | Qué hace | Coste | |---|---|---| | orquesta_consultar | El flujo completo: análisis, enrutado, N modelos, síntesis, evaluación ética y traza | 1 consulta por LLAMADA, sea el modo que sea | | orquesta_complejidad | Dominio, complejidad y qué agentes atenderían, con el motivo de cada elección | sin cuota (cálculo local, sin tokens) | | orquesta_agentes | El registro de modelos con su estado y la fecha en que se verificó | sin cuota | | orquesta_especialistas | Las áreas del corpus jurídico y cuál señala una consulta | sin cuota | | orquesta_meta_analisis | Sintetiza hasta 8 respuestas que ya tienes y las juzga | 1 consulta | | orquesta_etica | Evalúa un texto contra el marco normativo colombiano de IA | 1 consulta |

Modos: rapido (1 agente) · equilibrado (3) · profundo (5 + evaluación ética + traza). Los tres desde plan Premium. El tope de agentes por modo es el freno del coste, no el contador de cuota: un MoA de cinco modelos cuesta 1 consulta, igual que terminos_vencimiento acepta 200 términos y cobra 1.

🔴 La respuesta es una SÍNTESIS de varios modelos, no un hecho verificado. El agregador es un juez único: si se equivoca al elegir, el error pasa íntegro a la respuesta final. Por eso la traza conserva lo que dijo cada agente por separado — se puede auditar en vez de creérsela.

🔴 Y si los agentes no coinciden, el sistema NO elige (desde v1.15.1). La respuesta empieza por el desacuerdo, con el reparto de quién sostiene cada cifra y la evidencia normativa del corpus filtrada a la norma citada; la síntesis del modelo va al final, marcada como no verificada. resuelto: false lo dice en un campo. El motivo está medido: en tres casos de disenso numérico el agregador eligió la cifra equivocada las tres veces, incluso con el reparto delante en su propio prompt. No se arregla votando — una mayoría también se equivoca en bloque — sino dejando de ocultar el desacuerdo.

🔴 En la evaluación ética, cumple vale true, false o null = NO COMPROBADO, y es null si cualquier criterio lo es. null no es «cumple» ni «no cumple»: tres de los seis criterios exigen entender el contenido y su contexto, y ningún mecanismo local puede decidirlos. Presentar un null como conforme es firmar algo que no se midió. Y sesgo_detectado vale true o null, nunca false: un léxico puede señalar una generalización, no puede certificar que un texto está libre de sesgo.

🔴 Un dato del dossier que diga «NO COMPROBADO» no es un «no». Con dossier se inyectan los datos oficiales de una cédula que ya estén en caché, y ahí tiene_actuaciones y esta_fallecido son tri-estado. Afirmar que un expediente «no tiene actuaciones» cuando la fuente no respondió puede costarle un término a un abogado.

⚠️ soberania: "local" usa solo modelos con pesos en disco, decidido por lo que el modelo es y no por su nombre. Compruébalo en traza.plan[].sale_a_internet antes de afirmárselo a nadie: de los modelos que un ollama list enseña, la mayoría corre en la nube y varios no lo dicen en el nombre.

⚠️ La evaluación final y la remediación ética PROPONEN, no sustituyen. Medido: un modelo reescribiendo lo que cinco habían acordado cambió «impugnación, tres días hábiles» —correcto— por «reposición, cinco días hábiles», que es falso. Sus propuestas van en la traza.

⚠️ Dos agentes se cobran aparte en Cédula 360 y exigen su plan: el Mentor jurídico (Business+) y MiniMax (Enterprise+). Cuando quedan fuera, la respuesta dice cuál y qué plan haría falta.

Es la capacidad de MALLO (MultiAgent LLM Orchestrator, MIT, © Alexander Oviedo Fadul) absorbida en Cédula 360: copia, no dependencia.

Documentos y correo (desde v1.12.0)

⚠️ pdf_comprimir y pdf_operacion devuelven métricas, no el binario: un base64 no sobrevive al truncado del transporte. Para el fichero, usa la API REST.

🔴 Comprimir puede agrandar: si el resultado no es menor se devuelve el original y aplicado vale false. Eso es la respuesta correcta, no un fallo.

🔴 En pdf_comparar el orden importa: url_original primero. Invertirlos no da error — da un informe que dice «agregado» donde se quitó. Y similitud_parrafos_pct es sobre párrafos, no sobre caracteres.

🔴 En correo_analizar, el campo de es texto libre que cualquiera escribe. Lo que vale es el bloque remitente, con lo que comprobó el servidor receptor. Un null ahí significa no comprobado, nunca «no autenticado».

Caché y frescura

Las consultas a fuentes oficiales usan una caché compartida entre todos los usuarios que no se borra nunca, pero sí envejece. Cada respuesta trae al principio un bloque _cache (se repite al final si la respuesta se trunca):

{
  "_cache": {
    "from_cache": true,
    "scraped_at": "2026-05-21T15:29:17.057Z",
    "cache_age_hours": 2100.16,
    "stale": true,
    "vencido": true,
    "refresh_pendiente": true,
    "aviso": "Estos datos se consultaron en las fuentes oficiales hace 88 días..."
  }
}
  • scraped_at es la fecha real de consulta a las fuentes. Es el campo que importa.
  • refrescar: true en consultar y radicado fuerza consulta en vivo: tarda 5-90 s y consume 1 de cuota. Úsalo cuando el usuario pida el estado de hoy o cuando el dato venga marcado vencido.
  • max_age_horas (solo consultar) marca el dato como desactualizado por encima de N horas, sin forzar la consulta.
  • Por encima de 30 días la API sirve la caché al instante y encola un refresco en segundo plano: la siguiente consulta trae datos frescos. Ese refresco no consume tu cuota.
  • Los cache hits no consumen cuota; solo la consumen las consultas que llegan a las fuentes.

TTL sugerido por tipo: 7 días para CC/NIT/CE/TI/PA/PL/TEL/EMAIL, 24 h para RAD (las actuaciones judiciales cambian a diario), 30 días para NOM/IP, 3 días para URL.

c360_live_* y c360_test_* comparten datos y caché: el prefijo organiza tus keys, no crea un sandbox.

Ejemplo (en lenguaje natural al LLM)

«Verifica la cédula 91520888 y dime si tiene procesos judiciales o aparece en listas de sanciones.» → el asistente encadena consultar + sanciones.

Documentación: https://cedula360.tech/#mcp

Licencia

MIT