# Con tu asistente de IA

> El texto que le entregas a ChatGPT, Claude o Cursor para que arme tu software sobre Connect sin pedirte nunca la clave. Pensado para quien no programa.



Si armas tu propio sistema apoyándote en un asistente de IA, esta página es el atajo: un texto que
copias entero y le pegas al asistente antes de pedirle nada. Le dice cómo se llama Connect, dónde está
la documentación, cómo se hace una llamada y las tres reglas que se saltan casi todos los que empiezan.

No necesitas saber programar para usarlo. El texto le ordena al asistente que escriba él el código y
que te explique cada paso en lenguaje simple, y que antes de escribir te pregunte dos cosas: dónde va a
correr tu software y para qué empresa es.

## Antes de pegarlo [#antes-de-pegarlo]

1. **Crea una clave de API** en [connect.emisso.ai/api-keys](https://connect.emisso.ai/api-keys). El
   perfil «Solo lectura» alcanza para empezar. El texto de la clave se muestra una sola vez.
2. **Guárdala con el nombre `EMISSO_CONNECT_API_KEY`** en el lugar de secretos del entorno donde vaya a
   correr tu software: «Secrets» en Colab y en Replit, «Propiedades del script» en Apps Script,
   variables de entorno en un servidor. El propio asistente te explica dónde, si le dices cuál usas.
3. **No pegues la clave en el chat.** El prompt no la contiene y le prohíbe al asistente pedírtela,
   escribirla en el código o imprimirla. Con esa clave cualquiera lee el SII y los bancos de todas tus
   empresas conectadas. Si se te escapó en una conversación, rótala en Connect y sigue con la nueva.

<Callout type="info" title="¿Solo quieres preguntarle a Claude o a ChatGPT por tus datos?">
  Eso no necesita clave ni código: se conecta con una sola dirección. El camino está en
  [Instala el servidor MCP](/docs/agentes/mcp).
</Callout>

## El prompt [#el-prompt]

Cópialo completo, incluidas las tres reglas del final, y pégalo como primer mensaje de una conversación
nueva.

```text
Vas a ayudarme a construir un software sobre Emisso Connect, el puente a los sistemas chilenos de mi organización: SII, bancos e indicadores del Banco Central. Asume que no soy programador: escribe tú el código y explícame cada paso en lenguaje simple.

Antes de escribir nada, pregúntame dos cosas: dónde va a correr el software (mi computador, Google Sheets con Apps Script, Colab, Replit, n8n, un servidor u otro) y para qué empresa es, por nombre o RUT.

La clave de acceso ya existe y se llama EMISSO_CONNECT_API_KEY. Explícame cómo guardarla con ese nombre en el lugar de secretos del entorno que te indique, y lee siempre el valor desde ahí. Nunca me pidas la clave, no la escribas en el código, no la imprimas en pantalla ni en logs; si te la muestro por error, dime que la rote en Connect.

Lee la documentación para máquinas antes de escribir: el índice es https://connect.emisso.ai/llms.txt, empieza por https://connect.emisso.ai/docs/empezar/primera-llamada.md y el contrato es https://connect.emisso.ai/docs/openapi.json. Si no puedes abrir enlaces, dímelo antes de escribir código y te pego el contenido.

Connect se llama por REST: POST https://connect.emisso.ai/api/v1/tools/<id de la herramienta>/execute con la cabecera Authorization: Bearer y el valor de esa variable, y el cuerpo {"input": {...}}. Usa la librería HTTP que ya trae el entorno (fetch, requests, UrlFetchApp); no instales ningún SDK ni paquete de Connect. Toda respuesta llega como {"data": ..., "meta": {"request_id": ...}} y todo error como {"error": {"code", "message", "request_id", "suggested_fix"}}. La lista de herramientas que ESTA clave puede usar sale de GET https://connect.emisso.ai/api/v1/tools; no inventes ninguna.

Tres reglas que no se pueden saltar:
1. Empieza por conexiones.estado.consultar: devuelve las empresas conectadas, el connectionId de cada una y si ya tienen datos listos.
2. connectionId es obligatorio en toda herramienta del SII, de un banco o de Previred, incluso si hay una sola empresa; en REST viaja en la cabecera X-Connect-Connection. La conexión es la empresa: usa la que yo te indique, nunca la primera de la lista.
3. Leer datos son dos pasos: <sistema>.conexion.sincronizar trae los datos (login real, puede tardar cerca de un minuto) y <recurso>.consultar lee lo ya guardado. Un .consultar nunca pregunta en vivo.

Ante un error, sigue el suggested_fix de la respuesta y no reintentes lo que no es reintentable; si no lo reconoces, muéstrame el request_id.

Primera prueba: escribe el código que consulte indicadores.valor.actual con {"codigo":"UF"} y dime cómo lo corro yo para ver el valor. Después, un plan en pasos cortos para lo que quiero construir, avanzando de a uno.
```

## Qué hace el prompt por ti [#qué-hace-el-prompt-por-ti]

| Le ordena al asistente                                                                         | Por qué importa                                                                                             |
| ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Leer `/llms.txt`, la guía de la primera llamada y el contrato OpenAPI antes de escribir código | Sin eso inventa nombres de herramientas que no existen y después no sabe explicar el error                  |
| Leer la clave desde la variable de entorno, y nunca pedírtela ni imprimirla                    | La clave abre todas tus empresas conectadas; un chat no es un lugar donde guardarla                         |
| Empezar por `conexiones.estado.consultar`                                                      | De ahí salen las empresas conectadas, el `connectionId` de cada una y si ya tienen datos listos             |
| Mandar siempre el `connectionId` de la empresa que tú le indiques                              | La conexión es la empresa. Elegir la primera de la lista es leerle los datos a otro cliente                 |
| Sincronizar primero y consultar después                                                        | Consultar lee lo ya guardado y nunca pregunta en vivo. Un listado vacío puede ser que todavía no sincronizó |
| Seguir el `suggested_fix` del error y mostrarte el `request_id`                                | Cada llamada deja una fila en la bitácora con ese identificador, y es lo primero que pide soporte           |

El texto termina pidiéndole una primera prueba concreta: el valor de la UF de hoy, que no necesita
ninguna empresa conectada. Si esa prueba te devuelve un número, el camino completo funciona.

## Si el asistente no puede abrir enlaces [#si-el-asistente-no-puede-abrir-enlaces]

Algunos asistentes no navegan. El prompt les pide que te avisen antes de escribir código; cuando pase,
abre [`/llms.txt`](/llms.txt) y [tu primera llamada](/docs/empezar/primera-llamada), copia el contenido
y pégaselo en la conversación.

## Próximos pasos [#próximos-pasos]

* [Tu primera llamada](/docs/empezar/primera-llamada): la UF de hoy por REST, para comprobar la clave
  por tu cuenta antes de delegarle nada al asistente.
* [Conecta tu primera empresa](/docs/empezar/conectar): el enlace con el que tu cliente entrega su
  clave del SII, sin que pase por tu código.
* [Sincronizar y consultar](/docs/conceptos/sincronizar-consultar): por qué leer datos reales son dos
  pasos.
