TronSave MCP Server
Server Details
Production-ready TronSave MCP server focused on helping agents and clients buy and sell TRON resource quickly through one unified interface, with fast order execution, pricing/estimation tools, and secure session-based workflows.
- Status
- Healthy
- Uptime
- 99.9% over 80 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 53 tools
The set has many near-duplicate public/signature versus internal API-key paths: estimate_buy_resource/internal_order_estimate, create_order/internal_order_create, get_order/internal_order_details, list_orders/internal_order_history, and list_order_books/internal_order_book. The descriptions explicitly explain which path to use, so the boundaries are recoverable, but selection still requires auth-mode reasoning and is easy to mischoose.
All names are snake_case with a tronsave_ prefix and most follow a verb_noun pattern. The internal namespace flips to forms like internal_order_create, internal_order_details, and internal_order_history, and auto-settings use mixed create/register/update naming, but the overall convention remains readable.
53 tools is far above the well-scoped 3-15 range and includes two parallel stacks for many operations. The domain is broad enough to justify some breadth, but many tools are redundant path variants rather than uniquely earning their place.
Core buy/sell/order/account/automation coverage is extensive, including market data, auto-buy, auto-sell, auth, notifications, and internal ledger. However, there are notable dead ends: no tool submits a flash-unstake request despite estimate/get/list tools, and internal orders lack cancel/update operations.
Available Tools
53 toolstronsave_bulk_create_internal_ordersBulk Buy For Many ReceiversAInspect
Buy the SAME amount of ENERGY or BANDWIDTH for several receiver addresses in one call, paid from the TronSave internal balance; returns one order id per receiver. Side effect: SPENDS paymentAmount SUN of the internal balance; not idempotent (a repeat buys again). Estimate one receiver with tronsave_estimate_buy_resource first and show the user receivers, amount and total cost before calling. Requires a wallet signature identity.
| Name | Required | Description | Default |
|---|---|---|---|
| sponsor | No | Optional sponsor or referral code. | |
| receivers | Yes | Receiver addresses (1 to 50). | |
| unitPrice | Yes | Unit price in SUN per resource unit, per receiver. | |
| durationSec | Yes | Delegation duration in seconds. | |
| resourceType | Yes | Resource bought for every receiver. | |
| paymentAmount | Yes | Total payment in SUN for the whole batch. Must equal the total payout (about unitPrice x resourceAmount x receivers x durationSec / 86400) within 2%; a mismatch is rejected with the expected total. | |
| resourceAmount | Yes | Resource units bought for EACH receiver. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| message | No | |
| success | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing that the call spends paymentAmount SUN of the internal balance, requires a wallet-signature identity, and returns one order id per receiver. The non-idempotency note duplicates idempotentHint=false, but the balance spend and auth requirement are genuine additions to a write tool with destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opens with the operation and its distinguishing constraint, then the side effect, then the recommended pre-call workflow. No sentence is filler and the cost warning is placed before the invocation guidance where it matters most.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the high-risk facts an agent needs for a 7-parameter financial batch operation: uniform amount across up to the schema's 50 receivers, balance spend, non-idempotency, signature requirement, and the estimate-first workflow. Return values are already covered by the output schema, so their absence from prose is not a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents the per-receiver semantics of resourceAmount and the paymentAmount tolerance formula. The description reinforces that resourceAmount is uniform across all receivers, which is mildly useful, but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Buy ... ENERGY or BANDWIDTH for several receiver addresses in one call") plus the payment source and return shape (one order id per receiver). The capitalized SAME immediately distinguishes it from per-receiver or single-order purchase siblings like tronsave_internal_order_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete pre-call workflow: estimate one receiver with tronsave_estimate_buy_resource and show the user receivers, amount and total cost before calling. It never explicitly names the single-address alternative as the fallback for one receiver, so the when-not case is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_cancel_orderCancel OrderADestructiveIdempotentInspect
Cancel an open order by orderId. Returns { success, message, code }. Side effect: marks the order non-matchable and refunds locked balance per backend rules; effectively destructive on the live order. Idempotent — cancelling an already-cancelled order is a no-op success. Fails for fulfilled orders or unauthorized callers. Requires a wallet signature identity (the order's owner). Verify state with tronsave_get_order first; prefer tronsave_update_order when only price/receiver should change.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Target order id (`MObjectId`) to cancel. Must be an active order owned/authorized by the current session; already-fulfilled or already-cancelled orders are expected to fail. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which already declare destructiveHint/idempotentHint: it explains that the order becomes non-matchable, locked balance is refunded per backend rules, cancelling twice is a no-op success, and that a wallet-signature identity of the order's owner is required. Nothing about side effects or preconditions is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and each sentence carries actionable information (return shape, side effects, idempotency, failure modes, alternatives). It is dense and semicolon-packed but not padded; minor loss for the run-on density over a tighter list format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive mutation with an output schema present, the description covers preconditions, side effects, idempotency, auth requirements, and alternate tools. An agent has everything needed to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents `orderId` as an MObjectId that must be an active, authorized order. The description restates 'open order by `orderId`' without adding format, sourcing, or validation detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cancel an open order by `orderId`') and implicitly scopes it to active orders, which separates it from `tronsave_update_order` and `tronsave_get_order`. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names prerequisites ('Verify state with `tronsave_get_order` first') and the alternative ('prefer `tronsave_update_order` when only price/receiver should change'), plus the failure cases (fulfilled orders, unauthorized callers). Routing guidance is complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_create_auto_buy_settingCreate Auto-Buy RuleAInspect
Create a rule that automatically buys resourceAmount for receiver whenever its remaining resource falls below thresholdResourceAmount, paying up to unitPrice SUN per unit from the TronSave internal balance. Side effect: SPENDS internal TRX every time the rule fires until a budget/order limit or endActiveAt stops it; not idempotent (each call adds a rule). Confirm receiver, amounts, price cap and limits with the user first; prefer setting limitBudgetInSun. Requires a wallet signature identity.
| Name | Required | Description | Default |
|---|---|---|---|
| receiver | Yes | TRON base58 address that receives each delegation. | |
| unitPrice | Yes | Maximum unit price in SUN, as a decimal string. | |
| durationSec | Yes | Delegation duration of each purchase, in seconds. | |
| endActiveAt | No | Optional Unix time in seconds when the rule stops. | |
| resourceType | Yes | ENERGY or BANDWIDTH. | |
| startActiveAt | No | Optional Unix time in seconds when the rule starts. | |
| resourceAmount | Yes | Resource units bought each time the rule fires. | |
| limitBudgetInSun | No | Optional total budget cap in SUN (decimal string); must be greater than 10000000 (10 TRX). | |
| limitInOrderCount | No | Optional cap on the number of orders. | |
| thresholdResourceAmount | Yes | Rule fires when the receiver's remaining resource drops below this many units (TronSave requires at least 100000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| message | No | |
| success | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only and non-idempotent, but the description adds the material facts an agent needs: it SPENDS internal TRX on every fire, stops at a budget/order limit or endActiveAt, requires a wallet signature identity, and demands user confirmation before calling. That is well beyond the annotation surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior in the first sentence, followed by side effects and prerequisites. It is dense with parenthetical clauses but nearly every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, non-idempotent, spending tool, the description covers trigger semantics, side effects, termination conditions, auth requirement, and pre-call confirmation. An output schema exists, so return values need not be described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: `unitPrice` is a per-unit cap rather than a fixed price, `endActiveAt` is the stopping condition, and `limitBudgetInSun` is the recommended safety parameter. Minor gaps remain (no discussion of startActiveAt or resourceType trade-offs).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a rule that automatically buys...') plus the exact trigger condition (remaining resource below threshold) and payer source (TronSave internal balance). This clearly distinguishes it from the sibling update/delete/list auto-buy tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit pre-call guidance: confirm receiver, amounts, price cap and limits with the user, and prefer setting `limitBudgetInSun`. It does not name the alternative (e.g. update_auto_buy_setting vs create) explicitly, but the 'each call adds a rule' note implies when a different tool is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_create_orderCreate OrderAInspect
Create a buy order for ENERGY/BANDWIDTH delegated to orderReceiver. SPENDS FUNDS — confirm the plan with the user first. API-key integrations paying from the internal balance can instead use tronsave_internal_order_create (FAST/MEDIUM/SLOW pricing, fill guards). Inputs: orderResourceType, orderReceiver, orderUnitPrice (SUN, not TRX), orderDurationSec, orderResourceAmount, paymentPaymentAmount (SUN), and paymentMethod: internal — debits the TronSave internal balance (needs an api-key login/header or a signature login whose wallet has an internal account); onchain — no login needed, but paymentSignedTx must be the user's wallet-signed TRX transfer to systemDepositAddress. Take price/amount/duration values from the latest tronsave_estimate_buy_resource. Returns { success, message, code, data.orderId } — check success; verify with tronsave_get_order or tronsave_list_orders. Not idempotent: on a timeout, verify before retrying to avoid duplicate orders.
| Name | Required | Description | Default |
|---|---|---|---|
| orderReceiver | Yes | TRON base58 address (starts with T) that receives delegated resource. Same as `receiver` passed to `tronsave_estimate_buy_resource`. | |
| paymentMethod | Yes | Payment method for this order: `onchain` (wallet signed tx) or `internal` (internal balance). | |
| orderUnitPrice | Yes | Unit price in SUN per resource unit (NOT TRX). Use `unitPrice` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration. | |
| paymentSignedTx | No | Required when `paymentMethod=onchain`: the user's wallet-signed TRX transfer of `paymentPaymentAmount` SUN to `systemDepositAddress` (from `tronsave_estimate_buy_resource`), TronWeb shape `{ txID, raw_data, raw_data_hex, signature[] }`. Must be produced client-side by the user's wallet; never fabricate or hand-edit. | |
| orderDurationSec | Yes | Delegation duration in seconds. Must match the `durationSec` used in `tronsave_estimate_buy_resource`. | |
| orderResourceType | Yes | Resource to buy: ENERGY (smart contracts) or BANDWIDTH (transactions). Must match `tronsave_estimate_buy_resource`. | |
| orderResourceAmount | Yes | Amount of ENERGY or BANDWIDTH units to purchase. Same as `buyResourceAmount` in estimate when applicable. | |
| paymentPaymentAmount | Yes | Total payment in SUN (1 TRX = 1e6 SUN). Use `estimateTrx` (SUN) from the latest `tronsave_estimate_buy_resource`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| data | No | |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false, idempotentHint=false and openWorldHint=true, but the description adds substantial context the annotations cannot carry: funds are spent, the auth requirements differ per paymentMethod (api-key header/signature login vs. no login plus a wallet-signed TRX transfer), and the signed tx must be produced client-side, never fabricated. The non-idempotency warning is paired with a concrete recovery procedure — verify before retrying on timeout — rather than just restating the hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the spending warning, and essentially every sentence carries operational value — no filler. It is a dense single block with several clauses chained together, which makes scanning for a specific rule slightly harder than a short bulleted structure would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-required-parameter mutation with a nested signed-transaction object, the definition covers the auth model, the estimate dependency, the return shape (`{ success, message, code, data.orderId }`) and the retry hazard. Even though an output schema exists, the added return-shape and verification guidance leaves no material gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real meaning on top: SUN-not-TRX units, the requirement to take price/amount/duration from the latest estimate, and the conditional relationship between `paymentMethod` and `paymentSignedTx` including which credentials each branch needs. It does repeat some schema text (unit and estimate sourcing) rather than purely extending it, which keeps it just below the top mark.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Create a buy order for ENERGY/BANDWIDTH delegated to orderReceiver' — and immediately distinguishes it from the sibling `tronsave_internal_order_create` by naming the internal-balance use case. An agent can tell which order-creation tool applies without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use routing: API-key integrations paying from internal balance should use `tronsave_internal_order_create`, otherwise this tool. It also mandates a prerequisite ('confirm the plan with the user first'), sources inputs from `tronsave_estimate_buy_resource`, and gives post-call verification tools, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_delete_auto_buy_settingDelete Auto Buy SettingADestructiveIdempotentInspect
Permanently delete one auto-buy rule by id (MObjectId). Side effect: stops all future executions matching that rule; the rule cannot be restored. Idempotent — deleting a non-existent or already-removed id returns success. Requires a wallet signature identity. Use tronsave_get_user_auto_setting to list current rules first; prefer disabling/updating instead when reversibility is desired.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Auto-buy setting id (`MObjectId`) to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint and idempotentHint, but the description adds real value beyond them: what destruction means in the domain ('stops all future executions matching that rule'), irreversibility, the exact idempotency behavior (success on a non-existent id), and an auth requirement ('Requires a wallet signature identity'). No contradiction with the annotation profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight clauses, each doing distinct work (action, consequence, idempotency, auth), with the destructive verb front-loaded before any secondary guidance. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with full annotation coverage and an output schema, nothing an agent needs is missing: safety profile, irreversibility, idempotency, auth, and a sequencing recommendation are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as an auto-buy setting id of type `MObjectId`. The description repeats that identifier and type but adds no new constraints, format, or edge-case semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Permanently delete'), a precisely scoped resource ('one auto-buy rule by `id`'), and the domain type (`MObjectId`). It is clearly distinguishable from `tronsave_update_auto_buy_setting` and the list/get siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: list rules first with `tronsave_get_user_auto_setting`, and prefer disabling/updating when reversibility is wanted. That names both a prerequisite and an alternative tool with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_estimate_buy_resourceEstimate Buy ResourceARead-onlyIdempotentInspect
Quote price and availability for buying ENERGY or BANDWIDTH for a receiver address before placing an order. This quote feeds tronsave_create_order; for tronsave_internal_order_create (API key) quote with tronsave_internal_order_estimate. Returns { unitPrice (SUN/unit), durationSec, estimateTrx (total cost in SUN), availableResource, systemDepositAddress } — map them to tronsave_create_order as orderUnitPrice, orderDurationSec, paymentPaymentAmount. Defaults: ENERGY, 100000 units (1000 for BANDWIDTH), 900 s. Read-only and safe to call repeatedly; no session is required, but backend rate limits apply. For order-book depth use tronsave_list_order_books; for the minimum unit price only use tronsave_get_min_price.
| Name | Required | Description | Default |
|---|---|---|---|
| receiver | No | TRON address that will receive the resource. Strongly recommended: quotes depend on it. | |
| unitPrice | No | Desired unit price in SUN. Values below the market minimum are raised to the minimum. Omit for the MEDIUM market price. | |
| durationSec | No | Delegation duration in seconds. Default 900 (15 minutes). | |
| resourceType | No | Resource type to buy. Default ENERGY. | ENERGY |
| allowPartialFill | No | Allow partial fill of the order. | |
| buyResourceAmount | No | Resource units to buy. Default 100000 for ENERGY and 1000 for BANDWIDTH. | |
| minResourceDelegateRequiredAmount | No | Minimum resource amount per matching provider. |
Output Schema
| Name | Required | Description |
|---|---|---|
| unitPrice | No | Quoted unit price in SUN per resource unit → `orderUnitPrice`. |
| durationSec | No | Delegation duration in seconds → `orderDurationSec`. |
| estimateTrx | No | Estimated total cost in SUN (despite the name; TRX = value / 1e6) → `paymentPaymentAmount`. |
| availableResource | No | Resource units currently available at this price; if lower than requested, the order may fill partially. |
| systemDepositAddress | No | TronSave deposit address; destination of the signed TRX transfer for `paymentMethod=onchain`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, and the description adds genuinely new behavior: no session required, backend rate limits apply, safe to call repeatedly, and which returned fields map to which tronsave_create_order parameters. That mapping is actionable context not present in any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and purpose, then the downstream mapping, then defaults, then sibling routing — a sensible order with no filler sentences. It is dense as a single block and the return-shape and alternative-tool clauses could be split for scanability, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only quote tool with an output schema, full parameter coverage, and rich annotations, the description covers purpose, defaults, output semantics, follow-up call, and alternatives. An agent has everything needed to call it correctly and use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description still adds value by summarizing the default combinations (ENERGY/100000 units/900 s, BANDWIDTH/1000) and, more importantly, by explaining how the quote's outputs become create_order inputs. It does not add much on the less obvious params like allowPartialFill or minResourceDelegateRequiredAmount beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: quoting price and availability for buying ENERGY or BANDWIDTH for a receiver address, explicitly positioned as a pre-order step. It also names the exact siblings it is not (tronsave_internal_order_estimate for API-key orders), so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: use this quote to feed tronsave_create_order, use tronsave_internal_order_estimate for internal orders, tronsave_list_order_books for order-book depth, and tronsave_get_min_price for minimum price only. Defaults for resourceType, amount, and duration are restated so an agent can call with zero arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_estimate_flash_unstakeEstimate Flash UnstakeARead-onlyIdempotentInspect
Estimate what an address would receive by flash-unstaking all its staked TRX now: total staked, fee percentage, payout, delegations to reclaim and the minimum unstake amount. Nothing is submitted. Use before requesting a flash unstake; check an existing request with tronsave_get_flash_unstake_request. Public (any address), read-only. Fails with 404 when the address has nothing staked.
| Name | Required | Description | Default |
|---|---|---|---|
| requester | Yes | TRON base58 address that owns the stake. |
Output Schema
| Name | Required | Description |
|---|---|---|
| payoutAmount | No | |
| feePercentage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint/idempotentHint, and the description still adds real context beyond them: nothing is submitted, it is public for any address, and it fails with 404 when the address has nothing staked. That error-behavior disclosure is the kind of detail annotations cannot carry; only the response/pagination shape is left unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome and every clause earns its place (what it returns, no submission, when to use, alternative, error case). It is dense to the point of being a single run-on paragraph, which slightly hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only estimator with an output schema and full annotation coverage, this is complete: it covers scope, safety, the failure case, and routing to the sibling. Return-value details are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `requester` parameter is already documented with its TRON base58 pattern, so the schema does the heavy lifting. The description adds the useful nuance that the address need not be the caller's ("any address"), but nothing about the parameter format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (estimate) and resource (flash unstake), enumerates exactly what the estimate returns (total staked, fee percentage, payout, delegations to reclaim, minimum unstake amount), and explicitly separates itself from `tronsave_get_flash_unstake_request`, which checks an existing request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing ("Use before requesting a flash unstake") and names the alternative tool with the condition that selects it (checking an existing request). An agent knows both when to call this and when to call the sibling instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_generate_api_keyGenerate API KeyADestructiveInspect
Generate a new internal API key credential for the current user. Returns data containing the issued key — show it to the user once and tell them to store it securely; do not repeat it in later messages. Side effect: issues secret material; not idempotent — each call mints a fresh key and may invalidate the previous one per backend policy. Requires a wallet signature identity. Sensitive output — never log raw keys; unauthorized sessions or policy checks may reject issuance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| data | No | For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material). |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the response shape ('Returns `data` containing the issued key'), handling policy ('show it to the user once... do not repeat it in later messages'), the invalidation caveat ('may invalidate the previous one per backend policy'), and rejection conditions ('unauthorized sessions or policy checks may reject issuance'). This goes well past the destructive/non-idempotent hints already in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the critical output-handling instruction; four dense sentences with no filler. Slightly packed with several distinct cautions, but each one carries operational weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description supplies the one thing the schema cannot: the secret-handling protocol and the fact that repeated calls may invalidate prior keys. For a zero-param secret-minting tool, nothing an agent needs before invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. It correctly says nothing extraneous about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a new internal API key credential for the current user'), leaving no ambiguity about what the call produces. It is clearly distinguishable from the sibling tronsave_revoke_api_key (opposite action) and from login/session tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the precondition ('Requires a wallet signature identity') but never states when an agent should mint a key versus use an existing one, nor when to prefer alternatives such as tronsave_login or tronsave_get_session_status. Usage is implied by the purpose rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_account_resourcesAccount ResourcesARead-onlyIdempotentInspect
Read the on-chain staked and delegatable ENERGY/BANDWIDTH of a TRON address, plus its TRX balance (SUN string). Use to check whether a wallet can sell, or how much resource it holds. Public (any address), read-only; does not need a login.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | TRON base58 address to inspect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| address | No | |
| balance | No | |
| resourcesV2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuine value beyond that: it is public, requires no login, accepts any address, and returns TRX as a SUN string, which is the kind of unit detail an agent would otherwise guess at.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is read, followed by when to use it and the access constraint. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover safety, so the description only needed to establish scope, access model and result shape, all of which it does. It even clarifies the unit of the balance field, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema coverage is 100%, with the base58 pattern documented in the schema. The description's phrase 'any address' usefully confirms there is no ownership restriction, but it adds no format or validation detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads on-chain staked and delegatable ENERGY/BANDWIDTH plus the TRX balance of a TRON address. That is clearly distinct from the sibling set, which is dominated by order, delegation and account-settings tools, and the 'on-chain' qualifier separates it from internal account lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context ('check whether a wallet can sell, or how much resource it holds') and removes a common blocker by noting it is public and needs no login. It does not explicitly name a sibling alternative (e.g. estimate_buy_resource) for the resource-planning case, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_agency_botAgency BotARead-onlyIdempotentInspect
Read the logged-in user's Telegram agency bot (resale bot): name, username, status (PENDING, ACTIVE, INACTIVE, BLOCKED, REJECTED), rewards (total and unpaid) and order / resource statistics. bot is null when none is registered. The bot token is never returned. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| timeFilterBy | No | Statistics window. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior, while the description adds useful specifics: null when no bot is registered, the token is never returned, and a wallet signature is required. It does not explain rate limits or whether timeFilterBy affects all statistics, so it stops short of maximum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The resource and returned fields are front-loaded, followed by concise null, token, and auth notes. 'Read-only' repeats the annotation and is slightly redundant, but the description remains tight overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values in full. It still covers the key operational facts an agent needs: wallet-signature requirement, null-bot case, and non-disclosure of the bot token.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sole parameter's enum is documented in the schema. The description never mentions timeFilterBy or how the statistics window changes the returned data, so the schema does the parameter work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb 'Read' and resource 'logged-in user's Telegram agency bot (resale bot)' and enumerates the returned fields. No sibling tool covers this resource, so the purpose is unambiguous without needing sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clarifies that it reads the logged-in user's own agency bot and notes the wallet-signature identity prerequisite. There are no explicit when-not conditions or alternatives, but no sibling overlaps enough to require them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_deposit_addressGet Deposit AddressARead-onlyIdempotentInspect
Fetches the specific deposit address for the TronSave internal account. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Trigger this tool if the user asks for a deposit address or needs to top up their TronSave TRX balance. Constraints: 1) TRX only; 2) Minimum deposit amount is 10 TRX; 3) Read-only operation.
| Name | Required | Description | Default |
|---|---|---|---|
| amountTrx | Yes | Amount of TRX the user intends to deposit (minimum 10 TRX). |
Output Schema
| Name | Required | Description |
|---|---|---|
| amountTrx | No | Amount of TRX the user intends to deposit (echoed back). |
| depositAddress | No | TRON base58 deposit address; send TRX here to top up the TronSave internal balance. |
| minimumDepositTrx | No | Minimum accepted deposit in TRX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description adds real context beyond them: the required credential (`tronsave_login` api-key or signature mode, or `Authorization: ApiKey` header), the rule that keys must never be passed as tool arguments and are forwarded server-side, and the 10 TRX minimum. That is exactly the auth and constraint disclosure an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and trigger are front-loaded, and the auth and constraint sentences carry actionable information. The closing 'Read-only operation' duplicates the readOnlyHint annotation and could be dropped, but overall the length is justified for a tool with a non-obvious auth model.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers everything else an agent needs: what the tool returns conceptually (a deposit address), the credential path, and the deposit constraints. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and `amountTrx` is already documented with its minimum of 10, so the description's 'Minimum deposit amount is 10 TRX' largely restates structured data. It adds the TRX-only currency constraint but no further semantics for the amount value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetches') and a precise resource ('the specific deposit address for the TronSave internal account'), and no sibling tool covers deposit addresses, so it is unambiguous against the list. The scope (internal account, TRX) further narrows it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger conditions are given: 'Trigger this tool if the user asks for a deposit address or needs to top up their TronSave TRX balance,' plus the constraint that it is TRX-only. It does not name an alternative tool or state when not to use it, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_flash_unstake_requestMy Flash Unstake RequestARead-onlyIdempotentInspect
Read the logged-in user's flash-unstake request (selling staked TRX early for an immediate payout): state, payout state, amounts and release progress. request is null when there is none. Use for the user's own request; to preview a payout before requesting use tronsave_estimate_flash_unstake, to browse everyone's orders use tronsave_list_flash_unstake_orders. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| request | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered; the description still adds real value by disclosing the auth requirement (wallet signature identity) and the empty-state contract ('request is null when there is none'). It does not cover what happens without a valid signature (error vs. empty), which keeps it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the first defines the resource and its returned facets, the second routes the agent to alternatives and states the precondition. Every clause carries information; there is no restatement of the title or name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return shapes, and it still flags the key empty case. Auth requirement, read-only nature, and sibling routing are all covered, which is everything an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly spends no words re-documenting an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the logged-in user's flash-unstake request') and enumerates the returned facets (state, payout state, amounts, release progress). The parenthetical explains what a flash-unstake actually is, and the description explicitly excludes the sibling tools that cover previewing and browsing, so the agent can pick it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule ('the user's own request') and names two concrete alternatives with the conditions that select them: tronsave_estimate_flash_unstake for previewing a payout, tronsave_list_flash_unstake_orders for browsing all orders. It also states a precondition (wallet signature identity), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_internal_accountInternal Account InformationARead-onlyIdempotentInspect
Retrieve the Tronsave internal account profile for the current logged-in session (wallet/represent address, balances, deposit address). Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Use when the user needs their linked address or balance; for the full wallet profile use tronsave_get_user_info, for the ledger of deposits and payments tronsave_list_internal_transactions. Returns { id, balance (SUN string), representAddress, depositAddress }; any API key in the payload is masked. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Internal account id. |
| apiKey | No | MASKED internal API key; the full key is never returned. |
| balance | No | Internal balance in SUN as a decimal string (TRX = SUN / 1e6). |
| depositAddress | No | TRON base58 deposit address; send TRX here to top up the internal balance (min 10 TRX). |
| representAddress | No | TRON base58 address that represents (owns) the internal account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds substantive behavior the annotations cannot express: the auth requirement (tronsave_login internal API key in api-key or signature mode, or an Authorization: ApiKey client header), that the server forwards the key from session/header rather than accepting it as an argument, and that any API key in the payload is masked. These are exactly the operational facts an agent needs before calling a credentialed endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then auth, then sibling routing, then return shape — a sensible information hierarchy with no throwaway sentences. It is dense with parentheticals and repeats a return-shape summary that the output schema already supplies, which keeps it just short of ideal trimness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no input parameters, this is a credentialed, session-scoped read, and the description covers the auth paths, key-handling rule, masking behavior, and the sibling routing needed to pick it. With an output schema present, the brief return summary is a bonus rather than a necessity, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. It does add one relevant constraint about argument handling (API keys must not be passed as arguments), but that is really auth guidance rather than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve the Tronsave internal account profile for the current logged-in session') and immediately enumerates the contents (wallet/represent address, balances, deposit address). It explicitly distinguishes itself from the two nearest siblings, tronsave_get_user_info and tronsave_list_internal_transactions, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger ('Use when the user needs their linked address or balance') and names both alternatives with the condition that selects them: full wallet profile to tronsave_get_user_info, deposit/payment ledger to tronsave_list_internal_transactions. It also states a hard exclusion — never pass API keys as tool arguments — which is actionable guidance rather than description filler.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_market_overviewMarket OverviewARead-onlyIdempotentInspect
Read the TronSave market summary: resource currently available and total listed for ENERGY and BANDWIDTH, number of pooled sellers, and seller APY (percent). Use for a quick 'how is the market' answer before pricing; for prices use tronsave_get_price_table (grid) or tronsave_estimate_buy_resource (one quote), for depth by price use tronsave_list_order_books. Public, read-only. Data refreshes about every TRON block (3 s).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| apy | No | |
| resources | No | |
| totalPool | No | Number of sellers in the pool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behavior, so the description only needs to add context. It contributes freshness information ('refreshes about every TRON block (3 s)') and confirms public access, though it does not discuss rate limits or any auth nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and dense with useful routing information. Every sentence adds either scope, an alternative, or a behavioral fact, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary. The description covers the summary contents, intended use, alternatives, access model, and refresh cadence, which is everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4 and there is no parameter meaning to add. The description correctly avoids inventing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads a TronSave market summary, then enumerates exactly what is included (available/listed ENERGY and BANDWIDTH, pooled seller count, seller APY). This is clearly distinguishable from pricing and order-book siblings named later.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for a quick 'how is the market' answer before pricing, and routes the agent to `tronsave_get_price_table` or `tronsave_estimate_buy_resource` for prices and `tronsave_list_order_books` for depth by price. Both the use case and alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_min_priceGet Minimum Unit PriceARead-onlyIdempotentInspect
Quote the minimum unit price for a buy. Use when only the floor price matters; for a full purchase quote use tronsave_estimate_buy_resource, for a grid across amounts and durations tronsave_get_price_table. Returns { minPrice } (SUN per resource unit; per day when durationSec >= 86400) from GraphQL market.estimateMinPrice for the given resourceType, buyAmount, and durationSec. Optional address scopes context when the API supports it. No login required. Read-only and idempotent. Pair with tronsave_estimate_buy_resource for full buy quotes and tronsave_list_order_books for depth buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional TRON base58 address (`TronAddress`). When omitted, the server uses anonymous/global market context. | |
| buyAmount | No | Resource amount to price (same units as order book / delegate amounts for that resource type). Default 100000 for ENERGY and 1000 for BANDWIDTH | |
| durationSec | No | Delegation window in seconds; must match the duration you plan to use on a real order for comparable quotes. Default 15 minutes | |
| resourceType | No | Market leg: `ENERGY` or `BANDWIDTH`. Default ENERGY | ENERGY |
Output Schema
| Name | Required | Description |
|---|---|---|
| minPrice | No | Estimated minimum unit price in SUN for the given `resourceType`, `buyAmount`, and `durationSec`; align with `tronsave_estimate_buy_resource` and order `unitPrice` conventions (same as GraphQL `market.estimateMinPrice`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the supplied annotations (readOnlyHint, idempotentHint, openWorldHint), the description discloses the auth requirement ('No login required'), the upstream source (`market.estimateMinPrice`), and the unit semantics of the returned value (SUN per resource unit, per day when durationSec >= 86400) — behavior that cannot be inferred from annotations. The only redundancy is restating 'Read-only and idempotent', which is harmless and non-contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, front-loaded sentences leading with the core purpose and the routing decision. The closing sentence partially repeats the alternatives already named, which is mild redundancy rather than clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations carry the safety profile, so the description needs only to explain selection, upstream source, and unit semantics — all of which it does. Nothing an agent needs to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by tying `durationSec` to the returned unit (per-day when >= 86400) and by naming which inputs drive the quote (`resourceType`, `buyAmount`, `durationSec`) plus the scoping role of `address`. It does not add format or validation detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Quote the minimum unit price for a buy') and immediately distinguishes itself from `tronsave_estimate_buy_resource` (full quote) and `tronsave_get_price_table` (grid across amounts/durations). An agent can select it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule ('Use when only the floor price matters') plus named alternatives for the two adjacent use cases, and repeats the pairing guidance at the end. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_orderOrder DetailARead-onlyIdempotentInspect
Read one order by id and return its full snapshot for NORMAL, FAST, or EXTEND order types. With only an API key, use tronsave_internal_order_details instead. Use this as the source of truth before tronsave_update_order, tronsave_sell_order_manual, or tronsave_cancel_order to avoid acting on stale state. Requires a wallet signature identity. Read-only and idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Target order id (`MObjectId`) to inspect. Use this to confirm current status/price before update, sell, or cancel actions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| order | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds two things beyond them: the wallet-signature identity requirement (an auth prerequisite the annotations do not express) and the sequencing role as source of truth before mutations. Return-value detail is omitted, but that is acceptable given the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying a distinct fact: what it reads, the API-key alternative, the pre-mutation sequencing role, and the auth/safety profile. Front-loaded with the action and resource, zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full schema coverage, an output schema, and complete annotations, nothing an agent needs is missing. Auth requirement, alternative tool, and ordering relative to write tools are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents `id` as an MObjectId for confirming status/price. The description adds the useful framing that the id refers to one of three order types (NORMAL, FAST, EXTEND), which is not in the schema. Slightly above baseline because of that added semantic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one order by `id`') plus the return shape ('full snapshot') and the covered order types (NORMAL, FAST, EXTEND). It is immediately distinguishable from `tronsave_list_orders` (plural listing) and `tronsave_internal_order_details` (API-key variant), both named or implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: use `tronsave_internal_order_details` when only an API key is available, and use this tool as the freshness check before `tronsave_update_order`, `tronsave_sell_order_manual`, or `tronsave_cancel_order`. Both the when-to-use and the alternative condition are spelled out, with the stale-state risk stated as the reason.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_price_tableResource Price TableARead-onlyIdempotentInspect
Read the price grid for ENERGY or BANDWIDTH: prices[i][j] is the unit price in SUN for amounts[i] resource units rented for durations[j] (e.g. '15m', '1h', '1d'). Durations of 1 day or longer are priced per day: '30d' at 40 SUN costs 40 x 30 SUN per unit in total. Use to compare cost across amounts and durations in one call. For an exact quote on one purchase use tronsave_estimate_buy_resource; for only the floor price use tronsave_get_min_price. Public, read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional receiver address; prices can depend on the account. | |
| resourceType | Yes | ENERGY (smart-contract calls) or BANDWIDTH (plain transfers). |
Output Schema
| Name | Required | Description |
|---|---|---|
| prices | No | |
| amounts | No | |
| durations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, and the trailing 'Public, read-only' largely restates them. The genuinely additive content is the pricing semantics — SUN as the unit and the per-day rule for durations of 1 day or longer — which is behavior an agent cannot infer from annotations. Safety/auth surface is fully covered by annotations, so this lands mid-range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition and matrix indexing, then the per-day pricing caveat with a worked example, then routing guidance. Dense but every clause carries information; only the redundant 'Public, read-only' tail is arguably wasted given the annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param read tool with a full output schema, the description covers the one thing the schema cannot: how to interpret the returned price grid and how per-day durations are charged. The per-day example ('40 x 30 SUN per unit in total') is slightly ambiguous about whether the multiple applies twice, but overall nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself documents both the enum meaning and the address caveat ('prices can depend on the account'). The description adds no parameter-level detail for resourceType or address; its extra detail concerns the response matrix rather than the inputs, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the price grid for ENERGY or BANDWIDTH') and immediately defines the shape of what comes back (prices[i][j] keyed by amounts[i] and durations[j]). An agent can distinguish it from any other pricing sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to compare cost across amounts and durations in one call', then names two alternatives with the condition that selects each: exact quote goes to tronsave_estimate_buy_resource, floor price only goes to tronsave_get_min_price. Clear when-to-use and when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_referralReferral ProgramARead-onlyIdempotentInspect
Read the logged-in user's referral status: own referral code, sponsor, referral counts, bonus earned and remaining (SUN strings), rank, the referral list (PENDING/ACTIVE) and recent commission payouts. Use for referral questions only; account profile is tronsave_get_user_info. offset/limit page the referral list and the payout list together. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows per list (default 10, max 50). | |
| offset | No | Number of rows of each list to skip for pagination (default 0); add `limit` to page forward. | |
| filterBy | No | Only referrals in this status. |
Output Schema
| Name | Required | Description |
|---|---|---|
| totalRef | No | |
| userRefCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the description correctly does not re-litigate safety; instead it adds genuinely new behavior: a wallet-signature identity requirement and the non-obvious detail that offset/limit page the referral list and the payout list together rather than independently. It also flags that bonus values are SUN strings, which prevents unit mistakes, though it says nothing about empty-state or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned resource, then constraints, then pagination nuance, then the read-only/auth note; every clause carries information. The field enumeration is dense but purposeful rather than padding, though the passage is longer than strictly needed given an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated, read-only, 3-optional-parameter tool with a full output schema, the description covers the remaining agent-relevant gaps: auth identity requirement, pagination coupling across two lists, status filtering values, and unit conventions. No call-relevant fact is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents limit bounds, offset semantics and the PENDING/ACTIVE enum. The description earns above baseline by clarifying that the same offset/limit applies jointly to two result lists, which the per-parameter schema text does not make explicit at the tool level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Read the logged-in user's referral status') and then enumerates exactly what is returned: own referral code, sponsor, counts, bonus earned/remaining in SUN strings, rank, referral list with PENDING/ACTIVE states, and commission payouts. It also names the sibling it is not (tronsave_get_user_info), so an agent can discriminate it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States an explicit usage boundary ('Use for referral questions only') and routes the adjacent use case to the named alternative tool (account profile via tronsave_get_user_info). Nothing about when to pick this versus that sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_seller_statsSeller StatisticsARead-onlyIdempotentInspect
Read the logged-in seller's lifetime totals (delegations, resource delegated, TRX earned, average price per resource) and a daily earnings chart split into auto, manual, exclusive and extend delegations. Use for 'how much did I earn' totals; for the individual delegations behind them use tronsave_list_delegations. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| resourceType | No | Resource the chart is drawn for. | ENERGY |
| timeFilterBy | No | Chart window; default D30. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | No | |
| stats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered; the description's additional value is the wallet-signature identity requirement and the fact that results are scoped to the logged-in seller (self-only, no user parameter). The trailing 'Read-only' merely restates the annotation rather than adding information, which holds it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-built sentences front-load the returned data and then route to the alternative, with no filler. The final 'Read-only' is redundant given readOnlyHint=true and is the one sentence that does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter documentation and read-only annotations, the description covers what matters: scope, return contents, alternative tool, and auth requirement. The one soft gap is that it says a wallet signature is required but does not point to the login/session tool that establishes it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are enums with documented meanings and defaults, so the schema carries the semantic load. The description only alludes to the resource dimension ('per resource') and never explains the chart window parameter, so it adds little beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and a precisely enumerated resource: lifetime totals for delegations, resource delegated, TRX earned, average price, plus a daily earnings chart split by delegation type. It also names the sibling (`tronsave_list_delegations`) that returns the underlying rows, so an agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule ('Use for how much did I earn totals') and an explicit alternative with its condition ('for the individual delegations behind them use tronsave_list_delegations'). It also states a prerequisite ('Requires a wallet signature identity'), so the agent knows the call will fail unauthenticated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_session_statusSession StatusARead-onlyIdempotentInspect
Report the current authentication state without calling TronSave: authMode (none | api-key | signature), source (login | header), walletAddress, hasInternalApiKey, expiresAt, network, and which tool groups are available now. Call this first when unsure whether to log in, and after SESSION_REQUIRED / INVALID_SESSION_TYPE errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| source | No | `login` = `tronsave_login` session, `header` = static Authorization header, `oauth` = OAuth sign-in by the client app. |
| network | No | Network served by this endpoint. |
| authMode | No | `signature` unlocks wallet tools; `api-key` unlocks internal-account tools. |
| expiresAt | No | Login expiry for `source=login`. |
| availableNow | No | Tool groups callable with the current auth. |
| authenticated | No | Whether any credential is active for this request. |
| walletAddress | No | Wallet of the signature identity, if any. |
| headerAuthError | No | Present when header credentials were sent but rejected. |
| hasInternalApiKey | No | Whether an internal API key is available for api-key tools. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond the annotations by disclosing that the check is local ('without calling TronSave'), which reinforces openWorldHint=false, and by naming the specific error codes (SESSION_REQUIRED, INVALID_SESSION_TYPE) that make this call appropriate. It does not cover rate limits or fallback behavior, but the safety profile is already fully carried by the readOnly/idempotent hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the 'without calling TronSave' qualifier and the field list front-loaded before the usage instruction. Every clause carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status probe with an output schema and full annotations, nothing an agent needs is missing: what it reports, when to call it, and that it costs no remote call. The field enumeration is optional but harmless reinforcement of the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The enumerated field list describes return values rather than inputs and is largely redundant with the output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Report the current authentication state') and enumerates exactly what is returned (authMode, source, walletAddress, hasInternalApiKey, expiresAt, network, available tool groups), which clearly separates it from siblings like tronsave_login, tronsave_logout, or tronsave_get_user_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions: 'Call this first when unsure whether to log in' and 'after SESSION_REQUIRED / INVALID_SESSION_TYPE errors.' It does not name an alternative tool to use instead of this one in other situations, so it stops just short of a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_sign_messageGet Signature MessageARead-onlyIdempotentInspect
Step 1 of wallet login. Returns { message, timestamp }: ask the user to sign message with their TRON wallet (TronWeb signMessageV2, TronLink, etc.), then call tronsave_login with signature: "<signature>_<timestamp>". Signing the plain decimal timestamp text is also accepted. No auth needed; no side effects on the account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | Hex-encoded nonce message to sign client-side with the user's TRON wallet. The signature must be produced over THIS exact message (case-sensitive). |
| timestamp | No | Unix epoch seconds corresponding to `message`. Pair it with the wallet signature in `<signature>_<timestamp>` form when calling `tronsave_login` (signature mode). This endpoint is a convenience helper; clients may provide their own timestamp payload as well. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, and the description adds useful context beyond them: no auth is required and there are no side effects on the account. It also discloses the exact composite format the downstream login call expects. It does not mention expiry or how long the message remains valid, which would be the remaining behavioral detail an agent might need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the flow position, then the return value, then the action to take. Three dense sentences, each carrying distinct operational information, with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description summarizes the return (`message`, `timestamp`) and explains how that output feeds the next tool, which is the non-obvious part. Combined with the no-auth/no-side-effects note, an agent has everything needed to call it and continue the flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly focuses on the return shape and downstream call convention rather than inventing parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise role statement ('Step 1 of wallet login') and states exactly what the tool returns (`{ message, timestamp }`). The login-flow framing distinguishes it cleanly from `tronsave_login` and `tronsave_get_session_status`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit sequence: obtain message, ask the user to sign with a named wallet (TronWeb signMessageV2, TronLink), then call `tronsave_login` with the `"<signature>_<timestamp>"` format. It even names the alternative accepted input (plain decimal timestamp), so no inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_system_infoProtocol ParametersARead-onlyIdempotentInspect
Read TronSave and TRON protocol parameters: latest block, minimum buy amounts, TRX burn rates per unit, dynamic buy/lowest prices, the system deposit address, max lock period and the energy cost of a USDT transfer. Use to size purchases (minimums) and to compare renting with burning TRX. For market prices use tronsave_get_price_table or tronsave_estimate_buy_resource; for supply and APY use tronsave_get_market_overview. Public, read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| lastBlock | No | |
| burningEnergyRate | No | SUN burned per energy unit when none is rented. |
| minBuyEnergyAmount | No | |
| burningBandwidthRate | No | |
| systemDepositAddress | No | |
| minBuyBandwidthAmount | No | |
| usdtTransferEnergyValue | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, and the closing "Public, read-only" restates that rather than adding to it. The real added value is the enumeration of returned data categories, which tells the agent this is the single-call configuration snapshot. No rate-limit or freshness/caching behavior is mentioned, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the returned fields are front-loaded in one dense sentence, followed by usage intent and then sibling routing. Slightly list-heavy, and "Public, read-only" is redundant with the annotations, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with a full output schema and rich annotations, everything an agent needs is present: what it returns, why to call it, and which sibling to prefer for adjacent data. Return-value formatting is delegated correctly to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly avoids inventing filters or options that the empty schema does not support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb (Read) and enumerates the exact resources returned: latest block, minimum buy amounts, burn rates, dynamic/lowest prices, deposit address, max lock period, USDT transfer energy cost. This is concrete enough that an agent can distinguish it from tronsave_get_market_overview or tronsave_get_price_table without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives positive usage intent ("size purchases" via minimums, "compare renting with burning TRX") and explicitly routes two competing needs to named alternatives: market prices to `tronsave_get_price_table`/`tronsave_estimate_buy_resource`, supply/APY to `tronsave_get_market_overview`. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_telegram_notify_settingTelegram Notification SettingsARead-onlyIdempotentInspect
Read the Telegram alert filters of the logged-in user: seller alerts (remaining amount, duration, price and APY ranges, unlocked-only) and buyer alerts (reclaim warning time, low energy / bandwidth thresholds). setting is null when Telegram is not linked. Read these before changing them with tronsave_update_telegram_notify_setting (which replaces whole filter objects). For in-app alerts use tronsave_list_notifications. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| setting | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, but the description adds information not in them: `setting` is null when Telegram is not linked, a wallet-signature identity is required, and the paired update tool performs whole-object replacement. Those null semantics and the auth prerequisite are the main things that could cause a caller to misbehave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then the routing guidance, then caveats — good ordering with no filler. The parenthetical field inventories are somewhat redundant given an output schema exists, which trims the score slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema, everything an agent needs is present: what is returned at a high level, the null case, the auth requirement, and the correct sibling for in-app alerts and for mutations. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is a 4. The description instead describes semantics of the returned `setting` object and its null condition, which is a useful addition even though it sits in output-schema territory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the Telegram alert filters of the logged-in user') and immediately enumerates the two filter groups (seller: remaining amount, duration, price/APY ranges, unlocked-only; buyer: reclaim warning time, low energy/bandwidth thresholds). This clearly differentiates it from tronsave_update_telegram_notify_setting and tronsave_list_notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: read this before calling tronsave_update_telegram_notify_setting, and notes that the update tool replaces whole filter objects (so read-modify-write is required). It also names tronsave_list_notifications as the alternative for in-app alerts, which is exactly the sibling-disambiguation an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_user_auto_settingUser Auto SettingARead-onlyIdempotentInspect
Read the current user's auto-sell configuration (autoSettings). Returns the full autoSettings object — call this before tronsave_register_auto_sell or tronsave_update_auto_sell_setting to avoid overwriting fields you do not intend to change. Requires a wallet signature identity. Read-only and idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| vote | No | Whether vote-related automation is enabled for the wallet. |
| energy | No | Energy auto-sell pool snapshot; null when energy automation is disabled. |
| bandwidth | No | Bandwidth auto-sell pool snapshot; null when bandwidth automation is disabled. |
| suggestSell | No | Whether suggest-sell UX hints are enabled. |
| withdrawVote | No | Withdraw-vote configuration as a backend-defined string; semantics from TronSave docs. |
| permitOperations | No | Permission rows enabled for this user; null/empty when no automation has been configured. |
| reclaimOnlyTronSave | No | Reclaim flag — when `true`, only TronSave-managed delegations are reclaimed automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior, but the description adds important context beyond them: it requires a wallet signature identity and returns the complete `autoSettings` object. The overwrite-avoidance warning provides a concrete operational reason to call it first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences. The core action and return value come first, followed by the critical usage ordering and the authentication prerequisite, with no wasted phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description need not enumerate return fields, and it still notes that the full `autoSettings` object is returned. With annotations and schema handling safety and structure, the description covers purpose, prerequisite authentication, and workflow placement completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline rule this scores 4. There is no parameter detail to add, and the description appropriately focuses on the return value and call sequencing instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read the current user's auto-sell configuration (`autoSettings`). It clearly distinguishes this read operation from the sibling write tools `tronsave_register_auto_sell` and `tronsave_update_auto_sell_setting`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to call this tool: before registering or updating auto-sell settings, to avoid overwriting unintended fields. It names the two relevant alternative actions and explains the ordering constraint, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_user_infoUser InformationARead-onlyIdempotentInspect
Read the current authenticated user's profile and linked TronSave internal account. For the internal balance alone use tronsave_get_internal_account; for referral data tronsave_get_referral. Returns { caller, address, balance (SUN string), info, internalAccount } — info carries referral/contact metadata and may be null; internalAccount is null when the wallet has not provisioned a TronSave internal balance yet. internalAccount.apiKey is masked. Requires a wallet signature identity. Read-only and idempotent. Use tronsave_get_user_auto_setting for the auto-sell config or tronsave_get_user_permissions for permission flags when the full profile is unnecessary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| info | No | |
| caller | No | TRON base58 address of the caller |
| address | No | TRON base58 address |
| balance | No | Amount in SUN, onchain balance of the address |
| internalAccount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, yet the description adds genuinely new context: a wallet signature identity is required, `internalAccount.apiKey` is masked, `info` may be null, and `internalAccount` is null before provisioning. These nullability and masking traits materially change how an agent interprets results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then return shape, then the exemption list. Dense but largely waste-free; the only mild inefficiency is splitting the alternative-tool routing across the opening and closing sentences rather than consolidating it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description restates the shape and annotates the tricky parts (nullable `info`, null `internalAccount`, masked API key), plus auth requirements and sibling routing. Nothing an agent needs in order to call or interpret this zero-parameter read is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema carries no semantics to supplement; per the baseline for 0-param tools this lands at 4. The description correctly spends no words on nonexistent inputs and instead documents the output fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Read the current authenticated user's profile and linked TronSave internal account') and immediately distinguishes itself from the narrower balance and referral tools. The agent can tell exactly what this returns without 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit alternatives with conditions: `tronsave_get_internal_account` for internal balance alone, `tronsave_get_referral` for referral data, `tronsave_get_user_auto_setting` for auto-sell config, and `tronsave_get_user_permissions` for permission flags. Two distinct routing cues (front and back) cover both narrow and partial-profile cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_get_user_permissionsUser PermissionsARead-onlyIdempotentInspect
Read the enabled permission operations (autoSettings.permitOperations) for the authenticated user. Returns { permitOperations: string[] } — use it before mutating auto-sell or auto-buy rules to confirm the action is allowed for the wallet. Requires a wallet signature identity. Read-only and idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| permitOperations | No | Permission rows enabled for this user; defaults to `[]` when nothing is configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered; the description adds the non-obvious prerequisite that a wallet signature identity is required. The closing 'Read-only and idempotent' sentence merely restates the annotations, adding no new information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences: purpose first, return shape second, usage prerequisite third. The final clause about being read-only and idempotent duplicates the annotations and could be dropped without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still names the key return field for quick scanning, and it covers the auth prerequisite and the pre-mutation check an agent needs before acting. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It correctly does not invent parameter guidance that the empty schema contradicts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads the enabled permission operations (autoSettings.permitOperations) for the authenticated user. It is clearly distinct from siblings like tronsave_get_user_auto_setting and tronsave_get_user_info by naming the exact setting field it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call it before mutating auto-sell or auto-buy rules to confirm the action is allowed, which routes the agent away from blind mutation via tronsave_update_auto_sell_setting / tronsave_update_auto_buy_setting. It does not state any when-not-to-use condition, but the scope is narrow enough that this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_create_extend_requestSubmit Delegation ExtensionAInspect
Submit an extension request for existing delegated resources on TronSave via authenticated REST POST /v2/extend-request. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Side effect: creates an extension order and may commit TRX from the internal account. extendData must follow the REST contract (see schema on each row). Get extendData from tronsave_internal_extend_delegates (STEP 1) and pass the rows unchanged. Do not copy rows from tronsave_list_extendable_delegates (GraphQL); that payload shape differs and is for market discovery only.
| Name | Required | Description | Default |
|---|---|---|---|
| receiver | Yes | TRON base58 address of the account that receives the delegated resource. | |
| extendData | Yes | Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave's REST extend contract (delegator, isExtend, extraAmount, extendTo in Unix seconds)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user's session, not from GraphQL `tronsave_list_extendable_delegates`. | |
| resourceType | No | Resource type. Default ENERGY when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orderId | No | New extension order id (hex string). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent, open-world mutation, and the description goes beyond them by naming the concrete side effect (creates an extension order, may commit TRX from the internal account) and the auth model (session api-key via `tronsave_login` or `Authorization: ApiKey` header, keys never passed as tool args). It stops short of covering failure modes or retry/idempotency behavior for a non-idempotent write, which is the only meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and endpoint come first, then auth, then side effects, then the data-sourcing rule — a sensible front-to-back order with no filler. It is on the dense side, packing auth, effects, and sequencing into a single paragraph, but nearly every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with an output schema, the description covers the operation, the required auth path, the side effect, the data-fetching dependency, and the sibling trap. Return values need not be explained since an output schema exists, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the field-level descriptions already explain types, address patterns, and epoch-seconds semantics, so the baseline is 3. The prose adds real value by constraining `extendData` to the REST contract shape and requiring rows be echoed unchanged from the STEP 1 call, which prevents a plausible agent error.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Submit an extension request for existing delegated resources") and anchors it to the concrete REST endpoint `POST /v2/extend-request`. It explicitly distinguishes itself from the two nearest siblings, `tronsave_internal_extend_delegates` (source of input) and `tronsave_list_extendable_delegates` (GraphQL, market discovery only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit two-step workflow: obtain `extendData` from `tronsave_internal_extend_delegates` (STEP 1) and pass rows unchanged. It also states a negative rule — do not copy rows from `tronsave_list_extendable_delegates` because the payload shape differs — which is exactly the kind of when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_extend_delegatesList Extendable DelegationsARead-onlyIdempotentInspect
Return extendable delegations for a receiver plus an extendData payload for the extension flow. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Use as STEP 1 before tronsave_internal_create_extend_request when the user wants to extend existing delegation time. This is the only source of submittable extendData; tronsave_list_extendable_delegates is a public market view, and tronsave_list_extendable_receivers finds which receiver to extend. Read-only; does not submit anything. FRESHNESS: pricing/availability change within seconds — run immediately before extending and pass the returned extendData unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| extendTo | Yes | Target end time as Unix epoch SECONDS (UTC) for the extended delegation, e.g. now + 86400 for one more day. Milliseconds are rejected by TronSave (INVALID_EXTEND_TIME). | |
| receiver | Yes | TRON base58 address of the account that receives the delegated resource. | |
| requester | No | TRON base58 requester; defaults to the API key account when omitted. | |
| resourceType | No | Resource type. Default ENERGY when omitted. | |
| maxPriceAccepted | No | Maximum unit price in SUN you are willing to pay for the extension. |
Output Schema
| Name | Required | Description |
|---|---|---|
| extendData | No | Delegations to extend; pass unchanged into internal_create_extend_request `extendData`. |
| yourBalance | No | Current account balance in SUN. |
| isAbleToExtend | No | Whether balance is sufficient to extend. |
| extendOrderBook | No | Order book for extend. |
| totalEstimateTrx | No | Total estimated TRX cost in SUN. |
| totalDelegateAmount | No | Total delegated resource amount. |
| totalAvailableExtendAmount | No | Total available amount to extend. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing the authentication model (internal API key via tronsave_login or an ApiKey client header), the security constraint that keys must never be passed as tool arguments, and that the server forwards credentials from the session. It also clarifies the non-obvious side-effect profile: read-only, submits nothing, and is the only source of a submittable extendData payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then sequencing, then alternatives, then a clearly labeled FRESHNESS block. The authentication sentence is unavoidably dense but does carry unique constraints; overall every sentence does work, though the text is longer than most agents need in one read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers everything an agent needs for a credential-gated, time-sensitive step-1 tool: prerequisites, sequencing, alternatives, freshness, and credential handling, while an output schema already documents the return shape. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with per-field detail including the epoch-seconds format, millisecond rejection, and address regex, so the baseline is 3. The description adds only one param-adjacent rule (pass the returned extendData unchanged); it does not explain receiver, resourceType, or maxPriceAccepted beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (return extendable delegations for a receiver, plus an extendData payload) and explicitly separates itself from the two lookalike siblings tronsave_list_extendable_delegates (public market view) and tronsave_list_extendable_receivers (receiver discovery). An agent can route correctly without 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing ("Use as STEP 1 before tronsave_internal_create_extend_request"), the triggering user intent (extending existing delegation time), and named alternatives for adjacent needs. It also states a hard freshness rule: run immediately before extending and pass extendData unchanged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_order_bookInternal Market Order BookARead-onlyIdempotentInspect
Return the current TronSave market depth/price tiers for ENERGY or BANDWIDTH via the api-key REST endpoint. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Use before tronsave_internal_order_create or tronsave_internal_order_estimate when the user needs live prices or liquidity. Same depth as the public tronsave_list_order_books, plus SLOW/MEDIUM/FAST price tiers; use the public tool when there is no API key. Read-only. FRESHNESS: live market depth can change roughly every 3 seconds (one TRON block) — re-read immediately before placing an order.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional TRON base58 address filter for the receiver. | |
| durationSec | No | Delegation duration window in seconds for the quote. | |
| resourceType | No | Resource type. Default ENERGY when omitted. | |
| minDelegateAmount | No | Minimum resource amount per offer level to include (resource units, not SUN). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Order book entries sorted by price. |
| fast | No | FAST price tier (SUN). |
| slow | No | SLOW price tier (SUN). |
| medium | No | MEDIUM price tier (SUN). |
| availableResource | No | Available resource at the quoted tiers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent, but the description adds substantial context beyond them: authentication modes (api-key mode vs signature mode for an internal-account wallet), the `Authorization: ApiKey` header, the explicit prohibition on passing keys as tool arguments, and the fact that the server forwards the key from session/header. It also discloses a concrete freshness characteristic (market depth changes roughly every TRON block, ~3 seconds), which is behavior an agent cannot get from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then alternatives, then the labeled FRESHNESS constraint, so the most decision-relevant material comes first. It is dense and the authentication sentence is long, but each sentence contributes a distinct constraint, with no filler or repeated annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still covers what an agent needs to call it correctly: auth prerequisites, sibling alternatives, mutation-free nature, and the time-sensitivity of the returned data. Nothing material is missing for a read-only market query with four optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (address filter, durationSec, resourceType, minDelegateAmount) is already documented in the schema, which sets the baseline at 3. The description adds no per-parameter syntax, defaults, or interaction detail beyond mentioning the ENERGY/BANDWIDTH and price-tier concepts already covered by the enum and schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns current market depth/price tiers for ENERGY or BANDWIDTH via the api-key REST endpoint. It also distinguishes itself from the closest sibling by noting it has the same depth as the public `tronsave_list_order_books` plus SLOW/MEDIUM/FAST tiers, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (before `tronsave_internal_order_create` or `tronsave_internal_order_estimate` when live prices or liquidity are needed), an explicit alternative (the public tool when there is no API key), and a pre-call timing rule (re-read immediately before placing an order). No exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_order_createCreate Energy or Bandwidth Order (Internal)AInspect
Place a new buy order for ENERGY or BANDWIDTH on TronSave, paid from the internal account balance. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Side effect: SPENDS internal TRX balance and creates a live order; not idempotent — each call places a new order. This is the api-key/internal path; for the signature-session market path use tronsave_create_order. Always derive unitPrice from the latest tronsave_internal_order_estimate (re-estimate immediately before submitting — quotes older than a few seconds may be stale and revert). Returns { orderId }.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | Optional execution guards and fill behavior. | |
| sponsor | No | Optional sponsor or referral code. | |
| receiver | Yes | TRON base58 address that will receive the resource. | |
| unitPrice | No | Pricing: FAST | MEDIUM | SLOW strategy, or exact unit price in SUN per resource unit. Default MEDIUM when omitted. | |
| durationSec | No | Delegation duration in seconds. Default 259200 (3 days) when omitted. | |
| resourceType | No | Resource type. Default ENERGY when omitted. | |
| resourceAmount | Yes | Amount of resource to purchase (resource units). |
Output Schema
| Name | Required | Description |
|---|---|---|
| orderId | No | New extension order id (hex string). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the financial side effect (spends internal TRX balance, creates a live order), the non-idempotency consequence (each call places a new order), the staleness risk that can cause a revert, and the credential-forwarding model (server forwards the key; never pass keys as arguments). This is materially more than readOnlyHint/idempotentHint convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool does, then auth, then side effects, then sibling routing, then the estimate caveat, then return shape — a logical order with no filler. It is dense and long-ish, but nearly every clause carries an actionable constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with 7 params including a nested options object, an output schema, and a confusingly similar sibling, the description covers auth, side effects, the alternative tool, the pre-call estimate dependency, and the return value. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real meaning for `unitPrice` by tying it to a just-refreshed estimate rather than any stale quote. It does not touch the nested `options` guards, which the schema already documents well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: place a new buy order for ENERGY or BANDWIDTH, paid from the internal account balance. It also distinguishes itself from the near-identical sibling `tronsave_create_order` by naming the api-key/internal path versus the signature-session market path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing (use `tronsave_create_order` for signature-session market orders), explicit auth prerequisites (api-key mode or signature mode with internal account), and an operational rule: always derive `unitPrice` from a fresh `tronsave_internal_order_estimate` immediately before submitting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_order_detailsInternal Order DetailsARead-onlyIdempotentInspect
Fetch full details for one internal-account order by order ID. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Use when monitoring fulfillment after tronsave_internal_order_create, or when the user asks for status on a specific order id. API-key path; with a wallet signature tronsave_get_order returns the same order. Read-only. FRESHNESS: order state changes within seconds as the market matches — re-read immediately before acting.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | TronSave order ID (hex string), e.g. value returned in internal.order.create response data.orderId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | TronSave order ID (hex string). |
| price | No | Unit price in SUN. |
| status | No | Order status. |
| receiver | No | TRON base58 receiver address. |
| createdAt | No | Order created time (Unix epoch ms or ISO-8601, endpoint-dependent). |
| delegates | No | Delegations fulfilling this order. |
| orderType | No | Order type (NORMAL | FAST | EXTEND). |
| requester | No | TRON base58 requester address. |
| durationSec | No | Delegated duration in seconds. |
| payoutAmount | No | Payout amount in SUN. |
| remainAmount | No | Remaining unfulfilled amount. |
| resourceType | No | Resource type. |
| resourceAmount | No | Resource amount of order. |
| allowPartialFill | No | Whether partial fill is allowed. |
| fulfilledPercent | No | 0 = pending, 1-99 = partial, 100 = fully matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations: it states the authentication requirement (`tronsave_login` api-key mode or an `Authorization: ApiKey` header), warns never to pass API keys as tool arguments, and notes the server forwards the session key. The FRESHNESS note that order state changes within seconds and should be re-read before acting is exactly the kind of behavioral context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, auth and routing follow, and the labeled FRESHNESS caveat is easy to scan. It is slightly dense for a one-parameter read, with some backticked identifier load, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained; what remains — auth mode, key handling, sibling routing, and state-freshness timing — is all covered. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `orderId` parameter already documents the hex format and provenance from `internal.order.create`. The description's 'by order ID' phrasing adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource and scope: 'Fetch full details for one internal-account order by order ID.' It also distinguishes itself from the sibling `tronsave_get_order`, explaining that the sibling returns the same order under wallet-signature auth, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: monitoring fulfillment after `tronsave_internal_order_create`, or answering a status question about a specific order id. The alternative path (`tronsave_get_order` for wallet-signature auth) is named with its selecting condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_order_estimateEstimate TRX Cost Before OrderARead-onlyIdempotentInspect
Estimate the TRX cost and availability for a buy order before submitting it (api-key internal account). Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Use when the user wants a quote or price check; feed the result into tronsave_internal_order_create. Quotes for tronsave_create_order come from tronsave_estimate_buy_resource instead. Read-only. FRESHNESS: unitPrice/estimateTrx are live and can change roughly every 3 seconds — re-estimate immediately before creating the order.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | Optional flags that affect matching behavior for the estimate. | |
| receiver | No | TRON base58 address that will receive the resource. | |
| requester | No | TRON base58 requester; defaults to the API key account when omitted. | |
| unitPrice | No | Pricing: FAST | MEDIUM | SLOW strategy, or exact unit price in SUN per resource unit. Default MEDIUM when omitted. | |
| durationSec | No | Delegation duration in seconds. Default 259200 (3 days) when omitted. | |
| resourceType | No | Resource type. Default ENERGY when omitted. | |
| resourceAmount | Yes | Amount of resource to purchase (resource units). |
Output Schema
| Name | Required | Description |
|---|---|---|
| unitPrice | No | Unit price in SUN. |
| durationSec | No | Delegated duration in seconds. |
| estimateTrx | No | Estimated TRX cost in SUN. |
| availableResource | No | Available resource amount. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds material behavior beyond them: required internal API key, the fact that keys are never passed as arguments and are forwarded from the session/header, and the roughly 3-second price volatility requiring re-estimation before order creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then auth, then routing, then a labeled FRESHNESS caveat, so an agent can stop reading early. It is dense with parentheticals (api-key mode, signature mode) that could be trimmed, but every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read-only estimation tool with a full schema and an output schema, the description covers the remaining unknowns: auth path, no-key-in-arguments rule, sibling routing, and quote staleness. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nonetheless adds that unitPrice and estimateTrx are live values that shift about every 3 seconds, which is temporal meaning the schema does not convey. Other parameters (receiver, requester, durationSec, resourceType, options) are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: estimate TRX cost and availability for a buy order before submission. It also scopes the account type (internal api-key account) and explicitly distinguishes itself from tronsave_estimate_buy_resource, which serves tronsave_create_order quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (user wants a quote or price check), the downstream step (feed the result into tronsave_internal_order_create), and an explicit when-not with the correct alternative (tronsave_estimate_buy_resource for tronsave_create_order).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_internal_order_historyInternal Account Order HistoryARead-onlyIdempotentInspect
List paginated order history for the internal account linked to the API key, newest first. Requires an internal API key: tronsave_login (api-key mode, or signature mode for a wallet with an internal account) or an Authorization: ApiKey <key> client header. Never pass API keys as tool arguments; the server forwards the key from the session/header to TronSave. Use when the user asks about past purchases, fulfillment, payouts, or delegates on their internal account. This is the API-key path; wallet-signature sessions can also use tronsave_list_orders with isOnlyMyOrder. Read-only. Pair with tronsave_internal_order_details for a single order's full snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page index, 0-based. Omit for first page (default 0). | |
| pageSize | No | Orders per page. Default 10 when omitted. Typical range 1–100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Orders on this page, newest first. |
| total | No | Total orders matching the query (for pagination). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the authentication model in detail: which key is required, the two supported modes, the `Authorization: ApiKey <key>` header form, and the important constraint that keys must never be passed as tool arguments because the server forwards them. It also states result ordering (newest first).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and ordering are front-loaded in the first sentence, auth constraints follow, then usage and routing. Every sentence carries non-redundant information, and no schema or annotation content is merely repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter paginated list tool with an output schema, the description covers everything an agent needs: what it returns, ordering, pagination, auth prerequisites, error-avoidance guidance, and which sibling to use instead or in tandem. Return-value detail is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (page, pageSize) are fully documented in the schema with defaults and ranges, so the baseline is 3. The description adds only the result ordering ('newest first'), which is not a parameter-level detail and is not restated per-parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (List), resource (order history), scope (internal account linked to the API key), ordering (newest first), and pagination shape. It also distinguishes itself from the sibling list tool by naming `tronsave_list_orders` as the wallet-signature path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states an explicit use case ('past purchases, fulfillment, payouts, or delegates on their internal account'), names the alternative route (`tronsave_list_orders` with `isOnlyMyOrder`), and points to the companion tool `tronsave_internal_order_details` for single-order lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_auto_buy_settingsAuto-Buy RulesARead-onlyIdempotentInspect
List the logged-in user's auto-buy rules: receiver, resource, unit price cap, threshold, budget/order limits, totals bought and active state. Use before tronsave_update_auto_buy_setting or tronsave_delete_auto_buy_setting to get rule ids. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows to return (default 10, max 10). | |
| offset | No | Number of rules to skip for pagination (default 0); add `limit` to page forward. | |
| filterBy | No | Only rules for this resource. |
Output Schema
| Name | Required | Description |
|---|---|---|
| settings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, and the description reinforces 'Read-only'. It adds genuinely new context by disclosing that a wallet-signature identity is required, which is an auth prerequisite an agent must arrange before calling. Nothing is contradicted, though pagination behavior beyond the schema is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what is listed and what fields, then the routing/sequencing tip, then the auth and safety notes. Front-loaded and free of redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations carry the safety profile, the description supplies the remaining essentials: returned fields, prerequisite identity, and use-before-mutation guidance. Only the pagination contract is left entirely to the schema, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with limit, offset and filterBy each fully documented in the schema, including the max-10 cap and pagination semantics. The description adds no parameter-level meaning beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('auto-buy rules') and enumerates the fields returned (receiver, resource, unit price cap, threshold, budget limits, totals, active state). That level of specificity lets an agent distinguish it from the sibling mutation tools and from tronsave_get_user_auto_setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing guidance: call this before tronsave_update_auto_buy_setting or tronsave_delete_auto_buy_setting to obtain rule ids. It does not clarify when to prefer this over related reads like tronsave_get_user_auto_setting, so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_delegationsDelegation HistoryARead-onlyIdempotentInspect
List the logged-in seller's delegations (resource sent to buyers): amount, TRX amount, duration, unit price, type (AUTO, MANUAL, EXTEND, FAST), status and payout. Newest first; page with offset/limit. Use for a seller's per-delegation history; for earnings totals use tronsave_get_seller_stats, for orders the user bought use tronsave_list_orders (isOnlyMyOrder). Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows to return (default 20, max 50). | |
| offset | No | Number of delegations to skip for pagination (default 0); add `limit` to page forward. | |
| timeFilterBy | No | Time window: All, last 7 days (D7) or last 30 days (D30). Default All. | |
| filterByResourceType | No | Only ENERGY or only BANDWIDTH delegations; omit for both. | |
| filterByTypeDelegate | No | Only this delegation type: AUTO (auto-sell pool), MANUAL (`tronsave_sell_order_manual`), EXTEND (extensions), FAST (fast orders). Omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| delegations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered structurally. The description still adds value with ordering semantics ("Newest first"), pagination mechanics, and the authentication prerequisite ("Requires a wallet signature identity"). It does not discuss rate limits or failure modes, which keeps it just short of a 5 given the lower bar set by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then pagination, then routing to alternatives, then auth — a sensible order with no filler. It is dense, packing three sibling references and a field list into two sentences, which borders on heavy but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with an output schema, full annotation coverage and a 100%-documented 5-parameter schema, the description supplies everything else an agent needs: sort order, paging, auth requirement, and disambiguation from siblings. Nothing essential to a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum value meanings for `timeFilterBy`, `filterByResourceType` and `filterByTypeDelegate`, so the schema already carries parameter semantics. The description only restates pagination via `offset`/`limit` and lists the type values, adding no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the logged-in seller's delegations") and immediately enumerates returned fields (amount, TRX amount, duration, unit price, type, status, payout). It explicitly distinguishes itself from `tronsave_get_seller_stats` and `tronsave_list_orders`, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive case ("a seller's per-delegation history") and two named alternatives with the condition that selects each: earnings totals go to `tronsave_get_seller_stats`, purchased orders go to `tronsave_list_orders` via `isOnlyMyOrder`. The `filterByTypeDelegate` enum even maps MANUAL back to `tronsave_sell_order_manual`, reinforcing correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_extendable_delegatesExtendable DelegatesARead-onlyIdempotentInspect
List extendable delegate candidates for a receiver and resourceType (ENERGY|BANDWIDTH). Optional suggestData scores an extend-and-buy scenario for planning purposes. Read-only; does NOT create orders or change on-chain state. No login required. NOTE: this is GraphQL market data for discovery only. To actually submit an extension, use tronsave_internal_create_extend_request with extendData from the authenticated REST POST /v2/get-extendable-delegates (payload shape differs from this GraphQL response).
| Name | Required | Description | Default |
|---|---|---|---|
| receiver | Yes | TRON base58 address (typically starts with `T`) that currently receives or will receive the delegated resource. This is the primary filter: the response describes delegates relevant to extending that account's delegation. | |
| requester | No | Optional TRON base58 address of the viewing/requesting party. When an MCP session is active, the server may still derive identity from auth headers; use this when the API expects an explicit requester string distinct from the receiver. | |
| suggestData | No | Optional nested scenario for extend-and-buy suggestion scoring. If omitted, the query returns delegate rows without that hypothetical. If provided, supply all four fields together; partial objects are invalid for typical GraphQL input shapes. | |
| resourceType | Yes | Which resource market leg to query: `ENERGY` for contract execution headroom, `BANDWIDTH` for transaction bandwidth. Must match how you plan to extend or buy. |
Output Schema
| Name | Required | Description |
|---|---|---|
| extendableDelegates | No | Null when the market has no payload or GraphQL returned no branch; check tool-level errors for hard failures. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, but the description adds real context beyond them: no login required, this is GraphQL market data only, and suggestData is server-side scoring rather than a live order. It stops short of describing pagination or result size limits for what is a list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope statement and the read-only/no-login facts are front-loaded, and each subsequent sentence (GraphQL vs REST, sibling routing) carries non-redundant information. It is dense with backticked identifiers, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read tool with an output schema and full annotation coverage, the description covers the remaining unknowns an agent would hit: auth requirements, data source (GraphQL vs REST), and how to proceed to the actual extension. Return values are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter, including the nested suggestData object, is already richly documented in the schema. The description adds only the ENERGY|BANDWIDTH gloss and the framing of suggestData as a planning scenario, so the schema is doing the heavy lifting and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb+resource (list extendable delegate candidates) and states the two key filters, receiver and resourceType, with the enum values inline. It also distinguishes itself from the write-path sibling tronsave_internal_create_extend_request, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (discovery/planning) and when-not (does NOT create orders or change on-chain state), plus the named alternative for the actual mutation and the note that the authenticated REST payload shape differs from this GraphQL response. It also states no login is required, which removes an otherwise likely blocker.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_extendable_receiversExtendable ReceiversARead-onlyIdempotentInspect
List the receiver addresses that have delegations bought by requester which can still be extended, with expiry time (Unix seconds), delegation count and total amount. Use as the first step of an extension flow to find which receiver to extend, then tronsave_list_extendable_delegates (market view) or tronsave_internal_extend_delegates (API-key path, returns the extendData to submit). Public (any requester address), read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| requester | Yes | TRON base58 address that bought the delegations. | |
| resourceType | No | Only delegations of this resource; omit for both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| receivers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered; the description reinforces this with 'Public (any requester address), read-only'. It adds useful context about output contents and the flow, though it does not detail pagination or result-size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and followed by the flow guidance; nothing is wasted. Slightly dense with backtick-quoted sibling names but still readable and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover the safety profile, the description supplies exactly the missing pieces: public accessibility, downstream flow, and output field meanings. Nothing an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both requester and resourceType. The description references 'requester' and 'bought by requester' but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (receiver addresses with extendable delegations bought by requester), and even names the output fields (expiry in Unix seconds, delegation count, total amount). It is clearly distinguishable from sibling list tools by tying the result to the extension flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames this as the first step of an extension flow and names the two downstream alternatives with their selecting condition (market view vs API-key path returning extendData). The when-to-use and the branch point are fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_flash_unstake_ordersFlash Unstake MarketARead-onlyIdempotentInspect
Browse the flash-unstake market: available (open orders buyers can take), ongoing (being paid out) or completed. Amounts are SUN-scaled numbers; estimateCompletionTime is seconds. Use to browse the whole market; the user's own request is tronsave_get_flash_unstake_request and a payout preview is tronsave_estimate_flash_unstake. Public, read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Which orders to list: available (default), ongoing or completed. | |
| limit | No | Orders to return (default 10, max 50). | |
| offset | No | Number of orders to skip for pagination (default 0); add `limit` to page forward. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | |
| orders | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, and the closing "Public, read-only" largely restates that. The description still adds real value by defining each status bucket (open orders buyers can take, being paid out, done) and by disclosing that amounts are SUN-scaled and estimateCompletionTime is in seconds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the purpose and closed with a safety signal; nothing is filler. It is slightly dense in the first sentence, with parenthetical glosses stacked for all three kinds, but still readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary, and pagination is fully covered by the schema. For a simple public list tool the description covers scope, alternatives and units; only ordering of results is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents kind, limit (default 10, max 50) and offset pagination, so the schema does the heavy lifting. The description only echoes the kind values and adds no format or default detail beyond it; the unit notes it does add concern output fields, not parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Browse the flash-unstake market") and enumerates the three listable order states with their meaning. It also names the two closest siblings it is not, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to browse the whole market" sets the scope, then explicitly routes the user-specific case to tronsave_get_flash_unstake_request and the preview case to tronsave_estimate_flash_unstake. When-to-use and when-to-use-something-else are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_internal_transactionsInternal Account TransactionsARead-onlyIdempotentInspect
List the TRX ledger of the logged-in user's internal account (deposits, order payments, refunds), newest first, with the current balance and deposit address. Amounts are SUN strings. Use to reconcile spending after orders. For the orders themselves use tronsave_internal_order_history (API key) or tronsave_list_orders (isOnlyMyOrder); for the balance alone, tronsave_get_internal_account. Page with offset/limit. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Ledger entries to return (default 20, max 50). | |
| offset | No | Number of ledger entries to skip for pagination (default 0); add `limit` to page forward. |
Output Schema
| Name | Required | Description |
|---|---|---|
| transactions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered; the description nonetheless adds real behavior beyond them: newest-first ordering, the unit convention (amounts are SUN strings), the additional fields returned alongside the ledger, and the authentication prerequisite ('Requires a wallet signature identity'). It stops short of describing failure modes or empty-ledger behavior, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, front-loaded with the core operation and payload before moving to alternatives, pagination and the auth caveat. Parenthetical exemplars (deposits, refunds) and the sibling names each carry information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with an output schema and full annotation coverage, the description supplies everything an agent needs: scope, ordering, units, auth requirement, pagination mechanism, and disambiguation from the three nearest siblings. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters fully documented in the schema including defaults and bounds (max 50). The description only adds 'Page with offset/limit', which restates rather than extends the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb (list) and resource (TRX ledger of the logged-in user's internal account), enumerates the entry types covered (deposits, order payments, refunds), states ordering (newest first), and names the extra payload (current balance, deposit address). It is immediately distinguishable from tronsave_internal_order_history and tronsave_get_internal_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('reconcile spending after orders') and routes to the correct alternatives by name with the condition that selects each: order history tools for the orders themselves (including the API-key vs isOnlyMyOrder distinction), and tronsave_get_internal_account for balance alone. This is when/when-not/alternatives all in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_notificationsNotificationsARead-onlyIdempotentInspect
List the logged-in user's notifications (order created / filled / cancelled / reclaimed, referral payouts) newest first, with the unread count. Use to follow up on an order after creating it; page with offset/limit, and mark items read with tronsave_mark_notifications_read. Requires a wallet signature identity. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Notifications to return (default 20, max 100). | |
| offset | No | Number of notifications to skip for pagination (default 0); add `limit` to page forward. | |
| unreadOnly | No | true returns only unread notifications; default false returns all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| unreadCount | No | |
| notifications | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, yet the description still adds real value: result ordering (newest first), that an unread count is included, and the auth precondition ('Requires a wallet signature identity'). Missing only failure/empty-state behavior, which is minor given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that are front-loaded with the core purpose before paging and cross-reference details. Slightly over-packed with parenthetical category lists, but each clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a read-only paginated list: purpose, ordering, auth requirement, pagination approach and the companion write tool are all covered, and an output schema exists so return-value shape needs no explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so limit, offset and unreadOnly are already documented in the schema. The description adds only a hint about paging with offset/limit, which the schema itself already explains; it says nothing extra about unreadOnly. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the logged-in user's notifications') and enumerates the notification categories covered (order created/filled/cancelled/reclaimed, referral payouts). The scope qualifier 'logged-in user's' plus ordering ('newest first') and 'unread count' makes it clearly distinct from list_orders or internal_order_history siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('follow up on an order after creating it') and routes the agent to the sibling tool tronsave_mark_notifications_read for the write-side action. It doesn't state when NOT to use it versus other order-listing tools, so it stops short of full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_order_booksOrder BookARead-onlyIdempotentInspect
Read market depth buckets for ENERGY or BANDWIDTH. Public view; with an API key, tronsave_internal_order_book adds SLOW/MEDIUM/FAST price tiers. Returns price buckets { min, max, value } optionally scoped by viewer address, minimum delegate amount, and duration. No login required; read-only and idempotent. Use this to estimate market ranges before create/update decisions; pair with tronsave_estimate_buy_resource for quote-style buy estimation and tronsave_get_order for one concrete order.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional viewer/requester wallet context. | |
| durationSec | No | Optional delegation duration filter in seconds. | |
| resourceType | Yes | Order-book side to query (`ENERGY` or `BANDWIDTH`). | |
| minDelegateAmount | No | Optional minimum delegate amount floor for bucket filtering. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orderBook | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered; the description adds real context on top: no login required, that an API key unlocks tiered data via another tool, and the exact return shape `{ min, max, value }`. It stops short of covering result limits, pagination or behavior on empty books, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense, front-loaded prose: purpose first, then tier/auth caveat, then return shape, then routing guidance. No filler sentences and no repetition of the tool title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover the safety profile, the description supplies everything else an agent needs: scope, auth tier differences, return structure, filtering semantics, and sibling routing. Nothing material is missing for a read-only market-depth query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description frames the three optional params as a single coherent 'scoping' model (viewer address, minimum delegate amount, duration) that filters returned buckets, which is a meaningful clarification beyond the per-field schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Read market depth buckets for ENERGY or BANDWIDTH'. It also explicitly distinguishes itself from the close sibling `tronsave_internal_order_book`, noting that the latter adds SLOW/MEDIUM/FAST tiers with an API key, so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('estimate market ranges before create/update decisions') and routes two adjacent needs to named alternates: `tronsave_estimate_buy_resource` for quote-style buy estimation and `tronsave_get_order` for a single concrete order. Conditions for selecting the higher-tier sibling are also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_list_ordersList OrdersARead-onlyIdempotentInspect
Query the market order list with paging (offset, limit ≤ 10). For an API-key account's own purchases use tronsave_internal_order_history. Returns { orders: [{ id, requester?.address, receiver.address, resourceType, resourceAmount, remainAmount, durationSec, unitPrice (SUN), isOwner, isMatching, apy, createdAt, typeOrder (NORMAL|FAST|EXTEND) }] }. status: ACTIVE = still matching, COMPLETED = no longer matching. Set isOnlyMyOrder=true (requires a wallet signature identity) to list orders requested by the caller's wallet. Use tronsave_get_order with an id for one snapshot before mutating an order.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return in one call. Prefer modest limits to avoid huge payloads; page with `offset`. | |
| offset | No | Zero-based row offset for page N (skip first `offset` matches). Omit when starting from the first page. | |
| status | No | Lifecycle filter: `ACTIVE` = still matching/open, `COMPLETED` = no longer matching. Omit for both. | |
| resourceType | No | Restrict to `ENERGY` or `BANDWIDTH` orders; omit for both. | |
| isOnlyMyOrder | No | When `true`, only orders requested by the wallet of the current signature identity (signature login or `Signature` header). Api-key-only sessions cannot use this filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orders | No | Matching orders for this page; may be large—use pagination inputs to chunk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely new behavior: the `limit` ≤ 10 paging cap, the wallet-signature identity requirement, and the lifecycle meaning of `ACTIVE` vs `COMPLETED`. It loses a point for spending much of its budget restating the return shape, which the output schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the paging constraint before routing and return details. The long inline field enumeration of the `orders` object is redundant with the output schema and bloats the middle of the text; trimming it would sharpen the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Everything an agent needs to call this correctly is present: scope, paging bounds, filter semantics, the auth precondition on `isOnlyMyOrder`, and sibling routing for adjacent needs. With an output schema supplied and full parameter coverage, no material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already carries its own description, including both enums, so the baseline is 3. The description reinforces `status` semantics and the `isOnlyMyOrder` signature requirement but adds no syntax, format, or edge-case detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Query the market order list") and immediately scopes it with paging. It explicitly separates itself from `tronsave_internal_order_history` (API-key account's own purchases) and `tronsave_get_order` (single snapshot by id), so an agent can pick the right tool without 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete alternatives and the exact conditions that select them: use `tronsave_internal_order_history` for an API-key account's own purchases, and `tronsave_get_order` with an `id` for one snapshot before mutating. It also states the precondition for `isOnlyMyOrder` (wallet signature identity) and notes api-key-only sessions cannot use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_loginLogin SessionAInspect
Log in to TronSave for the rest of this MCP connection. Provide EXACTLY ONE of: signature = <signature>_<timestamp> produced by the user's wallet over the message from tronsave_get_sign_message (unlocks wallet tools; also loads the wallet's internal API key if it has one), or apiKey = raw TronSave internal API key (unlocks internal-account tools and paymentMethod=internal). The login is bound to the current mcp-session-id automatically — do not pass session ids in later tool arguments. Returns { sessionId, authMode, walletAddress?, hasInternalApiKey, expiresAt, unlocked }. Signed timestamps older than the server limit (default 24h) are rejected with SIGNATURE_EXPIRED. Never ask the user for private keys or seed phrases.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Raw API key for internal-tools login. Provide EXACTLY ONE of `apiKey` or `signature`. | |
| signature | No | Signature token in `signature_timestamp` format (timestamp is the signed message). Provide EXACTLY ONE of `apiKey` or `signature`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| authMode | No | Which credential type the session holds. |
| unlocked | No | Human-readable summary of the tool groups now available. |
| warnings | No | Non-fatal issues (e.g. internal API key could not be loaded). |
| expiresAt | No | Session expiry (ISO-8601). |
| sessionId | No | The MCP session (`mcp-session-id`) the login is bound to. MCP clients resend it automatically; never pass it as a tool argument. |
| walletAddress | No | Wallet recovered from the signature (signature mode only). |
| hasInternalApiKey | No | Whether internal-account tools and `paymentMethod=internal` are usable in this session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag non-read-only, non-idempotent and open-world; the description adds substantial context beyond that: the login is bound to `mcp-session-id` server-side and must not be re-passed, the signed timestamp has a server-side age limit (default 24h) with the named `SIGNATURE_EXPIRED` failure, and an internal API key may be auto-loaded as a side effect. The security guardrail ("Never ask the user for private keys or seed phrases") is exactly the kind of behavior an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the exclusive-or choice are front-loaded in the first clause, and every following sentence adds non-redundant information (session binding, expiry behavior, security rule). The return-shape sentence partially duplicates the existing output schema, and the single dense paragraph with semicolon-separated modes is harder to scan than a short bulleted split, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an authentication entry point with two mutually exclusive credential paths, the description covers prerequisites (get the message first), side effects (API key auto-load, session binding), failure mode (SIGNATURE_EXPIRED), and the security constraint. Although an output schema exists, it also names the returned fields, so an agent can reason about `authMode` and `unlocked` without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both params are documented there, so the baseline is 3; the description earns above that by explaining provenance and consequence — the signature must be produced by the user's wallet over the `message` returned by `tronsave_get_sign_message`, and each param unlocks a distinct tool set. The exclusive-or requirement is stated in both places, so that part is redundant, but the meaning of each credential is genuinely enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Log in to TronSave") plus the crucial scope qualifier "for the rest of this MCP connection", which immediately separates it from per-call auth tools and from siblings like `tronsave_logout` and `tronsave_get_session_status`. The two auth modes are named with their concrete effects, so the agent knows exactly what the call accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing between the two modes — `signature` unlocks wallet tools, `apiKey` unlocks internal-account tools — and names the prerequisite sibling `tronsave_get_sign_message` as the source of the message to sign. It does not state what to do if a session already exists (e.g., check `tronsave_get_session_status` before logging in, or that a repeat login replaces the session), which is the one routing gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_logoutLogoutAIdempotentInspect
Remove the TronSave login bound to this MCP connection (api-key or signature). Returns { loggedOut: true }; idempotent. Header credentials configured on the client are not affected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| loggedOut | No | Always true; the login bound to this MCP session was removed (idempotent). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and idempotentHint=true, so the description earns credit mainly for the non-obvious scope statement that client-configured header credentials survive the call, plus the response shape. The idempotency mention is somewhat redundant with idempotentHint, and no auth/permission requirements are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, front-loaded with the action and scope, then the return value, then the caveat. Every clause carries distinct information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter session-teardown tool this is nearly complete: scope, side effects, idempotency and return value are all covered, and an output schema exists. The only shortfall is the missing contrast with revoke_api_key, which matters for choosing the right teardown tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate and the baseline applies. The description correctly avoids inventing inputs and instead documents the scope of the credential being removed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (the TronSave login) plus the exact scope: the credential bound to this MCP connection, with the two credential types (api-key or signature) named. An agent can immediately tell this apart from account-level siblings like revoke_api_key or generate_api_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is given: this clears the session credential for this MCP connection only, and header credentials configured on the client are explicitly unaffected, which is a useful exclusion. The one gap is that it never distinguishes itself from the sibling revoke_api_key, which an agent could plausibly confuse with this operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_mark_notifications_readMark Notifications ReadAIdempotentInspect
Mark one notification (by id) or, when id is omitted, ALL of the user's notifications as read. Get ids from tronsave_list_notifications. Only changes the read flag; idempotent. Requires a wallet signature identity.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Notification id; omit to mark everything read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| message | No | |
| success | No | |
| modifiedCount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the description's 'idempotent' is partly redundant. However, it adds real value beyond the annotations by scoping the mutation ('Only changes the read flag') and disclosing an auth requirement ('Requires a wallet signature identity'), neither of which appears in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence carries purpose and both modes, followed by two short clauses for id sourcing and side effects. No filler, and the most important fact (scope of the mutation) comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one optional parameter, full schema coverage, annotations covering safety/idempotency, and an output schema handling return values, the description covers everything an agent needs: what it does, where ids come from, side-effect scope, and auth requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional `id` is already documented, including the omit-means-all behavior. The description restates that rather than adding format or constraint detail (e.g., the 24-hex ObjectId pattern), so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Mark ... notifications as read') and explicitly covers both modes: single by `id`, or all when `id` is omitted. Nothing in the sibling list does anything similar, so the tool is instantly distinguishable from tools like `tronsave_list_notifications`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precondition for the argument ('Get ids from `tronsave_list_notifications`') and the condition that selects each mode (with `id` vs. omitted). That is an explicit routing rule to the sibling that supplies the input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_register_auto_sellRegister Auto SellAInspect
Create the initial auto-sell configuration for the authenticated user. Returns the persisted autoSettings payload. Side effect: persists automation settings that affect future delegation/sell behavior; not idempotent — calling twice may reset fields. Requires a wallet signature identity. Use for FIRST-TIME setup only; for subsequent edits use tronsave_update_auto_sell_setting, and always read the current state with tronsave_get_user_auto_setting first to avoid overwriting unknown fields. Fails for invalid config combinations, unauthorized sessions, or backend policy restrictions.
| Name | Required | Description | Default |
|---|---|---|---|
| poolSetting | No | What the wallet sells automatically: per-resource price floor, duration bounds, minimum amount, reserve, and reclaim scope. | |
| addOnFeature | No | Optional extras: voting, auto-stake of idle TRX, suggest-sell hints. | |
| paymentConfig | No | Where and how often seller earnings are paid out (address, DAILY/IMMEDIATE, payout window). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| data | No | Opaque server-defined payload (tx id, setting id, or status text). Treat as identifier-or-message; rely on `message` for human routing. |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the concrete consequence of non-idempotency ('calling twice may reset fields'), the persistent side effect on future delegation/sell behavior, the wallet-signature identity requirement, and named failure modes (invalid config combinations, unauthorized sessions, backend policy restrictions). The annotations only supply the boolean hints (readOnlyHint=false, idempotentHint=false); the description explains what those hints mean operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then return value, then side effects, then routing guidance, then failure modes — no wasted sentences. Every clause carries decision-relevant information for an agent choosing between auto-sell tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, yet the description still names the persisted `autoSettings` payload. For a mutation tool with nested config, the mutation semantics, identity prerequisite, prerequisite read, and failure modes are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 3 optional nested parameters at 100% schema description coverage, the schema already documents fields like poolSetting.energy.minPrice, paymentTimeWindow, and reclaim. The description adds no parameter-level meaning, syntax, defaults, or interaction rules, so it sits at the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create the initial auto-sell configuration') with explicit scope ('for the authenticated user') and distinguishes it from the sibling it is not ('for subsequent edits use `tronsave_update_auto_sell_setting`'). An agent can select this over update/get siblings without 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('FIRST-TIME setup only'), when not to ('for subsequent edits use tronsave_update_auto_sell_setting'), and prescribes a prerequisite ('always read the current state with tronsave_get_user_auto_setting first to avoid overwriting unknown fields'). This is the full when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_revoke_api_keyRevoke API KeyADestructiveIdempotentInspect
Revoke the caller's current internal API key. Side effect: any future request using the previous key is rejected. Existing in-flight sessions cached by the server may continue serving until their TTL expires — treat the effect as 'best-effort immediate' rather than guaranteed instantaneous cutoff. Idempotent — revoking an already-revoked key returns success. Requires a wallet signature identity. Call tronsave_generate_api_key afterwards to mint a replacement when continued internal access is needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| data | No | For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material). |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: explains that the cutoff is 'best-effort immediate' because in-flight sessions may serve until TTL expiry, and that revoking an already-revoked key returns success. These are non-obvious operational details an agent could not infer from destructiveHint/idempotentHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying distinct operational value: the action, the side effect, the timing caveat, idempotency, the auth prerequisite, and the follow-up. The primary action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive action, the description covers impact scope, timing semantics, authentication requirement, idempotency behavior, and the natural next step. With an output schema present, no return-value explanation is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the description correctly provides no parameter documentation. With an empty schema and an output schema present, there is nothing further to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (revoke) and a precisely scoped resource (the caller's current internal API key). It is unmistakably distinct from tronsave_generate_api_key, which it names as the counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly tells the agent what to do next — call tronsave_generate_api_key when continued internal access is needed — and states the prerequisite of a wallet signature identity. It stops short of explicit when-not scenarios (e.g., what to do for a compromised vs. routine rotation), but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_sell_order_manualSell Order ManualADestructiveInspect
Manually execute seller-side fulfillment of an existing order with a wallet signedTx. Returns { success, message, code, delegatedId }. Side effect: broadcasts a market/delegation transaction and may consume balances/resources; not idempotent — each call re-executes. Requires a wallet signature identity. Use only when explicit manual sell is intended; call tronsave_get_order first to verify order state before signing.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Target order id (`MObjectId`) to manually fulfill. Should be an order eligible for seller-side manual execution. | |
| signedTx | Yes | Required wallet-signed transaction payload (TronWeb shape: `{ txID, raw_data, raw_data_hex, signature[] }`). Must come from client-side signing; never fabricate. | |
| paymentAddress | No | Optional payout/payment address override when settlement flow requires it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
| delegatedId | No | On-chain delegate id created by the manual sell when the underlying transaction is confirmed; null until confirmation lands. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive, non-idempotent, and open-world behavior, and the description adds concrete context: it broadcasts a market/delegation transaction, may consume balances/resources, and re-executes on each call. It also states the wallet signature identity requirement and return shape, with no contradiction to annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, front-loaded with the action and followed by side effects, prerequisites, and return shape. Every sentence adds useful information with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive transaction tool with a nested payload and an output schema, the description supplies the critical behavioral context: side effects, non-idempotency, signature requirement, and a pre-check with tronsave_get_order. The output schema covers return-value details, so nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema fully documents orderId, the nested signedTx payload, and paymentAddress. The description only reiterates wallet signedTx and order-state verification, adding no syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: manually execute seller-side fulfillment of an existing order using a wallet signedTx. The word 'manual' and the 'existing order' scope distinguish it from sibling order creation, cancellation, update, and automated-sell tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it only when an explicit manual sell is intended and to call tronsave_get_order first to verify order state before signing. This gives a clear condition and prerequisite, though it does not name a specific alternative for automated selling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_suggest_create_orderSuggest Order StrategyARead-onlyIdempotentInspect
Ask the market how a buy would be filled: a plain new order, buying more only, or extending existing delegations (optionally plus extra). Returns each option with readyToFill (percent), payout (SUN) and the extendData rows. Use before tronsave_create_order when the receiver may already have delegations that can be extended cheaper. Public, read-only. Prices move every ~3 s: re-run right before ordering.
| Name | Required | Description | Default |
|---|---|---|---|
| receiver | Yes | TRON base58 address that will receive the resource. | |
| requester | No | TRON base58 address that pays; defaults to the logged-in wallet. | |
| unitPrice | Yes | Unit price in SUN you are willing to pay. | |
| durationSec | Yes | Delegation duration in seconds. | |
| resourceType | Yes | ENERGY (smart-contract calls) or BANDWIDTH (plain transfers). | |
| resourceAmount | Yes | Resource units to buy. |
Output Schema
| Name | Required | Description |
|---|---|---|
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so "Public, read-only" is largely redundant. However, the description adds genuinely non-obvious behavior: the ~3 s price-movement window and the instruction to re-run immediately before ordering, plus the per-option return fields (readyToFill percent, payout in SUN, extendData rows) that signal the response can contain multiple candidate strategies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each with a distinct job: define the operation, list outputs, route to the sibling tool, and warn about staleness. The most decision-critical information (the three strategies) is front-loaded, and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still summarizes the key returned fields, which is enough for an agent to route on. Combined with the freshness warning and the sibling hand-off, everything needed to invoke this correctly for a read-only, open-world suggestion tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (receiver, requester, unitPrice, durationSec, resourceType, resourceAmount) is already documented in the schema. The description adds no parameter-level meaning—nothing about how unitPrice interacts with the returned strategy options or what resourceAmount means relative to existing delegations—so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Ask the market how a buy would be filled") and immediately enumerates the three concrete strategy options it returns: plain new order, buy-more-only, or extend existing delegations. The named sibling tronsave_create_order makes the boundary unambiguous, so an agent can distinguish it from the many other order-listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use condition ("before tronsave_create_order when the receiver may already have delegations that can be extended cheaper") and a timing rule ("re-run right before ordering"). It does not address the other plausible alternative, tronsave_estimate_buy_resource, so the agent must infer when to prefer a full strategy suggestion over a simple estimate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_update_auto_buy_settingUpdate Auto-Buy RuleAIdempotentInspect
Change an auto-buy rule by id: pause or resume it with isActive, or change any of price cap, amount, duration, threshold and limits (only the fields you send change). Side effect: a resumed or loosened rule can start spending internal TRX again. Idempotent for the same arguments. Get ids from tronsave_list_auto_buy_settings. Requires a wallet signature identity.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Rule id from `tronsave_list_auto_buy_settings`. | |
| isActive | No | false pauses the rule, true resumes it. | |
| receiver | No | TRON base58 address that receives each delegation. | |
| unitPrice | No | Maximum unit price in SUN, as a decimal string. | |
| durationSec | No | Delegation duration of each purchase, in seconds. | |
| endActiveAt | No | Optional Unix time in seconds when the rule stops. | |
| resourceType | No | ENERGY or BANDWIDTH. | |
| startActiveAt | No | Optional Unix time in seconds when the rule starts. | |
| resourceAmount | No | Resource units bought each time the rule fires. | |
| limitBudgetInSun | No | Optional total budget cap in SUN (decimal string); must be greater than 10000000 (10 TRX). | |
| limitInOrderCount | No | Optional cap on the number of orders. | |
| thresholdResourceAmount | No | Rule fires when the receiver's remaining resource drops below this many units (TronSave requires at least 100000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| message | No | |
| success | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotation hints, the description discloses a meaningful side effect: a resumed or loosened rule can start spending internal TRX again. It also notes the auth requirement and partial-update behavior. The idempotence statement repeats the annotation rather than adding new context, keeping this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded, and wastes little space. The idempotence clause is largely redundant with the annotation, but the rest of the text is dense with useful routing and side-effect information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, a full schema, annotations, and an output schema, the description covers the essential context: id source, partial-update semantics, auth, and spending side effects. It does not explicitly mention that fields like receiver, resourceType, and scheduling times are also mutable, but the schema documents them fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds useful PATCH-like semantics by clarifying that only fields you send are changed and by naming the categories of updatable values, which is more than restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (change an auto-buy rule by id) and explicitly names the two core operations: pause/resume via isActive and field updates. It is clearly distinguishable from sibling tools like create_auto_buy_setting and delete_auto_buy_setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: ids come from tronsave_list_auto_buy_settings, partial updates are supported, and a wallet signature identity is required. It stops short of explicitly saying when to use this versus create/delete siblings or excluding invalid states, so it is strong but not a full routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_update_auto_sell_settingUpdate Auto Sell SettingAInspect
Update the existing auto-sell configuration with partial fields. Returns the updated autoSettings payload. Side effect: overwrites stored automation settings for the current user; not idempotent across different field sets. Requires a wallet signature identity. Use for INCREMENTAL changes after registration; read the baseline via tronsave_get_user_auto_setting to avoid accidental resets, and use tronsave_register_auto_sell only for first-time setup. Fails for invalid field combinations, unauthorized sessions, or policy constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| poolSetting | No | What the wallet sells automatically: per-resource price floor, duration bounds, minimum amount, reserve, and reclaim scope. | |
| addOnFeature | No | Optional extras: voting, auto-stake of idle TRX, suggest-sell hints. | |
| paymentConfig | No | Where and how often seller earnings are paid out (address, DAILY/IMMEDIATE, payout window). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| data | No | Opaque server-defined payload (tx id, setting id, or status text). Treat as identifier-or-message; rely on `message` for human routing. |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare readOnly=false, openWorld=true, idempotent=false, destructive=false; the description goes well beyond them. It discloses the concrete side effect (overwrites stored automation settings for the current user), the non-idempotency nuance across differing field sets, the wallet-signature identity requirement, and the failure modes (invalid field combinations, unauthorized sessions, policy constraints). It also states the return payload (autoSettings), which is useful context even with an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The mutation and its side effect are front-loaded in the first two clauses, followed by the return value, then the sibling routing guidance, then failure modes — a logical order with no filler. Every sentence carries a distinct, decision-relevant fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, deeply nested, non-idempotent mutation with an output schema and full annotation coverage, the description supplies exactly the missing pieces: what is overwritten, auth requirement, non-idempotency, sibling alternatives, and error conditions. Nothing an agent needs in order to call it safely is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested poolSetting, addOnFeature and paymentConfig properties are already documented in the schema, and the description adds only the general 'partial fields' patching semantics. It does not clarify any specific field behavior beyond what the schema states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Update the existing auto-sell configuration with partial fields" names a specific verb (update), resource (auto-sell configuration) and a key semantic (partial / incremental patch). The description then explicitly names the two sibling tools it is not (tronsave_get_user_auto_setting for reading the baseline, tronsave_register_auto_sell for first-time setup), so an agent can disambiguate without 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use (incremental changes after registration) plus two named alternatives with the conditions that select them: read the baseline via get_user_auto_setting to avoid resets, and use register_auto_sell only for first-time setup. That is a complete routing rule set with no exclusions left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_update_orderUpdate OrderAInspect
Update an open order by orderId with partial fields (receiver, newPrice). Returns { success, message, code }. Side effect: overwrites live order parameters; not idempotent — each call with a different newPrice produces a new state. Requires a wallet signature identity (the order's owner). Prefer this over cancel+recreate when only price/receiver should change. Verify state with tronsave_get_order first; fails for already-fulfilled, already-cancelled, or non-editable orders.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Target order id (`MObjectId`) to update. Order must still be open and editable. | |
| newPrice | No | Optional replacement unit price in SUN per resource unit. | |
| receiver | No | Optional replacement receiver TRON address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing. |
| message | No | Human-readable status text. Populated even on success; localized error messages may appear here on failure. |
| success | No | Whether the mutation succeeded at the backend level. Always check this before reading `data`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=false, destructive=false, openWorld=true, but the description adds context annotations cannot: it overwrites live order parameters, each distinct `newPrice` produces a new state, and a wallet-signature identity (owner) is required. It also states the return shape and the preconditions for failure, which goes well beyond the annotation bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the action, then the return shape, then side effects, then alternatives and preconditions. Every sentence adds a decision-relevant fact; there is no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be described), the description still summarizes the return shape and covers the mutation, identity requirement, non-idempotency, failure states, and the alternative workflow. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantic constraints the schema only implies: the update is partial, the caller must be the order's owner (signature identity), and `orderId` must refer to an editable order. It does not add syntax or units beyond what the schema already documents for `newPrice` (SUN) and `receiver` (TRON address pattern).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an open order by `orderId` with partial fields') and names the exact mutable fields, so an agent can tell it apart from `tronsave_cancel_order` or `tronsave_create_order` without reading the schema. The scope restriction ('open order') is front-loaded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Prefer this over cancel+recreate when only price/receiver should change' names the alternative and the selecting condition. It also prescribes a prerequisite ('Verify state with `tronsave_get_order` first') and enumerates failure cases (fulfilled, cancelled, non-editable).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tronsave_update_telegram_notify_settingUpdate Telegram Notification SettingsAIdempotentInspect
Replace the Telegram alert filters. Send the COMPLETE sellerFilter and/or buyerFilter objects (read the current ones with tronsave_get_telegram_notify_setting, edit, send back); each range or value has isEnabled plus its numbers. Only changes which alerts are sent; no funds move. Idempotent. Requires a wallet signature identity and a linked Telegram account.
| Name | Required | Description | Default |
|---|---|---|---|
| buyerFilter | No | Complete buyer alert filter; omit to leave buyer alerts unchanged. | |
| sellerFilter | No | Complete seller alert filter; omit to leave seller alerts unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| message | No | |
| success | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the call is a full replacement requiring COMPLETE filter objects, states the auth prerequisites (wallet signature identity plus linked Telegram account), and reassures that no funds move. 'Idempotent' restates idempotentHint=true but adds nothing harmful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the action and the key replace-semantics warning. Minor redundancy in explaining that each range carries `isEnabled` plus numbers, which the schema already states explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested, fully specified parameters and an output schema, the description supplies everything else an agent needs: replacement semantics, prerequisite identity/account state, and the safety profile that no funds are at risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with fully documented nested objects, so the schema carries parameter definitions. The description still adds essential meaning the schema cannot: that each object is sent whole rather than patched, and that omission leaves that side unchanged.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace the Telegram alert filters') and explicitly points to the sibling read tool `tronsave_get_telegram_notify_setting`, so the agent can distinguish it from the getter without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete read-edit-write workflow ('read the current ones with ... edit, send back') and clarifies the scope of effect ('Only changes which alerts are sent; no funds move'). It names the alternative read tool but does not state when not to use this tool (e.g., when no Telegram account is linked beyond the prerequisite note).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
- Changed
tronsave_bulk_create_internal_orders1 field changed- added
Input schema / properties / resourceType / descriptionAdded value: +"Resource bought for every receiver."
- Changed
tronsave_get_price_table1 field changed- added
Input schema / properties / resourceType / descriptionAdded value: +"ENERGY (smart-contract calls) or BANDWIDTH (plain transfers)."
- Changed
tronsave_get_referral2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Rows per list (default 10)."New value: +"Rows per list (default 10, max 50)." - added
Input schema / properties / offset / descriptionAdded value: +"Number of rows of each list to skip for pagination (default 0); add `limit` to page forward."
- Changed
tronsave_list_auto_buy_settings1 field changed- added
Input schema / properties / offset / descriptionAdded value: +"Number of rules to skip for pagination (default 0); add `limit` to page forward."
- Changed
tronsave_list_delegations4 fields changed- added
Input schema / properties / filterByResourceType / descriptionAdded value: +"Only ENERGY or only BANDWIDTH delegations; omit for both." - added
Input schema / properties / filterByTypeDelegate / descriptionAdded value: +"Only this delegation type: AUTO (auto-sell pool), MANUAL (`tronsave_sell_order_manual`), EXTEND (extensions), FAST (fast orders). Omit for all." - changed
Input schema / properties / offset / descriptionPrevious value: -"Rows to skip (default 0)."New value: +"Number of delegations to skip for pagination (default 0); add `limit` to page forward." - added
Input schema / properties / timeFilterBy / descriptionAdded value: +"Time window: All, last 7 days (D7) or last 30 days (D30). Default All."
- Changed
tronsave_list_extendable_receivers1 field changed- added
Input schema / properties / resourceType / descriptionAdded value: +"Only delegations of this resource; omit for both."
- Changed
tronsave_list_flash_unstake_orders3 fields changed- changed
Input schema / properties / kind / descriptionPrevious value: -"Default available."New value: +"Which orders to list: available (default), ongoing or completed." - changed
Input schema / properties / limit / descriptionPrevious value: -"Default 10."New value: +"Orders to return (default 10, max 50)." - added
Input schema / properties / offset / descriptionAdded value: +"Number of orders to skip for pagination (default 0); add `limit` to page forward."
- Changed
tronsave_list_internal_transactions2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Default 20."New value: +"Ledger entries to return (default 20, max 50)." - added
Input schema / properties / offset / descriptionAdded value: +"Number of ledger entries to skip for pagination (default 0); add `limit` to page forward."
- Changed
tronsave_list_notifications3 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Default 20."New value: +"Notifications to return (default 20, max 100)." - added
Input schema / properties / offset / descriptionAdded value: +"Number of notifications to skip for pagination (default 0); add `limit` to page forward." - added
Input schema / properties / unreadOnly / descriptionAdded value: +"true returns only unread notifications; default false returns all."
- Changed
tronsave_register_auto_sell5 fields changed- added
Input schema / properties / addOnFeature / descriptionAdded value: +"Optional extras: voting, auto-stake of idle TRX, suggest-sell hints." - added
Input schema / properties / paymentConfig / descriptionAdded value: +"Where and how often seller earnings are paid out (address, DAILY/IMMEDIATE, payout window)." - added
Input schema / properties / poolSetting / descriptionAdded value: +"What the wallet sells automatically: per-resource price floor, duration bounds, minimum amount, reserve, and reclaim scope." - added
Input schema / properties / poolSetting / properties / bandwidth / descriptionAdded value: +"Auto-sell rules for staked BANDWIDTH; omit to leave BANDWIDTH selling unchanged." - added
Input schema / properties / poolSetting / properties / energy / descriptionAdded value: +"Auto-sell rules for staked ENERGY; omit to leave ENERGY selling unchanged."
- Changed
tronsave_suggest_create_order1 field changed- added
Input schema / properties / resourceType / descriptionAdded value: +"ENERGY (smart-contract calls) or BANDWIDTH (plain transfers)."
- Changed
tronsave_update_auto_sell_setting5 fields changed- added
Input schema / properties / addOnFeature / descriptionAdded value: +"Optional extras: voting, auto-stake of idle TRX, suggest-sell hints." - added
Input schema / properties / paymentConfig / descriptionAdded value: +"Where and how often seller earnings are paid out (address, DAILY/IMMEDIATE, payout window)." - added
Input schema / properties / poolSetting / descriptionAdded value: +"What the wallet sells automatically: per-resource price floor, duration bounds, minimum amount, reserve, and reclaim scope." - added
Input schema / properties / poolSetting / properties / bandwidth / descriptionAdded value: +"Auto-sell rules for staked BANDWIDTH; omit to leave BANDWIDTH selling unchanged." - added
Input schema / properties / poolSetting / properties / energy / descriptionAdded value: +"Auto-sell rules for staked ENERGY; omit to leave ENERGY selling unchanged."
- Changed
tronsave_update_telegram_notify_setting30 fields changed- added
Input schema / properties / buyerFilter / descriptionAdded value: +"Complete buyer alert filter; omit to leave buyer alerts unchanged." - added
Input schema / properties / buyerFilter / properties / isEnabled / descriptionAdded value: +"Master switch for buyer alerts (your delegations and resources)." - added
Input schema / properties / buyerFilter / properties / lowResourceAlertBandwidth / descriptionAdded value: +"Alert when remaining BANDWIDTH units of the receiver is reached." - added
Input schema / properties / buyerFilter / properties / lowResourceAlertBandwidth / properties / isEnabled / descriptionAdded value: +"Whether this alert is sent." - added
Input schema / properties / buyerFilter / properties / lowResourceAlertBandwidth / properties / value / descriptionAdded value: +"Threshold: remaining BANDWIDTH units of the receiver." - added
Input schema / properties / buyerFilter / properties / lowResourceAlertEnergy / descriptionAdded value: +"Alert when remaining ENERGY units of the receiver is reached." - added
Input schema / properties / buyerFilter / properties / lowResourceAlertEnergy / properties / isEnabled / descriptionAdded value: +"Whether this alert is sent." - added
Input schema / properties / buyerFilter / properties / lowResourceAlertEnergy / properties / value / descriptionAdded value: +"Threshold: remaining ENERGY units of the receiver." - added
Input schema / properties / buyerFilter / properties / reclaimAlertTime / descriptionAdded value: +"Alert when seconds left before a delegation is reclaimed is reached." - added
Input schema / properties / buyerFilter / properties / reclaimAlertTime / properties / isEnabled / descriptionAdded value: +"Whether this alert is sent." - added
Input schema / properties / buyerFilter / properties / reclaimAlertTime / properties / value / descriptionAdded value: +"Threshold: seconds left before a delegation is reclaimed." - added
Input schema / properties / sellerFilter / descriptionAdded value: +"Complete seller alert filter; omit to leave seller alerts unchanged." - added
Input schema / properties / sellerFilter / properties / apy / descriptionAdded value: +"Alert only for orders whose seller APY in percent is in this range." - added
Input schema / properties / sellerFilter / properties / apy / properties / from / descriptionAdded value: +"Lower bound (seller APY in percent)." - added
Input schema / properties / sellerFilter / properties / apy / properties / isEnabled / descriptionAdded value: +"Whether this range filter is applied." - added
Input schema / properties / sellerFilter / properties / apy / properties / to / descriptionAdded value: +"Upper bound (seller APY in percent)." - added
Input schema / properties / sellerFilter / properties / duration / descriptionAdded value: +"Alert only for orders whose rental duration in seconds is in this range." - added
Input schema / properties / sellerFilter / properties / duration / properties / from / descriptionAdded value: +"Lower bound (rental duration in seconds)." - added
Input schema / properties / sellerFilter / properties / duration / properties / isEnabled / descriptionAdded value: +"Whether this range filter is applied." - added
Input schema / properties / sellerFilter / properties / duration / properties / to / descriptionAdded value: +"Upper bound (rental duration in seconds)." - added
Input schema / properties / sellerFilter / properties / isEnabled / descriptionAdded value: +"Master switch for seller alerts (new buy orders on the market)." - added
Input schema / properties / sellerFilter / properties / onlySendUnlockOrders / descriptionAdded value: +"true alerts only for orders that do not lock the seller's resource." - added
Input schema / properties / sellerFilter / properties / price / descriptionAdded value: +"Alert only for orders whose unit price in SUN is in this range." - added
Input schema / properties / sellerFilter / properties / price / properties / from / descriptionAdded value: +"Lower bound (unit price in SUN)." - added
Input schema / properties / sellerFilter / properties / price / properties / isEnabled / descriptionAdded value: +"Whether this range filter is applied." - added
Input schema / properties / sellerFilter / properties / price / properties / to / descriptionAdded value: +"Upper bound (unit price in SUN)." - added
Input schema / properties / sellerFilter / properties / remainAmount / descriptionAdded value: +"Alert only for orders whose remaining unfilled resource units is in this range." - added
Input schema / properties / sellerFilter / properties / remainAmount / properties / from / descriptionAdded value: +"Lower bound (remaining unfilled resource units)." - added
Input schema / properties / sellerFilter / properties / remainAmount / properties / isEnabled / descriptionAdded value: +"Whether this range filter is applied." - added
Input schema / properties / sellerFilter / properties / remainAmount / properties / to / descriptionAdded value: +"Upper bound (remaining unfilled resource units)."
1 tool update
- Changed
tronsave_get_session_status2 fields changed- changed
Output schema / properties / source / anyOfPrevious value: -[ - { - "description": "`login` = `tronsave_login` session, `header` = static Authorization header.", - "enum": [ - "none", - "login", - "header" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "`login` = `tronsave_login` session, `header` = static Authorization header, `oauth` = OAuth sign-in by the client app.", + "enum": [ + "none", + "login", + "header", + "oauth" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / source / descriptionPrevious value: -"`login` = `tronsave_login` session, `header` = static Authorization header."New value: +"`login` = `tronsave_login` session, `header` = static Authorization header, `oauth` = OAuth sign-in by the client app."
53 tool updates
- Added
tronsave_bulk_create_internal_orders - Changed
tronsave_cancel_order10 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message" -]
- Added
tronsave_create_auto_buy_setting - Changed
tronsave_create_order20 fields changed- added
Input schema / properties / orderDurationSec / maximumAdded value: +9007199254740991 - changed
Input schema / properties / orderDurationSec / typePrevious value: -"number"New value: +"integer" - removed
Input schema / properties / orderReceiver / minLengthRemoved value: -1 - added
Input schema / properties / orderReceiver / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - added
Input schema / properties / orderResourceAmount / maximumAdded value: +9007199254740991 - changed
Input schema / properties / orderResourceAmount / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / orderUnitPrice / descriptionPrevious value: -"Unit price in SUN. Prefer aligning with `minResourcePrice` or `buyResourcePrice` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration."New value: +"Unit price in SUN per resource unit (NOT TRX). Use `unitPrice` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration." - changed
Input schema / properties / paymentPaymentAmount / descriptionPrevious value: -"Payment amount in SUN. Prefer deriving from `tronsave_estimate_buy_resource`; if converting to TRX, divide SUN by `1e6`."New value: +"Total payment in SUN (1 TRX = 1e6 SUN). Use `estimateTrx` (SUN) from the latest `tronsave_estimate_buy_resource`." - changed
Input schema / properties / paymentSignedTx / descriptionPrevious value: -"Required when `paymentMethod=onchain`. TronWeb-shaped signed TRON transaction (`{ txID, raw_data, raw_data_hex, signature[] }`). Must be produced client-side by the user's wallet; never fabricate or hand-edit."New value: +"Required when `paymentMethod=onchain`: the user's wallet-signed TRX transfer of `paymentPaymentAmount` SUN to `systemDepositAddress` (from `tronsave_estimate_buy_resource`), TronWeb shape `{ txID, raw_data, raw_data_hex, signature[] }`. Must be produced client-side by the user's wallet; never fabricate or hand-edit." - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - changed
Output schema / properties / data / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "orderId": { - "description": "Newly created order id (`MObjectId`); pass to `tronsave_get_order` to inspect status.", - "type": "string" - } - }, - "required": [ - "orderId" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "orderId": { + "anyOf": [ + { + "description": "Newly created order id (`MObjectId`); pass to `tronsave_get_order` to inspect status.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Newly created order id (`MObjectId`); pass to `tronsave_get_order` to inspect status." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message" -]
- Changed
tronsave_delete_auto_buy_setting10 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message" -]
- Changed
tronsave_estimate_buy_resource32 fields changed- changed
Input schema / properties / buyResourceAmount / descriptionPrevious value: -"Amount of resource to buy. Default 100000 for ENERGY and 1000 for BANDWIDTH"New value: +"Resource units to buy. Default 100000 for ENERGY and 1000 for BANDWIDTH." - added
Input schema / properties / buyResourceAmount / exclusiveMinimumAdded value: +0 - added
Input schema / properties / buyResourceAmount / maximumAdded value: +9007199254740991 - changed
Input schema / properties / buyResourceAmount / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / durationSec / descriptionPrevious value: -"Duration of the order in seconds. Default 15 minutes"New value: +"Delegation duration in seconds. Default 900 (15 minutes)." - added
Input schema / properties / durationSec / exclusiveMinimumAdded value: +0 - added
Input schema / properties / durationSec / maximumAdded value: +9007199254740991 - changed
Input schema / properties / durationSec / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / minResourceDelegateRequiredAmount / descriptionPrevious value: -"Minimum amount of resource to delegate."New value: +"Minimum resource amount per matching provider." - added
Input schema / properties / minResourceDelegateRequiredAmount / minimumAdded value: +0 - changed
Input schema / properties / receiver / descriptionPrevious value: -"receiver address."New value: +"TRON address that will receive the resource. Strongly recommended: quotes depend on it." - added
Input schema / properties / receiver / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Input schema / properties / resourceType / descriptionPrevious value: -"Resource type to buy. Default ENERGY"New value: +"Resource type to buy. Default ENERGY." - changed
Input schema / properties / unitPrice / descriptionPrevious value: -"Unit price in SUN."New value: +"Desired unit price in SUN. Values below the market minimum are raised to the minimum. Omit for the MEDIUM market price." - added
Input schema / properties / unitPrice / exclusiveMinimumAdded value: +0 - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / availableResource / anyOfAdded value: +[ + { + "description": "Resource units currently available at this price; if lower than requested, the order may fill partially.", + "type": "number" + }, + { + "type": "null" + } +] - changed
Output schema / properties / availableResource / descriptionPrevious value: -"Available resource amount"New value: +"Resource units currently available at this price; if lower than requested, the order may fill partially." - removed
Output schema / properties / availableResource / typeRemoved value: -"number" - added
Output schema / properties / durationSec / anyOfAdded value: +[ + { + "description": "Delegation duration in seconds → `orderDurationSec`.", + "type": "number" + }, + { + "type": "null" + } +] - changed
Output schema / properties / durationSec / descriptionPrevious value: -"Delegated duration in seconds"New value: +"Delegation duration in seconds → `orderDurationSec`." - removed
Output schema / properties / durationSec / typeRemoved value: -"number" - added
Output schema / properties / estimateTrx / anyOfAdded value: +[ + { + "description": "Estimated total cost in SUN (despite the name; TRX = value / 1e6) → `paymentPaymentAmount`.", + "type": "number" + }, + { + "type": "null" + } +] - changed
Output schema / properties / estimateTrx / descriptionPrevious value: -"Estimated TRX cost in SUN"New value: +"Estimated total cost in SUN (despite the name; TRX = value / 1e6) → `paymentPaymentAmount`." - removed
Output schema / properties / estimateTrx / typeRemoved value: -"number" - added
Output schema / properties / systemDepositAddress / anyOfAdded value: +[ + { + "description": "TronSave deposit address; destination of the signed TRX transfer for `paymentMethod=onchain`.", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / systemDepositAddress / descriptionPrevious value: -"System deposit address for onchain payment"New value: +"TronSave deposit address; destination of the signed TRX transfer for `paymentMethod=onchain`." - removed
Output schema / properties / systemDepositAddress / typeRemoved value: -"string" - added
Output schema / properties / unitPrice / anyOfAdded value: +[ + { + "description": "Quoted unit price in SUN per resource unit → `orderUnitPrice`.", + "type": "number" + }, + { + "type": "null" + } +] - changed
Output schema / properties / unitPrice / descriptionPrevious value: -"Unit price in SUN"New value: +"Quoted unit price in SUN per resource unit → `orderUnitPrice`." - removed
Output schema / properties / unitPrice / typeRemoved value: -"number" - removed
Output schema / requiredRemoved value: -[ - "systemDepositAddress", - "unitPrice", - "durationSec", - "estimateTrx", - "availableResource" -]
- Added
tronsave_estimate_flash_unstake - Changed
tronsave_generate_api_key12 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / data / anyOfAdded value: +[ + { + "description": "For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material).", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / data / typeRemoved value: -"string" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message", - "data" -]
- Added
tronsave_get_account_resources - Added
tronsave_get_agency_bot - Changed
tronsave_get_deposit_address10 fields changed- changed
Input schema / properties / amountTrx / descriptionPrevious value: -"Amount of TRX to deposit"New value: +"Amount of TRX the user intends to deposit (minimum 10 TRX)." - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / amountTrx / anyOfAdded value: +[ + { + "description": "Amount of TRX the user intends to deposit (echoed back).", + "type": "number" + }, + { + "type": "null" + } +] - changed
Output schema / properties / amountTrx / descriptionPrevious value: -"Amount of TRX to deposit"New value: +"Amount of TRX the user intends to deposit (echoed back)." - removed
Output schema / properties / amountTrx / typeRemoved value: -"number" - added
Output schema / properties / depositAddress / anyOfAdded value: +[ + { + "description": "TRON base58 deposit address; send TRX here to top up the TronSave internal balance.", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / depositAddress / descriptionPrevious value: -"TRON base58 deposit address, used for deposit TRX to TronSave internal account"New value: +"TRON base58 deposit address; send TRX here to top up the TronSave internal balance." - removed
Output schema / properties / depositAddress / typeRemoved value: -"string" - added
Output schema / properties / minimumDepositTrxAdded value: +{ + "anyOf": [ + { + "description": "Minimum accepted deposit in TRX.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum accepted deposit in TRX." +} - removed
Output schema / requiredRemoved value: -[ - "depositAddress", - "amountTrx" -]
- Added
tronsave_get_flash_unstake_request - Changed
tronsave_get_internal_account15 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / apiKeyAdded value: +{ + "anyOf": [ + { + "description": "MASKED internal API key; the full key is never returned.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "MASKED internal API key; the full key is never returned." +} - added
Output schema / properties / balance / anyOfAdded value: +[ + { + "description": "Internal balance in SUN as a decimal string (TRX = SUN / 1e6).", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / balance / descriptionPrevious value: -"Amount in SUN"New value: +"Internal balance in SUN as a decimal string (TRX = SUN / 1e6)." - removed
Output schema / properties / balance / typeRemoved value: -"string" - added
Output schema / properties / depositAddress / anyOfAdded value: +[ + { + "description": "TRON base58 deposit address; send TRX here to top up the internal balance (min 10 TRX).", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / depositAddress / descriptionPrevious value: -"TRON base58 deposit address, used for deposit TRX to TronSave internal account"New value: +"TRON base58 deposit address; send TRX here to top up the internal balance (min 10 TRX)." - removed
Output schema / properties / depositAddress / typeRemoved value: -"string" - added
Output schema / properties / id / anyOfAdded value: +[ + { + "description": "Internal account id.", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / id / descriptionAdded value: +"Internal account id." - removed
Output schema / properties / id / typeRemoved value: -"string" - added
Output schema / properties / representAddress / anyOfAdded value: +[ + { + "description": "TRON base58 address that represents (owns) the internal account.", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / representAddress / descriptionPrevious value: -"TRON base58 represent address"New value: +"TRON base58 address that represents (owns) the internal account." - removed
Output schema / properties / representAddress / typeRemoved value: -"string" - removed
Output schema / requiredRemoved value: -[ - "id", - "balance", - "representAddress", - "depositAddress" -]
- Added
tronsave_get_market_overview - Changed
tronsave_get_min_price5 fields changed- added
Input schema / properties / address / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / minPrice / anyOfAdded value: +[ + { + "description": "Estimated minimum unit price in SUN for the given `resourceType`, `buyAmount`, and `durationSec`; align with `tronsave_estimate_buy_resource` and order `unitPrice` conventions (same as GraphQL `market.estimateMinPrice`).", + "type": "number" + }, + { + "type": "null" + } +] - removed
Output schema / properties / minPrice / typeRemoved value: -"number" - removed
Output schema / requiredRemoved value: -[ - "minPrice" -]
- Changed
tronsave_get_order3 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / order / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "apy": { - "description": "Annualized yield hint as returned by the API (see TronSave semantics).", - "type": "number" - }, - "createdAt": { - "description": "Order creation time (ISO-8601).", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "durationSec": { - "description": "Delegation duration in seconds.", - "type": "number" - }, - "id": { - "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools.", - "type": "string" - }, - "isMatching": { - "description": "Whether this order matches the viewer/matching filter used in the query.", - "type": "boolean" - }, - "isOwner": { - "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`.", - "type": "boolean" - }, - "receiver": { - "additionalProperties": false, - "description": "Receiver wallet and related party info for the delegation leg.", - "properties": { - "address": { - "description": "TRON base58 address for this party.", - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - "remainAmount": { - "description": "Resource not yet consumed or remaining to fulfill.", - "type": "number" - }, - "requester": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "address": { - "description": "TRON base58 address for this party.", - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Requester party when present." - }, - "resourceAmount": { - "description": "Original resource amount on the order.", - "type": "number" - }, - "resourceType": { - "description": "`ENERGY` or `BANDWIDTH`.", - "enum": [ - "ENERGY", - "BANDWIDTH" - ], - "type": "string" - }, - "typeOrder": { - "description": "Market order flavor.", - "enum": [ - "NORMAL", - "FAST", - "EXTEND" - ], - "type": "string" - }, - "unitPrice": { - "description": "Unit price in SUN.", - "type": "number" - } - }, - "required": [ - "id", - "receiver", - "resourceType", - "resourceAmount", - "remainAmount", - "durationSec", - "isOwner", - "isMatching", - "apy", - "unitPrice", - "createdAt", - "typeOrder" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "apy": { + "anyOf": [ + { + "description": "Annualized yield hint as returned by the API (see TronSave semantics).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Annualized yield hint as returned by the API (see TronSave semantics)." + }, + "createdAt": { + "anyOf": [ + { + "description": "Order creation time (ISO-8601).", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Order creation time (ISO-8601)." + }, + "durationSec": { + "anyOf": [ + { + "description": "Delegation duration in seconds.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Delegation duration in seconds." + }, + "id": { + "anyOf": [ + { + "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools." + }, + "isMatching": { + "anyOf": [ + { + "description": "Whether this order matches the viewer/matching filter used in the query.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether this order matches the viewer/matching filter used in the query." + }, + "isOwner": { + "anyOf": [ + { + "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`." + }, + "receiver": { + "anyOf": [ + { + "additionalProperties": {}, + "description": "Receiver wallet and related party info for the delegation leg.", + "properties": { + "address": { + "anyOf": [ + { + "description": "TRON base58 address for this party.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "TRON base58 address for this party." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Receiver wallet and related party info for the delegation leg." + }, + "remainAmount": { + "anyOf": [ + { + "description": "Resource not yet consumed or remaining to fulfill.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Resource not yet consumed or remaining to fulfill." + }, + "requester": { + "anyOf": [ + { + "additionalProperties": {}, + "description": "Requester party when present.", + "properties": { + "address": { + "anyOf": [ + { + "description": "TRON base58 address for this party.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "TRON base58 address for this party." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Requester party when present." + }, + "resourceAmount": { + "anyOf": [ + { + "description": "Original resource amount on the order.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Original resource amount on the order." + }, + "resourceType": { + "anyOf": [ + { + "description": "`ENERGY` or `BANDWIDTH`.", + "enum": [ + "ENERGY", + "BANDWIDTH" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "`ENERGY` or `BANDWIDTH`." + }, + "typeOrder": { + "anyOf": [ + { + "description": "Market order flavor.", + "enum": [ + "NORMAL", + "FAST", + "EXTEND" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Market order flavor." + }, + "unitPrice": { + "anyOf": [ + { + "description": "Unit price in SUN.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Unit price in SUN." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / requiredRemoved value: -[ - "order" -]
- Added
tronsave_get_price_table - Added
tronsave_get_referral - Added
tronsave_get_seller_stats - Added
tronsave_get_session_status - Changed
tronsave_get_sign_message8 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Hex-encoded nonce message to sign client-side with the user's TRON wallet. The signature must be produced over THIS exact message (case-sensitive).", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / timestamp / anyOfAdded value: +[ + { + "description": "Unix epoch seconds corresponding to `message`. Pair it with the wallet signature in `<signature>_<timestamp>` form when calling `tronsave_login` (signature mode). This endpoint is a convenience helper; clients may provide their own timestamp payload as well.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / timestamp / exclusiveMinimumRemoved value: -0 - removed
Output schema / properties / timestamp / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / timestamp / typeRemoved value: -"integer" - removed
Output schema / requiredRemoved value: -[ - "message", - "timestamp" -]
- Added
tronsave_get_system_info - Added
tronsave_get_telegram_notify_setting - Changed
tronsave_get_user_auto_setting8 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / bandwidth / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "isAcceptExtended": { - "description": "Whether incoming extend-style matches are accepted for this leg.", - "type": "boolean" - }, - "isActive": { - "description": "Whether auto-sell is currently active for this resource leg.", - "type": "boolean" - }, - "maintainUnDelegate": { - "description": "Buffer of undelegated resource the seller keeps reserved.", - "type": "number" - }, - "maxDelegateDurationSec": { - "description": "Upper bound of accepted delegation duration in seconds.", - "type": "number" - }, - "minDelegateAmount": { - "description": "Minimum per-delegation resource amount accepted by auto matches.", - "type": "number" - }, - "minDelegateDurationSec": { - "description": "Lower bound of accepted delegation duration in seconds.", - "type": "number" - }, - "minPrice": { - "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit).", - "type": "number" - }, - "profitShare": { - "description": "Profit share percentage for this resource leg.", - "type": "number" - } - }, - "required": [ - "isActive", - "minPrice", - "minDelegateAmount", - "maintainUnDelegate", - "profitShare", - "minDelegateDurationSec", - "maxDelegateDurationSec", - "isAcceptExtended" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "description": "Bandwidth auto-sell pool snapshot; null when bandwidth automation is disabled.", + "properties": { + "isAcceptExtended": { + "anyOf": [ + { + "description": "Whether incoming extend-style matches are accepted for this leg.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether incoming extend-style matches are accepted for this leg." + }, + "isActive": { + "anyOf": [ + { + "description": "Whether auto-sell is currently active for this resource leg.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether auto-sell is currently active for this resource leg." + }, + "maintainUnDelegate": { + "anyOf": [ + { + "description": "Buffer of undelegated resource the seller keeps reserved.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Buffer of undelegated resource the seller keeps reserved." + }, + "maxDelegateDurationSec": { + "anyOf": [ + { + "description": "Upper bound of accepted delegation duration in seconds.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Upper bound of accepted delegation duration in seconds." + }, + "minDelegateAmount": { + "anyOf": [ + { + "description": "Minimum per-delegation resource amount accepted by auto matches.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum per-delegation resource amount accepted by auto matches." + }, + "minDelegateDurationSec": { + "anyOf": [ + { + "description": "Lower bound of accepted delegation duration in seconds.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Lower bound of accepted delegation duration in seconds." + }, + "minPrice": { + "anyOf": [ + { + "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit)." + }, + "profitShare": { + "anyOf": [ + { + "description": "Profit share percentage for this resource leg.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Profit share percentage for this resource leg." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / energy / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "isAcceptExtended": { - "description": "Whether incoming extend-style matches are accepted for this leg.", - "type": "boolean" - }, - "isActive": { - "description": "Whether auto-sell is currently active for this resource leg.", - "type": "boolean" - }, - "maintainUnDelegate": { - "description": "Buffer of undelegated resource the seller keeps reserved.", - "type": "number" - }, - "maxDelegateDurationSec": { - "description": "Upper bound of accepted delegation duration in seconds.", - "type": "number" - }, - "minDelegateAmount": { - "description": "Minimum per-delegation resource amount accepted by auto matches.", - "type": "number" - }, - "minDelegateDurationSec": { - "description": "Lower bound of accepted delegation duration in seconds.", - "type": "number" - }, - "minPrice": { - "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit).", - "type": "number" - }, - "profitShare": { - "description": "Profit share percentage for this resource leg.", - "type": "number" - } - }, - "required": [ - "isActive", - "minPrice", - "minDelegateAmount", - "maintainUnDelegate", - "profitShare", - "minDelegateDurationSec", - "maxDelegateDurationSec", - "isAcceptExtended" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "description": "Energy auto-sell pool snapshot; null when energy automation is disabled.", + "properties": { + "isAcceptExtended": { + "anyOf": [ + { + "description": "Whether incoming extend-style matches are accepted for this leg.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether incoming extend-style matches are accepted for this leg." + }, + "isActive": { + "anyOf": [ + { + "description": "Whether auto-sell is currently active for this resource leg.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether auto-sell is currently active for this resource leg." + }, + "maintainUnDelegate": { + "anyOf": [ + { + "description": "Buffer of undelegated resource the seller keeps reserved.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Buffer of undelegated resource the seller keeps reserved." + }, + "maxDelegateDurationSec": { + "anyOf": [ + { + "description": "Upper bound of accepted delegation duration in seconds.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Upper bound of accepted delegation duration in seconds." + }, + "minDelegateAmount": { + "anyOf": [ + { + "description": "Minimum per-delegation resource amount accepted by auto matches.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum per-delegation resource amount accepted by auto matches." + }, + "minDelegateDurationSec": { + "anyOf": [ + { + "description": "Lower bound of accepted delegation duration in seconds.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Lower bound of accepted delegation duration in seconds." + }, + "minPrice": { + "anyOf": [ + { + "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit)." + }, + "profitShare": { + "anyOf": [ + { + "description": "Profit share percentage for this resource leg.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Profit share percentage for this resource leg." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / permitOperations / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Backend-assigned permission row id; null when not yet persisted." - }, - "operations": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Numeric operation codes enabled for this row; semantics defined by the backend." - }, - "permissionName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Human-readable permission name; meant for display rather than equality checks." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Permission category as labelled by the backend (e.g. role/scope tag)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Permission rows enabled for this user; null/empty when no automation has been configured.", + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "anyOf": [ + { + "description": "Backend-assigned permission row id; null when not yet persisted.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Backend-assigned permission row id; null when not yet persisted." + }, + "operations": { + "anyOf": [ + { + "description": "Numeric operation codes enabled for this row; semantics defined by the backend.", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Numeric operation codes enabled for this row; semantics defined by the backend." + }, + "permissionName": { + "anyOf": [ + { + "description": "Human-readable permission name; meant for display rather than equality checks.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Human-readable permission name; meant for display rather than equality checks." + }, + "type": { + "anyOf": [ + { + "description": "Permission category as labelled by the backend (e.g. role/scope tag).", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Permission category as labelled by the backend (e.g. role/scope tag)." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / reclaimOnlyTronSave / anyOfPrevious value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Reclaim flag — when `true`, only TronSave-managed delegations are reclaimed automatically.", + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Output schema / properties / suggestSell / anyOfPrevious value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Whether suggest-sell UX hints are enabled.", + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Output schema / properties / vote / anyOfPrevious value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Whether vote-related automation is enabled for the wallet.", + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Output schema / properties / withdrawVote / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Withdraw-vote configuration as a backend-defined string; semantics from TronSave docs.", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
tronsave_get_user_info10 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / address / anyOfAdded value: +[ + { + "description": "TRON base58 address", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / address / typeRemoved value: -"string" - added
Output schema / properties / balance / anyOfAdded value: +[ + { + "description": "Amount in SUN, onchain balance of the address", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / balance / typeRemoved value: -"string" - added
Output schema / properties / caller / anyOfAdded value: +[ + { + "description": "TRON base58 address of the caller", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / caller / typeRemoved value: -"string" - changed
Output schema / properties / info / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "user information", - "properties": { - "contacts": { - "items": { - "additionalProperties": false, - "properties": { - "contactId": { - "description": "Contact id", - "type": "string" - }, - "isActive": { - "description": "Whether the contact is active", - "type": "boolean" - }, - "isVerify": { - "description": "Whether the contact is verified", - "type": "boolean" - }, - "type": { - "enum": [ - "EMAIL", - "PHONE", - "TELEGRAM", - "WECHAT" - ], - "type": "string" - }, - "username": { - "description": "Username", - "type": "string" - } - }, - "required": [ - "type", - "contactId", - "isActive", - "isVerify", - "username" - ], - "type": "object" - }, - "type": "array" - }, - "createdBotCount": { - "description": "Number of bots created by the user", - "type": "number" - }, - "pendingRefCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Pending ref code" - }, - "rank": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rank" - }, - "remainRefBonus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Remain ref bonus" - }, - "sponsor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Sponsor" - }, - "totalPendingRef": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Total pending ref" - }, - "totalRef": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Total ref" - }, - "totalRefBonus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Total ref bonus" - }, - "userRefCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "User ref code" - }, - "whitelistLevel": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Whitelist level" - } - }, - "required": [ - "createdBotCount", - "contacts", - "whitelistLevel", - "userRefCode", - "sponsor", - "pendingRefCode", - "totalRef", - "totalPendingRef", - "totalRefBonus", - "remainRefBonus", - "rank" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "description": "user information", + "properties": { + "contacts": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "contactId": { + "anyOf": [ + { + "description": "Contact id", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Contact id" + }, + "isActive": { + "anyOf": [ + { + "description": "Whether the contact is active", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether the contact is active" + }, + "isVerify": { + "anyOf": [ + { + "description": "Whether the contact is verified", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether the contact is verified" + }, + "type": { + "anyOf": [ + { + "enum": [ + "EMAIL", + "PHONE", + "TELEGRAM", + "WECHAT" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "username": { + "anyOf": [ + { + "description": "Username", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Username" + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "createdBotCount": { + "anyOf": [ + { + "description": "Number of bots created by the user", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Number of bots created by the user" + }, + "pendingRefCode": { + "anyOf": [ + { + "description": "Pending ref code", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Pending ref code" + }, + "rank": { + "anyOf": [ + { + "description": "Rank", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Rank" + }, + "remainRefBonus": { + "anyOf": [ + { + "description": "Remain ref bonus", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Remain ref bonus" + }, + "sponsor": { + "anyOf": [ + { + "description": "Sponsor", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Sponsor" + }, + "totalPendingRef": { + "anyOf": [ + { + "description": "Total pending ref", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total pending ref" + }, + "totalRef": { + "anyOf": [ + { + "description": "Total ref", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total ref" + }, + "totalRefBonus": { + "anyOf": [ + { + "description": "Total ref bonus", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Total ref bonus" + }, + "userRefCode": { + "anyOf": [ + { + "description": "User ref code", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "User ref code" + }, + "whitelistLevel": { + "anyOf": [ + { + "description": "Whitelist level", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Whitelist level" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / internalAccount / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", - "properties": { - "apiKey": { - "description": "Internal API key cached server-side from this account; treat as sensitive credential material.", - "type": "string" - }, - "balance": { - "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", - "type": "string" - }, - "depositAddress": { - "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", - "type": "string" - } - }, - "required": [ - "depositAddress", - "balance", - "apiKey" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", + "properties": { + "apiKey": { + "anyOf": [ + { + "description": "MASKED internal API key (first/last characters only). The full key is held server-side in the session and is never returned.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "MASKED internal API key (first/last characters only). The full key is held server-side in the session and is never returned." + }, + "balance": { + "anyOf": [ + { + "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6)." + }, + "depositAddress": { + "anyOf": [ + { + "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / requiredRemoved value: -[ - "caller", - "address", - "balance", - "info", - "internalAccount" -]
- Changed
tronsave_get_user_permissions6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / permitOperations / anyOfAdded value: +[ + { + "description": "Permission rows enabled for this user; defaults to `[]` when nothing is configured.", + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "anyOf": [ + { + "description": "Backend-assigned permission row id; null when not yet persisted.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Backend-assigned permission row id; null when not yet persisted." + }, + "operations": { + "anyOf": [ + { + "description": "Numeric operation codes enabled for this row; semantics defined by the backend.", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Numeric operation codes enabled for this row; semantics defined by the backend." + }, + "permissionName": { + "anyOf": [ + { + "description": "Human-readable permission name; meant for display rather than equality checks.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Human-readable permission name; meant for display rather than equality checks." + }, + "type": { + "anyOf": [ + { + "description": "Permission category as labelled by the backend (e.g. role/scope tag).", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Permission category as labelled by the backend (e.g. role/scope tag)." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / permitOperations / defaultRemoved value: -[] - removed
Output schema / properties / permitOperations / itemsRemoved value: -{ - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Backend-assigned permission row id; null when not yet persisted." - }, - "operations": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Numeric operation codes enabled for this row; semantics defined by the backend." - }, - "permissionName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Human-readable permission name; meant for display rather than equality checks." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Permission category as labelled by the backend (e.g. role/scope tag)." - } - }, - "type": "object" -} - removed
Output schema / properties / permitOperations / typeRemoved value: -"array" - removed
Output schema / requiredRemoved value: -[ - "permitOperations" -]
- Changed
tronsave_internal_create_extend_request11 fields changed- changed
Input schema / properties / extendData / descriptionPrevious value: -"Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave's REST extend contract (delegator, isExtend, extraAmount, extendTo ms)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user's session, not from GraphQL `tronsave_list_extendable_delegates`."New value: +"Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave's REST extend contract (delegator, isExtend, extraAmount, extendTo in Unix seconds)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user's session, not from GraphQL `tronsave_list_extendable_delegates`." - removed
Input schema / properties / extendData / items / properties / delegator / minLengthRemoved value: -1 - added
Input schema / properties / extendData / items / properties / delegator / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Input schema / properties / extendData / items / properties / extendTo / descriptionPrevious value: -"Target end time as Unix epoch milliseconds (UTC) for this delegator row in `POST /v2/extend-request`."New value: +"Target end time as Unix epoch SECONDS (UTC) for this delegator row in `POST /v2/extend-request`; echo the value returned by `tronsave_internal_extend_delegates`." - removed
Input schema / properties / receiver / minLengthRemoved value: -1 - added
Input schema / properties / receiver / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / orderId / anyOfAdded value: +[ + { + "description": "New extension order id (hex string).", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / orderId / descriptionPrevious value: -"TronSave order ID (hex string)"New value: +"New extension order id (hex string)." - removed
Output schema / properties / orderId / typeRemoved value: -"string" - removed
Output schema / requiredRemoved value: -[ - "orderId" -]
- Added
tronsave_internal_extend_delegates - Added
tronsave_internal_order_book - Added
tronsave_internal_order_create - Added
tronsave_internal_order_details - Added
tronsave_internal_order_estimate - Added
tronsave_internal_order_history - Added
tronsave_list_auto_buy_settings - Added
tronsave_list_delegations - Changed
tronsave_list_extendable_delegates5 fields changed- removed
Input schema / properties / receiver / minLengthRemoved value: -1 - added
Input schema / properties / receiver / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / extendableDelegates / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "data": { - "anyOf": [ - { - "items": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Delegate amount associated with this row (resource units)." - }, - "availableExtendAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Earliest time at which extension becomes available for this row." - }, - "availableResource": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Resource still available from this delegate for matching/extension." - }, - "extendPrice": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Indicative unit price or price component for extending this row (SUN unless API documents otherwise)." - }, - "isExtendable": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Whether this delegate entry can be extended under current rules." - }, - "minTimeExtendTo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Minimum end time boundary required before extension is allowed." - }, - "reason": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Human-readable reasons when extension is blocked or conditional." - }, - "reclaimTime": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Timestamp related to reclaim/unlock timing when relevant." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Per-delegator or per-offer rows backing the aggregates above; may be empty when nothing is extendable." - }, - "maxExtendAmount": { - "description": "Largest extendable resource amount (units) aggregated for this query.", - "type": "number" - }, - "minExtendRequired": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Minimum resource amount the market requires to treat an extension as valid, if applicable." - }, - "overBuyAmount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Amount considered in excess of a simple extend-only path when `suggestData` implies extra buy." - }, - "overBuyAmountAvailable": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How much of the over-buy amount is currently matchable." - }, - "overBuyAmountMaxAvailable": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Upper cap for over-buy availability under current book conditions." - }, - "overBuyPrice": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Price facet associated with the over-buy leg (SUN-related aggregate; exact semantics from TronSave API)." - }, - "totalAvailableExtraBuyAmount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Capacity hint for additional buy amount on top of extension under current market state." - } - }, - "required": [ - "maxExtendAmount" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "description": "Null when the market has no payload or GraphQL returned no branch; check tool-level errors for hard failures.", + "properties": { + "data": { + "anyOf": [ + { + "description": "Per-delegator or per-offer rows backing the aggregates above; may be empty when nothing is extendable.", + "items": { + "additionalProperties": {}, + "properties": { + "amount": { + "anyOf": [ + { + "description": "Delegate amount associated with this row (resource units).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Delegate amount associated with this row (resource units)." + }, + "availableExtendAt": { + "anyOf": [ + { + "description": "Earliest time at which extension becomes available for this row.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Earliest time at which extension becomes available for this row." + }, + "availableResource": { + "anyOf": [ + { + "description": "Resource still available from this delegate for matching/extension.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Resource still available from this delegate for matching/extension." + }, + "extendPrice": { + "anyOf": [ + { + "description": "Indicative unit price or price component for extending this row (SUN unless API documents otherwise).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Indicative unit price or price component for extending this row (SUN unless API documents otherwise)." + }, + "isExtendable": { + "anyOf": [ + { + "description": "Whether this delegate entry can be extended under current rules.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether this delegate entry can be extended under current rules." + }, + "minTimeExtendTo": { + "anyOf": [ + { + "description": "Minimum end time boundary required before extension is allowed.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum end time boundary required before extension is allowed." + }, + "reason": { + "anyOf": [ + { + "description": "Human-readable reasons when extension is blocked or conditional.", + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Human-readable reasons when extension is blocked or conditional." + }, + "reclaimTime": { + "anyOf": [ + { + "description": "Timestamp related to reclaim/unlock timing when relevant.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Timestamp related to reclaim/unlock timing when relevant." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Per-delegator or per-offer rows backing the aggregates above; may be empty when nothing is extendable." + }, + "maxExtendAmount": { + "anyOf": [ + { + "description": "Largest extendable resource amount (units) aggregated for this query.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Largest extendable resource amount (units) aggregated for this query." + }, + "minExtendRequired": { + "anyOf": [ + { + "description": "Minimum resource amount the market requires to treat an extension as valid, if applicable.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum resource amount the market requires to treat an extension as valid, if applicable." + }, + "overBuyAmount": { + "anyOf": [ + { + "description": "Amount considered in excess of a simple extend-only path when `suggestData` implies extra buy.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Amount considered in excess of a simple extend-only path when `suggestData` implies extra buy." + }, + "overBuyAmountAvailable": { + "anyOf": [ + { + "description": "How much of the over-buy amount is currently matchable.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How much of the over-buy amount is currently matchable." + }, + "overBuyAmountMaxAvailable": { + "anyOf": [ + { + "description": "Upper cap for over-buy availability under current book conditions.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Upper cap for over-buy availability under current book conditions." + }, + "overBuyPrice": { + "anyOf": [ + { + "description": "Price facet associated with the over-buy leg (SUN-related aggregate; exact semantics from TronSave API).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Price facet associated with the over-buy leg (SUN-related aggregate; exact semantics from TronSave API)." + }, + "totalAvailableExtraBuyAmount": { + "anyOf": [ + { + "description": "Capacity hint for additional buy amount on top of extension under current market state.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Capacity hint for additional buy amount on top of extension under current market state." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / requiredRemoved value: -[ - "extendableDelegates" -]
- Added
tronsave_list_extendable_receivers - Added
tronsave_list_flash_unstake_orders - Added
tronsave_list_internal_transactions - Added
tronsave_list_notifications - Changed
tronsave_list_order_books6 fields changed- added
Input schema / properties / address / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / orderBook / anyOfAdded value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / orderBook / itemsRemoved value: -{ - "additionalProperties": false, - "properties": { - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "min", - "max", - "value" - ], - "type": "object" -} - removed
Output schema / properties / orderBook / typeRemoved value: -"array" - removed
Output schema / requiredRemoved value: -[ - "orderBook" -]
- Changed
tronsave_list_orders7 fields changed- changed
Input schema / properties / isOnlyMyOrder / descriptionPrevious value: -"When `true`, only orders whose `requester` is the wallet from the signature session; include `mcp-session-id`. Api-key-only sessions have no wallet address and cannot use this filter."New value: +"When `true`, only orders requested by the wallet of the current signature identity (signature login or `Signature` header). Api-key-only sessions cannot use this filter." - changed
Input schema / properties / status / descriptionPrevious value: -"Lifecycle filter mapped to GraphQL `isFulfilled`: `ACTIVE` → `UNFULFILLED` (not yet fulfilled), `COMPLETED` → `FULFILLED`."New value: +"Lifecycle filter: `ACTIVE` = still matching/open, `COMPLETED` = no longer matching. Omit for both." - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / orders / anyOfAdded value: +[ + { + "description": "Matching orders for this page; may be large—use pagination inputs to chunk.", + "items": { + "additionalProperties": {}, + "properties": { + "apy": { + "anyOf": [ + { + "description": "Annualized yield hint as returned by the API (see TronSave semantics).", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Annualized yield hint as returned by the API (see TronSave semantics)." + }, + "createdAt": { + "anyOf": [ + { + "description": "Order creation time (ISO-8601).", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Order creation time (ISO-8601)." + }, + "durationSec": { + "anyOf": [ + { + "description": "Delegation duration in seconds.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Delegation duration in seconds." + }, + "id": { + "anyOf": [ + { + "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools." + }, + "isMatching": { + "anyOf": [ + { + "description": "Whether this order matches the viewer/matching filter used in the query.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether this order matches the viewer/matching filter used in the query." + }, + "isOwner": { + "anyOf": [ + { + "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`." + }, + "receiver": { + "anyOf": [ + { + "additionalProperties": {}, + "description": "Receiver wallet and related party info for the delegation leg.", + "properties": { + "address": { + "anyOf": [ + { + "description": "TRON base58 address for this party.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "TRON base58 address for this party." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Receiver wallet and related party info for the delegation leg." + }, + "remainAmount": { + "anyOf": [ + { + "description": "Resource not yet consumed or remaining to fulfill.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Resource not yet consumed or remaining to fulfill." + }, + "requester": { + "anyOf": [ + { + "additionalProperties": {}, + "description": "Requester party when present.", + "properties": { + "address": { + "anyOf": [ + { + "description": "TRON base58 address for this party.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "TRON base58 address for this party." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Requester party when present." + }, + "resourceAmount": { + "anyOf": [ + { + "description": "Original resource amount on the order.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Original resource amount on the order." + }, + "resourceType": { + "anyOf": [ + { + "description": "`ENERGY` or `BANDWIDTH`.", + "enum": [ + "ENERGY", + "BANDWIDTH" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "`ENERGY` or `BANDWIDTH`." + }, + "typeOrder": { + "anyOf": [ + { + "description": "Market order flavor.", + "enum": [ + "NORMAL", + "FAST", + "EXTEND" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Market order flavor." + }, + "unitPrice": { + "anyOf": [ + { + "description": "Unit price in SUN.", + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Unit price in SUN." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / orders / itemsRemoved value: -{ - "additionalProperties": false, - "properties": { - "apy": { - "description": "Annualized yield hint as returned by the API (see TronSave semantics).", - "type": "number" - }, - "createdAt": { - "description": "Order creation time (ISO-8601).", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "durationSec": { - "description": "Delegation duration in seconds.", - "type": "number" - }, - "id": { - "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools.", - "type": "string" - }, - "isMatching": { - "description": "Whether this order matches the viewer/matching filter used in the query.", - "type": "boolean" - }, - "isOwner": { - "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`.", - "type": "boolean" - }, - "receiver": { - "additionalProperties": false, - "description": "Receiver wallet and related party info for the delegation leg.", - "properties": { - "address": { - "description": "TRON base58 address for this party.", - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - "remainAmount": { - "description": "Resource not yet consumed or remaining to fulfill.", - "type": "number" - }, - "requester": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "address": { - "description": "TRON base58 address for this party.", - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Requester party when present." - }, - "resourceAmount": { - "description": "Original resource amount on the order.", - "type": "number" - }, - "resourceType": { - "description": "`ENERGY` or `BANDWIDTH`.", - "enum": [ - "ENERGY", - "BANDWIDTH" - ], - "type": "string" - }, - "typeOrder": { - "description": "Market order flavor.", - "enum": [ - "NORMAL", - "FAST", - "EXTEND" - ], - "type": "string" - }, - "unitPrice": { - "description": "Unit price in SUN.", - "type": "number" - } - }, - "required": [ - "id", - "receiver", - "resourceType", - "resourceAmount", - "remainAmount", - "durationSec", - "isOwner", - "isMatching", - "apy", - "unitPrice", - "createdAt", - "typeOrder" - ], - "type": "object" -} - removed
Output schema / properties / orders / typeRemoved value: -"array" - removed
Output schema / requiredRemoved value: -[ - "orders" -]
- Changed
tronsave_login17 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / authModeAdded value: +{ + "anyOf": [ + { + "description": "Which credential type the session holds.", + "enum": [ + "signature", + "api-key" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which credential type the session holds." +} - added
Output schema / properties / expiresAt / anyOfAdded value: +[ + { + "description": "Session expiry (ISO-8601).", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / expiresAt / descriptionAdded value: +"Session expiry (ISO-8601)." - removed
Output schema / properties / expiresAt / formatRemoved value: -"date-time" - removed
Output schema / properties / expiresAt / patternRemoved value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" - removed
Output schema / properties / expiresAt / typeRemoved value: -"string" - added
Output schema / properties / hasInternalApiKeyAdded value: +{ + "anyOf": [ + { + "description": "Whether internal-account tools and `paymentMethod=internal` are usable in this session.", + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether internal-account tools and `paymentMethod=internal` are usable in this session." +} - added
Output schema / properties / sessionId / anyOfAdded value: +[ + { + "description": "The MCP session (`mcp-session-id`) the login is bound to. MCP clients resend it automatically; never pass it as a tool argument.", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / sessionId / descriptionPrevious value: -"Session id to pass as mcp-session-id in subsequent calls."New value: +"The MCP session (`mcp-session-id`) the login is bound to. MCP clients resend it automatically; never pass it as a tool argument." - removed
Output schema / properties / sessionId / typeRemoved value: -"string" - added
Output schema / properties / unlockedAdded value: +{ + "anyOf": [ + { + "description": "Human-readable summary of the tool groups now available.", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Human-readable summary of the tool groups now available." +} - added
Output schema / properties / walletAddress / anyOfAdded value: +[ + { + "description": "Wallet recovered from the signature (signature mode only).", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / walletAddress / descriptionAdded value: +"Wallet recovered from the signature (signature mode only)." - removed
Output schema / properties / walletAddress / typeRemoved value: -"string" - added
Output schema / properties / warningsAdded value: +{ + "anyOf": [ + { + "description": "Non-fatal issues (e.g. internal API key could not be loaded).", + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Non-fatal issues (e.g. internal API key could not be loaded)." +} - removed
Output schema / requiredRemoved value: -[ - "sessionId", - "expiresAt" -]
- Added
tronsave_logout - Added
tronsave_mark_notifications_read - Changed
tronsave_register_auto_sell14 fields changed- removed
Input schema / properties / paymentConfig / properties / paymentAddress / minLengthRemoved value: -1 - added
Input schema / properties / paymentConfig / properties / paymentAddress / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / data / anyOfAdded value: +[ + { + "description": "Opaque server-defined payload (tx id, setting id, or status text). Treat as identifier-or-message; rely on `message` for human routing.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / data / typeRemoved value: -"string" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message", - "data" -]
- Changed
tronsave_revoke_api_key12 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / data / anyOfAdded value: +[ + { + "description": "For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material).", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / data / typeRemoved value: -"string" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message", - "data" -]
- Changed
tronsave_sell_order_manual12 fields changed- added
Input schema / properties / paymentAddress / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - changed
Output schema / properties / delegatedId / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "On-chain delegate id created by the manual sell when the underlying transaction is confirmed; null until confirmation lands.", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message" -]
- Added
tronsave_suggest_create_order - Added
tronsave_update_auto_buy_setting - Changed
tronsave_update_auto_sell_setting14 fields changed- removed
Input schema / properties / paymentConfig / properties / paymentAddress / minLengthRemoved value: -1 - added
Input schema / properties / paymentConfig / properties / paymentAddress / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / data / anyOfAdded value: +[ + { + "description": "Opaque server-defined payload (tx id, setting id, or status text). Treat as identifier-or-message; rely on `message` for human routing.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / data / typeRemoved value: -"string" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message", - "data" -]
- Changed
tronsave_update_order13 fields changed- changed
Input schema / properties / newPrice / descriptionPrevious value: -"Optional replacement unit price in SUN."New value: +"Optional replacement unit price in SUN per resource unit." - added
Input schema / properties / newPrice / exclusiveMinimumAdded value: +0 - added
Input schema / properties / receiver / patternAdded value: +"^T[1-9A-HJ-NP-Za-km-z]{33}$" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / code / anyOfAdded value: +[ + { + "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / code / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / code / typeRemoved value: -"integer" - added
Output schema / properties / message / anyOfAdded value: +[ + { + "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / message / typeRemoved value: -"string" - added
Output schema / properties / success / anyOfAdded value: +[ + { + "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / success / typeRemoved value: -"boolean" - removed
Output schema / requiredRemoved value: -[ - "code", - "success", - "message" -]
- Added
tronsave_update_telegram_notify_setting
10 tool updates
- Changed
tronsave_get_internal_account5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - changed
Output schema / properties / balance / descriptionPrevious value: -"Account balance in SUN (string)."New value: +"Amount in SUN" - changed
Output schema / properties / depositAddress / descriptionPrevious value: -"TRON base58 deposit address for funding the internal balance."New value: +"TRON base58 deposit address, used for deposit TRX to TronSave internal account" - changed
Output schema / properties / representAddress / descriptionPrevious value: -"TRON base58 represent address (used as order requester)."New value: +"TRON base58 represent address" - added
Output schema / requiredAdded value: +[ + "id", + "balance", + "representAddress", + "depositAddress" +]
- Changed
tronsave_get_user_info1 field changed- changed
Output schema / properties / internalAccount / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", - "properties": { - "apiKey": { - "description": "Current internal API key associated with this account; treat as sensitive credential material.", - "type": "string" - }, - "balance": { - "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", - "type": "string" - }, - "depositAddress": { - "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", - "type": "string" - } - }, - "required": [ - "depositAddress", - "balance", - "apiKey" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", + "properties": { + "apiKey": { + "description": "Internal API key cached server-side from this account; treat as sensitive credential material.", + "type": "string" + }, + "balance": { + "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", + "type": "string" + }, + "depositAddress": { + "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", + "type": "string" + } + }, + "required": [ + "depositAddress", + "balance", + "apiKey" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
tronsave_internal_create_extend_request5 fields changed- changed
Input schema / properties / extendData / descriptionPrevious value: -"Rows copied from `extendData` returned by `tronsave_internal_extend_delegates`."New value: +"Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave's REST extend contract (delegator, isExtend, extraAmount, extendTo ms)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user's session, not from GraphQL `tronsave_list_extendable_delegates`." - changed
Input schema / properties / extendData / items / properties / extendTo / descriptionPrevious value: -"Target end time as Unix epoch milliseconds, matching internal.extend.delegates."New value: +"Target end time as Unix epoch milliseconds (UTC) for this delegator row in `POST /v2/extend-request`." - changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - changed
Output schema / properties / orderId / descriptionPrevious value: -"TronSave order ID (hex string) of the created/extension order."New value: +"TronSave order ID (hex string)" - added
Output schema / requiredAdded value: +[ + "orderId" +]
- Removed
tronsave_internal_extend_delegates - Removed
tronsave_internal_order_book - Removed
tronsave_internal_order_create - Removed
tronsave_internal_order_details - Removed
tronsave_internal_order_estimate - Removed
tronsave_internal_order_history - Changed
tronsave_list_orders1 field changed- changed
Input schema / properties / isOnlyMyOrder / descriptionPrevious value: -"When `true`, only orders whose `requester` is the wallet from the signature session; include `mcp-session-id`. Api-key-only sessions have no wallet address and cannot use this filter. When `false` or omitted, return all orders on the market (no requester filter)."New value: +"When `true`, only orders whose `requester` is the wallet from the signature session; include `mcp-session-id`. Api-key-only sessions have no wallet address and cannot use this filter."
10 tool updates
- Changed
tronsave_generate_api_key1 field changed- changed
Output schema / properties / data / descriptionPrevious value: -"For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely."New value: +"For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material)."
- Added
tronsave_get_internal_account - Added
tronsave_internal_create_extend_request - Added
tronsave_internal_extend_delegates - Added
tronsave_internal_order_book - Added
tronsave_internal_order_create - Added
tronsave_internal_order_details - Added
tronsave_internal_order_estimate - Added
tronsave_internal_order_history - Added
tronsave_revoke_api_key
1 tool update
- Changed
tronsave_list_orders1 field changed- changed
Input schema / properties / isOnlyMyOrder / descriptionPrevious value: -"When `true`, only orders whose `requester` is the wallet from the signature session; include `mcp-session-id`. Api-key-only sessions have no wallet address and cannot use this filter."New value: +"When `true`, only orders whose `requester` is the wallet from the signature session; include `mcp-session-id`. Api-key-only sessions have no wallet address and cannot use this filter. When `false` or omitted, return all orders on the market (no requester filter)."
3 tool updates
- Removed
tronsave_get_internal_account - Changed
tronsave_get_user_info1 field changed- changed
Output schema / properties / internalAccount / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", - "properties": { - "apiKey": { - "description": "Internal API key cached server-side from this account; treat as sensitive credential material.", - "type": "string" - }, - "balance": { - "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", - "type": "string" - }, - "depositAddress": { - "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", - "type": "string" - } - }, - "required": [ - "depositAddress", - "balance", - "apiKey" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", + "properties": { + "apiKey": { + "description": "Current internal API key associated with this account; treat as sensitive credential material.", + "type": "string" + }, + "balance": { + "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", + "type": "string" + }, + "depositAddress": { + "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", + "type": "string" + } + }, + "required": [ + "depositAddress", + "balance", + "apiKey" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Removed
tronsave_internal_create_extend_request
2 tool updates
- Changed
tronsave_generate_api_key1 field changed- changed
Output schema / properties / data / descriptionPrevious value: -"For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material)."New value: +"For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely."
- Removed
tronsave_revoke_api_key
1 tool update
- Changed
tronsave_create_order4 fields changed- changed
Input schema / properties / paymentMethod / descriptionPrevious value: -"Payment method for this order: `onchain` (wallet signed tx), `internal` (internal balance), or `pending` (deposit later flow)."New value: +"Payment method for this order: `onchain` (wallet signed tx) or `internal` (internal balance)." - changed
Input schema / properties / paymentMethod / enumPrevious value: -[ - "onchain", - "internal", - "pending" -]New value: +[ + "onchain", + "internal" +] - removed
Input schema / properties / paymentPendingRequesterRemoved value: -{ - "description": "Optional requester hint for `pending` payment flow when API expects it.", - "type": "string" -} - changed
Output schema / properties / data / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "depositAddress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Pending-payment deposit address — present only when `paymentMethod=pending`; null/absent for `onchain`/`internal`." - }, - "depositAmount": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Pending-payment amount as a decimal string in SUN (BigInt-safe). Pair with `depositAddress` for `pending` flows." - }, - "orderId": { - "description": "Newly created order id (`MObjectId`); pass to `tronsave_get_order` to inspect status.", - "type": "string" - } - }, - "required": [ - "orderId" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "orderId": { + "description": "Newly created order id (`MObjectId`); pass to `tronsave_get_order` to inspect status.", + "type": "string" + } + }, + "required": [ + "orderId" + ], + "type": "object" + }, + { + "type": "null" + } +]
15 tool updates
- Changed
tronsave_cancel_order3 fields changed- added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_create_order9 fields changed- added
Input schema / properties / paymentSignedTx / additionalPropertiesAdded value: +{} - changed
Input schema / properties / paymentSignedTx / descriptionPrevious value: -"Required when `paymentMethod=onchain`. Serialized signed TRON transaction object (GraphQL JSON). Produced only by wallet/client after user signs."New value: +"Required when `paymentMethod=onchain`. TronWeb-shaped signed TRON transaction (`{ txID, raw_data, raw_data_hex, signature[] }`). Must be produced client-side by the user's wallet; never fabricate or hand-edit." - added
Input schema / properties / paymentSignedTx / propertiesAdded value: +{ + "raw_data": { + "additionalProperties": {}, + "description": "Raw transaction body produced by TronWeb (`raw_data`).", + "properties": { + "contract": { + "description": "At least one TRON contract entry; shape varies by contract type.", + "items": {}, + "minItems": 1, + "type": "array" + }, + "expiration": { + "description": "Tx expiration (Unix epoch ms).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "ref_block_bytes": { + "description": "Reference block bytes (hex).", + "type": "string" + }, + "ref_block_hash": { + "description": "Reference block hash (hex).", + "type": "string" + }, + "timestamp": { + "description": "Tx timestamp (Unix epoch ms).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "contract", + "ref_block_bytes", + "ref_block_hash", + "expiration", + "timestamp" + ], + "type": "object" + }, + "raw_data_hex": { + "description": "Hex-encoded `raw_data` body.", + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "signature": { + "description": "Wallet signatures over `raw_data_hex`; usually a single hex string (130 chars for 65-byte secp256k1).", + "items": { + "minLength": 1, + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "txID": { + "description": "Transaction hash (64 hex chars, lowercase, no `0x` prefix).", + "maxLength": 64, + "minLength": 64, + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "visible": { + "description": "Whether addresses inside `raw_data.contract` are base58 (`true`) vs hex (`false`).", + "type": "boolean" + } +} - added
Input schema / properties / paymentSignedTx / requiredAdded value: +[ + "txID", + "raw_data", + "raw_data_hex", + "signature" +] - added
Input schema / properties / paymentSignedTx / typeAdded value: +"object" - added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - changed
Output schema / properties / data / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "depositAddress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "depositAmount": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "orderId": { - "type": "string" - } - }, - "required": [ - "orderId" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "depositAddress": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Pending-payment deposit address — present only when `paymentMethod=pending`; null/absent for `onchain`/`internal`." + }, + "depositAmount": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Pending-payment amount as a decimal string in SUN (BigInt-safe). Pair with `depositAddress` for `pending` flows." + }, + "orderId": { + "description": "Newly created order id (`MObjectId`); pass to `tronsave_get_order` to inspect status.", + "type": "string" + } + }, + "required": [ + "orderId" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_delete_auto_buy_setting3 fields changed- added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_generate_api_key4 fields changed- added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / data / descriptionAdded value: +"For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material)." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_get_sign_message3 fields changed- changed
Output schema / properties / message / descriptionPrevious value: -"The message to sign."New value: +"Hex-encoded nonce message to sign client-side with the user's TRON wallet. The signature must be produced over THIS exact message (case-sensitive)." - added
Output schema / properties / timestampAdded value: +{ + "description": "Unix epoch seconds corresponding to `message`. Pair it with the wallet signature in `<signature>_<timestamp>` form when calling `tronsave_login` (signature mode). This endpoint is a convenience helper; clients may provide their own timestamp payload as well.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +} - changed
Output schema / requiredPrevious value: -[ - "message" -]New value: +[ + "message", + "timestamp" +]
- Changed
tronsave_get_user_auto_setting10 fields changed- changed
Output schema / properties / bandwidth / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "isAcceptExtended": { - "type": "boolean" - }, - "isActive": { - "type": "boolean" - }, - "maintainUnDelegate": { - "type": "number" - }, - "maxDelegateDurationSec": { - "type": "number" - }, - "minDelegateAmount": { - "type": "number" - }, - "minDelegateDurationSec": { - "type": "number" - }, - "minPrice": { - "type": "number" - }, - "profitShare": { - "type": "number" - } - }, - "required": [ - "isActive", - "minPrice", - "minDelegateAmount", - "maintainUnDelegate", - "profitShare", - "minDelegateDurationSec", - "maxDelegateDurationSec", - "isAcceptExtended" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "isAcceptExtended": { + "description": "Whether incoming extend-style matches are accepted for this leg.", + "type": "boolean" + }, + "isActive": { + "description": "Whether auto-sell is currently active for this resource leg.", + "type": "boolean" + }, + "maintainUnDelegate": { + "description": "Buffer of undelegated resource the seller keeps reserved.", + "type": "number" + }, + "maxDelegateDurationSec": { + "description": "Upper bound of accepted delegation duration in seconds.", + "type": "number" + }, + "minDelegateAmount": { + "description": "Minimum per-delegation resource amount accepted by auto matches.", + "type": "number" + }, + "minDelegateDurationSec": { + "description": "Lower bound of accepted delegation duration in seconds.", + "type": "number" + }, + "minPrice": { + "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit).", + "type": "number" + }, + "profitShare": { + "description": "Profit share percentage for this resource leg.", + "type": "number" + } + }, + "required": [ + "isActive", + "minPrice", + "minDelegateAmount", + "maintainUnDelegate", + "profitShare", + "minDelegateDurationSec", + "maxDelegateDurationSec", + "isAcceptExtended" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / bandwidth / descriptionAdded value: +"Bandwidth auto-sell pool snapshot; null when bandwidth automation is disabled." - changed
Output schema / properties / energy / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "isAcceptExtended": { - "type": "boolean" - }, - "isActive": { - "type": "boolean" - }, - "maintainUnDelegate": { - "type": "number" - }, - "maxDelegateDurationSec": { - "type": "number" - }, - "minDelegateAmount": { - "type": "number" - }, - "minDelegateDurationSec": { - "type": "number" - }, - "minPrice": { - "type": "number" - }, - "profitShare": { - "type": "number" - } - }, - "required": [ - "isActive", - "minPrice", - "minDelegateAmount", - "maintainUnDelegate", - "profitShare", - "minDelegateDurationSec", - "maxDelegateDurationSec", - "isAcceptExtended" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "isAcceptExtended": { + "description": "Whether incoming extend-style matches are accepted for this leg.", + "type": "boolean" + }, + "isActive": { + "description": "Whether auto-sell is currently active for this resource leg.", + "type": "boolean" + }, + "maintainUnDelegate": { + "description": "Buffer of undelegated resource the seller keeps reserved.", + "type": "number" + }, + "maxDelegateDurationSec": { + "description": "Upper bound of accepted delegation duration in seconds.", + "type": "number" + }, + "minDelegateAmount": { + "description": "Minimum per-delegation resource amount accepted by auto matches.", + "type": "number" + }, + "minDelegateDurationSec": { + "description": "Lower bound of accepted delegation duration in seconds.", + "type": "number" + }, + "minPrice": { + "description": "Minimum unit price the seller accepts for auto matches (SUN per resource unit).", + "type": "number" + }, + "profitShare": { + "description": "Profit share percentage for this resource leg.", + "type": "number" + } + }, + "required": [ + "isActive", + "minPrice", + "minDelegateAmount", + "maintainUnDelegate", + "profitShare", + "minDelegateDurationSec", + "maxDelegateDurationSec", + "isAcceptExtended" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / energy / descriptionAdded value: +"Energy auto-sell pool snapshot; null when energy automation is disabled." - changed
Output schema / properties / permitOperations / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "operations": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "permissionName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Backend-assigned permission row id; null when not yet persisted." + }, + "operations": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Numeric operation codes enabled for this row; semantics defined by the backend." + }, + "permissionName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Human-readable permission name; meant for display rather than equality checks." + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Permission category as labelled by the backend (e.g. role/scope tag)." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Output schema / properties / permitOperations / descriptionAdded value: +"Permission rows enabled for this user; null/empty when no automation has been configured." - added
Output schema / properties / reclaimOnlyTronSave / descriptionAdded value: +"Reclaim flag — when `true`, only TronSave-managed delegations are reclaimed automatically." - added
Output schema / properties / suggestSell / descriptionAdded value: +"Whether suggest-sell UX hints are enabled." - added
Output schema / properties / vote / descriptionAdded value: +"Whether vote-related automation is enabled for the wallet." - added
Output schema / properties / withdrawVote / descriptionAdded value: +"Withdraw-vote configuration as a backend-defined string; semantics from TronSave docs."
- Changed
tronsave_get_user_info3 fields changed- removed
Output schema / properties / internalAccRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "description": "internal account information", - "properties": { - "apiKey": { - "description": "Internal API key", - "type": "string" - }, - "balance": { - "description": "Amount in SUN on the internal account", - "type": "string" - }, - "depositAddress": { - "description": "TRON base58 deposit address, used for deposit TRX to TronSave internal account", - "type": "string" - } - }, - "required": [ - "depositAddress", - "balance", - "apiKey" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / internalAccountAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Internal account information; null when the wallet has not provisioned a TronSave internal account yet.", + "properties": { + "apiKey": { + "description": "Internal API key cached server-side from this account; treat as sensitive credential material.", + "type": "string" + }, + "balance": { + "description": "Internal-account balance as a decimal string in SUN (BigInt-safe; TRX = SUN / 1e6).", + "type": "string" + }, + "depositAddress": { + "description": "TRON base58 deposit address used for depositing TRX to the TronSave internal balance.", + "type": "string" + } + }, + "required": [ + "depositAddress", + "balance", + "apiKey" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "caller", - "address", - "balance", - "info", - "internalAcc" -]New value: +[ + "caller", + "address", + "balance", + "info", + "internalAccount" +]
- Changed
tronsave_get_user_permissions5 fields changed- added
Output schema / properties / permitOperations / descriptionAdded value: +"Permission rows enabled for this user; defaults to `[]` when nothing is configured." - added
Output schema / properties / permitOperations / items / properties / id / descriptionAdded value: +"Backend-assigned permission row id; null when not yet persisted." - added
Output schema / properties / permitOperations / items / properties / operations / descriptionAdded value: +"Numeric operation codes enabled for this row; semantics defined by the backend." - added
Output schema / properties / permitOperations / items / properties / permissionName / descriptionAdded value: +"Human-readable permission name; meant for display rather than equality checks." - added
Output schema / properties / permitOperations / items / properties / type / descriptionAdded value: +"Permission category as labelled by the backend (e.g. role/scope tag)."
- Changed
tronsave_internal_create_extend_request1 field changed- changed
Input schema / properties / extendData / descriptionPrevious value: -"Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave’s REST extend contract (delegator, isExtend, extraAmount, extendTo ms)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user’s session, not from GraphQL `tronsave_list_extendable_delegates`."New value: +"Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave's REST extend contract (delegator, isExtend, extraAmount, extendTo ms)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user's session, not from GraphQL `tronsave_list_extendable_delegates`."
- Changed
tronsave_login1 field changed- changed
Input schema / properties / signature / descriptionPrevious value: -"Signature token in `signature_timestamp` format (timestamp is the signed message nonce). Provide EXACTLY ONE of `apiKey` or `signature`."New value: +"Signature token in `signature_timestamp` format (timestamp is the signed message). Provide EXACTLY ONE of `apiKey` or `signature`."
- Changed
tronsave_register_auto_sell8 fields changed- changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / end / descriptionPrevious value: -"Window end (server-defined unit, GraphQL Int)."New value: +"Window end as a non-negative GraphQL `Int` (same unit as `start`); end > start is enforced server-side, not by this schema." - changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / end / minimumPrevious value: --9007199254740991New value: +0 - changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / start / descriptionPrevious value: -"Window start (server-defined unit, GraphQL Int)."New value: +"Window start as a non-negative GraphQL `Int` (TronSave commonly uses minutes from midnight UTC, `0..1439`)." - changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / start / minimumPrevious value: --9007199254740991New value: +0 - added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / data / descriptionAdded value: +"Opaque server-defined payload (tx id, setting id, or status text). Treat as identifier-or-message; rely on `message` for human routing." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_revoke_api_key4 fields changed- added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / data / descriptionAdded value: +"For `generateApiKey`: the freshly issued internal API key — treat as SECRET, store securely. For `revokeApiKey`: server-defined confirmation string (no key material)." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_sell_order_manual9 fields changed- added
Input schema / properties / signedTx / additionalPropertiesAdded value: +{} - changed
Input schema / properties / signedTx / descriptionPrevious value: -"Required wallet-signed transaction payload (GraphQL JSON scalar). Must come from client-side signing; never fabricate."New value: +"Required wallet-signed transaction payload (TronWeb shape: `{ txID, raw_data, raw_data_hex, signature[] }`). Must come from client-side signing; never fabricate." - added
Input schema / properties / signedTx / propertiesAdded value: +{ + "raw_data": { + "additionalProperties": {}, + "description": "Raw transaction body produced by TronWeb (`raw_data`).", + "properties": { + "contract": { + "description": "At least one TRON contract entry; shape varies by contract type.", + "items": {}, + "minItems": 1, + "type": "array" + }, + "expiration": { + "description": "Tx expiration (Unix epoch ms).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "ref_block_bytes": { + "description": "Reference block bytes (hex).", + "type": "string" + }, + "ref_block_hash": { + "description": "Reference block hash (hex).", + "type": "string" + }, + "timestamp": { + "description": "Tx timestamp (Unix epoch ms).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "contract", + "ref_block_bytes", + "ref_block_hash", + "expiration", + "timestamp" + ], + "type": "object" + }, + "raw_data_hex": { + "description": "Hex-encoded `raw_data` body.", + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "signature": { + "description": "Wallet signatures over `raw_data_hex`; usually a single hex string (130 chars for 65-byte secp256k1).", + "items": { + "minLength": 1, + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "txID": { + "description": "Transaction hash (64 hex chars, lowercase, no `0x` prefix).", + "maxLength": 64, + "minLength": 64, + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "visible": { + "description": "Whether addresses inside `raw_data.contract` are base58 (`true`) vs hex (`false`).", + "type": "boolean" + } +} - added
Input schema / properties / signedTx / requiredAdded value: +[ + "txID", + "raw_data", + "raw_data_hex", + "signature" +] - added
Input schema / properties / signedTx / typeAdded value: +"object" - added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / delegatedId / descriptionAdded value: +"On-chain delegate id created by the manual sell when the underlying transaction is confirmed; null until confirmation lands." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_update_auto_sell_setting8 fields changed- changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / end / descriptionPrevious value: -"Window end (server-defined unit, GraphQL Int)."New value: +"Window end as a non-negative GraphQL `Int` (same unit as `start`); end > start is enforced server-side, not by this schema." - changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / end / minimumPrevious value: --9007199254740991New value: +0 - changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / start / descriptionPrevious value: -"Window start (server-defined unit, GraphQL Int)."New value: +"Window start as a non-negative GraphQL `Int` (TronSave commonly uses minutes from midnight UTC, `0..1439`)." - changed
Input schema / properties / paymentConfig / properties / paymentTimeWindow / properties / start / minimumPrevious value: --9007199254740991New value: +0 - added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / data / descriptionAdded value: +"Opaque server-defined payload (tx id, setting id, or status text). Treat as identifier-or-message; rely on `message` for human routing." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
- Changed
tronsave_update_order3 fields changed- added
Output schema / properties / code / descriptionAdded value: +"GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing." - added
Output schema / properties / message / descriptionAdded value: +"Human-readable status text. Populated even on success; localized error messages may appear here on failure." - added
Output schema / properties / success / descriptionAdded value: +"Whether the mutation succeeded at the backend level. Always check this before reading `data`."
1 tool update
- Changed
tronsave_login3 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / apiKeyAdded value: +{ + "description": "Raw API key for internal-tools login. Provide EXACTLY ONE of `apiKey` or `signature`.", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / signatureAdded value: +{ + "description": "Signature token in `signature_timestamp` format (timestamp is the signed message nonce). Provide EXACTLY ONE of `apiKey` or `signature`.", + "minLength": 1, + "type": "string" +}
3 tool updates
- Changed
tronsave_estimate_buy_resource3 fields changed- changed
Input schema / properties / buyResourceAmount / descriptionPrevious value: -"Amount of resource to buy."New value: +"Amount of resource to buy. Default 100000 for ENERGY and 1000 for BANDWIDTH" - changed
Input schema / properties / durationSec / descriptionPrevious value: -"Duration of the order in seconds. Default 3 days"New value: +"Duration of the order in seconds. Default 15 minutes" - removed
Input schema / requiredRemoved value: -[ - "buyResourceAmount" -]
- Added
tronsave_get_min_price - Changed
tronsave_list_orders14 fields changed- removed
Input schema / properties / fromIdRemoved value: -{ - "description": "Optional continuation cursor (order `id` / opaque string from prior browsing). Use with `limit` when the API supports stable cursor paging instead of only offset.", - "type": "string" -} - removed
Input schema / properties / isFulfilledRemoved value: -{ - "description": "Lifecycle filter: `FULFILLED` completed orders vs `UNFULFILLED` still open/active.", - "enum": [ - "FULFILLED", - "UNFULFILLED" - ], - "type": "string" -} - removed
Input schema / properties / isMatchingRemoved value: -{ - "description": "When true with `myAddress` set, narrow to orders where that address participates in matching context (provider/counterparty semantics per TronSave). Omit when not needed.", - "type": "boolean" -} - added
Input schema / properties / isOnlyMyOrderAdded value: +{ + "description": "When `true`, only orders whose `requester` is the wallet from the signature session; include `mcp-session-id`. Api-key-only sessions have no wallet address and cannot use this filter.", + "type": "boolean" +} - removed
Input schema / properties / isOwnerRemoved value: -{ - "description": "When true with `myAddress` set, return only orders where that address is the owner/requester side. Ignored or ineffective if `myAddress` is omitted (backend-dependent).", - "type": "boolean" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum rows to return in one call (hard cap 100). Prefer modest limits to avoid huge payloads; page with `offset` and/or `fromId`."New value: +"Maximum rows to return in one call. Prefer modest limits to avoid huge payloads; page with `offset`." - removed
Input schema / properties / limit / exclusiveMinimumRemoved value: -0 - changed
Input schema / properties / limit / maximumPrevious value: -100New value: +10 - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / myAddressRemoved value: -{ - "description": "TRON base58 viewer address for ownership/matching filters. Often required for meaningful results when using `isOwner` or `isMatching`.", - "type": "string" -} - changed
Input schema / properties / offset / maximumPrevious value: -9007199254740991New value: +200 - removed
Input schema / properties / receiversRemoved value: -{ - "description": "Optional allowlist of receiver TRON addresses; only orders whose receiver is in this list are returned.", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / sortFilterByRemoved value: -{ - "description": "Ordered list of `{ fieldType, arrangeType }` entries; sorts are applied in sequence (primary, then tie-breakers).", - "items": { - "properties": { - "arrangeType": { - "description": "`ASC` ascending or `DESC` descending for `fieldType`.", - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - }, - "fieldType": { - "description": "Which order field to sort by (e.g. `CREATE_AT`, `PRICE`, `RESOURCE_AMOUNT`).", - "enum": [ - "DURATION_SEC", - "CREATE_AT", - "FULFILLED", - "RESOURCE_AMOUNT", - "PRICE", - "PAYOUT", - "APY", - "UPDATE_AT", - "CANCEL_AT", - "REMAIN_AMOUNT", - "DEPOSIT_AMOUNT" - ], - "type": "string" - } - }, - "required": [ - "fieldType", - "arrangeType" - ], - "type": "object" - }, - "type": "array" -} - added
Input schema / properties / statusAdded value: +{ + "description": "Lifecycle filter mapped to GraphQL `isFulfilled`: `ACTIVE` → `UNFULFILLED` (not yet fulfilled), `COMPLETED` → `FULFILLED`.", + "enum": [ + "ACTIVE", + "COMPLETED" + ], + "type": "string" +}
1 tool update
- Changed
tronsave_get_user_info7 fields changed- added
Output schema / properties / address / descriptionAdded value: +"TRON base58 address" - added
Output schema / properties / balance / descriptionAdded value: +"Amount in SUN, onchain balance of the address" - removed
Output schema / properties / caller / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / caller / descriptionAdded value: +"TRON base58 address of the caller" - added
Output schema / properties / caller / typeAdded value: +"string" - changed
Output schema / properties / info / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "user information", - "properties": { - "contacts": { - "items": { - "additionalProperties": false, - "properties": { - "contactId": { - "type": "string" - }, - "isActive": { - "type": "boolean" - }, - "isVerify": { - "type": "boolean" - }, - "type": { - "enum": [ - "EMAIL", - "PHONE", - "TELEGRAM", - "WECHAT" - ], - "type": "string" - }, - "username": { - "type": "string" - } - }, - "required": [ - "type", - "contactId", - "isActive", - "isVerify", - "username" - ], - "type": "object" - }, - "type": "array" - }, - "createdBotCount": { - "type": "number" - }, - "pendingRefCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "remainRefBonus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "sponsor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "totalPendingRef": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "totalRef": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "totalRefBonus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "userRefCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "whitelistLevel": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "createdBotCount", - "contacts", - "whitelistLevel", - "userRefCode", - "sponsor", - "pendingRefCode", - "totalRef", - "totalPendingRef", - "totalRefBonus", - "remainRefBonus", - "rank" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "user information", + "properties": { + "contacts": { + "items": { + "additionalProperties": false, + "properties": { + "contactId": { + "description": "Contact id", + "type": "string" + }, + "isActive": { + "description": "Whether the contact is active", + "type": "boolean" + }, + "isVerify": { + "description": "Whether the contact is verified", + "type": "boolean" + }, + "type": { + "enum": [ + "EMAIL", + "PHONE", + "TELEGRAM", + "WECHAT" + ], + "type": "string" + }, + "username": { + "description": "Username", + "type": "string" + } + }, + "required": [ + "type", + "contactId", + "isActive", + "isVerify", + "username" + ], + "type": "object" + }, + "type": "array" + }, + "createdBotCount": { + "description": "Number of bots created by the user", + "type": "number" + }, + "pendingRefCode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Pending ref code" + }, + "rank": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Rank" + }, + "remainRefBonus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Remain ref bonus" + }, + "sponsor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Sponsor" + }, + "totalPendingRef": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total pending ref" + }, + "totalRef": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total ref" + }, + "totalRefBonus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Total ref bonus" + }, + "userRefCode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "User ref code" + }, + "whitelistLevel": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Whitelist level" + } + }, + "required": [ + "createdBotCount", + "contacts", + "whitelistLevel", + "userRefCode", + "sponsor", + "pendingRefCode", + "totalRef", + "totalPendingRef", + "totalRefBonus", + "remainRefBonus", + "rank" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / internalAcc / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "internal account information", - "properties": { - "apiKey": { - "description": "Internal API key", - "type": "string" - }, - "balance": { - "description": "Amount in SUN", - "type": "string" - }, - "depositAddress": { - "description": "TRON base58 deposit address, used for deposit TRX to TronSave internal account", - "type": "string" - } - }, - "required": [ - "depositAddress", - "balance", - "apiKey" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "internal account information", + "properties": { + "apiKey": { + "description": "Internal API key", + "type": "string" + }, + "balance": { + "description": "Amount in SUN on the internal account", + "type": "string" + }, + "depositAddress": { + "description": "TRON base58 deposit address, used for deposit TRX to TronSave internal account", + "type": "string" + } + }, + "required": [ + "depositAddress", + "balance", + "apiKey" + ], + "type": "object" + }, + { + "type": "null" + } +]
1 tool update
- Changed
tronsave_estimate_buy_resource2 fields changed- added
Output schema / properties / systemDepositAddressAdded value: +{ + "description": "System deposit address for onchain payment", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "unitPrice", - "durationSec", - "estimateTrx", - "availableResource" -]New value: +[ + "systemDepositAddress", + "unitPrice", + "durationSec", + "estimateTrx", + "availableResource" +]
6 tool updates
- Changed
tronsave_get_order1 field changed- changed
Output schema / properties / order / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "apy": { - "type": "number" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "durationSec": { - "type": "number" - }, - "id": { - "type": "string" - }, - "isMatching": { - "type": "boolean" - }, - "isOwner": { - "type": "boolean" - }, - "receiver": { - "additionalProperties": false, - "properties": { - "address": { - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - "remainAmount": { - "type": "number" - }, - "requester": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "address": { - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "resourceAmount": { - "type": "number" - }, - "resourceType": { - "enum": [ - "ENERGY", - "BANDWIDTH" - ], - "type": "string" - }, - "typeOrder": { - "enum": [ - "NORMAL", - "FAST", - "EXTEND" - ], - "type": "string" - }, - "unitPrice": { - "type": "number" - } - }, - "required": [ - "id", - "receiver", - "resourceType", - "resourceAmount", - "remainAmount", - "durationSec", - "isOwner", - "isMatching", - "apy", - "unitPrice", - "createdAt", - "typeOrder" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "apy": { + "description": "Annualized yield hint as returned by the API (see TronSave semantics).", + "type": "number" + }, + "createdAt": { + "description": "Order creation time (ISO-8601).", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "durationSec": { + "description": "Delegation duration in seconds.", + "type": "number" + }, + "id": { + "description": "Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools.", + "type": "string" + }, + "isMatching": { + "description": "Whether this order matches the viewer/matching filter used in the query.", + "type": "boolean" + }, + "isOwner": { + "description": "Whether the list query’s viewer context treats this row as owned by `myAddress`.", + "type": "boolean" + }, + "receiver": { + "additionalProperties": false, + "description": "Receiver wallet and related party info for the delegation leg.", + "properties": { + "address": { + "description": "TRON base58 address for this party.", + "type": "string" + } + }, + "required": [ + "address" + ], + "type": "object" + }, + "remainAmount": { + "description": "Resource not yet consumed or remaining to fulfill.", + "type": "number" + }, + "requester": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "address": { + "description": "TRON base58 address for this party.", + "type": "string" + } + }, + "required": [ + "address" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Requester party when present." + }, + "resourceAmount": { + "description": "Original resource amount on the order.", + "type": "number" + }, + "resourceType": { + "description": "`ENERGY` or `BANDWIDTH`.", + "enum": [ + "ENERGY", + "BANDWIDTH" + ], + "type": "string" + }, + "typeOrder": { + "description": "Market order flavor.", + "enum": [ + "NORMAL", + "FAST", + "EXTEND" + ], + "type": "string" + }, + "unitPrice": { + "description": "Unit price in SUN.", + "type": "number" + } + }, + "required": [ + "id", + "receiver", + "resourceType", + "resourceAmount", + "remainAmount", + "durationSec", + "isOwner", + "isMatching", + "apy", + "unitPrice", + "createdAt", + "typeOrder" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
tronsave_internal_create_extend_request2 fields changed- changed
Input schema / properties / extendData / descriptionPrevious value: -"Rows copied from data.extendData returned by internal.extend.delegates."New value: +"Delegator-level rows for `POST /v2/extend-request`. Each row matches TronSave’s REST extend contract (delegator, isExtend, extraAmount, extendTo ms)—typically taken from `extendData` returned by `POST /v2/get-extendable-delegates` when called with the user’s session, not from GraphQL `tronsave_list_extendable_delegates`." - changed
Input schema / properties / extendData / items / properties / extendTo / descriptionPrevious value: -"Target end time as Unix epoch milliseconds, matching internal.extend.delegates."New value: +"Target end time as Unix epoch milliseconds (UTC) for this delegator row in `POST /v2/extend-request`."
- Removed
tronsave_internal_list_extendable_delegates - Changed
tronsave_list_extendable_delegates10 fields changed- changed
Input schema / properties / receiver / descriptionPrevious value: -"Target receiver wallet for which extendable delegates are evaluated."New value: +"TRON base58 address (typically starts with `T`) that currently receives or will receive the delegated resource. This is the primary filter: the response describes delegates relevant to extending that account's delegation." - changed
Input schema / properties / requester / descriptionPrevious value: -"Optional requester wallet context used by backend matching checks."New value: +"Optional TRON base58 address of the viewing/requesting party. When an MCP session is active, the server may still derive identity from auth headers; use this when the API expects an explicit requester string distinct from the receiver." - changed
Input schema / properties / resourceType / descriptionPrevious value: -"Resource leg to evaluate (`ENERGY` or `BANDWIDTH`)."New value: +"Which resource market leg to query: `ENERGY` for contract execution headroom, `BANDWIDTH` for transaction bandwidth. Must match how you plan to extend or buy." - changed
Input schema / properties / suggestData / descriptionPrevious value: -"Optional suggestion payload to score/estimate extend-and-buy scenarios."New value: +"Optional nested scenario for extend-and-buy suggestion scoring. If omitted, the query returns delegate rows without that hypothetical. If provided, supply all four fields together; partial objects are invalid for typical GraphQL input shapes." - changed
Input schema / properties / suggestData / properties / extendAmount / descriptionPrevious value: -"Resource amount to extend from existing delegates."New value: +"Hypothetical amount of existing delegation to extend (resource units matching `resourceType`)." - changed
Input schema / properties / suggestData / properties / extendTo / descriptionPrevious value: -"Target extension timestamp/duration marker expected by backend suggest engine."New value: +"Target end time for the extended delegation window, as Unix epoch milliseconds (UTC); align with TronSave REST extend flows when comparing suggest windows." - changed
Input schema / properties / suggestData / properties / extraBuyAmount / descriptionPrevious value: -"Extra resource amount to buy in addition to extension."New value: +"Hypothetical extra ENERGY or BANDWIDTH units to buy beyond simple extension; units match `resourceType`, not SUN." - changed
Input schema / properties / suggestData / properties / maxPrice / descriptionPrevious value: -"Maximum acceptable unit price cap for suggestion scoring."New value: +"Maximum unit price in SUN the user is willing to pay for the suggested extend/buy path; used for server-side scoring, not a live order placement by itself." - changed
Output schema / properties / extendableDelegates / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "data": { - "anyOf": [ - { - "items": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "availableExtendAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "availableResource": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "extendPrice": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "isExtendable": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "minTimeExtendTo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "reason": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "reclaimTime": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "maxExtendAmount": { - "type": "number" - }, - "minExtendRequired": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "overBuyAmount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "overBuyAmountAvailable": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "overBuyAmountMaxAvailable": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "overBuyPrice": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "totalAvailableExtraBuyAmount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "maxExtendAmount" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "anyOf": [ + { + "items": { + "additionalProperties": false, + "properties": { + "amount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Delegate amount associated with this row (resource units)." + }, + "availableExtendAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Earliest time at which extension becomes available for this row." + }, + "availableResource": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Resource still available from this delegate for matching/extension." + }, + "extendPrice": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Indicative unit price or price component for extending this row (SUN unless API documents otherwise)." + }, + "isExtendable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether this delegate entry can be extended under current rules." + }, + "minTimeExtendTo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum end time boundary required before extension is allowed." + }, + "reason": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Human-readable reasons when extension is blocked or conditional." + }, + "reclaimTime": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Timestamp related to reclaim/unlock timing when relevant." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Per-delegator or per-offer rows backing the aggregates above; may be empty when nothing is extendable." + }, + "maxExtendAmount": { + "description": "Largest extendable resource amount (units) aggregated for this query.", + "type": "number" + }, + "minExtendRequired": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minimum resource amount the market requires to treat an extension as valid, if applicable." + }, + "overBuyAmount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Amount considered in excess of a simple extend-only path when `suggestData` implies extra buy." + }, + "overBuyAmountAvailable": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How much of the over-buy amount is currently matchable." + }, + "overBuyAmountMaxAvailable": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Upper cap for over-buy availability under current book conditions." + }, + "overBuyPrice": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Price facet associated with the over-buy leg (SUN-related aggregate; exact semantics from TronSave API)." + }, + "totalAvailableExtraBuyAmount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Capacity hint for additional buy amount on top of extension under current market state." + } + }, + "required": [ + "maxExtendAmount" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / extendableDelegates / descriptionAdded value: +"Null when the market has no payload or GraphQL returned no branch; check tool-level errors for hard failures."
- Changed
tronsave_list_orders29 fields changed- changed
Input schema / properties / fromId / descriptionPrevious value: -"Cursor-like starting id for incremental pagination streams."New value: +"Optional continuation cursor (order `id` / opaque string from prior browsing). Use with `limit` when the API supports stable cursor paging instead of only offset." - changed
Input schema / properties / isFulfilled / descriptionPrevious value: -"Filter by order lifecycle state: `FULFILLED` or `UNFULFILLED`."New value: +"Lifecycle filter: `FULFILLED` completed orders vs `UNFULFILLED` still open/active." - changed
Input schema / properties / isMatching / descriptionPrevious value: -"Filter by matching capability/status according to backend semantics."New value: +"When true with `myAddress` set, narrow to orders where that address participates in matching context (provider/counterparty semantics per TronSave). Omit when not needed." - changed
Input schema / properties / isOwner / descriptionPrevious value: -"If true, keep only orders where `myAddress` is owner/requester."New value: +"When true with `myAddress` set, return only orders where that address is the owner/requester side. Ignored or ineffective if `myAddress` is omitted (backend-dependent)." - changed
Input schema / properties / limit / descriptionPrevious value: -"Page size (max 100). Use small values for iterative browsing."New value: +"Maximum rows to return in one call (hard cap 100). Prefer modest limits to avoid huge payloads; page with `offset` and/or `fromId`." - changed
Input schema / properties / myAddress / descriptionPrevious value: -"Viewer/anchor wallet address used by backend ownership/matching context."New value: +"TRON base58 viewer address for ownership/matching filters. Often required for meaningful results when using `isOwner` or `isMatching`." - changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based pagination offset (skip N rows)."New value: +"Zero-based row offset for page N (skip first `offset` matches). Omit when starting from the first page." - changed
Input schema / properties / receivers / descriptionPrevious value: -"Optional receiver-address allowlist."New value: +"Optional allowlist of receiver TRON addresses; only orders whose receiver is in this list are returned." - added
Input schema / properties / receivers / items / minLengthAdded value: +1 - changed
Input schema / properties / resourceType / descriptionPrevious value: -"Filter by resource type (`ENERGY` or `BANDWIDTH`)."New value: +"Restrict to `ENERGY` or `BANDWIDTH` orders; omit for both." - changed
Input schema / properties / sortFilterBy / descriptionPrevious value: -"Optional sort list, applied in order."New value: +"Ordered list of `{ fieldType, arrangeType }` entries; sorts are applied in sequence (primary, then tie-breakers)." - added
Input schema / properties / sortFilterBy / items / properties / arrangeType / descriptionAdded value: +"`ASC` ascending or `DESC` descending for `fieldType`." - added
Input schema / properties / sortFilterBy / items / properties / fieldType / descriptionAdded value: +"Which order field to sort by (e.g. `CREATE_AT`, `PRICE`, `RESOURCE_AMOUNT`)." - added
Output schema / properties / orders / descriptionAdded value: +"Matching orders for this page; may be large—use pagination inputs to chunk." - added
Output schema / properties / orders / items / properties / apy / descriptionAdded value: +"Annualized yield hint as returned by the API (see TronSave semantics)." - added
Output schema / properties / orders / items / properties / createdAt / descriptionAdded value: +"Order creation time (ISO-8601)." - added
Output schema / properties / orders / items / properties / durationSec / descriptionAdded value: +"Delegation duration in seconds." - added
Output schema / properties / orders / items / properties / id / descriptionAdded value: +"Order id (`MObjectId`); use with `tronsave_get_order` or mutate tools." - added
Output schema / properties / orders / items / properties / isMatching / descriptionAdded value: +"Whether this order matches the viewer/matching filter used in the query." - added
Output schema / properties / orders / items / properties / isOwner / descriptionAdded value: +"Whether the list query’s viewer context treats this row as owned by `myAddress`." - added
Output schema / properties / orders / items / properties / receiver / descriptionAdded value: +"Receiver wallet and related party info for the delegation leg." - added
Output schema / properties / orders / items / properties / receiver / properties / address / descriptionAdded value: +"TRON base58 address for this party." - added
Output schema / properties / orders / items / properties / remainAmount / descriptionAdded value: +"Resource not yet consumed or remaining to fulfill." - changed
Output schema / properties / orders / items / properties / requester / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "address": { - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "address": { + "description": "TRON base58 address for this party.", + "type": "string" + } + }, + "required": [ + "address" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / orders / items / properties / requester / descriptionAdded value: +"Requester party when present." - added
Output schema / properties / orders / items / properties / resourceAmount / descriptionAdded value: +"Original resource amount on the order." - added
Output schema / properties / orders / items / properties / resourceType / descriptionAdded value: +"`ENERGY` or `BANDWIDTH`." - added
Output schema / properties / orders / items / properties / typeOrder / descriptionAdded value: +"Market order flavor." - added
Output schema / properties / orders / items / properties / unitPrice / descriptionAdded value: +"Unit price in SUN."
- Changed
tronsave_login3 fields changed- removed
Output schema / properties / apiKeyRemoved value: -{ - "description": "Resolved internal API key cached in this session (if available).", - "type": "string" -} - removed
Output schema / properties / sessionId / formatRemoved value: -"uuid" - removed
Output schema / properties / sessionId / patternRemoved value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
11 tool updates
- Changed
tronsave_cancel_order1 field changed- changed
Input schema / properties / orderId / descriptionPrevious value: -"Order id (`MObjectId`) to cancel."New value: +"Target order id (`MObjectId`) to cancel. Must be an active order owned/authorized by the current session; already-fulfilled or already-cancelled orders are expected to fail."
- Changed
tronsave_create_order1 field changed- changed
Input schema / properties / orderUnitPrice / descriptionPrevious value: -"Unit price in TRX per TronSave API semantics. Prefer aligning with `minResourcePrice` or `buyResourcePrice` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration."New value: +"Unit price in SUN. Prefer aligning with `minResourcePrice` or `buyResourcePrice` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration."
- Changed
tronsave_estimate_buy_resource1 field changed- changed
Input schema / properties / unitPrice / descriptionPrevious value: -"Unit price of the resource to buy."New value: +"Unit price in SUN."
- Changed
tronsave_get_order1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Order id (`MObjectId`)."New value: +"Target order id (`MObjectId`) to inspect. Use this to confirm current status/price before update, sell, or cancel actions."
- Removed
tronsave_get_user_seller_energy_stats - Changed
tronsave_list_extendable_delegates8 fields changed- added
Input schema / properties / receiver / descriptionAdded value: +"Target receiver wallet for which extendable delegates are evaluated." - added
Input schema / properties / requester / descriptionAdded value: +"Optional requester wallet context used by backend matching checks." - added
Input schema / properties / resourceType / descriptionAdded value: +"Resource leg to evaluate (`ENERGY` or `BANDWIDTH`)." - added
Input schema / properties / suggestData / descriptionAdded value: +"Optional suggestion payload to score/estimate extend-and-buy scenarios." - added
Input schema / properties / suggestData / properties / extendAmount / descriptionAdded value: +"Resource amount to extend from existing delegates." - added
Input schema / properties / suggestData / properties / extendTo / descriptionAdded value: +"Target extension timestamp/duration marker expected by backend suggest engine." - added
Input schema / properties / suggestData / properties / extraBuyAmount / descriptionAdded value: +"Extra resource amount to buy in addition to extension." - added
Input schema / properties / suggestData / properties / maxPrice / descriptionAdded value: +"Maximum acceptable unit price cap for suggestion scoring."
- Changed
tronsave_list_order_books4 fields changed- changed
Input schema / properties / address / descriptionPrevious value: -"Optional viewer/requester address."New value: +"Optional viewer/requester wallet context." - added
Input schema / properties / durationSec / descriptionAdded value: +"Optional delegation duration filter in seconds." - added
Input schema / properties / minDelegateAmount / descriptionAdded value: +"Optional minimum delegate amount floor for bucket filtering." - added
Input schema / properties / resourceType / descriptionAdded value: +"Order-book side to query (`ENERGY` or `BANDWIDTH`)."
- Changed
tronsave_list_orders10 fields changed- added
Input schema / properties / fromId / descriptionAdded value: +"Cursor-like starting id for incremental pagination streams." - added
Input schema / properties / isFulfilled / descriptionAdded value: +"Filter by order lifecycle state: `FULFILLED` or `UNFULFILLED`." - added
Input schema / properties / isMatching / descriptionAdded value: +"Filter by matching capability/status according to backend semantics." - added
Input schema / properties / isOwner / descriptionAdded value: +"If true, keep only orders where `myAddress` is owner/requester." - added
Input schema / properties / limit / descriptionAdded value: +"Page size (max 100). Use small values for iterative browsing." - added
Input schema / properties / myAddress / descriptionAdded value: +"Viewer/anchor wallet address used by backend ownership/matching context." - added
Input schema / properties / offset / descriptionAdded value: +"Zero-based pagination offset (skip N rows)." - added
Input schema / properties / receivers / descriptionAdded value: +"Optional receiver-address allowlist." - added
Input schema / properties / resourceType / descriptionAdded value: +"Filter by resource type (`ENERGY` or `BANDWIDTH`)." - added
Input schema / properties / sortFilterBy / descriptionAdded value: +"Optional sort list, applied in order."
- Changed
tronsave_login3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / apiKeyRemoved value: -{ - "description": "Raw API key for internal tools login.", - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / signatureRemoved value: -{ - "description": "Optional signature token in `signature_timestamp` format. Timestamp is the signed message nonce.", - "minLength": 1, - "type": "string" -}
- Changed
tronsave_sell_order_manual3 fields changed- changed
Input schema / properties / orderId / descriptionPrevious value: -"Order id (`MObjectId`)."New value: +"Target order id (`MObjectId`) to manually fulfill. Should be an order eligible for seller-side manual execution." - changed
Input schema / properties / paymentAddress / descriptionPrevious value: -"Optional payout/payment address."New value: +"Optional payout/payment address override when settlement flow requires it." - changed
Input schema / properties / signedTx / descriptionPrevious value: -"Signed transaction payload (GraphQL JSON scalar)."New value: +"Required wallet-signed transaction payload (GraphQL JSON scalar). Must come from client-side signing; never fabricate."
- Changed
tronsave_update_order3 fields changed- changed
Input schema / properties / newPrice / descriptionPrevious value: -"Optional new unit price."New value: +"Optional replacement unit price in SUN." - changed
Input schema / properties / orderId / descriptionPrevious value: -"Order id (`MObjectId`) to update."New value: +"Target order id (`MObjectId`) to update. Order must still be open and editable." - changed
Input schema / properties / receiver / descriptionPrevious value: -"Optional new receiver address."New value: +"Optional replacement receiver TRON address."
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.