Consulta leyes, artículos, jurisprudencia y precedentes desde una sola capa.
Ordina-engine es una API y capa de consulta para información jurídica pública mexicana.
Está pensada para una idea simple: que encontrar leyes, artículos, jurisprudencia y precedentes sea más fácil de consultar, integrar y reutilizar.
Unifica principalmente:
- catálogo de leyes y ordenamientos;
- jurisprudencia del Semanario Judicial de la Federación (SJF);
- artículos legales consultados mediante Jurislex;
- precedentes y ejecutorias del buscador jurídico de la SCJN.
Ordina sirve para:
- ubicar rápidamente una ley y sus identificadores de consulta;
- obtener artículos legales con un flujo más claro;
- buscar jurisprudencia del SJF y luego traer su detalle;
- consultar precedentes y ejecutorias de la SCJN desde una interfaz más uniforme;
- alimentar chats, GPTs, MCPs, scripts o aplicaciones jurídicas.
Las fuentes jurídicas públicas existen, pero suelen tener uno o varios de estos problemas:
- interfaces cambiantes;
- respuestas poco uniformes;
- flujos distintos entre cada fuente;
- mayor dificultad para integrarlas en asistentes, buscadores o automatizaciones.
Ordina-engine funciona como una capa más uniforme para consultar esas fuentes sin tener que aprender un flujo distinto para cada una.
No intenta sustituir las fuentes oficiales. Intenta hacerlas más fáciles de consultar y conectar.
Si quieres probarlo hoy mismo:
- Chat listo para usar: Ordina Chat
- Base URL de la API:
https://ordina-engine.vercel.app - Contrato principal:
openapi-ordina-hub.yaml
Ordina puede usarse de tres formas:
- como chat o GPT especializado;
- como API HTTP;
- como servidor MCP para Claude Desktop, Cursor, IDEs o agentes.
Qué obtienes con eso:
- una entrada más simple para consultar fuentes jurídicas públicas;
- un flujo más claro para leyes, artículos y jurisprudencia;
- una base reutilizable para asistentes, integraciones y automatizaciones.
Si vienes del mundo legal, lo más simple es empezar por el chat.
Si vienes del mundo técnico, empieza por /ley, openapi-ordina-hub.yaml o mcp_server.py.
La mayoría de consultas siguen este orden:
- buscar una norma con
/normas/buscarpara saber si conviene seguir porJurislex,SILo ambas; - si la norma está en Jurislex, usar
idLegislacionycategoriapara artículos; - si la norma sólo está en SIL o quieres navegar el documento completo, usar
/legislacion/*; - para jurisprudencia, buscar primero y luego consultar detalle por
ius.
Ejemplos típicos:
- “dame el artículo 123 constitucional”;
- “busca jurisprudencia sobre amparo indirecto”;
- “encuentra el Código Penal de Oaxaca”;
- “localiza precedentes sobre libertad de expresión”.
Notas útiles:
idLegislacionidentifica la ley específica;categoriadefine la ruta de consulta en Jurislex;- para evitar errores, primero consulta
/leyy después usa esos valores en/jurislex/articulos/*; - si el artículo tiene formato especial, por ejemplo
167-B, conviene buscar primero por el número base.
GET /healthGET /health/deep
Ejemplo:
{
"status": "ok",
"service": "Ordina-engine"
}Sirve para localizar una ley y obtener los identificadores que luego se usan en Jurislex.
Este suele ser el primer endpoint que debes usar.
GET /ley?id=<int>GET /ley?categoria=<int>GET /ley?nombre=<texto>
Ejemplo:
curl --get "https://ordina-engine.vercel.app/ley" \
--data-urlencode "nombre=constitución"Este es el flujo recomendado para legislación cuando no sabes de antemano si una norma está mejor cubierta por Jurislex o por SIL.
GET /normas/buscarPOST /normas/buscar
Ejemplo:
curl --get "https://ordina-engine.vercel.app/normas/buscar" \
--data-urlencode "nombre=ley de amparo"La respuesta indica:
- si la norma existe en
jurislex; - si también existe en
sil; - cuál es la
rutaSugeridapara el siguiente paso.
Si ya sabes el nombre de la norma y el artículo que necesitas, Ordina puede decidir automáticamente si consultar Jurislex o SIL.
GET /normas/articulos/buscarPOST /normas/articulos/buscar
Ejemplo por nombre de norma y artículo:
curl --get "https://ordina-engine.vercel.app/normas/articulos/buscar" \
--data-urlencode "nombre=Ley de los Derechos de las Personas Adultas Mayores" \
--data-urlencode "articulo=50"Ejemplo con filtros SIL:
curl --get "https://ordina-engine.vercel.app/normas/articulos/buscar" \
--data-urlencode "nombre=Ley General del Sistema de Medios de Impugnacion en Materia Electoral" \
--data-urlencode "articulo=40" \
--data-urlencode "categoriaOrdenamiento=LEY" \
--data-urlencode "ambito=FEDERAL"Si quieres una sola respuesta homogénea con libro, titulo, capitulo y el texto del artículo, usa:
GET /normas/articulos/detallePOST /normas/articulos/detalle
Ejemplos:
curl --get "https://ordina-engine.vercel.app/normas/articulos/detalle" \
--data-urlencode "nombre=Ley de los Derechos de las Personas Adultas Mayores" \
--data-urlencode "articulo=50"curl --get "https://ordina-engine.vercel.app/normas/articulos/detalle" \
--data-urlencode "nombre=Ley General del Sistema de Medios de Impugnacion en Materia Electoral" \
--data-urlencode "articulo=40" \
--data-urlencode "categoriaOrdenamiento=LEY" \
--data-urlencode "ambito=FEDERAL"Búsqueda:
GET /jurisprudencia/buscar?q=<término>&page=0&size=10POST /jurisprudencia/buscar
Detalle:
GET /jurisprudencia/detalle?ius=<número>
El detalle también soporta debug=true para revisar intentos y URLs cuando el upstream del SJF responde de forma inconsistente.
Ejemplo:
curl --get "https://ordina-engine.vercel.app/jurisprudencia/buscar" \
--data-urlencode "q=amparo" \
--data-urlencode "page=0" \
--data-urlencode "size=3"Para artículos, normalmente el flujo correcto es:
- resolver la ley con
/ley; - buscar coincidencias con
/jurislex/articulos/buscar; - pedir detalle con
/jurislex/articulos/detalle.
Búsqueda:
GET /jurislex/articulos/buscarPOST /jurislex/articulos/buscar
Detalle:
GET /jurislex/articulos/detalle
Decretos y anexos:
GET /jurislex/decretos
Ejemplo:
curl --get "https://ordina-engine.vercel.app/jurislex/articulos/buscar" \
--data-urlencode "categoria=1000" \
--data-urlencode "idLegislacion=1000" \
--data-urlencode "soloArticulo=true"Ordina también puede analizar texto libre para detectar citas de artículos, leyes, jurisprudencia, tesis y registros digitales.
POST /citas/extraer
Ejemplo:
curl -X POST "https://ordina-engine.vercel.app/citas/extraer" \
-H "Content-Type: application/json" \
-d '{
"fuente": "demanda.txt",
"texto": "Con fundamento en el artículo 14 de la Ley de Amparo y el artículo 16 constitucional, así como en la jurisprudencia 2a./J. 5/2020 y el registro digital 2023456.",
"resolver": true
}'La landing principal también incluye un frontend mínimo para pegar texto o cargar archivos de texto y revisar las citas detectadas.
El extractor ahora también marca:
confianza: qué tan sólida parece la identificación;requiereConfirmacion: cuándo conviene corroborar la cita detectada;iusyrubrocuando encuentra coincidencia exacta en SJF para claves comoP./J. 53/2026 (12a.).textoCitacuando se envíaresolver=truey Ordina logra recuperar el contenido del artículo o criterio citado.abreviaturasDetectadasy expansión de siglas del documento, por ejemploLey Federal del Trabajo (LFT)seguido deartículo 167-B de la LFT.
GET /precedentes/buscarPOST /precedentes/buscar
Ejemplo:
curl --get "https://ordina-engine.vercel.app/precedentes/buscar" \
--data-urlencode "q=partido*" \
--data-urlencode "indice=ejecutorias" \
--data-urlencode "page=1" \
--data-urlencode "size=3"Sirve para consultar ordenamientos del índice de legislación del buscador jurídico de la SCJN, incluyendo filtros como ámbito, categoría y materia.
GET /legislacion/buscarPOST /legislacion/buscarGET /legislacion/detalleGET /legislacion/articulos/buscar
Ejemplo:
curl --get "https://ordina-engine.vercel.app/legislacion/buscar" \
--data-urlencode "q=Electoral" \
--data-urlencode "fuente=SIL" \
--data-urlencode "indice=legislacion" \
--data-urlencode "categoriaOrdenamiento=LEY" \
--data-urlencode "ambito=FEDERAL" \
--data-urlencode "page=1" \
--data-urlencode "size=10"Detalle de un ordenamiento concreto:
curl --get "https://ordina-engine.vercel.app/legislacion/detalle" \
--data-urlencode "id=9006"Buscar un artículo específico dentro del ordenamiento:
curl --get "https://ordina-engine.vercel.app/legislacion/articulos/buscar" \
--data-urlencode "id=9006" \
--data-urlencode "articulo=5"También puedes combinar artículo y texto libre:
curl --get "https://ordina-engine.vercel.app/legislacion/articulos/buscar" \
--data-urlencode "id=9006" \
--data-urlencode "q=constitucionalidad"El repositorio incluye varios contratos OpenAPI:
openapi-ordina-hub.yaml: API completa recomendada;openapi-sjf.yaml: jurisprudencia y precedentes;openapi-jurislex.yaml: leyes, decretos y artículos;openapi-legislaciones.yaml: sólo catálogo de leyes.
Si quieres crear tu propio GPT o agente con Actions:
- elige el archivo OpenAPI;
- pégalo en tu integración;
- verifica la base URL
https://ordina-engine.vercel.app; - prueba al menos
GET /healthyGET /ley?nombre=constitución.
Para obtener mejores resultados, usa las instrucciones base incluidas en Ordina-instrucciones-minimas.md.
Estas instrucciones ayudan a:
- seguir el flujo correcto entre endpoints;
- resolver primero la ley y después los artículos;
- buscar y explicar jurisprudencia con menos errores;
- mantener respuestas jurídicas claras y sin inventar información.
Sólo son necesarias si alguna fuente bloquea solicitudes:
SJF_COOKIEJURISLEX_COOKIEBJ_SCJN_COOKIE
Ordina-engine también puede usarse como servidor MCP por stdio para clientes compatibles.
Esto te permite usar Ordina como backend jurídico para Claude Desktop u otros clientes MCP sin tener que reimplementar los flujos de leyes, artículos o jurisprudencia.
Configuración mínima:
{
"mcpServers": {
"ordina-engine": {
"command": "python3",
"args": ["/ruta/a/tu/repo/mcp_server.py"]
}
}
}Ejemplo de instalación local:
cd /ruta/a/tu/repo
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python mcp_server.pyEl MCP expone:
- herramientas base como
buscarLey,buscarJurisprudencia,buscarArticulosJurislexyobtenerDetalleArticuloJurislex; - herramientas compuestas como
resolverLeyPorNombre,buscarArticuloPorLeyYNumero,obtenerArticuloPorLeyYNumeroyconsultaJuridicaCompleta; - recursos y prompts para guiar a clientes compatibles.
Si necesitas despliegue remoto por SSH o HTTP, revisa mcp_server.py y mcp_http_server.py como referencia de implementación.
Ordina-engine y el chat oficial de Ordina son proyectos independientes y no oficiales.
Este proyecto:
- no está afiliado, patrocinado ni autorizado por ninguna institución pública;
- no busca replicar ni reemplazar servicios oficiales;
- no elude mecanismos de seguridad ni autenticación;
- sólo consume información públicamente accesible.
Toda verificación jurídica debe realizarse directamente en los portales institucionales correspondientes. Las personas usuarias son responsables del uso e interpretación de la información consultada mediante este proyecto.
