# Utiliser le RPC blockchain dans les agents Coinbase AgentKit avec BlockVectra

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

Coinbase AgentKit envoie ses actions on-chain via un fournisseur de portefeuille, et `ViemWalletProvider` accepte n'importe quel `WalletClient` viem. Donnez à ce client `https://api.blockvectra.com/v1/base_mainnet/public` comme transport et le trafic RPC d'AgentKit passe par BlockVectra sans API key. Une clé ajoute le reste ; le forfait gratuit offre 30,000,000 CU par fenêtre de 30 jours. Vérifié le 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);
```

Installez avec `npm install @coinbase/agentkit @coinbase/agentkit-langchain viem`. `tools` est la liste que l'[intégration LangChain](https://github.com/coinbase/agentkit/blob/main/typescript/agentkit/README.md) d'AgentKit transmet à `createAgent({ model, tools })` ; la clé du portefeuille reste dans votre environnement.

## Utiliser une API key

Le point de terminaison public ne sert que les méthodes de `public.methods` de chaque chaîne. Pour les autres, envoyez la clé dans l'en-tête `x-api-key` et conservez-la dans l'environnement, afin qu'elle n'apparaisse jamais dans l'URL :

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

Si un client ne peut pas définir d'en-têtes, la clé peut être placée à la place dans le chemin de l'URL (`/v1/{chain}/{api_key}`) ; les URL peuvent se retrouver dans les journaux d'accès, donc préférez l'en-tête.

Créez la clé sans navigateur avec les quatre étapes du [guide d'inscription programmatique](https://docs.blockvectra.com/fr/guides/programmatic-signup/?ref=docs-agentkit) : challenge, signature, connexion, puis `POST /keys`. Les développeurs peuvent aussi [créer une clé dans la console](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-agentkit). Une seule clé fonctionne sur toutes les chaînes ; passer l'agent sur un autre réseau ne change donc que le slug de la chaîne et l'objet chaîne de viem.

## Combiner les actions AgentKit avec le serveur MCP de documentation

Le paquet TypeScript d'AgentKit expose ses actions sous forme d'outils LangChain ; les outils MCP issus de l'adaptateur de LangChain peuvent donc aller dans le même tableau `tools`. Suivez le [guide LangChain](https://docs.blockvectra.com/fr/guides/langchain/#add-the-docs-mcp-server) pour charger `https://docs.blockvectra.com/mcp`, puis fusionnez :

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

L'agent obtient les actions de portefeuille d'AgentKit ainsi que `list_chains`, `get_status`, `rpc_call` et `read_doc` de BlockVectra, listés sur la [page du serveur MCP](https://docs.blockvectra.com/fr/guides/mcp-server/). La connexion ne nécessite aucune clé.

## Erreurs que vous pouvez rencontrer

| Réponse                               | Signification                                               | Que faire                                                                            |
| ------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| HTTP 401, `-32024`, `missing_api_key` | Une requête avec clé a été envoyée sans clé                 | Envoyer la clé dans l'en-tête `x-api-key` (ou dans le chemin de l'URL)               |
| HTTP 401, `-32024`, `invalid_api_key` | Clé inconnue, désactivée ou révoquée                        | Vérifier la clé dans la console ; une nouvelle clé met quelques secondes à s'activer |
| `-32601`, `method_not_public`         | La méthode ne figure pas dans `public.methods` de la chaîne | Passer ce transport de `/public` à l'URL avec clé                                    |

Chaque erreur BlockVectra comporte `data.reason` et un `docs_url` ; la liste complète se trouve sur la [page des erreurs](https://docs.blockvectra.com/fr/errors/).

## Documentation officielle

* [coinbase/agentkit sur GitHub](https://github.com/coinbase/agentkit)
* [Transport HTTP de viem](https://viem.sh/docs/clients/transports/http.html)

## Questions fréquentes

**BlockVectra voit-il la clé privée du portefeuille ?** Non. Le compte viem signe en local ; le point de terminaison reçoit des lectures et des transactions brutes déjà signées.

**L'agent peut-il lire les logs via le point de terminaison public ?** Non. `eth_getLogs` et la Data API nécessitent une API key.

**La clé passe-t-elle dans les arguments des outils MCP ?** Non. Conservez-la dans l'environnement ou dans les en-têtes du client MCP.

## Prochaines étapes

* [Vue d'ensemble des frameworks d'agents](https://docs.blockvectra.com/fr/guides/agent-frameworks/) pour LangChain, ElizaOS, viem et wagmi.
* [Connecter un agent IA](https://docs.blockvectra.com/fr/guides/ai-agents/) pour découvrir les points de terminaison avec MCP, llms.txt et OpenAPI.
* [Règles de facturation](https://docs.blockvectra.com/fr/guides/billing-rules/) pour la mesure en CU, les limites de débit et les erreurs non facturées.
