Blockchain-RPC in Coinbase-AgentKit-Agenten mit BlockVectra nutzen

Leiten Sie Lesezugriffe und Transaktionen eines Coinbase-AgentKit-Agenten über BlockVectra, indem Sie ViemWalletProvider einen viem-Client am schlüssellosen öffentlichen Endpunkt geben, und ergänzen Sie dann einen API key und MCP-Tools.

Coinbase AgentKit leitet seine Onchain-Aktionen über einen Wallet-Provider, und ViemWalletProvider akzeptiert jeden viem-WalletClient. Geben Sie diesem Client https://api.blockvectra.com/v1/base_mainnet/public als Transport, und der RPC-Verkehr von AgentKit läuft ohne API key über BlockVectra. Ein Key schaltet den Rest frei; der Free Plan bietet 30,000,000 CU pro 30-Tage-Fenster. Geprüft am .

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);

Installieren Sie mit npm install @coinbase/agentkit @coinbase/agentkit-langchain viem. tools ist die Liste, die die LangChain-Integration von AgentKit an createAgent({ model, tools }) übergibt; der Wallet-Key bleibt in Ihrer Umgebung.

Einen API key verwenden

Der öffentliche Endpunkt bedient nur die Methoden in den public.methods der jeweiligen Chain. Für alle anderen senden Sie den Key im Header x-api-key und halten ihn in der Umgebung, damit er nie in der URL erscheint:

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

Kann ein Client keine Header setzen, lässt sich der Key stattdessen in den URL-Pfad legen (/v1/{chain}/{api_key}); URLs können in Zugriffslogs landen, bevorzugen Sie daher den Header.

Erstellen Sie den Key ohne Browser mit den vier Schritten im Leitfaden zur programmatischen Registrierung: Challenge, Signatur, Login, dann POST /keys. Entwickler können auch in der Konsole einen Key erstellen. Ein Key funktioniert auf jeder Chain; der Wechsel des Agenten auf ein anderes Netzwerk ändert daher nur den Chain-Slug und das viem-Chain-Objekt.

AgentKit-Aktionen mit dem Docs-MCP-Server kombinieren

Das TypeScript-Paket von AgentKit stellt seine Aktionen als LangChain-Tools bereit, daher gehören MCP-Tools aus dem Adapter von LangChain in dasselbe Array tools. Folgen Sie dem LangChain-Leitfaden, um https://docs.blockvectra.com/mcp zu laden, und führen Sie sie dann zusammen:

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

Der Agent erhält die Wallet-Aktionen von AgentKit sowie list_chains, get_status, rpc_call und read_doc von BlockVectra, aufgeführt auf der MCP-Server-Seite. Für die Verbindung ist kein Key nötig.

Fehler, die auftreten können

AntwortBedeutungWas zu tun ist
HTTP 401, -32024, missing_api_keyAnfrage mit Key-Pflicht ohne Key gesendetDen Key im Header x-api-key (oder im URL-Pfad) senden
HTTP 401, -32024, invalid_api_keyKey unbekannt, deaktiviert oder widerrufenDen Key in der Konsole prüfen; ein neuer Key braucht einige Sekunden bis zur Aktivierung
-32601, method_not_publicMethode steht nicht in den public.methods der ChainDiesen Transport von /public auf die URL mit Key umstellen

Jeder BlockVectra-Fehler enthält data.reason und eine docs_url; die vollständige Liste steht auf der Fehlerseite.

Offizielle Dokumentation

Häufige Fragen

Sieht BlockVectra den privaten Wallet-Schlüssel? Nein. Das viem-Konto signiert lokal; der Endpunkt erhält Lesezugriffe und signierte Raw-Transaktionen.

Kann der Agent Logs über den öffentlichen Endpunkt lesen? Nein. eth_getLogs und die Data API benötigen einen API key.

Gehört der Key in die MCP-Tool-Argumente? Nein. Halten Sie ihn in der Umgebung oder in den Headern des MCP-Clients.

Nächste Schritte

Zuletzt aktualisiert:

Auf dieser Seite