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

# Cadastro pelo agente

> O agente coleta os dados, prepara o ambiente e entrega a conta para você finalizar.

O agente pode preparar sua conta e integrar seu app sem interromper o trabalho para fazer login. Você entra na Infi depois para assumir a mesma conta.

## Conversa, depois provisionamento

Use `infi_onboard` no MCP ou rode no diretório do app:

```bash theme={null}
npx -y @beinfi/cli onboard --json
```

Sem dados suficientes, a resposta tem `status: "requires_input"`, `missingFields` e `questions`. Nenhuma conta é criada. Pergunte só o que falta e envie todas as respostas:

```bash theme={null}
npx -y @beinfi/cli onboard --email founder@example.com --account-name "Acme" --intent usage-saas --json
```

Intents: `crm`, `one-time`, `usage-saas`, `prepaid-ai-chat`. A resposta separa o resultado do setup (`ready` ou `needs_attention`) do cadastro (`registration.status: "pending_claim"`). `ready` indica que o diagnóstico passou; o teste dentro do app ainda precisa ser feito.

O comando preserva as outras variáveis de `.env.local`, guarda as credenciais em arquivos locais ignorados pelo git e retoma a mesma conta ao rodar no mesmo diretório. Configuração existente deve usar `doctor` / `sync`. Se uma resposta de provisionamento se perder, o estado fica incerto: não apague o marcador para forçar outra conta.

## Sem shell ou MCP

```bash theme={null}
curl -X POST https://api-sandbox.beinfi.com/public/v1/claimables \
  -H 'Content-Type: application/json' \
  -d '{"ref":"lovable","email":"founder@example.com","accountName":"Acme"}'
```

Guarde a resposta: `apiKeySecret`, `publishableKey`, `tenantSlug`, `productId`, `claimUrl` e `expiresAt`. O nome já fica na conta; o email é contato ainda não verificado. O produto inicial é um draft sem preço: siga o guia de catálogo para configurar o caso de uso. Não repita automaticamente esse POST se perder a resposta.

## Credenciais e finalização

`INFI_SECRET_KEY` fica no servidor/secrets da plataforma. `INFI_PUBLISHABLE_KEY` pode ir ao browser quando a API cliente precisar; é a chave da Infi, não a do provedor de pagamento. O agente nunca precisa de senha ou código de verificação.

Depois de testar, entregue a `claimUrl` e o prazo retornado em `expiresAt`. A pessoa entra, revisa o nome e salva a conta. Produtos, chaves e slug continuam iguais. Produção é uma etapa posterior no painel.

## Email para assumir a conta

Quando o provisionamento com email termina, a Infi coloca o aviso de claim na fila de envio. Ele contém o nome da conta, o link, o prazo e o botão **Finalizar minha conta**. As chaves ficam na resposta da API e nos secrets do app.

O envio acontece em segundo plano, com novas tentativas em caso de falha. A criação da conta não espera o email. Há um limite de um aviso enfileirado por endereço a cada 24 horas; contas já assumidas ou expiradas são ignoradas antes do envio. Sem email no POST, o ambiente é criado sem aviso.

O agente sempre entrega a `claimUrl` na conversa e continua a integração. Não espere a mensagem chegar nem crie outra conta para tentar reenviá-la. Um `201` confirma o provisionamento, não a entrega do email. Receber o aviso não verifica identidade: a pessoa ainda precisa entrar na Infi para assumir a conta.

O prazo padrão é de 30 dias. Use o valor de `expiresAt` da resposta para informar a data exata, inclusive em ambientes com prazo diferente.

Exemplo de mensagem do agente:

> Preparei sua conta Acme e salvei as chaves de teste no app. Seu cadastro ainda precisa ser finalizado na Infi: abra \[claimUrl retornada] até \[expiresAt retornado]. Você também poderá receber esse link por email. Vou continuar a integração no sandbox.

Este fluxo requer a versão da API com `accountName`/`publishableKey`, CLI 0.2.6+ e MCP 0.1.5+. O email requer a atualização de envio de claim no sandbox. Publique a documentação junto dessas versões; os comandos antigos de bootstrap continuam disponíveis.
