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

# Paso Agente IA: investigar la web

> Un agente de IA autónomo ejecuta una tarea en la web y devuelve un output JSON estructurado para los pasos siguientes.

El paso `browser.use` pone a trabajar a un **agente de IA autónomo**: describe la tarea en lenguaje natural y el agente navega sitios web por su cuenta hasta completarla. Úsalo cuando una automatización necesite investigar información pública, interactuar con una página dinámica o descargar archivos.

Si el proceso es siempre el mismo sobre un portal conocido (login, reportes, descargas), usa mejor el paso [Agente IA: automatizar portal](/automatizaciones/paso-agente-guion).

El paso se ejecuta de forma asíncrona. La automatización espera el resultado sin mantener una petición HTTP abierta y continúa cuando la tarea termina.

## Campos del paso

| Campo                      | Requerido | Descripción                                                                     |
| -------------------------- | --------- | ------------------------------------------------------------------------------- |
| `actionKey`                | Sí        | Debe ser `browser.use`.                                                         |
| `task`                     | Sí        | Instrucción que debe completar el navegador. Acepta plantillas `{{...}}`.       |
| `resultSchema`             | Sí        | JSON Schema con `type: "object"` que define el output esperado.                 |
| `wait`                     | Sí        | Configuración de espera y consulta del resultado.                               |
| `wait.initialDelaySeconds` | No        | Segundos antes de consultar el resultado por primera vez. Predeterminado: `30`. |
| `wait.pollIntervalSeconds` | No        | Segundos entre consultas posteriores. Predeterminado: `15`.                     |
| `wait.timeoutSeconds`      | No        | Tiempo total máximo desde que inicia la tarea. Predeterminado: `3600`.          |

`wait.timeoutSeconds` debe ser mayor que `wait.initialDelaySeconds`.

## Ejemplo

Este paso investiga un prospecto creado en un tablero:

```json theme={null}
{
  "actionKey": "browser.use",
  "task": "Investiga en fuentes públicas al prospecto {{trigger.body.record.values.<fieldId>}}. Devuelve su sitio oficial, industria, descripción, ubicación y fuentes. No inventes datos.",
  "resultSchema": {
    "type": "object",
    "additionalProperties": false,
    "required": [
      "prospectName",
      "website",
      "industry",
      "description",
      "location",
      "sources"
    ],
    "properties": {
      "prospectName": { "type": "string" },
      "website": { "type": "string" },
      "industry": { "type": "string" },
      "description": { "type": "string" },
      "location": { "type": "string" },
      "sources": {
        "type": "array",
        "items": { "type": "string" }
      }
    }
  },
  "wait": {
    "initialDelaySeconds": 30,
    "pollIntervalSeconds": 15,
    "timeoutSeconds": 3600
  }
}
```

<Tip>
  Especifica qué fuentes debe priorizar y cómo representar datos no encontrados. Un schema pequeño y preciso produce outputs más fáciles de reutilizar.
</Tip>

## Salida del paso

El objeto validado con `resultSchema` se guarda directamente como output. La API agrega `_files` con los archivos descargados durante la tarea:

```json theme={null}
{
  "prospectName": "Acme Seguros",
  "website": "https://www.ejemplo.com",
  "industry": "Seguros",
  "description": "Empresa dedicada a seguros empresariales.",
  "location": "Ciudad de México, México",
  "sources": [
    "https://www.ejemplo.com/nosotros"
  ],
  "_files": [
    {
      "name": "reporte.pdf",
      "mimeType": "application/pdf",
      "size": 184320,
      "storagePath": "workflow-runs/<run-id>/steps/0/browser/<archivo>"
    }
  ]
}
```

`_files` siempre es un arreglo. Si la tarea no descarga archivos, devuelve `[]`.

No declares `_files` dentro de `resultSchema`: es un campo reservado que agrega la API.

## Usar el resultado en otro paso

Los pasos posteriores leen el JSON directamente con `{{steps.N.output.*}}`:

```json theme={null}
{
  "actionKey": "code.javascript",
  "input": {
    "prospectName": "{{steps.0.output.prospectName}}",
    "website": "{{steps.0.output.website}}",
    "sources": "{{steps.0.output.sources}}",
    "files": "{{steps.0.output._files}}"
  },
  "code": "output = { enriched: true, ...input };"
}
```

No necesitas `capture` para consumir la salida de `browser.use`.

## Configurar `wait`

`wait` controla cuándo consulta la automatización el estado de la tarea:

```json theme={null}
{
  "wait": {
    "initialDelaySeconds": 600,
    "pollIntervalSeconds": 30,
    "timeoutSeconds": 7200
  }
}
```

En este ejemplo, la primera consulta ocurre después de 10 minutos. Si todavía no termina, vuelve a consultar cada 30 segundos y espera como máximo 2 horas desde el inicio.

Usa un retraso inicial mayor cuando sabes que el portal o la investigación tardará varios minutos.

## Errores frecuentes

| Situación                                   | Qué hacer                                                                                       |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| El resultado no cumple `resultSchema`       | Ajusta la tarea o el schema para que describan exactamente la misma estructura.                 |
| La tarea supera `timeoutSeconds`            | Aumenta el timeout o reduce el alcance de la tarea.                                             |
| Una plantilla resuelve vacío                | Confirma que la ruta existe en el trigger o en el output anterior.                              |
| El output es demasiado grande               | Solicita solo campos útiles y usa archivos para contenido extenso.                              |
| El sitio requiere autenticación interactiva | En esta versión, usa sitios accesibles sin login o solicita un flujo de integración compatible. |

## Relacionado

* [Tipos de paso](/automatizaciones/tipos-de-paso)
* [Variables y contexto](/automatizaciones/variables-y-contexto)
* [Crear automatización](/automatizaciones/crear-automatizacion)
* [Listar pasos de una ejecución](/automatizaciones/listar-pasos-ejecucion)
