Available MCP Tools
MUTX exposes 27 MCP tools.
Most tools follow one of these patterns:
- approval in the terminal
- autonomous execution with a valid
SLK - direct execution for low-risk, read-only, or session-lifecycle operations
Conventions
- Wallets are referenced by short ID (4-char prefix) or wallet name
slkis optional on tools that support autonomous executionwallet_connectcreates a pairing attempt, but the user still approves the WalletConnect proposal inside the terminal
Wallet Tools
wallet_list
List available wallets. Requires terminal approval — when the request appears, the operator picks which wallets to expose for this request. Every wallet is preselected by default; the operator deselects any wallet they want to keep hidden. With an SLK, the call returns only the SLK-permitted wallets immediately, with no prompt.
| Parameter | Type | Required | Description |
|---|---|---|---|
slk | string | no | SLK token for autonomous access |
wallet_details
Get a wallet’s name, address, and network.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
slk | string | no | SLK token (requires can_balance) |
wallet_balance
Refresh and return the native asset balance (SOL, ETH, MATIC, BNB depending on chain) plus token balances. Triggers an RPC refresh.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
slk | string | no | SLK token (requires can_balance) |
wallet_receive
Get a wallet’s receive address.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
slk | string | no | SLK token |
wallet_send
Send the chain’s native asset to an address (SOL on Solana, ETH on Ethereum and Arbitrum, MATIC on Polygon, BNB on BNB Smart Chain, etc.).
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
recipient | string | yes | Destination address |
amount | string | yes | Amount in the native asset (e.g. "1.5"), or "max" to drain the full balance (fee reserved automatically) |
slk | string | no | SLK token (requires can_send) |
wallet_token_list
List tokens held by a wallet (SPL on Solana, ERC-20 on EVM chains).
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
slk | string | no | SLK token |
wallet_token_send
Send tokens (SPL on Solana, ERC-20 on EVM chains).
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
token | string | yes | Token identifier — mint address on Solana, ERC-20 contract address on EVM (legacy alias: mint) |
recipient | string | yes | Destination address |
amount | string | yes | Token amount, or "max" for the full token balance |
slk | string | no | SLK token (requires can_send_tokens) |
wallet_swap
Swap tokens via a DEX (Jupiter or Raydium). Solana-only — the daemon rejects this call on EVM wallets.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
input_mint | string | yes | Input token (mint address or symbol like SOL, USDC) |
output_mint | string | yes | Output token (mint address or symbol) |
amount | string | yes | Input amount, or "max" for full balance |
slippage_bps | number | no | Slippage tolerance in basis points (default: 50) |
platform | string | no | "jupiter" or "raydium" (default: auto) |
slk | string | no | SLK token (requires can_swap) |
swap_quote
Preview a swap without executing it: returns expected output, minimum after slippage, price impact, route, platform, and fee. Read-only — no funds move, no signing, no SLK budget consumed, and no approval required. Solana-only.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
input | string | yes | Input token (mint address or symbol) |
output | string | yes | Output token (mint address or symbol) |
amount | string | yes | Input amount to quote |
slippage_bps | number | no | Slippage tolerance in basis points (default: 50) |
slk | string | no | SLK token (any active in-scope SLK is accepted; no budget consumed) |
wallet_close_token
Close an empty SPL token account (associated token account) and reclaim its SOL rent to the wallet owner. The account must hold a zero balance. Solana-only. This is an on-chain signing transaction.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
token_account | string | yes | The (empty) token account address to close |
slk | string | no | SLK token (requires can_sign_message / can_sign_typed_data / can_sign_hash as appropriate) |
wallet_transactions
Transaction history with optional filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
filter | object | no | See filter fields below |
slk | string | no | SLK token (requires can_balance) |
Filter fields:
| Field | Type | Description |
|---|---|---|
direction | string | "sent" or "received" |
min_amount | string | Minimum native-asset amount |
max_amount | string | Maximum native-asset amount |
counterparty | string | Filter by address |
token_mint | string | Filter by token (mint on Solana, contract address on EVM) |
after | number | Unix timestamp lower bound (seconds) |
before | number | Unix timestamp upper bound (seconds) |
limit | number | Results per page (default: 20, max: 100) |
offset | number | Pagination offset |
Signing Tools
These tools let an agent produce a signature for an external dApp (for
example a Polymarket login challenge or order) without ever touching the
wallet’s private key. Every signing tool is gated the same way: an SLK
with the matching capability for autonomous execution
(can_sign_message / can_sign_typed_data / can_sign_hash), or
the Requests-tab fallback for SLK-less calls.
wallet_sign_message
Sign an arbitrary message. EVM wallets sign via EIP-191 personal_sign;
Solana wallets sign via ed25519. The message may be plain UTF-8, or a
0x-prefixed hex string (matching the WalletConnect personal_sign
convention). Returns a 0x-prefixed hex signature. Use this for dApp auth
challenges.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
message | string | yes | UTF-8 text, or a 0x-prefixed hex string |
slk | string | no | SLK token (requires can_sign_message / can_sign_typed_data / can_sign_hash as appropriate) |
wallet_sign_typed_data
Sign an EIP-712 typed-data document with an EVM wallet. Pass the full
{domain, types, primaryType, message} object — the same shape Polymarket,
viem, and ethers produce. Solana wallets are rejected. The terminal approval
preview shows domain.name, verifyingContract, chainId, and
primaryType so the operator can audit what they are signing. Returns a
0x-prefixed hex signature.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | EVM wallet short ID or name |
typed_data | object | yes | Full EIP-712 document {domain, types, primaryType, message} |
slk | string | no | SLK token (requires can_sign_message / can_sign_typed_data / can_sign_hash as appropriate) |
wallet_sign_hash
Sign a raw, pre-computed 32-byte digest directly with an EVM wallet’s
key — no EIP-191 prefix, no extra hashing (the input is the message hash).
Returns a 0x-prefixed 65-byte r||s||v signature. Use this only for
ERC-1271 / ERC-7739 smart-contract-wallet flows where the caller has already
computed the final hash. Solana wallets are rejected.
This is blind signing — the operator approves an opaque hash — so always
pass a clear context describing what the hash represents. For human-readable
messages use wallet_sign_message; for EIP-712 use wallet_sign_typed_data.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | EVM wallet short ID or name |
hash | string | yes | 0x-prefixed 32-byte hex digest (66 chars) |
context | string | no | Human-readable description, shown verbatim in the approval preview |
slk | string | no | SLK token (requires can_sign_message / can_sign_typed_data / can_sign_hash as appropriate) |
Wallet Lifecycle
These tools create or destroy wallets. Each one requires terminal approval (no SLK path). Wallets created through MCP are Cleartext-protected — for a password-protected wallet, use the TUI or Web UI wizard instead.
wallet_create
Create a new Cleartext-protected wallet. Returns the generated seed phrase once — store it offline immediately, it is never shown again.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Wallet display name (must be unique) |
network | string | yes | "solana", "ethereum", or "bitcoin" |
wallet_import_seed
Import a wallet from an existing BIP-39 seed phrase, as Cleartext-protected.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Wallet display name (must be unique) |
network | string | yes | "solana", "ethereum", or "bitcoin" |
seed_phrase | string | yes | 12- or 24-word BIP-39 seed phrase |
wallet_import_private_key
Import a wallet from a raw private key, as Cleartext-protected. Solana:
base58-encoded 64-byte keypair. Ethereum: hex (with or without 0x).
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Wallet display name (must be unique) |
network | string | yes | "solana", "ethereum", or "bitcoin" |
private_key | string | yes | Raw private key |
wallet_delete
Delete a wallet permanently. Destructive and irreversible — back up the seed phrase before approving.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | yes | Wallet short ID or name |
Wallet Access
wallet_access
Read-only view of per-wallet access state: protection mode (password/keyfile/cleartext), lock state (locked, or unlocked with the remaining seconds), whether auto-approve-while-unlocked is enabled, and the active SLKs bound to each wallet. Visibility and audit only — there is no unlock/lock action here. Unlocking a wallet is a human-only operation done in the TUI or Web UI; an agent’s authorization grant is its SLK. No approval needed.
No parameters.
Address Book
address_book_list
List saved contacts.
| Parameter | Type | Required | Description |
|---|---|---|---|
slk | string | no | SLK token (requires can_balance; returns only contacts in the SLK’s address scope) |
address_book_add
Add a contact. The contact is added globally.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Contact name |
address | string | yes | Wallet address |
network | string | no | Network (default: "solana") |
memo | string | no | Optional note |
slk | string | no | SLK token (requires can_send) |
WalletConnect
wallet_connect
Submit a WalletConnect pairing URI. The session proposal is approved in the terminal.
| Parameter | Type | Required | Description |
|---|---|---|---|
uri | string | yes | WalletConnect wc: URI |
wallet_sessions
List active WalletConnect sessions. No approval needed. No parameters.
wallet_disconnect
Disconnect a WalletConnect session. No approval needed.
| Parameter | Type | Required | Description |
|---|---|---|---|
session | string | yes | Session topic prefix or DApp name |
SLK Management
request_slk
Submit a full SlkDraft for operator review. The daemon queues it as a
Proposal and returns immediately with proposal_id and expires_at.
Poll slk_status with target=<proposal_id> to see the operator
decision. On approval the response carries the SLK raw token; pass it
on every subsequent agent call. See the SLK guide for the
draft shape and per-capability scope structs.
| Parameter | Type | Required | Description |
|---|---|---|---|
draft | object | yes | Full SLK draft: identity_partial, wallet_scope, capabilities, scopes, limits (optional), lifetime, proposal_ttl_seconds (optional) |
slk_status
Query the typed status of either a proposal (by id) or a minted SLK (by raw token). The daemon resolves both lookup paths. Returns a snapshot with lifecycle status, cumulative usage, expiry, capabilities, and scopes. No approval needed.
| Parameter | Type | Required | Description |
|---|---|---|---|
target | string | yes | Proposal UUID or SLK raw token |
slk_revoke
Revoke the agent’s own SLK by raw token. Proof of possession; no human approval needed (permission-reducing). The SLK transitions to Revoked and any subsequent dispatch with this token fails closed.
| Parameter | Type | Required | Description |
|---|---|---|---|
token | string | yes | SLK raw token |
Common Workflows
Check a wallet balance
wallet_list— get available wallets- Pick a wallet ID or name from the response
wallet_balance— returns the native asset and token balances
Send the native asset with an SLK
request_slkwithcan_send_nativeand asend_nativescope carryingper_tx_cap,total_budget, andrecipient_whitelist- Operator approves (or narrows) in the Proposals tab
slk_statusreturns the SLK raw tokenwallet_sendwith the SLK — executes without further approval
Execute a swap autonomously
swap_quoteto preview output, price impact, and route (no approval, no budget)request_slkwithcan_swapand aswapscope (allowed_pairs,max_slippage_bps,total_budget_usdc)- Operator approves
wallet_swapwith the SLK — quote is fetched and swap executes within slippage bounds
Sign for a dApp without exposing keys
request_slkwithcan_sign_typed_data(orcan_sign_message/can_sign_hash) scoped to the wallet and dApp domain- Operator approves
- Use
wallet_sign_message(auth challenges),wallet_sign_typed_data(EIP-712 orders), orwallet_sign_hash(ERC-1271 / ERC-7739) with the SLK - The agent gets a signature; the private key never leaves MUTX
Autonomous WalletConnect session
request_slkwithcan_wc_connect+ awcscope listing allowed dApp origins- Operator approves
- The dApp pairs (operator or agent supplies the
wc:URI). When the proposed session matches the SLK’s WC scope, the daemon approves it autonomously — no prompt in DApps. The session settles and the agent proceeds.