Toda la plataforma como JSON tipado y direccionable: un archivo por trámite, por entidad y por norma, servidos estáticamente desde GitHub Pages. Sin autenticación, sin límites, CORS abierto, pensado para que un agente, una simulación o el script de otra persona consuma el Estado sin raspar HTML.
api/manifest.json | Versión, conteos, licencia, índice de endpoints. |
api/tramites/index.json | Índice liviano de los 2166 trámites (búsqueda/listado). |
api/tramites/{id}.json | Un trámite tipado, con requisitos, fundamento legal y procedencia. El permalink. |
api/entities/index.json | Índice de las 326 entidades. |
api/entities/{entity_id}.json | Una entidad con todas sus aristas (adscripción, juntas, fiscalización, trámites). |
api/norms.json | Las 671 normas citadas, con cuántos trámites cita cada una. |
api/requiere_de.json | Red de dependencias inferida (marcada como candidata, no canónica). |
api/pmr.json | Planes de Mejora Regulatoria vigentes + membresía por trámite. |
api/schema/tramite.schema.json | JSON Schema del documento de trámite. |
data/graph.json | El mapa institucional completo (entidades y sus conexiones). |
Rutas relativas a
https://estadocr.org/.
Cada escalar tiene tipo: silencio_positivo y gratuito son
booleanos (la cláusula «or else» de un trámite es un hecho, no una palabra); el costo es
null cuando no hay dato, nunca un cero silencioso. Toda afirmación lleva su
procedencia; lo inferido va marcado aparte.
{
"id": 7011,
"nombre": "Gestión Administrativa en Registro Inmobiliario",
"institucion": {
"cnt_nombre": "Registro Nacional",
"cnt_id": "1042",
"tipo": "Órgano Adscrito a Ministerio",
"entity_id": "junta-administrativa-del-registro-nacional",
"entity_nombre": "Junta Administrativa del Registro Nacional"
},
"canal": {
"forma": "presencial",
"nivel_digitalizacion": "No disponible en línea",
"digital": "no"
},
"costo": {
"colones": 2000.0,
"dolares": null,
"tipo": "fijo",
"gratuito": false
},
"sla": {
"plazo_resolucion": "1 Mes",
"silencio_positivo": false
},
"mejora_regulatoria": {
"en_pmr": false,
"plan_id": null,
"estado": null,
"plan_url": null
},
"_links": {
"self": "api/tramites/7011.json",
"institucion": "api/entities/junta-administrativa-del-registro-nacional.json",
"html": "tramites.html#t=7011",
"fuente": "https://tramitescr.meic.go.cr/tramite/7011"
},
"requisitos": [
{
"n": 1,
"texto": "El escrito inicial de la gestión administrativa a solicitud de parte, indicará al menos lo siguiente: a) Una relación de hechos que describa y delimite la existencia de la inexactitud de que se trate."
},
"… (4 en total)"
]
}
provenance
con la fuente y la fecha de captura. La red requiere_de va aparte y marcada
metodo: "inferido" con nivel de confianza, nunca mezclado con campos afirmados.
Es un mapa de jure: lo declarado en el catálogo, no lo medido en ventanilla.
# el catálogo entero, liviano curl -s https://estadocr.org/api/tramites/index.json | jq '.[0]' # un trámite concreto (el permalink de datos) curl -s .../api/tramites/7011.json | jq '.sla, .fundamento_legal' # qué trámites operan una entidad curl -s .../api/entities/ministerio-de-hacienda-mh.json | jq '.tramites.count'
Para análisis pesado está el mapa completo en un solo archivo. Y para agentes hay un servidor MCP ya cableado a esta API: 11 herramientas de solo lectura: buscar trámites, entidades, normas por carga, dependencias verificadas y trayectorias. Cada respuesta lleva su procedencia y el aviso de jure. Los CSV versionados y las instrucciones de conexión todavía no son públicos; escribanos si los necesita.
Datos: CC0 1.0 (dominio público; los textos oficiales son de sus fuentes)
· Código: MIT (scripts/, mcp/ y el generador del sitio).
Cómo citar: «Estado CR: mapa institucional versionado (República Inteligente, 2026). Datos: MIDEPLAN, MEIC/Catálogo Nacional de Trámites, SINALEVI.».