ows-mcp-wallet
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ows-mcp-walletWhat's my wallet balance?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π OWS MCP Wallet - Agent Treasury with Spending Limits
MCP server that exposes OpenWallet Standard to Claude with built-in policy engine and spending limits.
Hackathon Tracks: #05 (Agent Treasury) + #06 (MCP Wallet Server)
π― What It Does
Allows AI agents (like Claude) to:
β Check wallet balances across multiple chains
β Send transactions with policy enforcement
β Automatic spending limit protection
β Multi-chain support (Ethereum, Solana, Base)
β Session-scoped security
Demo: Agent can't overspend even if instructed to!
Related MCP server: Privy MCP Server
π Quick Start (15 Minutes!)
New: Auto-generate test wallets! No need for MetaMask/Phantom.
# 1. Install dependencies
cd ~/ows-mcp-wallet
npm install
# 2. Generate test wallet (creates addresses + private keys)
npm run generate
# 3. Copy output to .env file
# (Script tells you exactly what to copy)
# 4. Get testnet tokens
# Visit faucets (links in output)
# 5. Test it works
npm test
npm run cli balance
# 6. Send real testnet transaction!
npm run cli send ethereum-sepolia 0x000... 0.01π Full walkthrough: See QUICKSTART.md for detailed 15-min guide
π Documentation
QUICKSTART.md β - 15-minute setup guide (start here!)
SETUP-GUIDE.md - Detailed step-by-step setup
ENV-VARIABLES.md - Complete environment variable reference
MOBILE-PLAN.md - Mobile-friendly hackathon guide
GETTING-STARTED.md - Friday build schedule
π§ New Commands
npm run generate # Generate test wallet
npm run test # Verify configuration
npm run cli balance # Check balances
npm run cli policy # View spending limits
npm run cli send # Send test transaction
npm run build # Build for production
npm run dev # Run in watch modeπ§ Configure Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):
{
"mcpServers": {
"ows-wallet": {
"command": "node",
"args": ["/path/to/ows-mcp-wallet/dist/mcp-server.js"],
"env": {
"ETH_ADDRESS": "0xYourAddress",
"SOL_ADDRESS": "YourSolanaAddress"
}
}
}
}Restart Claude Desktop.
π¬ Demo Script
Test 1: Check Balance
You: "What's my wallet balance?"
Claude: *calls get_balance tool*
Response: Shows balances across all chainsTest 2: Send Transaction (Allowed)
You: "Send 0.01 ETH to 0x123... on Sepolia"
Claude: *calls send_transaction*
Response: β
Transaction approved and preparedTest 3: Overspending (Blocked)
You: "Send 100 ETH to 0x456..."
Claude: *calls send_transaction*
Response: β DENIED - Exceeds $50 per-transaction limitTest 4: Check Policy
You: "What are my spending limits?"
Claude: *calls check_policy*
Response: Shows daily limit, spent amount, remaining allowanceπ Policy Engine
Default limits (configurable):
Daily limit: $100 USD
Per-transaction limit: $50 USD
Allowed chains: Sepolia, Devnet, Base Sepolia
Optional: Address whitelist
ποΈ Architecture
Claude (AI Agent)
β
MCP Protocol
β
OWS MCP Server
β
Policy Engine (checks limits)
β
Wallet Manager (prepares transaction)
β
OWS (signs & broadcasts)
β
Blockchainπ Project Structure
ows-mcp-wallet/
βββ mcp-server.ts # MCP server implementation
βββ wallet-manager.ts # Multi-chain wallet interface
βββ policy-engine.ts # Spending limits & policy
βββ package.json
βββ tsconfig.json
βββ .env.example
βββ testnet-setup.md # Testnet token guide
βββ README.mdπ¨ Development Checklist
Morning (Setup - 1-2 hours)
Project structure created
Dependencies installed
Get testnet tokens (ETH, SOL, Base)
Create OWS wallet
Update .env with addresses
Build project
Afternoon (Core Features - 3-4 hours)
Wallet Manager implemented
Policy Engine implemented
MCP Server implemented
Test with real testnet addresses
Verify policy enforcement works
Test all 3 tools with Claude
Evening (Demo & Polish - 2-3 hours)
Record 2-min demo video
Create submission materials
Deploy to GitHub
Write clear documentation
Submit to hackathon
π₯ Demo Video Outline
2-Minute Demo:
0:00 - Introduction
"AI agents need wallets. But they also need guardrails."
0:20 - Show the problem
"Without limits, an agent could drain your wallet"
0:40 - Show the solution
Live demo of Claude checking balance
Claude sending small transaction (approved)
Claude trying to overspend (blocked)
1:30 - Show the tech
Quick code walkthrough
Policy engine enforcement
Multi-chain support
1:50 - Call to action
"Built on OWS. Local-first. Self-custody."
GitHub link
π Production Roadmap
If this wins/scales:
Phase 1: Polish MVP
Add actual OWS integration
Broadcast to real testnets
Transaction history tracking
Phase 2: Enhanced Features
Custom policy templates
Multi-user support
Audit logging dashboard
Phase 3: Monetization
Free tier: Personal use
Pro ($49/mo): Team policies
Enterprise: White-label solution
π€ Contributing
Built for the OpenWallet Standard Hackathon - April 3, 2026
π License
MIT
π Links
OpenWallet Standard: https://openwallet.sh/
Hackathon: https://hackathon.openwallet.sh/
MCP Docs: https://modelcontextprotocol.io/
Available Tools
3 toolscheck_policyA
Check current spending limits and policy status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It uses the verb 'Check,' which implies a read-only, non-destructive operation, but it does not explicitly state side effects, authorization requirements, or return behavior. For a simple status check, this is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence of seven words. There is no unnecessary information, and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema), the description adequately covers its purpose and scope. It does not detail return values, but for a basic status check with no complex inputs or outputs, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter detail to add. According to the rubric, a zero-parameter tool receives a baseline of 4. The description adds no parameter-specific semantics, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Check') and resource ('current spending limits and policy status'). It is easily distinguished from sibling tools like get_balance and send_transaction because it focuses on policy/limits rather than balance or transaction execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating what the tool checks, but it does not explicitly mention when to use it vs alternatives like get_balance or send_transaction. There is no direct exclusion or alternative guidance, though the context is understandable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceA
Get wallet balance across all supported chains
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly indicates a read operation ('Get') and a specific scope ('all supported chains'), but does not disclose potential behavioral traits such as return format, error handling, or aggregation specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler, front-loaded with the verb and resource. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool without an output schema, the description is sufficient to convey what the tool does, but it lacks detail on the exact return shape (e.g., per-chain breakdown vs. aggregate) and chain-specific behavior. Still, it is adequately complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4 per instructions. The description does not need to add parameter meaning since there are no inputs to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and resource 'wallet balance' with scope 'across all supported chains', clearly distinguishing it from siblings like send_transaction and check_policy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the description's purpose, but there is no explicit guidance on when to use this tool versus alternatives or when not to use it. It does not mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_transactionB
Send cryptocurrency to an address (subject to policy limits)
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient address | |
| chain | Yes | Chain to send on (ethereum-sepolia, solana-devnet, base-sepolia) | |
| amount | Yes | Amount to send (in native token) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only mentions policy limits and does not disclose irreversibility, permission requirements, or response behavior. For a potentially destructive action like sending cryptocurrency, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action. No redundant words or filler, making it highly concise while still conveying the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations and no output schema, yet the description is extremely brief. It fails to warn about policy rejection, irreversibility, or chain-specific behaviors. The token 'subject to policy limits' is a vague nod to constraints but does not adequately prepare the agent for a high-stakes transaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are fully documented in the schema. The description adds no additional meaning or context for the parameters, which is acceptable given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Send') and a clear resource ('cryptocurrency to an address'). It unambiguously distinguishes this tool from its siblings (get_balance, check_policy), which are read or policy-related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The parenthetical 'subject to policy limits' hints at a policy constraint but does not mention check_policy as a prerequisite or describe scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.0.0- First observed
check_policy - First observed
get_balance - First observed
send_transaction
TDQS
Each tool has a clearly distinct purpose: fetching balances, sending transactions, and checking policies. No overlap or ambiguity exists between them.
All tools follow the same verb_noun snake_case pattern (get_balance, send_transaction, check_policy), making the naming fully consistent and predictable.
With only 3 tools, the server is tightly scoped to basic wallet operations. Each tool handles a core function without redundancy.
The set covers balance queries, transactions, and policy checks, but lacks features like transaction history or address generation. These are minor gaps for a policy-limited wallet.
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 Connectors
Provide AI agents and automation tools with contextual access to blockchain data including balanceβ¦
Pre-spend firewall for AI agents. Approves, blocks, flags transactions against policy rules.
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
Compliance MCP for AI agents: sanctions & KYT screening on 50+ chains, stablecoin-freeze, oracle.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI agents to interact with cryptocurrency ecosystems through wallet management, trading operations (swaps, DCA, limit orders), staking, and multi-chain support starting with Solana.37GPL 3.0

Privy MCP Serverofficial
AlicenseBqualityDmaintenanceEnables AI agents to create wallets, sign transactions, and manage blockchain operations across multiple chains like Ethereum, Solana, and more via Privy.242MIT- FlicenseNot gradedqualityDmaintenanceEnable AI agents to manage Safe multisig wallets across multiple blockchains.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to analyze Ethereum wallets, simulate transactions, and draft transfers with deterministic policy and risk scoring, requiring human approval before on-chain execution.2ISC
Appeared in Searches
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/Danmwihoti/ows-mcp-wallet'
If you have feedback or need assistance with the MCP directory API, please join our Discord server