Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,534Letters: 13Defects: 1,322counted 4 min ago
teppi

Server definition

Hash
sha256:b94e24560e7c5978bab2b85b2d66bd176880aa6d1876319c07d8447401ba59f3
What it is
What a remote MCP server returned when asked what it offers: 29 tools

The blob, as servednamed by its sha256

{ "instructions": "TronSave MCP — buy/sell/extend TRON resources (ENERGY, BANDWIDTH) on the TronSave market.\n\nNetworks (by endpoint): POST /mcp = mainnet, POST /testnet/mcp = testnet.\n\nAuth: call `tronsave_login` first, then send the returned `sessionId` as the `mcp-session-id` header on every later request. Two modes — (1) wallet SIGNATURE (preferred; required for platform tools): get a message via `tronsave_get_sign_message`, sign it client-side, submit `<signature>_<timestamp>`; (2) API KEY (`apiKey` param). Never send private keys to the server — signing is always client-side.\n\nTwo tool families:\n- Platform (`tronsave_*`, GraphQL market): public discovery (list/estimate/order book/min price) plus signature-session mutations (create/cancel/update order, auto-sell, API keys).\n- Internal (`tronsave_internal_*` + `tronsave_get_internal_account`, REST, api-key account): estimate, create order, history, details, order book, extend — scoped to your deposited internal balance.\n\nUnits: all prices are in SUN (1 TRX = 1,000,000 SUN). Durations are in seconds.\n\nFRESHNESS: market prices/availability change roughly every 3 seconds (one TRON block). Re-run an estimate/order-book read IMMEDIATELY before creating or updating an order; never reuse a quote more than a few seconds old.", "tools": [ { "description": "Cancel an open order by `orderId`. Returns the cancelled order payload after the status flip. 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 signature session and `mcp-session-id`. Verify state with `tronsave_get_order` first; prefer `tronsave_update_order` when only price/receiver should change.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "orderId": { "description": "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.", "minLength": 1, "type": "string" } }, "required": [ "orderId" ], "type": "object" }, "name": "tronsave_cancel_order", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message" ], "type": "object" } }, { "description": "Create a new buy order on the TronSave market. Key inputs: `orderResourceType` (ENERGY|BANDWIDTH), `orderReceiver` (TRON base58), `orderUnitPrice` in SUN (NOT TRX), `orderDurationSec`, `orderResourceAmount`, and `paymentMethod`: (1) `onchain` — requires a signed payment tx in `paymentSignedTx`; (2) `internal` — deducts from internal balance. Side effect: creates a live order matchable by the market. Requires a signature session and `mcp-session-id`. Always derive `orderUnitPrice` and `paymentPaymentAmount` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration to avoid reverts. FRESHNESS: re-quote immediately before submitting — estimates older than a few seconds (one TRON block ≈ 3s) may be stale and cause the order to revert or fill at the wrong price.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "orderDurationSec": { "description": "Delegation duration in seconds. Must match the `durationSec` used in `tronsave_estimate_buy_resource`.", "exclusiveMinimum": 0, "type": "number" }, "orderReceiver": { "description": "TRON base58 address (starts with T) that receives delegated resource. Same as `receiver` passed to `tronsave_estimate_buy_resource`.", "minLength": 1, "type": "string" }, "orderResourceAmount": { "description": "Amount of ENERGY or BANDWIDTH units to purchase. Same as `buyResourceAmount` in estimate when applicable.", "exclusiveMinimum": 0, "type": "number" }, "orderResourceType": { "description": "Resource to buy: ENERGY (smart contracts) or BANDWIDTH (transactions). Must match `tronsave_estimate_buy_resource`.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "orderUnitPrice": { "description": "Unit price in SUN. Prefer aligning with `minResourcePrice` or `buyResourcePrice` from the latest `tronsave_estimate_buy_resource` for the same receiver, amount, and duration.", "exclusiveMinimum": 0, "type": "number" }, "paymentMethod": { "description": "Payment method for this order: `onchain` (wallet signed tx) or `internal` (internal balance).", "enum": [ "onchain", "internal" ], "type": "string" }, "paymentPaymentAmount": { "description": "Payment amount in SUN. Prefer deriving from `tronsave_estimate_buy_resource`; if converting to TRX, divide SUN by `1e6`.", "minimum": 0, "type": "number" }, "paymentSignedTx": { "additionalProperties": {}, "description": "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.", "properties": { "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" } }, "required": [ "txID", "raw_data", "raw_data_hex", "signature" ], "type": "object" } }, "required": [ "orderResourceType", "orderReceiver", "orderUnitPrice", "orderDurationSec", "orderResourceAmount", "paymentMethod", "paymentPaymentAmount" ], "type": "object" }, "name": "tronsave_create_order", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "anyOf": [ { "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" } ] }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message" ], "type": "object" } }, { "description": "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 signature session and `mcp-session-id`. Use `tronsave_get_user_auto_setting` to list current rules first; prefer disabling/updating instead when reversibility is desired.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "Auto-buy setting id (`MObjectId`) to delete.", "minLength": 1, "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "tronsave_delete_auto_buy_setting", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message" ], "type": "object" } }, { "description": "Quote price and availability for buying ENERGY or BANDWIDTH for a receiver address before placing an order. Returns estimated `unitPrice` (SUN per resource unit), `paymentAmount`, and availability fields used to populate `tronsave_create_order` inputs (`orderUnitPrice`, `paymentPaymentAmount`). Read-only and safe to call repeatedly; no session is required, but backend rate limits apply. FRESHNESS: this is live market data — `unitPrice`/availability can change roughly every 3 seconds (one TRON block). Re-run this estimate immediately before `tronsave_create_order` and never reuse a quote more than a few seconds old. For order-book depth use `tronsave_list_order_books`; for the minimum unit price only use `tronsave_get_min_price`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "allowPartialFill": { "description": "Allow partial fill of the order.", "type": "boolean" }, "buyResourceAmount": { "description": "Amount of resource to buy. Default 100000 for ENERGY and 1000 for BANDWIDTH", "type": "number" }, "durationSec": { "description": "Duration of the order in seconds. Default 15 minutes", "type": "number" }, "minResourceDelegateRequiredAmount": { "description": "Minimum amount of resource to delegate.", "type": "number" }, "receiver": { "description": "receiver address.", "type": "string" }, "resourceType": { "default": "ENERGY", "description": "Resource type to buy. Default ENERGY", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "unitPrice": { "description": "Unit price in SUN.", "type": "number" } }, "type": "object" }, "name": "tronsave_estimate_buy_resource", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "availableResource": { "description": "Available resource amount", "type": "number" }, "durationSec": { "description": "Delegated duration in seconds", "type": "number" }, "estimateTrx": { "description": "Estimated TRX cost in SUN", "type": "number" }, "systemDepositAddress": { "description": "System deposit address for onchain payment", "type": "string" }, "unitPrice": { "description": "Unit price in SUN", "type": "number" } }, "required": [ "systemDepositAddress", "unitPrice", "durationSec", "estimateTrx", "availableResource" ], "type": "object" } }, { "description": "Generate a new internal API key credential for the current user. Returns `data` containing the issued key — store it securely and pass it to `tronsave_login` (`apiKey` mode) for internal-tool access. Side effect: issues secret material; not idempotent — each call mints a fresh key. If a previous key existed, treat it as rotated and stop using the old key once the new one is wired up. Requires a signature session and `mcp-session-id`. Sensitive output — never log raw keys; unauthorized sessions or policy checks may reject issuance.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_generate_api_key", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "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" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message", "data" ], "type": "object" } }, { "description": "Fetches the specific deposit address for the TronSave internal account. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. 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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "amountTrx": { "description": "Amount of TRX to deposit", "minimum": 10, "type": "number" } }, "required": [ "amountTrx" ], "type": "object" }, "name": "tronsave_get_deposit_address", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "amountTrx": { "description": "Amount of TRX to deposit", "type": "number" }, "depositAddress": { "description": "TRON base58 deposit address, used for deposit TRX to TronSave internal account", "type": "string" } }, "required": [ "depositAddress", "amountTrx" ], "type": "object" } }, { "description": "Retrieve the TronSave internal account profile for the current session: represent address, deposit address, and balance (SUN). Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Use when the user needs their linked address, deposit address, or internal balance. This is the api-key internal account, not the on-chain wallet. Read-only; does not submit orders or change chain state. FRESHNESS: balance reflects live state and can change within seconds after deposits/orders.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_get_internal_account", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "balance": { "description": "Account balance in SUN (string).", "type": "string" }, "depositAddress": { "description": "TRON base58 deposit address for funding the internal balance.", "type": "string" }, "id": { "type": "string" }, "representAddress": { "description": "TRON base58 represent address (used as order requester).", "type": "string" } }, "type": "object" } }, { "description": "Quote the minimum unit price for a buy. Returns `{ minPrice }` (SUN per resource unit) from GraphQL `market.estimateMinPrice` for the given `resourceType`, `buyAmount`, and `durationSec`. Optional `address` scopes context when the API supports it. No login required; an optional session forwards auth like `tronsave_list_order_books`. Read-only and idempotent. FRESHNESS: live market data — `minPrice` can change roughly every 3 seconds; re-fetch right before placing an order and do not reuse a stale value. Pair with `tronsave_estimate_buy_resource` for full buy quotes and `tronsave_list_order_books` for depth buckets.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "address": { "description": "Optional TRON base58 address (`TronAddress`). When omitted, the server uses anonymous/global market context.", "type": "string" }, "buyAmount": { "description": "Resource amount to price (same units as order book / delegate amounts for that resource type). Default 100000 for ENERGY and 1000 for BANDWIDTH", "exclusiveMinimum": 0, "type": "number" }, "durationSec": { "default": 900, "description": "Delegation window in seconds; must match the duration you plan to use on a real order for comparable quotes. Default 15 minutes", "exclusiveMinimum": 0, "type": "number" }, "resourceType": { "default": "ENERGY", "description": "Market leg: `ENERGY` or `BANDWIDTH`. Default ENERGY", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "type": "object" }, "name": "tronsave_get_min_price", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "minPrice": { "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" } }, "required": [ "minPrice" ], "type": "object" } }, { "description": "Read one order by `id` and return its full snapshot for NORMAL, FAST, or EXTEND order types. 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. FRESHNESS: order state can change within seconds as the market matches — re-read immediately before each mutation instead of reusing an earlier snapshot. Requires a signature session and `mcp-session-id`. Read-only and idempotent.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "Target order id (`MObjectId`) to inspect. Use this to confirm current status/price before update, sell, or cancel actions.", "minLength": 1, "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "tronsave_get_order", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "order": { "anyOf": [ { "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" } ] } }, "required": [ "order" ], "type": "object" } }, { "description": "Issue a wallet-signable timestamp message helper for signature login. Returns `{ message, timestamp }`: sign `message` exactly client-side, then submit `<signature>_<timestamp>` to `tronsave_login` (signature mode). Optional helper only — clients may also sign their own timestamp payload directly as long as it matches the `signature_timestamp` format expected by `tronsave_login`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_get_sign_message", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "message": { "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" }, "timestamp": { "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" } }, "required": [ "message", "timestamp" ], "type": "object" } }, { "description": "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 signature session and `mcp-session-id`. Read-only and idempotent.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_get_user_auto_setting", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bandwidth": { "anyOf": [ { "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" } ], "description": "Bandwidth auto-sell pool snapshot; null when bandwidth automation is disabled." }, "energy": { "anyOf": [ { "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" } ], "description": "Energy auto-sell pool snapshot; null when energy automation is disabled." }, "permitOperations": { "anyOf": [ { "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" } ], "description": "Permission rows enabled for this user; null/empty when no automation has been configured." }, "reclaimOnlyTronSave": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Reclaim flag — when `true`, only TronSave-managed delegations are reclaimed automatically." }, "suggestSell": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Whether suggest-sell UX hints are enabled." }, "vote": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Whether vote-related automation is enabled for the wallet." }, "withdrawVote": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Withdraw-vote configuration as a backend-defined string; semantics from TronSave docs." } }, "type": "object" } }, { "description": "Read the current authenticated user's profile and linked TronSave internal account. 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. Requires a signature session from `tronsave_login` and `mcp-session-id`. 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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_get_user_info", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "address": { "description": "TRON base58 address", "type": "string" }, "balance": { "description": "Amount in SUN, onchain balance of the address", "type": "string" }, "caller": { "description": "TRON base58 address of the caller", "type": "string" }, "info": { "anyOf": [ { "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" } ] }, "internalAccount": { "anyOf": [ { "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" } ] } }, "required": [ "caller", "address", "balance", "info", "internalAccount" ], "type": "object" } }, { "description": "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 signature session and `mcp-session-id`. Read-only and idempotent.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_get_user_permissions", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "permitOperations": { "default": [], "description": "Permission rows enabled for this user; defaults to `[]` when nothing is configured.", "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" } }, "required": [ "permitOperations" ], "type": "object" } }, { "description": "Submit an extension request for existing delegated resources on TronSave, paid from the internal account. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Side effect: SPENDS internal TRX and creates an extension order; not idempotent. Use as STEP 2 after `tronsave_internal_extend_delegates` — pass its `extendData` rows unchanged. Returns `{ orderId }` for the new extension order.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "extendData": { "description": "Rows copied from `extendData` returned by `tronsave_internal_extend_delegates`.", "items": { "properties": { "delegator": { "description": "TRON base58 delegator address.", "minLength": 1, "type": "string" }, "extendTo": { "description": "Target end time as Unix epoch milliseconds, matching internal.extend.delegates.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "extraAmount": { "description": "Additional resource amount to add (resource units).", "minimum": 0, "type": "number" }, "isExtend": { "description": "Whether to extend this delegation row.", "type": "boolean" } }, "required": [ "delegator", "isExtend", "extraAmount", "extendTo" ], "type": "object" }, "minItems": 1, "type": "array" }, "receiver": { "description": "TRON base58 address of the account that receives the delegated resource.", "minLength": 1, "type": "string" }, "resourceType": { "description": "Resource type. Default ENERGY when omitted.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "required": [ "receiver", "extendData" ], "type": "object" }, "name": "tronsave_internal_create_extend_request", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "orderId": { "description": "TronSave order ID (hex string) of the created/extension order.", "type": "string" } }, "type": "object" } }, { "description": "Return extendable delegations for a receiver plus an `extendData` payload for the extension flow. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Use as STEP 1 before `tronsave_internal_create_extend_request` when the user wants to extend existing delegation time. Read-only; does not submit anything. FRESHNESS: pricing/availability change within seconds — run immediately before extending and pass the returned `extendData` unchanged.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "extendTo": { "description": "Target end time as Unix epoch milliseconds (UTC) for the extended delegation.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "maxPriceAccepted": { "description": "Maximum unit price in SUN you are willing to pay for the extension.", "minimum": 0, "type": "number" }, "receiver": { "description": "TRON base58 address of the account that receives the delegated resource.", "minLength": 1, "type": "string" }, "requester": { "description": "TRON base58 requester; defaults to the API key account when omitted.", "type": "string" }, "resourceType": { "description": "Resource type. Default ENERGY when omitted.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "required": [ "receiver", "extendTo" ], "type": "object" }, "name": "tronsave_internal_extend_delegates", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "extendData": { "anyOf": [ { "items": { "additionalProperties": false, "properties": { "delegator": { "description": "TRON base58 delegator address.", "minLength": 1, "type": "string" }, "extendTo": { "description": "Target end time as Unix epoch milliseconds, matching internal.extend.delegates.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "extraAmount": { "description": "Additional resource amount to add (resource units).", "minimum": 0, "type": "number" }, "isExtend": { "description": "Whether to extend this delegation row.", "type": "boolean" } }, "required": [ "delegator", "isExtend", "extraAmount", "extendTo" ], "type": "object" }, "type": "array" }, { "type": "null" } ], "description": "Delegations to extend; pass unchanged into internal_create_extend_request `extendData`." }, "extendOrderBook": { "description": "Order book for extend.", "items": { "additionalProperties": {}, "properties": { "availableResourceAmount": { "description": "Available resource amount at this price level.", "type": "number" }, "price": { "description": "Price in SUN.", "type": "number" } }, "type": "object" }, "type": "array" }, "isAbleToExtend": { "description": "Whether balance is sufficient to extend.", "type": "boolean" }, "totalAvailableExtendAmount": { "description": "Total available amount to extend.", "type": "number" }, "totalDelegateAmount": { "description": "Total delegated resource amount.", "type": "number" }, "totalEstimateTrx": { "description": "Total estimated TRX cost in SUN.", "type": "number" }, "yourBalance": { "description": "Current account balance in SUN.", "type": "number" } }, "type": "object" } }, { "description": "Return the current TronSave market depth/price tiers for ENERGY or BANDWIDTH via the api-key REST endpoint. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Use before `tronsave_internal_order_create` or `tronsave_internal_order_estimate` when the user needs live prices or liquidity. Read-only. FRESHNESS: live market depth can change roughly every 3 seconds (one TRON block) — re-read immediately before placing an order.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "address": { "description": "Optional TRON base58 address filter for the receiver.", "type": "string" }, "durationSec": { "description": "Delegation duration window in seconds for the quote.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "minDelegateAmount": { "description": "Minimum resource amount per offer level to include (resource units, not SUN).", "minimum": 0, "type": "number" }, "resourceType": { "description": "Resource type. Default ENERGY when omitted.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "type": "object" }, "name": "tronsave_internal_order_book", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "availableResource": { "description": "Available resource at the quoted tiers.", "type": "number" }, "data": { "description": "Order book entries sorted by price.", "items": { "additionalProperties": {}, "properties": { "availableResourceAmount": { "description": "Available resource amount at this price level.", "type": "number" }, "price": { "description": "Price in SUN.", "type": "number" } }, "type": "object" }, "type": "array" }, "fast": { "description": "FAST price tier (SUN).", "type": "number" }, "medium": { "description": "MEDIUM price tier (SUN).", "type": "number" }, "slow": { "description": "SLOW price tier (SUN).", "type": "number" } }, "type": "object" } }, { "description": "Place a new buy order for ENERGY or BANDWIDTH on TronSave, paid from the internal account balance. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. 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 }`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "durationSec": { "description": "Delegation duration in seconds. Default 259200 (3 days) when omitted.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "options": { "description": "Optional execution guards and fill behavior.", "properties": { "allowPartialFill": { "description": "Allow partial fill. Default true when omitted.", "type": "boolean" }, "maxPriceAccepted": { "description": "Maximum unit price in SUN you accept.", "minimum": 0, "type": "number" }, "minResourceDelegateRequiredAmount": { "description": "Minimum resource amount per matching provider (resource units).", "minimum": 0, "type": "number" }, "onlyCreateWhenFulfilled": { "description": "Only create if the order can be 100% fulfilled. Default false when omitted.", "type": "boolean" }, "preventDuplicateIncompleteOrders": { "description": "Skip if an identical pending order already exists. Default false when omitted.", "type": "boolean" } }, "type": "object" }, "receiver": { "description": "TRON base58 address that will receive the resource.", "minLength": 1, "type": "string" }, "resourceAmount": { "description": "Amount of resource to purchase (resource units).", "exclusiveMinimum": 0, "type": "number" }, "resourceType": { "description": "Resource type. Default ENERGY when omitted.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "sponsor": { "description": "Optional sponsor or referral code.", "type": "string" }, "unitPrice": { "anyOf": [ { "enum": [ "FAST", "MEDIUM", "SLOW" ], "type": "string" }, { "type": "number" } ], "description": "Pricing: FAST | MEDIUM | SLOW strategy, or exact unit price in SUN per resource unit. Default MEDIUM when omitted." } }, "required": [ "resourceAmount", "receiver" ], "type": "object" }, "name": "tronsave_internal_order_create", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "orderId": { "description": "TronSave order ID (hex string) of the created/extension order.", "type": "string" } }, "type": "object" } }, { "description": "Fetch full details for one internal-account order by order ID. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Use when monitoring fulfillment after `tronsave_internal_order_create`, or when the user asks for status on a specific order id. Read-only. FRESHNESS: order state changes within seconds as the market matches — re-read immediately before acting.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "orderId": { "description": "TronSave order ID (hex string), e.g. value returned in internal.order.create response data.orderId.", "minLength": 1, "type": "string" } }, "required": [ "orderId" ], "type": "object" }, "name": "tronsave_internal_order_details", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "allowPartialFill": { "description": "Whether partial fill is allowed.", "type": "boolean" }, "createdAt": { "anyOf": [ { "type": "number" }, { "type": "string" } ], "description": "Order created time (Unix epoch ms or ISO-8601, endpoint-dependent)." }, "delegates": { "description": "Delegations fulfilling this order.", "items": { "additionalProperties": {}, "properties": { "amount": { "description": "Delegated resource amount.", "type": "number" }, "delegator": { "description": "TRON base58 address of delegator.", "type": "string" }, "txid": { "description": "Transaction ID on TRON network.", "type": "string" } }, "type": "object" }, "type": "array" }, "durationSec": { "description": "Delegated duration in seconds.", "type": "number" }, "fulfilledPercent": { "description": "0 = pending, 1-99 = partial, 100 = fully matched.", "type": "number" }, "id": { "description": "TronSave order ID (hex string).", "type": "string" }, "orderType": { "description": "Order type (NORMAL | FAST | EXTEND).", "type": "string" }, "payoutAmount": { "description": "Payout amount in SUN.", "type": "number" }, "price": { "description": "Unit price in SUN.", "type": "number" }, "receiver": { "description": "TRON base58 receiver address.", "type": "string" }, "remainAmount": { "description": "Remaining unfulfilled amount.", "type": "number" }, "requester": { "description": "TRON base58 requester address.", "type": "string" }, "resourceAmount": { "description": "Resource amount of order.", "type": "number" }, "resourceType": { "description": "Resource type.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "status": { "description": "Order status.", "type": "string" } }, "type": "object" } }, { "description": "Estimate the TRX cost and availability for a buy order before submitting it (api-key internal account). Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Use when the user wants a quote or price check; feed the result into `tronsave_internal_order_create`. Read-only. FRESHNESS: `unitPrice`/`estimateTrx` are live and can change roughly every 3 seconds — re-estimate immediately before creating the order.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "durationSec": { "description": "Delegation duration in seconds. Default 259200 (3 days) when omitted.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "options": { "description": "Optional flags that affect matching behavior for the estimate.", "properties": { "allowPartialFill": { "description": "Allow partial fill so the order can match partially. Default true when omitted.", "type": "boolean" } }, "type": "object" }, "receiver": { "description": "TRON base58 address that will receive the resource.", "type": "string" }, "requester": { "description": "TRON base58 requester; defaults to the API key account when omitted.", "type": "string" }, "resourceAmount": { "description": "Amount of resource to purchase (resource units).", "exclusiveMinimum": 0, "type": "number" }, "resourceType": { "description": "Resource type. Default ENERGY when omitted.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "unitPrice": { "anyOf": [ { "enum": [ "FAST", "MEDIUM", "SLOW" ], "type": "string" }, { "type": "number" } ], "description": "Pricing: FAST | MEDIUM | SLOW strategy, or exact unit price in SUN per resource unit. Default MEDIUM when omitted." } }, "required": [ "resourceAmount" ], "type": "object" }, "name": "tronsave_internal_order_estimate", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "availableResource": { "description": "Available resource amount.", "type": "number" }, "durationSec": { "description": "Delegated duration in seconds.", "type": "number" }, "estimateTrx": { "description": "Estimated TRX cost in SUN.", "type": "number" }, "unitPrice": { "description": "Unit price in SUN.", "type": "number" } }, "type": "object" } }, { "description": "List paginated order history for the internal account linked to the API key, newest first. Requires a logged-in MCP session created by the `tronsave_login` tool: include `mcp-session-id: <sessionId>` returned by `tronsave_login` on subsequent MCP requests. Internal tools never accept API keys via tool arguments; signature sessions resolve the latest internal API key on demand, while api-key sessions reuse the validated key from login. Use when the user asks about past purchases, fulfillment, payouts, or delegates on their internal account. Read-only. Pair with `tronsave_internal_order_details` for a single order's full snapshot.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "description": "Page index, 0-based. Omit for first page (default 0).", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "pageSize": { "description": "Orders per page. Default 10 when omitted. Typical range 1–100.", "maximum": 9007199254740991, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "tronsave_internal_order_history", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "data": { "description": "Orders on this page, newest first.", "items": { "additionalProperties": {}, "properties": { "allowPartialFill": { "description": "Whether partial fill is allowed.", "type": "boolean" }, "createdAt": { "anyOf": [ { "type": "number" }, { "type": "string" } ], "description": "Order created time (Unix epoch ms or ISO-8601, endpoint-dependent)." }, "delegates": { "description": "Delegations fulfilling this order.", "items": { "additionalProperties": {}, "properties": { "amount": { "description": "Delegated resource amount.", "type": "number" }, "delegator": { "description": "TRON base58 address of delegator.", "type": "string" }, "txid": { "description": "Transaction ID on TRON network.", "type": "string" } }, "type": "object" }, "type": "array" }, "durationSec": { "description": "Delegated duration in seconds.", "type": "number" }, "fulfilledPercent": { "description": "0 = pending, 1-99 = partial, 100 = fully matched.", "type": "number" }, "id": { "description": "TronSave order ID (hex string).", "type": "string" }, "orderType": { "description": "Order type (NORMAL | FAST | EXTEND).", "type": "string" }, "payoutAmount": { "description": "Payout amount in SUN.", "type": "number" }, "price": { "description": "Unit price in SUN.", "type": "number" }, "receiver": { "description": "TRON base58 receiver address.", "type": "string" }, "remainAmount": { "description": "Remaining unfulfilled amount.", "type": "number" }, "requester": { "description": "TRON base58 requester address.", "type": "string" }, "resourceAmount": { "description": "Resource amount of order.", "type": "number" }, "resourceType": { "description": "Resource type.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "status": { "description": "Order status.", "type": "string" } }, "type": "object" }, "type": "array" }, "total": { "description": "Total orders matching the query (for pagination).", "type": "number" } }, "type": "object" } }, { "description": "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. Works without `mcp-session-id`; when a session is present, auth is forwarded so results can reflect the logged-in account where supported. NOTE: this is GraphQL market data for discovery only. To actually submit an extension, call the authenticated REST `POST /v2/get-extendable-delegates` with `extendData` (payload shape differs from this GraphQL response).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "receiver": { "description": "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.", "minLength": 1, "type": "string" }, "requester": { "description": "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.", "type": "string" }, "resourceType": { "description": "Which resource market leg to query: `ENERGY` for contract execution headroom, `BANDWIDTH` for transaction bandwidth. Must match how you plan to extend or buy.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "suggestData": { "description": "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.", "properties": { "extendAmount": { "description": "Hypothetical amount of existing delegation to extend (resource units matching `resourceType`).", "type": "number" }, "extendTo": { "description": "Target end time for the extended delegation window, as Unix epoch milliseconds (UTC); align with TronSave REST extend flows when comparing suggest windows.", "type": "number" }, "extraBuyAmount": { "description": "Hypothetical extra ENERGY or BANDWIDTH units to buy beyond simple extension; units match `resourceType`, not SUN.", "type": "number" }, "maxPrice": { "description": "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.", "type": "number" } }, "required": [ "extendTo", "extraBuyAmount", "extendAmount", "maxPrice" ], "type": "object" } }, "required": [ "receiver", "resourceType" ], "type": "object" }, "name": "tronsave_list_extendable_delegates", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "extendableDelegates": { "anyOf": [ { "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" } ], "description": "Null when the market has no payload or GraphQL returned no branch; check tool-level errors for hard failures." } }, "required": [ "extendableDelegates" ], "type": "object" } }, { "description": "Read market depth buckets for `ENERGY` or `BANDWIDTH`. Returns price buckets `{ min, max, value }` optionally scoped by viewer address, minimum delegate amount, and duration. No login required; read-only and idempotent. FRESHNESS: live market depth — buckets can shift roughly every 3 seconds; re-read immediately before acting on a price. 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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "address": { "description": "Optional viewer/requester wallet context.", "type": "string" }, "durationSec": { "description": "Optional delegation duration filter in seconds.", "type": "number" }, "minDelegateAmount": { "description": "Optional minimum delegate amount floor for bucket filtering.", "type": "number" }, "resourceType": { "description": "Order-book side to query (`ENERGY` or `BANDWIDTH`).", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "required": [ "resourceType" ], "type": "object" }, "name": "tronsave_list_order_books", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "orderBook": { "items": { "additionalProperties": false, "properties": { "max": { "type": "number" }, "min": { "type": "number" }, "value": { "type": "number" } }, "required": [ "min", "max", "value" ], "type": "object" }, "type": "array" } }, "required": [ "orderBook" ], "type": "object" } }, { "description": "Query the order list with paging. Returns `{ orders: [{ id, requester?.address, receiver.address, resourceType, resourceAmount, remainAmount, durationSec, unitPrice (SUN), isOwner, isMatching, apy, createdAt, typeOrder (NORMAL|FAST|EXTEND) }] }`. Filter `status` maps to GraphQL `isFulfilled`: `ACTIVE` → `UNFULFILLED`, `COMPLETED` → `FULFILLED`. Set `onlyMyOrder=true` (requires signature login + `mcp-session-id`) to scope to the caller's wallet as requester. Paging uses `offset`/`limit`. Use `tronsave_get_order` with an `id` for one full snapshot before mutating an order.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "isOnlyMyOrder": { "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. When `false` or omitted, return all orders on the market (no requester filter).", "type": "boolean" }, "limit": { "description": "Maximum rows to return in one call. Prefer modest limits to avoid huge payloads; page with `offset`.", "maximum": 10, "minimum": 1, "type": "integer" }, "offset": { "description": "Zero-based row offset for page N (skip first `offset` matches). Omit when starting from the first page.", "maximum": 200, "minimum": 0, "type": "integer" }, "resourceType": { "description": "Restrict to `ENERGY` or `BANDWIDTH` orders; omit for both.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" }, "status": { "description": "Lifecycle filter mapped to GraphQL `isFulfilled`: `ACTIVE` → `UNFULFILLED` (not yet fulfilled), `COMPLETED` → `FULFILLED`.", "enum": [ "ACTIVE", "COMPLETED" ], "type": "string" } }, "type": "object" }, "name": "tronsave_list_orders", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "orders": { "description": "Matching orders for this page; may be large—use pagination inputs to chunk.", "items": { "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": "array" } }, "required": [ "orders" ], "type": "object" } }, { "description": "Authenticate with TronSave and create a server session. Returns `{ sessionId, walletAddress?, expiresAt }` — pass `sessionId` as the `mcp-session-id` header on every subsequent MCP request. `walletAddress` is set only for signature-mode logins. Two modes: (1) wallet signature (preferred for platform tools) — call this tool with `signature_timestamp` formatted as `<signature>_<timestamp>`, where `<signature>` must be produced client-side by signing the timestamp message; you may optionally call `tronsave_get_sign_message` to obtain a helper message/timestamp pair; (2) API key (internal tools) — pass `apiKey` (raw key, no prefix). Side effect: creates a new session on the server. Wallet signing must happen client-side; never send private keys to the server.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "apiKey": { "description": "Raw API key for internal-tools login. Provide EXACTLY ONE of `apiKey` or `signature`.", "minLength": 1, "type": "string" }, "signature": { "description": "Signature token in `signature_timestamp` format (timestamp is the signed message). Provide EXACTLY ONE of `apiKey` or `signature`.", "minLength": 1, "type": "string" } }, "type": "object" }, "name": "tronsave_login", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "expiresAt": { "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" }, "sessionId": { "description": "Session id to pass as mcp-session-id in subsequent calls.", "type": "string" }, "walletAddress": { "type": "string" } }, "required": [ "sessionId", "expiresAt" ], "type": "object" } }, { "description": "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 signature session and `mcp-session-id`. 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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "addOnFeature": { "properties": { "stake": { "description": "Optional auto-stake policy.", "properties": { "minAmount": { "description": "Minimum TRX (sun semantics per API) for auto-stake trigger.", "type": "number" }, "remainBalance": { "description": "TRX balance floor to preserve after staking.", "type": "number" }, "resourceStake": { "description": "Whether auto-stake targets ENERGY or BANDWIDTH.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "required": [ "minAmount", "remainBalance", "resourceStake" ], "type": "object" }, "suggestSell": { "description": "Enable suggest-sell UX hints.", "type": "boolean" }, "vote": { "description": "Enable vote-related automation when supported.", "type": "boolean" }, "withdrawVote": { "description": "GraphQL Float input for withdraw-vote configuration.", "type": "number" } }, "type": "object" }, "paymentConfig": { "properties": { "paymentAddress": { "description": "TRON address that receives payouts.", "minLength": 1, "type": "string" }, "paymentFrequency": { "description": "DAILY vs IMMEDIATE settlement rhythm.", "enum": [ "DAILY", "IMMEDIATE" ], "type": "string" }, "paymentMode": { "description": "FIXED vs RANDOM payout mode when applicable.", "enum": [ "FIXED", "RANDOM" ], "type": "string" }, "paymentTimeWindow": { "description": "Optional daily time window for scheduled payouts.", "properties": { "end": { "description": "Window end as a non-negative GraphQL `Int` (same unit as `start`); end > start is enforced server-side, not by this schema.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "start": { "description": "Window start as a non-negative GraphQL `Int` (TronSave commonly uses minutes from midnight UTC, `0..1439`).", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "start", "end" ], "type": "object" } }, "type": "object" }, "poolSetting": { "properties": { "bandwidth": { "properties": { "isAcceptExtended": { "description": "Whether incoming extend-style matches are accepted.", "type": "boolean" }, "maintainUnDelegate": { "description": "Buffer of undelegated resource the seller keeps.", "type": "number" }, "maxDelegateDurationSec": { "description": "Upper bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minDelegateAmount": { "description": "Minimum per-delegation resource amount.", "type": "number" }, "minDelegateDurationSec": { "description": "Lower bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minPrice": { "description": "Minimum unit price accepted for auto matches.", "type": "number" }, "profitShare": { "description": "Profit share percentage for this resource leg.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "energy": { "properties": { "isAcceptExtended": { "description": "Whether incoming extend-style matches are accepted.", "type": "boolean" }, "maintainUnDelegate": { "description": "Buffer of undelegated resource the seller keeps.", "type": "number" }, "maxDelegateDurationSec": { "description": "Upper bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minDelegateAmount": { "description": "Minimum per-delegation resource amount.", "type": "number" }, "minDelegateDurationSec": { "description": "Lower bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minPrice": { "description": "Minimum unit price accepted for auto matches.", "type": "number" }, "profitShare": { "description": "Profit share percentage for this resource leg.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "reclaim": { "description": "Reclaim behaviour: ALL resources vs ONLY_TRONSAVE-managed delegations.", "enum": [ "ALL", "ONLY_TRONSAVE" ], "type": "string" } }, "type": "object" } }, "type": "object" }, "name": "tronsave_register_auto_sell", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "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" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message", "data" ], "type": "object" } }, { "description": "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 signature session and `mcp-session-id`. Call `tronsave_generate_api_key` afterwards to mint a replacement when continued internal access is needed.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tronsave_revoke_api_key", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "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" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message", "data" ], "type": "object" } }, { "description": "Manually execute seller-side fulfillment of an existing order with a wallet `signedTx`. Returns the updated order payload after sell. Side effect: broadcasts a market/delegation transaction and may consume balances/resources; not idempotent — each call re-executes. Backend requires a signature session and `mcp-session-id`; the MCP gate is `public` to allow anonymous read-fallthrough, but the GraphQL helper rejects api-key-only sessions. Use only when explicit manual sell is intended; call `tronsave_get_order` first to verify order state before signing.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "orderId": { "description": "Target order id (`MObjectId`) to manually fulfill. Should be an order eligible for seller-side manual execution.", "minLength": 1, "type": "string" }, "paymentAddress": { "description": "Optional payout/payment address override when settlement flow requires it.", "type": "string" }, "signedTx": { "additionalProperties": {}, "description": "Required wallet-signed transaction payload (TronWeb shape: `{ txID, raw_data, raw_data_hex, signature[] }`). Must come from client-side signing; never fabricate.", "properties": { "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" } }, "required": [ "txID", "raw_data", "raw_data_hex", "signature" ], "type": "object" } }, "required": [ "orderId", "signedTx" ], "type": "object" }, "name": "tronsave_sell_order_manual", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "delegatedId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "On-chain delegate id created by the manual sell when the underlying transaction is confirmed; null until confirmation lands." }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message" ], "type": "object" } }, { "description": "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 signature session and `mcp-session-id`. 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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "addOnFeature": { "properties": { "stake": { "description": "Optional auto-stake policy.", "properties": { "minAmount": { "description": "Minimum TRX (sun semantics per API) for auto-stake trigger.", "type": "number" }, "remainBalance": { "description": "TRX balance floor to preserve after staking.", "type": "number" }, "resourceStake": { "description": "Whether auto-stake targets ENERGY or BANDWIDTH.", "enum": [ "ENERGY", "BANDWIDTH" ], "type": "string" } }, "required": [ "minAmount", "remainBalance", "resourceStake" ], "type": "object" }, "suggestSell": { "description": "Enable suggest-sell UX hints.", "type": "boolean" }, "vote": { "description": "Enable vote-related automation when supported.", "type": "boolean" }, "withdrawVote": { "description": "GraphQL Float input for withdraw-vote configuration.", "type": "number" } }, "type": "object" }, "paymentConfig": { "properties": { "paymentAddress": { "description": "TRON address that receives payouts.", "minLength": 1, "type": "string" }, "paymentFrequency": { "description": "DAILY vs IMMEDIATE settlement rhythm.", "enum": [ "DAILY", "IMMEDIATE" ], "type": "string" }, "paymentMode": { "description": "FIXED vs RANDOM payout mode when applicable.", "enum": [ "FIXED", "RANDOM" ], "type": "string" }, "paymentTimeWindow": { "description": "Optional daily time window for scheduled payouts.", "properties": { "end": { "description": "Window end as a non-negative GraphQL `Int` (same unit as `start`); end > start is enforced server-side, not by this schema.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "start": { "description": "Window start as a non-negative GraphQL `Int` (TronSave commonly uses minutes from midnight UTC, `0..1439`).", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "start", "end" ], "type": "object" } }, "type": "object" }, "poolSetting": { "properties": { "bandwidth": { "properties": { "isAcceptExtended": { "description": "Whether incoming extend-style matches are accepted.", "type": "boolean" }, "maintainUnDelegate": { "description": "Buffer of undelegated resource the seller keeps.", "type": "number" }, "maxDelegateDurationSec": { "description": "Upper bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minDelegateAmount": { "description": "Minimum per-delegation resource amount.", "type": "number" }, "minDelegateDurationSec": { "description": "Lower bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minPrice": { "description": "Minimum unit price accepted for auto matches.", "type": "number" }, "profitShare": { "description": "Profit share percentage for this resource leg.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "energy": { "properties": { "isAcceptExtended": { "description": "Whether incoming extend-style matches are accepted.", "type": "boolean" }, "maintainUnDelegate": { "description": "Buffer of undelegated resource the seller keeps.", "type": "number" }, "maxDelegateDurationSec": { "description": "Upper bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minDelegateAmount": { "description": "Minimum per-delegation resource amount.", "type": "number" }, "minDelegateDurationSec": { "description": "Lower bound delegation duration (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "minPrice": { "description": "Minimum unit price accepted for auto matches.", "type": "number" }, "profitShare": { "description": "Profit share percentage for this resource leg.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "reclaim": { "description": "Reclaim behaviour: ALL resources vs ONLY_TRONSAVE-managed delegations.", "enum": [ "ALL", "ONLY_TRONSAVE" ], "type": "string" } }, "type": "object" } }, "type": "object" }, "name": "tronsave_update_auto_sell_setting", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "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" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message", "data" ], "type": "object" } }, { "description": "Update an open order by `orderId` with partial fields (`receiver`, `newPrice`). Returns the updated order payload. Side effect: overwrites live order parameters; not idempotent — each call with a different `newPrice` produces a new state. Backend requires a signature session and `mcp-session-id`; the MCP gate is `public` to allow anonymous read-fallthrough, but the GraphQL helper rejects api-key-only sessions. 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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "newPrice": { "description": "Optional replacement unit price in SUN.", "type": "number" }, "orderId": { "description": "Target order id (`MObjectId`) to update. Order must still be open and editable.", "minLength": 1, "type": "string" }, "receiver": { "description": "Optional replacement receiver TRON address.", "type": "string" } }, "required": [ "orderId" ], "type": "object" }, "name": "tronsave_update_order", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "code": { "description": "GraphQL mutation status code (HTTP-like; `0`/`200` indicates success). Always pair with `success` for routing.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "description": "Human-readable status text. Populated even on success; localized error messages may appear here on failure.", "type": "string" }, "success": { "description": "Whether the mutation succeeded at the backend level. Always check this before reading `data`.", "type": "boolean" } }, "required": [ "code", "success", "message" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b94e24560e7c5978bab2b85b2d66bd176880aa6d1876319c07d8447401ba59f3 | sha256sum