> ## 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.

# Lovable

> Conecte seu app do Lovable ao Infi: chave por HTTP e SDK no servidor.

<Tip>
  **Dois caminhos: MCP ou uma chamada HTTP.** Use `infi_onboard` pelo **MCP stdio** (`npx -y @beinfi/mcp`) quando o editor
  suportar esse transporte. Sem shell ou MCP, o agente provisiona pela API abaixo.
  O guia de <a href="/agent-onboarding">cadastro pelo agente</a> descreve
  as versões necessárias, as perguntas e a retomada da mesma conta.
</Tip>

## 1. Prepare a conta

O agente primeiro procura uma integração Infi no app. Se já houver, reutiliza a
conta. Para uma integração nova, pergunta email, nome do app e forma de cobrança.
Com as respostas, chama `infi_onboard` ou faz o POST abaixo com os dados reais:

```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"}'
```

A resposta traz `apiKeySecret` (`sk_test_*`, uma única vez), `publishableKey`
(`pk_test_*`), `accountName`, `tenantSlug`, `expiresAt`, `productId` do seed e a `claimUrl`
(`https://app-sandbox.beinfi.com/claim/{id}`). O `ref: "lovable"` é o que marca o
`signup_source` do tenant. Detalhes de cada campo em
<a href="/inicio-rapido">início rápido</a>.

## 2. Guarde o link para finalizar depois

O agente entrega a `claimUrl` e continua a integração no sandbox. Com a atualização
de email de claim, informar o endereço também enfileira um aviso com nome da conta,
link e prazo. O envio é assíncrono, limitado a um aviso por endereço a cada 24 horas.
O email não contém as chaves; `201` confirma a criação, não a entrega da mensagem.

Você entra na Infi depois, pelo link da conversa ou do email, e assume a mesma
conta. O prazo padrão é de 30 dias; vale o `expiresAt` retornado. O nome já está
preenchido e produtos, chaves e slug são preservados. Não crie outra conta se o
email demorar. Detalhes em <a href="/sandbox">Claim</a>.

## 3. Env no app Lovable

```bash theme={null}
INFI_SECRET_KEY=sk_test_...
INFI_PUBLISHABLE_KEY=pk_test_...
INFI_TENANT_SLUG=seu-tenant
```

Salve a `INFI_SECRET_KEY` nos secrets das funções de servidor. Só a
`INFI_PUBLISHABLE_KEY` pode ser exposta no browser quando uma API cliente exigir;
ela é da Infi, não do provedor de pagamento. Nunca exponha a secret em uma variável
`VITE_*`. O agente não precisa da sua senha nem de código de verificação.

Não sete `INFI_AUTH_BASE_URL` / `INFI_PAY_BASE_URL` — são legado e nada os lê. Os
hosts saem do prefixo da chave.

## 4. Crie o produto

O produto seed não serve pra vender nem pra medir (versão em `draft`, sem meter).
Crie e publique o seu — três chamadas em
<a href="/catalogo">catálogo</a>. Guarde o `productId`: ele entra em
link de pagamento, `checkout()` e em cada evento de uso.

## 5. Integre o SDK

A Infi não faz o login do seu usuário — use o auth que o app já tem (Supabase, no
caso típico do Lovable) e passe esse id pra Infi.

```ts theme={null}
// servidor — inscrição + medição de uso
import { Infi } from "@beinfi/sdk";

const infi = new Infi({ secretKey: process.env.INFI_SECRET_KEY! });

// seuUserId vem do SEU auth (ex.: Supabase)
const enrollment = await infi.products.enroll(productId, {
  externalId: seuUserId,
  email: emailDoUsuario,
});

await infi.track({
  customerId: enrollment.id,
  productId,               // obrigatório com mais de um produto no tenant
  meter: "tokens",
  value: "1200",
});
```

Pra cobrar, mande um <a href="/link-de-pagamento">link de pagamento</a>.
Pra saber que pagaram, <a href="/webhooks">polling em sandbox</a> — o
registro de webhook responde `503` com chave de teste.

## Tools do MCP

Referência do que o servidor MCP expõe. Aponte seu cliente MCP pra ele assim:

```json theme={null}
{
  "mcpServers": {
    "infi": { "command": "npx", "args": ["-y", "@beinfi/mcp"] }
  }
}
```

| Tool                                 | Pra quê                                                              |
| ------------------------------------ | -------------------------------------------------------------------- |
| `infi_onboard`                       | Perguntas → conta preparada → setup → link para finalizar o cadastro |
| `infi_bootstrap`                     | Provisionamento direto + `infi.company.ts` + sync + doctor           |
| `infi_claim_create`                  | Só provisiona o tenant claimable                                     |
| `infi_doctor`                        | Saúde do setup (JSON + fix commands)                                 |
| `infi_go_live_status`                | Guidance claim → KYC → `sk_live_`                                    |
| `infi_sync_plan` / `infi_sync_apply` | Dry-run / apply do company file                                      |
| `infi_set_app_url`                   | Atualiza origens do app                                              |
| `infi_pull`                          | Backend → `infi.company.ts`                                          |
