# Blockchain-RPC in LangChain-Agenten mit BlockVectra nutzen

> Source: https://docs.blockvectra.com/de/guides/langchain/

Ein LangChain-Agent liest Live-Blockchain-Daten über ein einziges Tool, das JSON-RPC per POST an `https://api.blockvectra.com/v1/eth_mainnet/public` sendet. Dieser Endpunkt benötigt für die Methoden in den `public.methods` der jeweiligen Chain weder einen API key noch eine Registrierung. Ein Key schaltet den Rest frei, und der Free Plan bietet 30,000,000 CU pro 30-Tage-Fenster. Geprüft am 2026-10-11.

```python
import httpx
from langchain.agents import create_agent
from langchain.tools import tool

RPC = "https://api.blockvectra.com/v1/eth_mainnet/public"

@tool
def eth_block_number() -> str:
    """Return the latest Ethereum mainnet block number as a hex string."""
    body = {"jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": []}
    return httpx.post(RPC, json=body, timeout=10).json()["result"]

agent = create_agent("claude-sonnet-5", tools=[eth_block_number])
result = agent.invoke({"messages": [{"role": "user", "content": "What is the latest block?"}]})
print(result["messages"][-1].content)
```

Installieren Sie mit `pip install langchain httpx`; der Modellname und der zugehörige Provider-Key folgen dem [LangChain-Quickstart](https://docs.langchain.com/oss/python/langchain/quickstart). Das Tool nutzt den [`@tool`-Decorator](https://docs.langchain.com/oss/python/langchain/tools) von LangChain und [`create_agent`](https://reference.langchain.com/python/langchain/agents/factory/create_agent).

## Dasselbe Tool in TypeScript

```typescript
import * as z from "zod";
import { createAgent, tool } from "langchain";

const ethBlockNumber = tool(
  async () => {
    const res = await fetch("https://api.blockvectra.com/v1/eth_mainnet/public", {
      method: "POST",
      headers: { "content-type": "application/json" },
      body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "eth_blockNumber", params: [] }),
    });
    return (await res.json()).result as string;
  },
  { name: "eth_block_number", description: "Latest Ethereum mainnet block number (hex).", schema: z.object({}) },
);

const agent = createAgent({ model: "claude-sonnet-5", tools: [ethBlockNumber] });
```

Die Signatur von `tool()` finden Sie im [Tools-Leitfaden](https://docs.langchain.com/oss/javascript/langchain/tools) von LangChain JS.

## Beliebige Methoden mit einem API key aufrufen

Methoden außerhalb von `public.methods`, etwa `eth_getLogs`, benötigen einen Key. Lesen Sie ihn aus der Umgebung und senden Sie ihn im Header `x-api-key`; der Chain-Slug (`eth_mainnet`, `base_mainnet` usw.) stammt aus `GET /v1/chains`:

```python
import os
import httpx
from langchain.tools import tool

@tool
def rpc_call(chain: str, method: str, params: list) -> dict:
    """Call a JSON-RPC method on a BlockVectra chain slug such as base_mainnet."""
    headers = {"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]}
    body = {"jsonrpc": "2.0", "id": 1, "method": method, "params": params}
    return httpx.post(f"https://api.blockvectra.com/v1/{chain}", json=body, headers=headers, timeout=15).json()
```

Wenn die gesamte JSON-RPC-Antwort zurückgegeben wird, kann das Modell ein `error`-Objekt lesen und seinen nächsten Aufruf anpassen. Um den Key ohne Browser zu erstellen, durchlaufen Sie den vierstufigen Ablauf im [Leitfaden zur programmatischen Registrierung](https://docs.blockvectra.com/de/guides/programmatic-signup/?ref=docs-langchain): Challenge, Signatur, Login, dann `POST /keys`. Entwickler können auch [in der Konsole einen Key erstellen](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-langchain).

## Den Docs-MCP-Server hinzufügen

LangChain-Agenten verbinden sich über `MCPAdapter` mit MCP-Servern. Richten Sie ihn auf `https://docs.blockvectra.com/mcp`, damit der Agent `list_chains`, `get_status`, `rpc_call`, `read_doc` und die weiteren Tools von der [MCP-Server-Seite](https://docs.blockvectra.com/de/guides/mcp-server/) erhält. Für die Verbindung ist kein Key nötig.

```python
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter

async def main():
    async with MCPAdapter("https://docs.blockvectra.com/mcp") as adapter:
        tools = await adapter.list_tools()
        agent = create_agent("claude-sonnet-5", tools)
        return await agent.ainvoke({"messages": [{"role": "user", "content": "List the supported chains."}]})
```

Installieren Sie mit `pip install "langchain[mcp]"` (`langchain>=1.4.0`, in Beta). Um Tools mit Key-Pflicht zu nutzen, übergeben Sie den Key als Bearer-Token: `MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"]))` mit `from fastmcp.client import Client`, wie im [MCP-Authentifizierungsleitfaden](https://docs.langchain.com/oss/python/langchain/mcp/auth) von LangChain.

Installieren Sie in TypeScript `@langchain/mcp-adapters@^2.0.0` und übergeben Sie eine Header-Map:

```typescript
import { MCPAdapter } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";

const adapter = new MCPAdapter({
  servers: {
    blockvectra: {
      url: "https://docs.blockvectra.com/mcp",
      headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
    },
  },
});

try {
  const agent = createAgent({ model: "claude-sonnet-5", tools: await adapter.listTools() });
  // agent.invoke(...)
} finally {
  await adapter.close();
}
```

Lassen Sie die Zeile `headers` weg, um schlüssellos zu verbinden. Offizielle Referenzen: [LangChain MCP (Python)](https://docs.langchain.com/oss/python/langchain/mcp) und [LangChain MCP (JavaScript)](https://docs.langchain.com/oss/javascript/langchain/mcp).

## Fehler, die Ihr Tool sieht

| Antwort                               | Bedeutung                                             | Was der Agent tun sollte                                                                 |
| ------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| HTTP 401, `-32024`, `missing_api_key` | URL mit Key-Pflicht ohne Key aufgerufen               | Den Key in `x-api-key` oder im Pfad senden                                               |
| HTTP 401, `-32024`, `invalid_api_key` | Key unbekannt, deaktiviert oder widerrufen            | Den Key in der Konsole prüfen; ein neuer Key braucht einige Sekunden bis zur Aktivierung |
| `-32601`, `method_not_public`         | Methode steht nicht in den `public.methods` der Chain | Eine URL mit Key statt `/public` verwenden                                               |
| `-32601`, method not available        | Methode ist auf dieser Chain nicht aktiviert          | `methods.allow` in `GET /v1/chains` prüfen                                               |

Jeder Fehler enthält `data.reason` und eine `docs_url`; die vollständige Liste steht auf der [Fehlerseite](https://docs.blockvectra.com/de/errors/).

## Häufige Fragen

**Funktioniert der öffentliche Endpunkt für `eth_getLogs`?** Nein. Er bedient nur die Methoden in den `public.methods` der Chain; `eth_getLogs` und die Data API benötigen einen API key.

**Kann der Agent den API key als Tool-Argument übergeben?** Nein. Halten Sie ihn in der Umgebung oder in den Headern des MCP-Clients; der MCP-Server lehnt Keys in Tool-Argumenten ab.

**Kann das Tool eine andere Chain ansprechen?** Ja. Ersetzen Sie `eth_mainnet` durch einen beliebigen Chain-Slug, der in `GET /v1/chains` eine `public.url` hat.

## Nächste Schritte

* [Übersicht der Agent-Frameworks](https://docs.blockvectra.com/de/guides/agent-frameworks/) für ElizaOS, viem, wagmi und Coinbase AgentKit.
* [Einen KI-Agenten verbinden](https://docs.blockvectra.com/de/guides/ai-agents/), um Endpunkte mit MCP, llms.txt und OpenAPI zu entdecken.
* [Abrechnungsregeln](https://docs.blockvectra.com/de/guides/billing-rules/) für CU-Messung, Ratenlimits und nicht abgerechnete Fehler.
