Repository navigation
docs(wallet-mcp): document Solana reads, send, and swap - #18
Open
bruno-barbieri-cb wants to merge 4 commits into
Open
bruno-barbieri-cb wants to merge 4 commits into
bruno-barbieri-cb wants to merge 4 commits into
Conversation
Add Solana to the wallet-mcp skill to match Wallet MCP's per-tool chain gates: get_portfolio, get_transaction_history, search_tokens, chain_rpc_request, fund (Solana Pay), send and swap accept chain=solana. Send and swap take SOL, USDC or a base58 SPL mint, need a base58 recipient (no name resolution on Solana), and are approved in the user's Base Account, which prepares the transaction and shows the quote and fees. get_request_status returns signed with solanaState, so agents confirm the outcome with get_transaction_history on chain solana. sign, send_calls, x402 and headless sessions don't support Solana yet. Note that only sessions approved from a Base auth keys.coinbase.com session carry baseAccount.solana. Keep solana out of the plugin-spec chain targets since plugins route transactions through send_calls. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
…ules Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
🟡 Heimdall Review Status
|
bruno-barbieri-cb
marked this pull request as ready for review
November 4, 2026 22:03
Agents waited for the user to say "done" before checking status, and treated opening the link as optional. Approval mode now says to open the link right away in CLI harnesses and poll get_request_status about every 5s until a final status or expiry. For Solana, poll get_transaction_history until the transaction shows up, then report its status and hash. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
bruno-barbieri-cb
marked this pull request as draft
November 4, 2026 22:04
Review findings checked against account-mcp master: - Name the real get_request_status statuses (pending, signed, completed, failed). EVM signed with a txHash keeps polling; sign completes with a signature, not a hash. Approval links expire after 10 minutes. - Poll on a backoff (5s for a minute, then 15s) instead of a fixed 5s. - Solana: alternate status and history, match the history entry by type, asset, amount, recipient and time, treat solanaState as wallet-wide and possibly missing, give a stop rule, and check history on failed/unknown. - Auto-open only the Wallet MCP approvalUrl, passed as one quoted argument. - tone.md and plugins no longer say to wait for the user before polling. - Headless sessions get Solana reads; agent wallets have their own Solana address; SOL/USDC need no decimals; Solana fund/send/swap are gated. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
bruno-barbieri-cb
marked this pull request as ready for review
November 4, 2026 22:20
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Document Solana in the
wallet-mcpskill, matching Wallet MCP's per-tool chain gates (account-mcpinternal/mcp/tool_chains.go,solana_tx.go):get_portfolio,get_transaction_history,search_tokens,chain_rpc_request(read-only methods),fund(Solana Pay),sendandswapacceptchain: solana.send/swap: approval mode on mainnet, from the session's Solana address. Assets areSOL,USDC, or a base58 SPL mint (with decimals). Recipients must be base58 addresses, since names aren't resolved on Solana. The user's Base Account prepares the transaction when they open the link, so the quote and fees show there, not in the tool response.get_request_statusreturnssignedfor Solana (a declined request stayspendinguntil it expires). Agents match the transaction inget_transaction_historyonchain: solanaby type, asset, amount, recipient and time, treatsolanaStateas wallet-wide, and never re-initiate while the outcome is unknown.references/approval-mode.md: in CLI harnesses agents auto-open only the Wallet MCPapprovalUrl(one quoted argument), then pollget_request_statuson a backoff (5s, then 15s) without waiting for the user. It names the real statuses (pending, signed, completed, failed; 10-minute expiry), keeps polling EVMsigned, and reports a signature forsign.tone.mdand the plugins that said to poll only after the user acts now match.sign,send_calls, and x402. Headless sessions get Solana reads for their agent wallet, not send/swap.fund/send/swapon Solana are gated by server switches, and SOL/USDC need no decimals.baseAccount.solana. Reconnect once, then stop asking.solanastays out of the plugin-spec chain targets, because plugins route transactions throughsend_calls.The disclaimer and existing style are unchanged.
Solana send and swap are live in prod and verified end to end on 11/4 (see Validation).
Change type
Validation
python3 -m unittest discover -s tests: 38 tests pass.python3 scripts/build-distributions.py <dir>: builds cleanly.wallet-mcpis still source-only and not in any distribution.Wording checked against account-mcp master tool descriptions and handlers, read-only.
Prod smoke test on 11/4 against wallet-mcp.coinbase.com, following the updated approval flow (link auto-opened, status and history polled without user prompting): 0.001 SOL send (5B4Rwq4F…) and 0.005 SOL → USDC swap (2B3GjufF…), both confirmed.
Not run: native harness loading.
Generated portable manifest and MCP config validate against the vendored Agent Plugins schemas
Package paths and skill references remain inside each generated plugin root
Marketplace, skills, MCP, and icon paths are valid
Exactly one canonical skill library; generated copies are not committed
Claude compatibility metadata/endpoint and marketplace sources agree with the portable package
Tool schemas, authorization, and retry behavior reviewed
README and changelog updated; versions consistent
No unapproved disclosures or sensitive data
Signed commits
Release considerations
The skill isn't published in any distribution yet.