Monero MCP Server
Provides tools for interacting with a Monero wallet, enabling AI agents to check balances, receive payments, and send XMR through the Monero network.
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., "@Monero MCP ServerWhat's my Monero 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.
π Monero MCP Server
The world's first MCP server for Monero. Give any AI agent a private wallet.
What is this?
This is a bridge between AI agents and the Monero network. It lets any AI agent β OpenClaw, Agent Zero, Claude, or any MCP-compatible framework β check balances, receive payments, and send XMR through a simple tool interface.
Think of it as: your AI agent gets its own Monero wallet.
Related MCP server: Nexus MCP
Wait, what's MCP?
MCP (Model Context Protocol) is a standard created by Anthropic that lets AI assistants use external tools. Instead of the AI just generating text, it can call real functions β read files, query databases, or in this case, interact with a Monero wallet.
If you've ever wanted your AI agent to autonomously receive and send XMR β whether it's an OpenClaw agent running a service, an Agent Zero instance managing its own budget, or just Claude checking your balance β that's what this does.
Why Monero? Why not Ethereum or Bitcoin?
Because AI agents need privacy more than humans do.
When a human makes transactions, there's natural noise β you buy coffee at random times, pay rent irregularly, your patterns are chaotic. An AI agent is different. Every transaction follows logic. On a transparent blockchain, anyone can watch an agent's on-chain behavior and reverse-engineer its strategy, its triggers, and how to exploit it.
Monero's privacy-by-default design means an agent's transaction history, balance, and counterparties are hidden. That's not a nice-to-have β it's a security requirement for any autonomous agent handling real value.
Privacy is not a feature for AI agents. It's infrastructure.
Features
12 tools covering everything an AI agent needs:
Category | Tools |
Balance & Info |
|
Transactions |
|
Receiving |
|
Sending |
|
Validation |
|
Optional (opt-in) |
|
Read-only by default. Sending XMR requires explicit opt-in via environment variable.
Security: Built for a hostile world
This server assumes the AI agent will encounter prompt injection attacks β malicious text designed to trick the AI into sending funds to an attacker. The AI is not our security boundary. The MCP server is.
Five defense layers, all configurable:
π‘οΈ Address Allowlist β Lock transfers to known addresses only. Prompt injection can't send to unknown wallets.
π‘οΈ Two-Step Confirmation β Transfers return a preview + one-time token. Must call confirm_transfer to execute. Attackers can't predict the token.
π‘οΈ Rate Limiting β Cooldown between transfers + daily XMR limit. Limits damage even if everything else fails.
π‘οΈ Audit Log β Every tool call logged as JSONL. Rejected transfers are logged too β those are the interesting ones.
π‘οΈ Input Sanitization β Strict base58 validation before anything reaches the RPC.
This is a tool that can move real money. We built the security for that reality.
Quickstart (5 min)
Get a mainnet receive address and verify the MCP server without downloading the blockchain:
git clone <this-repo> && cd monero-mcp
npm install && npm run build
docker compose up -d
./test-connection.shYouβll see your mainnet receive address. Send XMR to it. To test the MCP handshake (stdio):
node test-mcp-stdio.mjsOptional: run the full MCP test script (build + stdio test; runs npm install if needed):
./test-mcp.shClaude Desktop Integration
Add to your Claude Desktop config
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"monero": {
"command": "npx",
"args": ["-y", "monero-mcp@latest"],
"env": {
"MONERO_RPC_HOST": "127.0.0.1",
"MONERO_RPC_PORT": "18082",
"MONERO_NETWORK": "mainnet",
"MONERO_ALLOW_TRANSFERS": "false"
}
}
}
}Restart Claude Desktop. Ask: "What's my Monero balance?" to verify.
Cursor / Claude Code Integration
Add to .cursor/mcp.json or Claude Code MCP config:
{
"mcpServers": {
"monero": {
"command": "npx",
"args": ["-y", "monero-mcp@latest"],
"env": {
"MONERO_RPC_HOST": "127.0.0.1",
"MONERO_RPC_PORT": "18082",
"MONERO_NETWORK": "stagenet",
"MONERO_ALLOW_TRANSFERS": "false"
}
}
}
}Docker
docker run -e MONERO_RPC_HOST=host.docker.internal \
-e MONERO_RPC_PORT=18082 \
-e MONERO_NETWORK=stagenet \
ghcr.io/baltsar/monero-mcp:latestAgent Zero integration
To use this MCP server with Agent Zero in Docker:
See AGENT-ZERO-DOCKER-SETUP.md for the container run command and volume mount.
Wallet persistence: If containers are recreated, the wallet can be lost unless it runs on the host or uses a persistent volume. For the most robust setup, run
monero-wallet-rpcon the host and point MCP athost.docker.internal:18083. Details and backup steps: AGENT-ZERO-DOCKER-SETUP.md#wallet-persistence-critical.Verification (Agent Zero + Docker): Before relying on your wallet: (1) Confirm wallet-rpc is not running inside the Agent Zero container. (2) Confirm wallet files exist on the host (e.g.
~/monero-wallet/) or that you use this repoβsdocker compose(wallet lives in thewallet-datavolume). Full checklist: AGENT-ZERO-DOCKER-SETUP.md β Verification.In Agent Zero β Settings β MCP, add a server:
Field | Value |
Name |
|
Command |
|
Args |
|
Env: MONERO_RPC_HOST=host.docker.internal, MONERO_RPC_PORT=18083, MONERO_NETWORK=mainnet, MONERO_ALLOW_TRANSFERS=false (read-only).
Copy-paste config and troubleshooting: AGENT-ZERO-DOCKER-SETUP.md.
Remote nodes
The default stack uses a remote node (no local blockchain sync). Default daemon in docker-compose.yml:
Default:
rucknium.me:18081
If you get "no connection to daemon", change --daemon-address in docker-compose.yml to one of these and recreate wallet-rpc:
xmr-node.cakewallet.com:18081node.moneroworld.com:18089
To run your own node and download the chain: docker compose --profile local-node up -d.
Troubleshooting
Problem | What to do |
"no connection to daemon" | Switch remote node in |
Wallet disappeared after container recreated | Run wallet-rpc on the host, or use a persistent volume for the wallet dir and never run |
Empty address in test-connection.sh | Install |
wallet-rpc wonβt start | Check that |
test-mcp.sh: "tsc: command not found" | Run |
Manual setup (no Docker)
Prerequisites
You need a running monero-wallet-rpc instance. If you're just testing:
# Download Monero CLI from https://getmonero.org/downloads
# Start the daemon on stagenet (test network, no real money)
monerod --stagenet --detach
# Start wallet RPC on stagenet
monero-wallet-rpc --stagenet \
--rpc-bind-port 38082 \
--wallet-dir ./wallets \
--disable-rpc-loginInstall & Build
# From this repo root:
npm install
npm run buildConfigure
Copy .env.example and edit:
cp .env.example .envMONERO_RPC_HOST=127.0.0.1
MONERO_RPC_PORT=38082
MONERO_NETWORK=stagenet
# Safety defaults β read only
MONERO_ALLOW_TRANSFERS=false
MONERO_REQUIRE_CONFIRMATION=true
MONERO_TRANSFER_COOLDOWN_SECONDS=60
MONERO_AUDIT_LOG_FILE=./monero-mcp-audit.jsonlConnect to your agent
This is a standard MCP server using stdio transport. Connect it to any MCP-compatible agent or framework.
Example β start the server manually:
node build/index.jsThe server communicates over stdin/stdout using JSON-RPC (MCP protocol). Point your agent framework's MCP client config at the binary and you're good.
Works with OpenClaw, Agent Zero, Claude Code, Cursor, any local LLM setup with MCP support β whatever you run.
Test with MCP Inspector
npx @modelcontextprotocol/inspectorMCP Docs
Protocol: Model Context Protocol
TypeScript SDK: modelcontextprotocol/typescript-sdk
Configuration Reference
Variable | Default | Description |
|
| Wallet RPC host |
|
| Wallet RPC port |
| β | RPC username (digest auth) |
| β | RPC password (digest auth) |
|
|
|
|
| Enable send operations |
| β | Max XMR per single transfer |
| β | Max XMR sent per rolling 24h |
|
| Min seconds between transfers |
| β | Comma-separated address allowlist |
|
| Two-step transfer confirmation |
| β | Path for JSONL audit log |
|
| Enable |
Recommended Production Config
MONERO_ALLOW_TRANSFERS=true
MONERO_ALLOWED_ADDRESSES=4YourTrustedAddress1,4YourTrustedAddress2
MONERO_REQUIRE_CONFIRMATION=true
MONERO_DAILY_LIMIT_XMR=1.0
MONERO_TRANSFER_COOLDOWN_SECONDS=300
MONERO_AUDIT_LOG_FILE=./audit.jsonlNetworks
Network | Daemon Port | Wallet RPC Port | Address Prefix | Real Money? |
Mainnet | 18081 | 18082 |
| β Yes |
Stagenet | 38081 | 38082 |
| β No β use this for testing |
Testnet | 28081 | 28082 |
| β No |
β οΈ Status: Early Alpha
This is v0.1 β built in a night before heading to Monerotopia.
It compiles, the security layers are in place, but it has NOT been audited. Do not use with mainnet funds you can't afford to lose.
If you're a Monero developer or security researcher: tear it apart. That's how we make it production-ready.
β οΈ Important Warnings
This software is not audited. It is early-stage, open-source software that interacts with real money. Use at your own risk.
Your seed phrase is your responsibility. Write it down. Store it offline. If you lose it, your funds are gone permanently. No one can help you.
AI agents can be manipulated. The security layers in this server (address allowlists, two-step confirmation, rate limiting, audit logging) reduce risk but do not eliminate it. Always use all available protections in production.
Do not use with funds you cannot afford to lose.
Start on stagenet. Test everything there before going near mainnet. Free test XMR is available via faucets.
See DISCLAIMER.md for full details.
Contributing
We need help. This is v0.1 and there's a lot to do. See CONTRIBUTING.md for details.
Good first issues:
Better error messages for common RPC failures
Transaction memo/note support
Multiple destination transfers
Help wanted:
Tor proxy support for RPC connection
Multisig wallet operations
Cold signing workflow
Hardware wallet integration via RPC
Integration test suite with stagenet
License
MIT β do whatever you want with it.
Acknowledgments
Built with love for the Monero community.
Inspired by Monerotopia 2026 and the simple idea that if AI agents are going to handle money, they should do it privately.
If you find this useful, consider donating XMR to support development:
45CGtczedKaT6gLHUd2FDebFjGpzio3FzB2AKtx82NxWPF99cfTMeJcCs1XhF9zJTLNVmd6chvMHSNb2symioZkp2f24nfK
Available Tools
14 toolsconfirm_transferB
Confirm and execute a pending transfer. Required when MONERO_REQUIRE_CONFIRMATION=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation_token | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behaviors. It states the tool 'executes' a transfer, implying a write/destructive action, but does not mention permissions, side effects, or reversibility. This is minimal disclosure for a mutation tool.
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?
Description is extremely concise: two sentences that immediately state the purpose and a key usage condition. No filler or redundant information. Ideal length for a simple tool.
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?
Despite the tool's simplicity, the description lacks critical details such as where the confirmation token comes from (typically returned by the 'transfer' tool), error scenarios, and any prerequisites. With no output schema, the return value is also unexplained, making the tool incomplete for an agent.
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 0%, and the description does not explain the 'confirmation_token' parameter beyond what the schema provides (UUID format). The token's origin (e.g., from a prior 'transfer' call) is not mentioned, leaving the agent without essential context.
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 clearly states verb 'Confirm and execute' and resource 'pending transfer', making the action specific. It implicitly distinguishes from siblings like 'transfer' by indicating this is a confirmation step, but lacks explicit differentiation.
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?
Description provides one usage condition: 'Required when MONERO_REQUIRE_CONFIRMATION=true.' This tells the agent when to use, but no when-not or alternatives are mentioned, such as cases where confirmation is not needed or other tools to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_addressC
Create a new subaddress for receiving payments
| Name | Required | Description | Default |
|---|---|---|---|
| account_index | No | ||
| label | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'create' without disclosing behavioral traits such as authentication requirements, idempotency, or side effects. Minimal beyond the verb.
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?
Single sentence is efficient, but the description could be slightly expanded without losing conciseness, e.g., adding the result of the operation.
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 no output schema, no annotations, and 12 sibling tools, the description lacks sufficient context for an AI agent to understand the tool's behavior and output.
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 0%, and the description provides no explanation of account_index or label. The meaning must be inferred from parameter names alone.
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 action (create) and resource (subaddress) with a specific purpose (for receiving payments). It distinguishes from siblings like get_address and validate_address.
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 explicit guidance on when or when not to use this tool versus alternatives like make_integrated_address. Usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_addressC
Get the wallet's primary address
| Name | Required | Description | Default |
|---|---|---|---|
| account_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic action. It does not explain the optional 'account_index' parameter behavior, authentication needs, or error handling. The lack of annotations increases the burden, which the description fails to meet.
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 sentence, but it is too brief to convey necessary details. It lacks structure and fails to provide meaningful information beyond the tool name.
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 lack of output schema and annotations, plus one undocumented parameter, the description is insufficient for an agent to correctly invoke the tool. It does not cover default behavior or return value.
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 'account_index' parameter is not mentioned in the description. With 0% schema description coverage, the description should explain the parameter's purpose and default behavior, but it does not.
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 verb 'Get' and the resource 'wallet's primary address'. It distinguishes from siblings like 'create_address' and 'validate_address', though 'primary address' could be more specific.
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 like 'create_address' or 'validate_address'. No usage context or exclusions are mentioned.
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 in XMR
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states it gets balance, but does not disclose behavior like read-only nature, authentication requirements, or output format.
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?
Single sentence with no unnecessary words. Effectively conveys the tool's 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?
For a simple zero-parameter tool, the description is adequate but lacks details like return format or wallet state requirements.
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?
No parameters exist, so baseline is 4. The description adds meaning by specifying currency (XMR), but this is not parameter-specific.
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 retrieves wallet balance in XMR, specifying the resource and currency. It distinguishes from siblings like get_address or get_transfers.
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 on when to use this tool versus alternatives. The description lacks context such as prerequisites or comparison with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exchange_rateA
Get current XMR/USD and XMR/EUR exchange rate from a public API. Only available when MONERO_ENABLE_PRICE_FEED=true. Makes HTTP requests to external APIs (Kraken, CoinGecko); consider privacy implications.
| 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 discloses that the tool makes HTTP requests to external APIs (Kraken, CoinGecko) and has privacy implications, providing sufficient behavioral context.
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?
Two sentences: first states purpose, second provides conditions and warnings. No redundancy, front-loaded, efficient.
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 parameterless tool with no output schema, the description covers purpose, precondition, data sources, and privacy impact, making it fully informative.
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?
Tool has no parameters (baseline 4), and description adds value by specifying the currencies fetched (XMR/USD, XMR/EUR) beyond the empty schema.
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 explicitly states the tool gets current XMR/USD and XMR/EUR exchange rates from a public API, clearly distinguishing it from sibling wallet tools.
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?
Describes when the tool is available (MONERO_ENABLE_PRICE_FEED=true) and mentions privacy implications, but does not explicitly state when not to use it or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_heightA
Get the wallet's current synced block height
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. The description states it is a 'get' operation, implying it is safe and idempotent, but does not explicitly disclose behavioral traits like lack of side effects or potential caching behavior. It is adequate for a simple read tool.
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 with no wasted words. It is front-loaded with the action and resource.
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 that there are no parameters, no output schema, and no annotations, the description is minimal but sufficient. It could mention what the return value looks like (e.g., a number), but since there is no output schema, it is reasonable. Still, it feels slightly incomplete without any behavioral or return details.
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 no parameters, so schema coverage is effectively 100%. The description adds no parameter-specific information, which is acceptable as there are none. Baseline score of 3 applies.
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 ('Get') and a clear resource ('wallet's current synced block height'), making the tool's purpose immediately obvious. It also distinguishes from sibling tools, which are mostly transfer or address 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?
The description does not provide any explicit guidance on when or when not to use this tool versus alternatives. However, for a simple getter, the usage is implied: use it when you need the block height.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transfer_by_txidC
Look up a specific transaction by its hash
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description should disclose behavior. It implies a read operation but does not explicitly state it is read-only, nor does it mention any side effects, authentication requirements, or rate limits.
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, which is appropriately sized for a simple tool. However, it lacks important details that would improve usability, so it does not fully earn its place.
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 no output schema and low parameter description coverage, the description is insufficient for an agent to understand what the tool returns or how to format inputs. A tool with one parameter should still describe input format and output structure.
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 single parameter 'txid' is a string with no description in the schema (0% coverage). The description does not clarify the expected format (e.g., hex, Base64) or provide any additional meaning beyond the schema.
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 'Look up a specific transaction by its hash' uses a clear verb ('look up') and specifies the resource ('transaction by its hash'). It distinguishes this tool from siblings like 'get_transfers' which lists multiple transfers.
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, such as 'get_transfers'. No prerequisites or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transfersC
Get incoming and outgoing transfer history
| Name | Required | Description | Default |
|---|---|---|---|
| in | No | ||
| out | No | ||
| pending | No | ||
| pool | No | ||
| min_height | No | ||
| max_height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must convey behavioral traits. It describes a read operation ('get'), but fails to mention potential side effects, authentication needs, or what happens when no transfers exist. Minimal transparency.
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?
Extremely concise at one sentence, which is efficient for a simple purpose. However, it lacks any structure such as separating parameter hints or usage notes, making it less scannable.
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?
With 6 parameters and no output schema, the description is grossly incomplete. It fails to explain the meaning of boolean filters or the height range, leaving the agent without critical information for correct invocation.
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 coverage is 0% with no parameter descriptions. The description only loosely maps to 'in' and 'out' booleans via 'incoming and outgoing', but completely ignores 'pending', 'pool', 'min_height', and 'max_height'. Adds almost no value beyond the schema.
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 identifies the tool as retrieving transfer history, specifying 'incoming and outgoing' which adds scope. However, it does not explicitly differentiate from siblings like 'get_transfer_by_txid' which focuses on a single transaction.
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 explicit guidance on when to use this tool vs alternatives like 'get_transfer_by_txid' or 'sweep_all'. The description implies usage for history retrieval but lacks context on exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Get monero-wallet-rpc version
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only states 'Get... version', implying read-only but does not explicitly disclose lack of side effects or other behavioral traits.
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, direct sentence with no extraneous words. Front-loaded with the core action and resource.
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 has no parameters and no output schema, the description sufficiently covers the necessary information for a simple version retrieval tool.
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?
No parameters are defined, and the schema coverage is 100% (empty). Baseline for 0 parameters is 4; the description adds no param info but none is 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 action ('Get') and the specific resource ('monero-wallet-rpc version'), distinguishing it from sibling tools like get_balance or transfer.
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 explicit guidance on when to use this tool vs alternatives, but the purpose is self-evident. The description implies usage for version retrieval without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_setup_helpA
Return guidance on where the Monero wallet is stored when using this MCP server (wallet-rpc). Call this only when the user asks where their wallet is, how to find wallet files, or whether the wallet is on the host or in Docker. Do not call for other Monero questions (e.g. balance or address).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description adequately discloses the tool's purpose and scope. It doesn't hide any negative traits; it's a simple informational tool. Could potentially mention the format of guidance, but not strictly necessary.
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?
Two sentences, front-loaded with the core purpose, immediate use-case guidance. No filler.
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 simplicity (no params, no output schema), the description is complete: it states what the tool returns, when to use it, and when not to. No gaps.
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 has 0 parameters with 100% coverage. Description doesn't need to add parameter info, baseline 4 applies. No additional semantics 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 it returns guidance on Monero wallet location, specifically for wallet-rpc. It distinguishes from sibling tools by noting not to use for balance or address queries.
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?
Explicitly states when to call (user asking about wallet location or Docker) and when not to call (other Monero questions like balance/address). Provides clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_integrated_addressB
Create an integrated address with a payment ID for identifying incoming payments
| Name | Required | Description | Default |
|---|---|---|---|
| payment_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states creation of an address but omits details on side effects, permissions, or restrictions (e.g., whether payment ID is required or optional).
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 clear sentence with no wasted words. While very brief, it is front-loaded with the core action. Could be improved with structured bullet points.
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 no output schema and no annotations, the description lacks context on return values, how the integrated address differs from a normal address, and prerequisites. It is incomplete for a tool with these characteristics.
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 coverage is 0% and the description does not explain the payment_id parameter. The phrase 'with a payment ID' is vague; no format, constraints, or usage examples are provided.
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 creates an integrated address with a payment ID for identifying incoming payments. It distinguishes from siblings like create_address by specifying the inclusion of a payment ID.
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 explicit guidance on when to use this tool versus alternatives. The description implies usage for payment identification, but lacks when-not or direct references to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweep_allC
Send ALL unlocked balance to an address. USE WITH CAUTION.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| priority | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden but only gives a caution. It does not disclose what 'unlocked balance' means, whether the action is irreversible, or what happens with the priority parameter. The warning is generic.
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 very short and efficiently conveys the basic purpose and a caution. However, the second sentence is just a warning and doesn't add structural completeness. Still, it is appropriately sized for a simple tool.
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 dangerous operation like sweeping all balance, the description is incomplete: no return value, no indication of confirmations or reversibility, no explanation of 'unlocked'. Given the risk and lack of output schema, more context is needed.
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 coverage is 0%. The description implicitly explains the 'address' parameter ('to an address'), but the 'priority' parameter is completely undocumented in the description, leaving the agent without guidance on its meaning or usage.
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 action ('Send ALL unlocked balance') and the target ('to an address'). It distinguishes from sibling tools like 'transfer' which sends specific amounts, though it doesn't explicitly contrast with alternatives.
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 only includes 'USE WITH CAUTION' as a warning but provides no guidance on when to use this tool versus alternatives like 'transfer', nor any prerequisites or conditions for safe use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transferC
Send XMR to an address. Requires MONERO_ALLOW_TRANSFERS=true
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| amount_xmr | Yes | ||
| priority | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action and a requirement, but does not disclose irreversibility, error behavior, success indicators, or any side effects.
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 very short (one sentence) and to the point, but lacks any structure or front-loading beyond the action. It is acceptable but minimal.
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 3 parameters, no output schema, and no annotations, the description is too brief. It does not explain return values, error handling, or how to use in conjunction with sibling tools like confirm_transfer.
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 0%, and the description adds no explanation for any parameter (address format, amount units, priority meaning). The description provides no semantic value beyond the raw schema.
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 action: 'Send XMR to an address.' It uses a specific verb and resource, and distinguishes from sibling tools like confirm_transfer or create_address.
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 mentions a prerequisite ('Requires MONERO_ALLOW_TRANSFERS=true') but gives no guidance on when to use this tool vs alternatives like confirm_transfer or sweep_all. No explicit when-not-to-use or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_addressC
Check if a Monero address is valid
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior. It only states the action without describing what validation entails (e.g., format check, checksum), return result, or side effects. This leaves the agent uninformed about the tool's behavior.
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 that front-loads the purpose. However, it could be slightly longer to include essential details without becoming verbose.
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 no output schema, the description should mention what the tool returns (e.g., boolean or error). It omits this, making the tool incomplete for the agent. For a simple validation, more context is needed.
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 0%, yet the description does not elaborate on the 'address' parameter beyond the schema's type 'string'. It adds no semantics about format, length, or examples, failing to compensate for the schema gap.
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 'Check if a Monero address is valid', specifying the verb 'Check' and the resource 'a Monero address'. This uniquely identifies the tool's purpose among siblings, none of which perform validation.
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 provides no guidance on when to use this tool versus alternatives. For example, it does not suggest using it before transfers or confirmations, missing an opportunity to guide the agent.
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.
14 tool updates
v0.2.0- First observed
confirm_transfer - First observed
create_address - First observed
get_address - First observed
get_balance - First observed
get_exchange_rate - First observed
get_height - First observed
get_transfer_by_txid - First observed
get_transfers - First observed
get_version - First observed
get_wallet_setup_help - First observed
make_integrated_address - First observed
sweep_all - First observed
transfer - First observed
validate_address
TDQS
Scored across 14 tools
Every tool has a distinct, non-overlapping purpose. For example, 'get_transfer_by_txid' is specific to a single transaction, while 'get_transfers' lists history; 'transfer' and 'sweep_all' differ in scope. No ambiguity.
All tool names follow a consistent verb_noun snake_case pattern (e.g., 'create_address', 'get_balance', 'confirm_transfer'). 'sweep_all' is the only slight deviation but still fits the imperative verb pattern.
14 tools cover core wallet operations (balance, transfers, addresses, exchange rates, validation, and support) without being excessive. The scope is well-matched to a Monero wallet server.
The tool set covers essential CRUD-like operations for a wallet: create/get addresses, transfer/sweep, query transactions, get balance. Minor gaps exist, such as no tool to create a new wallet from scratch or manage multiple wallets, but these are reasonable for a single-wallet server.
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
Nifty's MCP server β exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI agents to discover campaigns by humans and donate USDC directly on Base.
MCP server for Gainium β manage trading bots, deals, and balances via AI assistants
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server to provide AI agents money functionalities via Nostr and Cashu.68117MIT
- AlicenseNot gradedqualityDmaintenanceMCP server with X402 payment integration, enabling AI agents to access paid tools like weather, web search, and image generation with crypto payments via MetaMask on Base network.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that lets any AI agent operate a wallet directly on-chain: create wallets, send, swap, bridge, and deploy contracts across EVM and Bitcoin networks.2MIT
- AlicenseAqualityCmaintenanceMCP server that lets AI agents browse, create, and submit tasks on Taskmarket, and check wallet balances, using the official CLI for secure key handling.95AGPL 3.0
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/Baltsar/monero-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server