---
title: Portais no navegador
description: No plano Empresas, o agente trabalha nas páginas de um portal, como um ERP, logado como você, sem ver a sua senha.
sidebar:
  order: 5
---

No plano Empresas, o agente trabalha nas páginas de um portal que a empresa usa, como o Bling, o Sankhya ou um ERP regional: lê listas e tabelas, clica, preenche e escolhe, logado como você. Você entra no portal uma vez, numa página da Siglata, com a sua senha e os seus códigos; o agente nunca os vê. A Kernel, fornecedora de navegadores da Siglata, guarda a sessão e entra de novo sozinha quando ela expira.

Estas ferramentas ainda não são oferecidas em www.siglata.com: elas abrem quando a política de privacidade e os termos da Siglata as cobrirem.

## Conectar um portal [#connect]

Peça ao agente, por exemplo: "conecte o Bling". Ele chama `portal_connect` com o domínio do portal ou qualquer link para ele:

```js
return await portal_connect({ domain: "bling.com.br" });
```

A resposta traz um link para a página de conexão da Siglata. Abra-o, confirme que você pode automatizar essa conta e entre no portal na página da Kernel. Quando o login termina, a página mostra que o portal está conectado. Bancos, redes sociais e o login gov.br são recusados.

A conexão é sua: só você a usa. Um proprietário ou administrador conecta o portal da empresa com `visibility: "org"`, e ele serve a todo membro que não tem uma conexão própria com aquele domínio. Para deixar membros ou equipes específicos entrarem de novo ou desconectarem o portal da empresa, conceda escrita com `grant_set` e o `connectionId` que `portal_list` mostra.

`portal_list` mostra as conexões que você vê e o status atual: `authenticated` (pronta), `connecting` (alguém está entrando) ou `needs_auth` (mande o `url` para a pessoa entrar de novo). `portal_disconnect` exclui a sessão que a Kernel guarda, o login guardado e as concessões.

## Trabalhar nas páginas [#explore]

`portal_open` abre um navegador no portal, já logado, e lê a página: a árvore de acessibilidade (papéis e nomes dos elementos) e as tabelas visíveis, linha por linha.

```js
const { sessionId, page } = await portal_open({
  domain: "bling.com.br",
  url: "https://www.bling.com.br/produtos",
});
```

Na mesma sessão, `portal_read` lê de novo a página ou vai a outra página do portal, e `portal_act` clica, preenche ou escolhe um elemento pelo papel e nome que a página mostra:

```js
return await portal_act({
  sessionId,
  action: { kind: "fill", role: "textbox", name: "Pesquisar", value: "caneta" },
});
```

O agente nunca digita num campo de senha e para em qualquer link que saia do domínio do portal. A sessão dura 15 minutos.

## Guardar e repetir um roteiro [#scripts]

`portal_close` fecha a sessão e devolve os passos que funcionaram como um roteiro (`script`). O agente o guarda numa skill da empresa para repetir o trabalho depois:

- `portal_run` roda numa chamada um roteiro só de navegação (`goto`) e lê a última página.
- `portal_run_write` roda um roteiro que clica, preenche ou escolhe em duas chamadas. A primeira guarda os passos e devolve uma `confirmation`; o agente mostra o que os passos farão e, só depois que você concorda, chama de novo com a `confirmation`, que roda exatamente esses passos uma vez. A confirmação vale 10 minutos.

## Créditos e logins expirados [#limits]

O tempo de navegador é cobrado dos créditos da organização; sem créditos, as ferramentas falham com `CREDITS_EXHAUSTED` antes de abrir o navegador. Se o portal pedir login de novo e a Kernel não conseguir entrar sozinha, a ferramenta falha com `PORTAL_NEEDS_LOGIN` e o link para você entrar.

Para logins que um script na sua máquina usa, veja [Acessos a portais](/docs/agents/credentials).
