Utiliser le RPC blockchain dans les agents Coinbase AgentKit avec BlockVectra

Acheminez les lectures et les transactions d'un agent Coinbase AgentKit via BlockVectra en donnant à ViemWalletProvider un client viem sur le point de terminaison public sans clé, puis ajoutez une API key et des outils MCP.

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 .

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 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 :

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 : challenge, signature, connexion, puis POST /keys. Les développeurs peuvent aussi créer une clé dans la console. 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 pour charger https://docs.blockvectra.com/mcp, puis fusionnez :

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. La connexion ne nécessite aucune clé.

Erreurs que vous pouvez rencontrer

RéponseSignificationQue faire
HTTP 401, -32024, missing_api_keyUne 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_keyClé inconnue, désactivée ou révoquéeVérifier la clé dans la console ; une nouvelle clé met quelques secondes à s'activer
-32601, method_not_publicLa méthode ne figure pas dans public.methods de la chaînePasser 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.

Documentation officielle

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

Dernière mise à jour :

Sur cette page