Skip to main content
Glama

Quick sell a position

quick_sell
Destructive

Sell a token the user holds, in ONE step, at market — quote and execute happen together on the server, so it never fails on an expired quote while you wait for the user. This is THE tool to close or trim a position. ⚠️ THIS SPENDS REAL MONEY. It submits a real transaction from the user's wallet using real funds and cannot be undone. Confirm the exact amount, token and network with the user in plain language, and get their explicit go-ahead, BEFORE calling this. Confirm the token and how much (pct of the position, default 100 = sell it all) in words first.

Sizing: pct is a percent of the CURRENT on-chain balance (the get_my_token_balance number); omit it to sell everything. Proceeds land in USDC in the same agent wallet — output_token names it. Response: sold_amount (token units submitted), pct, status, transaction_signature, the expected proceeds (quoted_output_amount_ui, at least minimum_output_amount_ui), slippage_bps, and the received amount (filled_output_amount_ui) once booked. Response includes quote_id; when fill_pending is true, call get_swap_status(request_id=quote_id). AMOUNTS: read the _ui fields (whole tokens) when talking to the user — the un-suffixed output_amount / minimum_output_amount / filled_*_amount are in the token's SMALLEST unit. A null amount is unknown, never zero: fill_pending: true means the trade was submitted but its fill is not booked yet — say so, and read the received amount from get_swap_status rather than guessing it.

Selling the whole position also cancels EVERY resting TP/SL order on that token (all lots) in the same call: cancelled_order_ids lists them, cancel_failed_order_ids / cancel_pending_order_ids (+ cancel_note) any not cancelled yet, which Moby keeps retrying. A partial sell leaves them (those fields are null). A sell is never blocked by market cap, safety rating or the trade limits (and does not use up the daily volume), but the market order-type switch applies (a refusal comes back as {blocked: true, reason, ...}).

Input Schema

NameRequiredDescriptionDefault
pctNoPercent of the current balance to sell, 1-100. Default 100 = close it.
networkNosolana
token_addressYesContract address of the HELD token to sell. Get it from `get_my_balances`.
max_slippage_bpsNoSlippage tolerance in basis points (100 = 1%). Omit for Moby's default.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructive/non-idempotent/open-world, but the description adds substantial context: real funds, irreversible, mandatory user confirmation, whole-position sells cancel every resting TP/SL order (with the cancelled_order_ids / cancel_failed_order_ids reporting shape), sells bypass market-cap/safety/daily-volume limits, and refusals come back as {blocked, reason}. This is well beyond what the annotations convey.

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?

Front-loaded with purpose, then the money warning, then sizing — good ordering with almost no filler. It is long, however, and spends several sentences enumerating response fields that the output schema already defines, which is mild redundancy.

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

Completeness5/5

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

For a destructive, non-idempotent money-moving tool it covers everything an agent needs: confirmation protocol, sizing source, async fill handling, unit ambiguity (_ui vs smallest unit), null-amount semantics, and side effects on resting orders.

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

Parameters5/5

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

With 75% schema coverage the baseline would be 3-4, but the description adds meaning the schema does not: pct is a percent of the CURRENT on-chain balance tied to get_my_token_balance, omission sells everything, token_address is the HELD token sourced from get_my_balances, and proceeds settle in USDC via output_token.

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?

States a specific verb and resource ('Sell a token the user holds') plus the key differentiator: quote and execute happen together on the server in ONE step. That phrasing separates it from the sibling quote/execute pair (get_swap_quote, execute_swap) without the agent opening any schema.

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 tells the agent when to reach for it ('THE tool to close or trim a position'), that it must confirm amount/token/network and get explicit go-ahead first, and what to do after (call get_swap_status when fill_pending is true). Partial vs. full sell side effects are also spelled out.

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