Skip to main content
Glama

Hundo

propose_asset_trade

Destructive

Propose a buy or sell trade for an asset. 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). For sells, validates the user holds enough quantity. The cash account currency must match priceCurrency. Always include a short user-supplied description; optionally include a categoryId.

MCP note: this tool only CREATES a pending proposal; nothing is recorded until confirm_proposal is called.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesYYYY-MM-DD.
feesNoTransaction fees in MAJOR units (e.g. 1.99 for $1.99, 5000 for Rp 5,000). Pass 0 if none.
actionYes
assetIdYesId of the asset being traded.
quantityYesNumber of units to buy or sell.
categoryIdNoOptional category id to attach to the cash transaction.
descriptionYesShort user-supplied description, e.g. 'DCA into AAPL'.
pricePerUnitYesPer-unit price in MAJOR units (the displayed amount, e.g. 180.25 for $180.25, 3123.98 for Rp 3,123.98). Fractional values are allowed (e.g. 0.000001 for high-supply crypto). The server scales to storage units; never pre-multiply by 100.
cashAccountIdNoId of the cash account funding or receiving this trade. Omit only in the email-import pipeline when the source email doesn't make it clear which cash account is involved — the user picks one via the Edit button. In chat, always pass a real id. Do not pass an empty string; omit the field entirely instead.
priceCurrencyYes3-letter currency code for the trade price.
editsProposalIdNoId 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 $50 instead'). Look up current ids with listPendingProposals if you're unsure. Omit when proposing something new.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations set readOnlyHint=false and destructiveHint=true, but the description adds critical nuance: it only CREATES a pending proposal and nothing is recorded until confirm_proposal is called. This clarifies that the destructiveHint is not about immediate data loss but about a mutating side-effect that remains uncommitted. The validation for sells and the currency-match requirement are also disclosed. This goes beyond what annotations provide and directly addresses a potential misunderstanding, so it fully satisfies this dimension.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact paragraphs. The first paragraph front-loads the core purpose, workflow, and key constraints. The second is a helpful MCP note reinforcing the pending nature. There is minor redundancy (the pending-only point appears twice), but overall every sentence earns its place without excessive length. It is well-structured and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters and a two-step workflow, the description covers the essential contextual needs: it states the return value (a proposal id), the required follow-up (confirm_proposal), validation behaviors, and currency matching. Since there is no output schema, explicitly saying it returns a proposal id is important. Given the high schema coverage for parameters, the description is sufficiently complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 91% schema description coverage, the input schema already documents parameters thoroughly (e.g., pricePerUnit, cashAccountId, fees). The description adds only general guidance ('always include a description', 'optionally include a categoryId') that is already implied by required/optional flags in the schema. It does not add deeper meaning to any parameter beyond what the schema provides, so the baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with an explicit verb and resource: 'Propose a buy or sell trade for an asset.' It clearly distinguishes this from sibling tools like propose_transaction, propose_transfer, and propose_asset_convert by focusing on asset trades. The phrase 'buy or sell trade' is specific and unambiguous, and the mention of returning a proposal id further clarifies its role in a two-step workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent when to use this tool (for buy/sell trades of an asset) and explicitly instructs to call confirm_proposal afterward with the returned proposalId. It also provides conditions: validates sell quantity, requires currency match, and mandates a description. However, it does not explicitly contrast with alternatives (e.g., 'use propose_transfer for transfers'), leaving some differentiation to inference. The workflow guidance is strong, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources