Emisso Connect
Para agentes

Recursos máquina-legibles

Todo el sitio existe en markdown y contratos: pega una URL y descubre el API entero.

Esta documentación tiene dos audiencias, y la segunda no navega: carga todo de una vez. Cada página de /docs existe también como markdown limpio, el catálogo completo existe como contrato OpenAPI 3.1 y el servidor MCP se describe solo. Pega cualquiera de estas URLs en el contexto de un agente y el agente tiene el API entero sin scrapear HTML.

Los artefactos

URLQué contieneCuándo usarlo
/llms.txtEl índice de todas las páginas, con el título y la descripción de cada una.Para orientarse: es corto y lista qué más pedir.
/llms-full.txtEl corpus completo: todas las páginas concatenadas como texto plano.Para cargar la documentación entera en un contexto grande, de una sola vez.
/docs/{ruta}.mdCada página de /docs como markdown limpio: agrégale .md a la URL. El markdown de /docs/empezar/conectar está en /docs/empezar/conectar.md, y el de la portada en /docs.md.Para leer una página puntual sin el HTML del sitio, o para mandarle a alguien el link del markdown.
/llms.mdx/{ruta}Exactamente la misma respuesta que la fila de arriba, en la ruta propia que existía antes del sufijo.Si ya tienes esta ruta escrita en algún script. Para todo lo demás alcanza el sufijo .md.
/docs/openapi.jsonEl contrato OpenAPI 3.1 del catálogo documentado completo, SII y bancos incluidos, con los JSON-Schema de entrada y salida de cada tool.Para generar clientes, validar formas o alimentar un agente que razona sobre contratos.
/api/v1/openapi.jsonEl feed público que sirve el propio runtime. Más angosto: solo los conectores de uso general.Cuando importa lo que el gateway expone sin autenticar, no el catálogo entero.
https://connect.emisso.ai/mcpEl servidor MCP. Anuncia dos meta-tools, search_docs y execute; el catálogo completo vive detrás de ellas.Para operar, no para leer: es la superficie de ejecución. El detalle está en el servidor MCP.

Los dos contratos OpenAPI cubren la ejecución de tools. Los endpoints de control (conexiones, sincronizaciones, webhooks) todavía no entran en esos archivos; su referencia es la API de control.

Tres formas de pedir la misma página

El markdown de una página se pide de tres maneras, y las tres devuelven el mismo cuerpo porque salen de la misma fuente.

  1. El sufijo .md. Cualquier URL de /docs sirve su markdown si le agregas .md. Es la convención que ya usan la documentación de Anthropic, la de Stripe y la del AI SDK, así que un agente que la conoce no necesita leer esta página para descubrirla. Además es la única forma que produce una URL propia: se puede pegar en un chat y quien la abra ve el markdown.
  2. La cabecera Accept: text/markdown sobre la URL normal de la página. Sirve al agente que no construye URLs y ya tiene el link HTML. Claude Code, Cursor y OpenCode mandan esa cabecera en todo pedido, así que reciben markdown sin configurar nada.
  3. La ruta /llms.mdx/{ruta}, que es donde vive el generador. Las dos formas de arriba reescriben a esta.

Las respuestas markdown salen con X-Robots-Tag: noindex. La página HTML tiene el mismo contenido y es la que queremos en los resultados de búsqueda: es la que está en el sitemap y la que se declara canónica. Sin ese encabezado habría tres copias exactas compitiendo con ella.

Copiar como Markdown

Cada página de /docs trae el botón «Copiar como Markdown». En vez de serializar el HTML, copia el espejo real /llms.mdx/{ruta} de esa página, el mismo que consume un agente por HTTP. Una sola fuente para la persona que pega la página en un chat y para la máquina que la fetchea.

El <head> de cada página declara además un alternates con tipo text/markdown apuntando a ese espejo, así que un agente que solo tiene la URL HTML puede descubrir la versión markdown sin conocer la convención de rutas.

Prompt de arranque

Para entregarle Connect a un agente, acompaña el servidor MCP con este bloque:

Tienes Emisso Connect (https://connect.emisso.ai/mcp): el puente a los sistemas chilenos de esta
organización (SII, bancos, indicadores). Reglas:

1. Parte siempre por search_docs. Sin argumentos trae el catálogo entero agrupado por sistema;
   con {tool: "<id>"} trae la ficha completa y un ejemplo ejecutable.
2. En todo sistema conectable, connectionId es obligatorio: sácalo de conexiones.estado.consultar.
   La conexión es la empresa; no hay elección implícita ni cuando existe una sola.
3. Leer son dos pasos: <sistema>.conexion.sincronizar escribe (login real contra el sistema, puede
   tardar hasta 90 segundos en bancos) y <recurso>.consultar lee lo ya guardado. Una lista vacía
   puede ser un período sin sincronizar: revisa datosListos en conexiones.estado.consultar antes
   de concluir que no hay nada.
4. Si un sistema aparece con conectado: false, crea un enlace con conexiones.enlace.crear y
   muéstralo con su dominio completo visible, explicando quién lo pidió y para qué. Nunca lo
   presentes como un aviso del banco ni del SII.
5. Ante un error, sigue el suggested_fix que viene en la respuesta; no reintentes lo que no es
   reintentable. Si no reconoces el error, reporta el request_id.

Las cinco reglas responden a comportamiento real del gateway: la regla 2 evita el error validation_error con que el gateway rechaza una llamada sin conexión, la 3 evita concluir «no hay datos» sobre una caché todavía vacía y la 5 aprovecha que cada error del catálogo viaja con un suggested_fix accionable.

Qué hace solo un agente y qué no

Acción¿La completa solo?Por qué
Descubrir el catálogo (search_docs)Incluye los sistemas todavía no conectados, con el camino para conectarlos.
Leer datos sincronizados (<recurso>.consultar)Lee del plano ya persistido; no abre sesión contra el sistema externo.
Sincronizar (<sistema>.conexion.sincronizar)Usa la credencial ya vinculada en el vault; el agente solo dispara el trabajo.
Conectar un sistema nuevo (conexiones.enlace.crear)Solo la mitadEl agente acuña el enlace, pero la clave la entrega el humano en esa página. El enlace vence en una hora y sirve una sola vez.
Ver una credencialNuncaEl vault es inaccesible también para el agente: la credencial se resuelve del lado del servidor y jamás entra al contexto del modelo ni a un resultado de tool.

La última fila es una propiedad del diseño, no una restricción de permisos que alguien pueda relajar: ningún resultado de tool contiene material de credencial, y la bitácora guarda solo un digest del input.

Próximos pasos

On this page