propose_asset_convert
Propose converting one asset into another (a cashless swap, e.g. spend SOL to acquire a new coin). Records a sell of the source and a buy of the destination at one shared value, moving no cash account. Returns a proposal id; to record it, call the confirm_proposal tool with the returned proposalId after the user approves (there is no UI button or proposal card to click in this context). Validates the user holds enough of the source. Pass the trade value in the user's base currency, or omit it to auto-derive from the source's market price. Always include a short user-supplied description.
MCP note: this tool only CREATES a pending proposal; nothing is recorded until confirm_proposal is called.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | YYYY-MM-DD. | |
| value | No | Trade value in MAJOR units of the user's base currency (the displayed amount, e.g. 850 for $850). This is the value of the source quantity at trade time; it becomes the destination's cost basis. Omit to auto-derive it from the source asset's latest market price. | |
| description | Yes | Short user-supplied description, e.g. 'Swapped SOL for BONK'. | |
| destAssetId | Yes | Id of the asset being acquired (the destination). Must already exist and differ from the source. | |
| destQuantity | Yes | Number of units of the destination asset received. | |
| sourceAssetId | Yes | Id of the asset being spent (the source of the swap). | |
| sourceQuantity | Yes | Number of units of the source asset to spend. | |
| editsProposalId | No | Id of an existing pending proposal to update in place. Pass this when the user asks to modify a proposal you previously made (e.g. 'make it 5 SOL instead'). Look up current ids with listPendingProposals if you're unsure. Omit when proposing something new. |