Skip to main content
Glama

Hundo

propose_transfer

Destructive

Propose a transfer between two of the user's accounts. Same-currency transfers move the amount as-is; cross-currency transfers use the user-supplied exchangeRate or fall back to the latest exchange_rate. Always include a short user-supplied description; optionally include a fee (in fromAccount currency) recorded as a separate expense on the source 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).

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
feeNoOptional transfer fee in fromAccount currency, MAJOR units (e.g. 2.50 for $2.50, 1000 for Rp 1,000). Recorded as a separate expense on the source account.
dateYes
amountYesAmount to transfer, in fromAccount currency, MAJOR units (the displayed amount, e.g. 100.00 for $100.00, 50000 for Rp 50,000). The server scales to storage units; never pre-multiply by 100.
toCurrencyNo3-letter currency for the destination amount. Required when toAccountId is omitted; otherwise inferred from the account.
descriptionYesShort user-supplied description, e.g. 'rent to landlord'.
toAccountIdNoId of the destination account. Omit only in the email-import pipeline when the email is genuinely ambiguous about the destination account. Do not pass an empty string; omit the field entirely instead.
exchangeRateNo
fromCurrencyNo3-letter currency for the source amount. Required when fromAccountId is omitted; otherwise inferred from the account.
fromAccountIdNoId of the source account. Omit only in the email-import pipeline when the email is genuinely ambiguous about the source account — 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.
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.5/5.0
Behavior4/5

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

Annotations are readOnlyHint=false and destructiveHint=true, which already indicate mutation and potential data loss. The description adds context: it creates a pending proposal (non-destructive, temporary), requires user approval before confirmation, and mentions no UI button—important for chat context. It doesn't disclose all side effects (e.g., fee effects) in detail, but it adds sufficient value beyond annotations.

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 dense but structured logically: it opens with the core action, proceeds to sub-behaviors (fee, description, returns), and closes with a critical MCP note. Every sentence adds value, but the multiple clauses in the first sentence could be split for easier scanning. It's slightly long but well-organized.

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?

Given the tool's complexity (10 params, no output schema, two-step workflow), the description covers the essential context: the proposal lifecycle, parameter dependencies (currency vs. account), and the return value's purpose. It doesn't detail return format or error handling, but it provides enough for an agent to call it correctly. Missing details like date format are in the schema, so this is adequate.

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

Parameters4/5

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

Schema coverage is 80%, so the schema provides robust parameter descriptions. The description adds critical semantics: it explains the 'as-is' vs. 'exchangeRate' behavior, the fee currency and recording as an expense, and clarifies that amounts are in MAJOR units and never pre-multiplied—essential for correct invocation. This goes beyond the schema's basic descriptions, demonstrating high value.

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 clearly states the tool's purpose: 'Propose a transfer between two of the user's accounts'—a specific verb and resource. It details the action (propose, not execute), distinguishes it from record (confirm_proposal), and differentiates it from siblings like propose_asset_convert and propose_transaction. The inclusion of key details (same-currency, cross-currency, fee) adds specificity.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Always include a short user-supplied description; optionally include a fee...' and clarifies the two-step workflow: 'only CREATES a pending proposal; nothing is recorded until confirm_proposal is called.' It also names confirm_proposal as the follow-up and implies when not to use (for executing directly). This is thorough, with clear context and no ambiguity.

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