> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Brain Studio

> Conecta tu Jelou Function como servidor MCP externo en Brain Studio para que tus agentes IA la invoquen como herramienta.

## Conectar tu función en Brain Studio

<Steps>
  <Step title="Despliega tu función">
    ```bash theme={null}
    jelou functions deploy
    # ✓ Deployed to https://mi-funcion.fn.jelou.ai
    # ⚠ A default runtime token was created for this function.
    # ▸ Token    jfn_rt_abc123...
    ```

    Guarda el runtime token — lo necesitarás en el paso 4.
  </Step>

  <Step title="Verifica que MCP está activo">
    ```bash theme={null}
    curl https://mi-funcion.fn.jelou.ai/__health \
      -H "X-Jelou-Token: jfn_rt_abc123..."
    ```

    Respuesta esperada:

    ```json theme={null}
    {
      "status": "ok",
      "mode": "define",
      "tool": {
        "name": "mi-funcion",
        "description": "Busca información de clientes"
      }
    }
    ```

    Si usas `app()`, verás múltiples tools en el array `tools`.

    <Warning>
      Si tu función tiene `config: { mcp: false }`, no se expondrá como herramienta MCP. Asegúrate de que MCP esté activo (es el default).
    </Warning>
  </Step>

  <Step title="Abre Brain Studio">
    En el dashboard de Jelou, navega a tu agente IA:

    **AI Agent → Tools → Servidores MCP externos**
  </Step>

  <Step title="Configura el servidor MCP">
    Completa los campos:

    | Campo        | Valor                                |
    | ------------ | ------------------------------------ |
    | URL          | `https://mi-funcion.fn.jelou.ai/mcp` |
    | Header name  | `X-Jelou-Token`                      |
    | Header value | `jfn_rt_abc123...`                   |
  </Step>

  <Step title="Selecciona las herramientas">
    Brain Studio descubrirá automáticamente las herramientas expuestas por tu función. Selecciona las que quieras que el agente pueda usar.

    Si usas `app()` con múltiples tools, cada uno aparece como una herramienta independiente con su nombre y descripción.
  </Step>

  <Step title="Prueba el agente">
    Inicia una conversación con el agente y pide algo que requiera usar tu herramienta. Por ejemplo:

    > "¿Cuál es el saldo del cliente 593987654321?"

    El agente detectará que necesita invocar tu función, pasará los parámetros correctos, y mostrará la respuesta al usuario.
  </Step>
</Steps>

## Multi-tool en Brain Studio

Si tu función usa `app()`, Brain Studio ve cada tool individualmente:

```typescript theme={null}
export default app({
  tools: {
    consultarSaldo: define({
      description: "Consulta el saldo de un cliente por teléfono",
      input: z.object({ telefono: z.string().min(10) }),
      handler: async (input) => ({ saldo: 150.00 }),
    }),
    crearTicket: define({
      description: "Crea un ticket de soporte",
      input: z.object({ asunto: z.string(), detalle: z.string() }),
      handler: async (input) => ({ ticketId: "TKT-001" }),
    }),
  },
});
```

En Brain Studio aparecerán:

* **consultarSaldo** — "Consulta el saldo de un cliente por teléfono"
* **crearTicket** — "Crea un ticket de soporte"

Puedes habilitar o deshabilitar cada herramienta individualmente.

<Tip>
  Las descripciones de `define()` y las anotaciones `.describe()` de Zod en los campos de input son lo que Brain Studio muestra al agente IA. Descripciones claras y específicas mejoran la precisión del agente al decidir cuándo y cómo usar tu herramienta.
</Tip>

## Troubleshooting

<Tabs>
  <Tab title="No aparecen herramientas">
    Verifica que:

    1. La función está desplegada (`jelou functions deploy`)
    2. MCP está activo (`config.mcp` no es `false`)
    3. La URL termina en `/mcp`
    4. El token es correcto

    Prueba manualmente:

    ```bash theme={null}
    curl https://mi-funcion.fn.jelou.ai/mcp \
      -H "X-Jelou-Token: jfn_rt_abc123..."
    ```
  </Tab>

  <Tab title="401 Unauthorized">
    El token es inválido o falta. Verifica con:

    ```bash theme={null}
    jelou tokens list mi-funcion
    ```

    Si no tienes el token, crea uno nuevo:

    ```bash theme={null}
    jelou tokens create mi-funcion --name brain-studio
    ```
  </Tab>

  <Tab title="El agente no usa la herramienta">
    Revisa la `description` de tu `define()`. Si es vaga (como "Maneja datos"), el agente no sabe cuándo usarla. Usa descripciones específicas como "Busca un cliente por número de teléfono y retorna su nombre, email y saldo".
  </Tab>
</Tabs>
