onchain-agent-wallets
onchain-agent-wallets
Gib einem KI-Agenten eine echte Solana-Wallet, ohne ihm dein Geld zu geben.
Ein MCP-Server, der jedem Agenten ein Ausgabenlimit statt eines privaten Schlüssels gibt. Das Geld bleibt auf einem Konto, das dir gehört. Der Agent erhält eine Delegation, die das SPL-Token-Programm on-chain begrenzt, dazu Schutzmechanismen, die du kontrollierst, und die Möglichkeit, x402-APIs aus diesem Limit zu bezahlen. Du kannst es mit einer einzigen Anweisung widerrufen und das Geld zurückholen, ohne den Agenten zu fragen.
Hier ist nichts vorgetäuscht: echte SPL-Token-Delegationen, echtes Solana, echte x402-Abrechnung.
Das Problem, das das löst
Jede „Agenten-Wallet" funktioniert heute gleich: Du erzeugst ein Schlüsselpaar, übergibst es dem Agenten, und schon hat der Agent alles, was darin ist. Es gibt keine Obergrenze, keine Zulassungsliste, kein Ablaufdatum und keine Möglichkeit, es zurückzubekommen, außer man versucht, den Agenten zu überholen, um die Gelder zu verschieben. Die Leute lösen das, indem sie fast nichts in der Wallet lassen, was bedeutet, dass der Agent nichts Nützliches tun kann.
Ein Limit ist die ältere, bessere Antwort. Das Geld wandert nie zum Agenten. Der Agent erhält die Erlaubnis, einen Teil davon auszugeben, und die Blockchain setzt diesen Teil durch.
Related MCP server: Slug Wallet
So funktioniert es
YOU (Phantom, Solflare, Ledger)
│ owns the vault, holds the money, can revoke or withdraw at any time
▼
┌──────────────────────────────────────────┐
│ vault token account │ derived from your address:
│ owner = you │ createWithSeed(you, "oaw1:<agent>")
│ balance = 500 USDC │
│ delegate = the agent ← capped at 100 │ SPL Token enforces this number
└──────────────────────────────────────────┘
▲
│ may spend up to the cap, and not one unit more
AGENT (its own keypair, holds only fee SOL)Zwei unabhängige Ebenen schützen dich:
On-chain. Das SPL-Token-Programm prüft jede vom Agenten signierte Überweisung gegen
delegated_amountund verringert es bei jeder Ausgabe. Unser Code kann es nicht erhöhen. Ein einzigesrevokesetzt es auf null. Das ist eine Standardfunktion des Token-Programms, kein neuer Vertrag, dem man vertrauen muss.Lokal. Bevor dieser Server irgendetwas signiert, wendet er deine Regeln an: Limit pro Transaktion, rollierendes 24-Stunden-Limit, Zulassungsliste für Empfänger, x402-Host-Zulassungsliste, Ablaufdatum, Pause und eine Bestätigungsschwelle, die ein menschliches Ja erzwingt.
Das eigene Schlüsselpaar des Agenten enthält nichts außer ein wenig SOL für Gebühren. Wenn es durchsickert, ist der Schadensradius das verbleibende Limit, und revoke_agent_wallet schließt es in einer Transaktion.
Installation
npm install -g @three-ws/onchain-agent-wallets
# or run it ad hoc
npx -y @three-ws/onchain-agent-walletsEinrichtung
Claude Code:
claude mcp add onchain-agent-wallets -- npx -y @three-ws/onchain-agent-walletsCursor oder ein anderer MCP-Client (mcp.json):
{
"mcpServers": {
"onchain-agent-wallets": {
"command": "npx",
"args": ["-y", "@three-ws/onchain-agent-wallets"],
"env": {
"OAW_NETWORK": "mainnet"
}
}
}
}Zum Starten ist kein Schlüssel erforderlich. Besitzeraktionen werden als unsignierte Transaktion zurückgegeben, die deine Wallet signieren muss und die dann von send_signed_transaction gesendet wird. Wenn du möchtest, dass dieser Server für dich signiert, setze OWNER_SECRET_KEY.
Variable | Standard | Funktion |
| nicht gesetzt | Besitzerschlüssel, base58 oder ein JSON-Byte-Array. Optional: Ohne ihn signierst du in Phantom. |
|
|
|
| öffentlicher Endpunkt | Dein eigener RPC. Der öffentliche drosselt stark. Muss https sein. |
|
| Wo Agenten-Schlüsselpaare, Schutzmechanismen und das Ausgabenbuch gespeichert werden (0600 in einem 0700-Verzeichnis). |
|
| Jedes Tool, das Werte bewegt, verweigert die Übertragung ohne |
Schnellstart
Gib einem Recherche-Agenten 100 USDC Ausgabevolumen, begrenzt auf 5 pro Transaktion und 20 pro Tag, und nur für eine API:
create_agent_wallet
id: "researcher"
allowance: "100"
per_tx: "5"
daily: "20"
allow_hosts: ["api.example.com"]
confirm: true
fund_agent_wallet id: "researcher" amount: "500" sol: "0.02" confirm: trueDer Agent gibt jetzt selbstständig aus:
pay_x402 id: "researcher" url: "https://api.example.com/premium" confirm: true
agent_pay id: "researcher" to: "<address>" amount: "2.50" confirm: trueUnd du behältst die Kontrolle:
agent_wallet_status id: "researcher" # live balances, remaining allowance, warnings
spend_log id: "researcher" # every spend AND every refusal, with reasons
set_guardrails id: "researcher" paused: true # instant, free, no transaction
revoke_agent_wallet id: "researcher" withdraw: true confirm: true # on-chain kill switchEine Ablehnung sagt dir genau, welche Regel gegriffen hat:
{
"ok": false,
"error": "over_daily",
"message": "20.5 would exceed the 20 daily cap (18 already spent)",
"checks": [
{ "check": "per_tx", "ok": true, "detail": "2.5 is within the 5 per-transaction cap" },
{ "check": "daily", "ok": false, "detail": "20.5 would exceed the 20 daily cap (18 already spent)" }
]
}Werkzeuge
Verwahrung (du signierst)
Tool | Funktion |
| Erzeugt das Schlüsselpaar des Agenten, erstellt den Tresor, delegiert ein begrenztes Limit, setzt Schutzmechanismen. Ein Aufruf. |
| Verschiebt Token in den Tresor und SOL zum Agenten für dessen Gebühren. |
| Erhöht, senkt oder füllt die On-Chain-Obergrenze auf. Ersetzt das bisherige Limit. |
| Nimm Gelder zurück. Funktioniert mit oder ohne aktive Delegation. |
| Der Notaus-Schalter. Optional wird der Kontostand in derselben Transaktion nach Hause überwiesen. |
| Sendet eine Transaktion, die deine Wallet signiert hat. |
Schutzmechanismen
Tool | Funktion |
| per_tx, daily, allow_recipients, allow_hosts, expires_at, confirm_over, paused. Sofort, kostenlos, keine Transaktion. |
Ausgaben (der Agent signiert)
Tool | Funktion |
| Sendet Token an einen Empfänger, innerhalb der Limits. |
| Ruft eine x402-API auf und bezahlt aus dem Limit. |
Sichtbarkeit
Tool | Funktion |
| Live-On-Chain-Zustand, Schutzmechanismen, 24h- und 7d-Summen und Warnungen. |
| Alle Agenten mit Live-Kontoständen. |
| Das Prüfprotokoll, einschließlich Ablehnungen. |
Bereitstellung
Tool | Funktion |
| Prägt dem Agenten eine Metaplex-Agent-Registry-Identität mit seiner Zahlungsadresse in den On-Chain-Attributen. |
| Die mcp.json und der Identitätsausweis, die benötigt werden, um diesen Agenten woanders auszuführen. |
Schutzmechanismen
Regel | Wirkung | Durchgesetzt von |
allowance | Gesamtbetrag, den der Agent vor einer neuen Genehmigung ausgeben darf | SPL-Token-Programm, on-chain |
vault balance | Der Agent kann nicht ausgeben, was nicht da ist | SPL-Token-Programm, on-chain |
| Maximale einzelne Ausgabe | dieser Server |
| Maximum pro rollierender 24 Stunden, berechnet aus dem lokalen Buch | dieser Server |
| Nur diese Adressen dürfen Gelder empfangen. Leer bedeutet uneingeschränkt. | dieser Server |
| Nur diese Hosts dürfen über x402 bezahlt werden. Subdomains erben. Leer bedeutet uneingeschränkt. | dieser Server |
| Jede Ausgabe nach diesem Zeitstempel wird verweigert | dieser Server |
| Ausgaben darüber benötigen ein explizites | dieser Server |
| Alles wird sofort und kostenlos verweigert | dieser Server |
Der Unterschied ist wichtig, wenn etwas schiefgeht. Wenn dieser Rechner kompromittiert ist, können die lokalen Regeln umgangen werden, das On-Chain-Limit jedoch nicht. Deshalb sollte das Limit so klein wie möglich sein, damit der Agent arbeiten kann, und bei Bedarf aufgestockt werden, anstatt den gesamten Kontostand zu verwenden.
x402
pay_x402 fragt den Endpunkt zuerst unentgeltlich ab, sodass der Preis bekannt ist, bevor sich etwas bewegt, und die Schutzmechanismen die echte Zahl sehen. Dann stockt es den Agenten um genau diesen Betrag aus dem Tresor auf, bezahlt und lässt den Agenten wieder leer zurück.
Es weigert sich zu zahlen:
in einer anderen Kette als Solana (
no_solana_option)im falschen Cluster, z. B. ein Mainnet-Preis von einer Devnet-Wallet (
wrong_cluster)in einem Token, auf den das Limit nicht lautet (
asset_mismatch)über
max_price, einer Obergrenze pro Aufruf, unabhängig von den bestehenden Schutzmechanismen (over_max_price)
Wenn der Endpunkt nichts verlangt, kommen die Inhalte zurück und es wird nichts ausgegeben.
Was der Agent nicht kann
Mehr ausgeben als das Limit, egal wie er dazu aufgefordert wird. Das entscheidet das Token-Programm, nicht das Modell.
Den Tresor verschieben, schließen oder dessen Besitzer ändern. Er ist nicht der Besitzer.
Dich davon abhalten, abzuheben oder einen Widerruf durchzuführen.
Sein eigenes Limit erhöhen. Das kann nur ein vom Besitzer signiertes
approve.Etwas anderes in deiner Wallet anfassen. Der Tresor ist ein separates Konto, das nur das enthält, was du hineingetan hast.
Belegt in test/token-delegation.test.mjs, das das echte SPL-Token-Programm im Prozess ausführt und prüft, dass eine Ausgabe von 61 bei einem verbleibenden Limit von 60 on-chain fehlschlägt, während 460 im Tresor liegen.
Kostenlos auf Devnet üben
OAW_NETWORK=devnet npx -y @three-ws/onchain-agent-walletsDer Zustand wird pro Netzwerk gespeichert, sodass eine Devnet-Probe deine Mainnet-Agenten nie berührt.
Als Bibliothek verwenden
Das Verwahrungsmodell besteht aus schlichtem @solana/web3.js und @solana/spl-token und ist ohne MCP nutzbar:
import { createVaultInstructions, readVault, spendableUnits } from '@three-ws/onchain-agent-wallets/lib/vault';
const { vault, instructions } = await createVaultInstructions({
connection,
owner: ownerPubkey,
agentId: 'researcher',
mint: usdcMint,
delegate: agentPubkey,
allowance: 100_000_000n, // 100 USDC
decimals: 6,
});
// sign `instructions` with the owner, then:
const state = await readVault({ connection, vault });
console.log(spendableUnits(state)); // what the agent may spend right now@three-ws/onchain-agent-wallets/lib/policy exportiert die Guardrail-Engine eigenständig, falls du dieselben Regeln in einer anderen Laufzeitumgebung verwenden möchtest.
Tests
npm testFührt die Guardrail-Unit-Tests, die x402-Auswahltests und den Integrations-/Delegationstest gegen das echte SPL-Token-Programm aus.
Verwandtes
@three-ws/metaplex-agent-mcpprägt Agentenidentitäten in die Metaplex-Agent-Registry.deploy_agent_onchainverwendet es als Bibliothek, undprepare_agent_mintist der Browser-Wallet-Pfad zum Prägen.three.ws ist der Ort, an dem diese Agenten Gesichter, Avatare und ein Zuhause bekommen.
Lizenz
Siehe LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI-native Solana wallet CLI with scoped MCP server, enabling AI agents to manage wallets with granular permissions, spend limits, and tamper-evident audit logging.5
- AlicenseNot gradedqualityCmaintenanceMCP server that gives terminal AI agents a guarded USDC wallet with firewall, automatic 402 payment handling, and budget limits.7MIT
- AlicenseAqualityCmaintenanceAn MCP server providing policy-gated Solana access for AI agents, with read-only operations and guarded transfers that require policy checks and simulation, returning unsigned transactions.7MIT
- AlicenseBqualityCmaintenanceAn MCP server that enables AI agents to interact with the Solana blockchain through 20 tools for wallet management, SPL token operations, blockchain exploration, and DeFi integration via Jupiter.21MIT
Related MCP Connectors
Native Solana staking for AI agents. 26 MCP tools, one-shot signing, webhooks.
Solana token risk-scoring MCP server for AI trading agents with insider wallet cluster detection.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nirholas/onchain-agent-wallets'
If you have feedback or need assistance with the MCP directory API, please join our Discord server