# Use RPC de blockchain em agentes Coinbase AgentKit com a BlockVectra

> Source: https://docs.blockvectra.com/pt-br/guides/coinbase-agentkit/

O Coinbase AgentKit envia suas ações on-chain por meio de um provedor de carteira, e o `ViemWalletProvider` aceita qualquer `WalletClient` do viem. Dê a esse cliente `https://api.blockvectra.com/v1/base_mainnet/public` como transporte e o tráfego RPC do AgentKit passa a usar a BlockVectra sem API key. Uma chave libera o restante; o Plano Gratuito oferece 30,000,000 CU por janela de 30 dias. Verificado em 2026-10-11.

```typescript
import { AgentKit, ViemWalletProvider } from "@coinbase/agentkit";
import { getLangChainTools } from "@coinbase/agentkit-langchain";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const client = createWalletClient({
  account: privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`),
  chain: base,
  transport: http("https://api.blockvectra.com/v1/base_mainnet/public"),
});

const agentKit = await AgentKit.from({ walletProvider: new ViemWalletProvider(client) });
const tools = await getLangChainTools(agentKit);
```

Instale com `npm install @coinbase/agentkit @coinbase/agentkit-langchain viem`. `tools` é a lista que a [integração com LangChain](https://github.com/coinbase/agentkit/blob/main/typescript/agentkit/README.md) do AgentKit passa para `createAgent({ model, tools })`; a chave da carteira permanece no seu ambiente.

## Use uma API key

O endpoint público serve apenas os métodos em `public.methods` de cada rede. Para os demais, envie a chave no cabeçalho `x-api-key` e mantenha-a no ambiente, para que nunca apareça na URL:

```typescript
const transport = http("https://api.blockvectra.com/v1/base_mainnet", {
  fetchOptions: { headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! } },
});
```

Se um cliente não puder definir cabeçalhos, a chave pode ir no caminho da URL (`/v1/{chain}/{api_key}`); URLs podem acabar em logs de acesso, então prefira o cabeçalho.

Crie a chave sem navegador com as quatro etapas do [guia de cadastro programático](https://docs.blockvectra.com/pt-br/guides/programmatic-signup/?ref=docs-agentkit): desafio, assinatura, login e, depois, `POST /keys`. Desenvolvedores também podem [criar uma chave no console](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-agentkit). Uma só chave funciona em todas as redes, então trocar o agente para outra rede muda apenas o slug da rede e o objeto de rede do viem.

## Combine as ações do AgentKit com o servidor MCP de documentação

O pacote TypeScript do AgentKit expõe suas ações como tools do LangChain, de modo que as ferramentas MCP do adaptador do LangChain entram no mesmo array `tools`. Siga o [guia do LangChain](https://docs.blockvectra.com/pt-br/guides/langchain/#add-the-docs-mcp-server) para carregar `https://docs.blockvectra.com/mcp` e, depois, mescle:

```typescript
const agent = createAgent({ model: "claude-sonnet-5", tools: [...tools, ...(await adapter.listTools())] });
```

O agente recebe as ações de carteira do AgentKit mais `list_chains`, `get_status`, `rpc_call` e `read_doc` da BlockVectra, listadas na [página do servidor MCP](https://docs.blockvectra.com/pt-br/guides/mcp-server/). Conectar não exige chave.

## Erros que você pode ver

| Resposta                              | Significado                                      | O que fazer                                                                   |
| ------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------- |
| HTTP 401, `-32024`, `missing_api_key` | Uma requisição autenticada foi enviada sem chave | Enviar a chave no cabeçalho `x-api-key` (ou no caminho da URL)                |
| HTTP 401, `-32024`, `invalid_api_key` | Chave desconhecida, desativada ou revogada       | Verificar a chave no console; uma chave nova leva alguns segundos para ativar |
| `-32601`, `method_not_public`         | O método não está em `public.methods` da rede    | Trocar esse transporte de `/public` para a URL autenticada                    |

Cada erro da BlockVectra inclui `data.reason` e um `docs_url`; a lista completa está na [página de erros](https://docs.blockvectra.com/pt-br/errors/).

## Documentação oficial

* [coinbase/agentkit no GitHub](https://github.com/coinbase/agentkit)
* [Transporte HTTP do viem](https://viem.sh/docs/clients/transports/http.html)

## Perguntas frequentes

**A BlockVectra vê a chave privada da carteira?** Não. A conta viem assina localmente; o endpoint recebe leituras e transações brutas já assinadas.

**O agente pode ler logs pelo endpoint público?** Não. `eth_getLogs` e a Data API precisam de uma API key.

**A chave vai nos argumentos das ferramentas MCP?** Não. Mantenha-a no ambiente ou nos cabeçalhos do cliente MCP.

## Próximos passos

* [Visão geral dos frameworks de agentes](https://docs.blockvectra.com/pt-br/guides/agent-frameworks/) para LangChain, ElizaOS, viem e wagmi.
* [Conecte um agente de IA](https://docs.blockvectra.com/pt-br/guides/ai-agents/) para descobrir endpoints com MCP, llms.txt e OpenAPI.
* [Regras de cobrança](https://docs.blockvectra.com/pt-br/guides/billing-rules/) para a medição de CU, limites de taxa e erros não cobrados.
