TronSave MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_PORT | No | HTTP port the server listens on. | 3000 |
| LOG_LEVEL | No | Log level; 'debug' additionally logs redacted tool input/output bodies. | info |
| REDIS_URL | No | Redis connection URL used as the session store. The value 'memory' keeps sessions in the process (single instance, lost on restart; for trials only). | redis://localhost:6379 |
| TRUST_PROXY | No | Number of reverse-proxy hops in front of the server, used to determine client IP for OAuth rate limits. | 1 |
| REST_RETRIES | No | Number of retries, applied to idempotent reads only. | 2 |
| METRICS_TOKEN | No | When set, /metrics requires 'Authorization: Bearer <token>'. Set it whenever /metrics is publicly reachable. | |
| MCP_SERVER_NAME | No | Server name reported in the MCP initialize response. | TronSave MCP Server |
| PUBLIC_BASE_URL | No | Public origin of the server, e.g. https://mcp.tronsave.io (unset by default). When set, enables the OAuth authorization server and the /oauth/mcp endpoints. | |
| REST_TIMEOUT_MS | No | Per-attempt timeout for REST upstream requests (paired with GRAPHQL_TIMEOUT_MS). | 10000 |
| GRAPHQL_TIMEOUT_MS | No | Per-attempt timeout for GraphQL upstream requests (paired with REST_TIMEOUT_MS). | 10000 |
| MCP_SERVER_VERSION | No | Server version reported in the MCP initialize response. | 1.3.0 |
| SESSION_TTL_SECONDS | No | Login / MCP session lifetime (sliding for the transport). | 86400 |
| SIGN_MESSAGE_TTL_SECONDS | No | TTL of nonces issued by tronsave_get_sign_message. | 300 |
| SIGNATURE_MAX_AGE_SECONDS | No | Oldest signed timestamp accepted for wallet login / Signature header. | 86400 |
| AUTH_VERIFY_CACHE_TTL_SECONDS | No | Cache TTL for verified ApiKey / Signature headers. | 60 |
| READINESS_UPSTREAM_TIMEOUT_MS | No | Upstream probe timeout used by the /readyz endpoint. | 2000 |
| OAUTH_ACCESS_TOKEN_TTL_SECONDS | No | OAuth access token lifetime (wallet sign-ins are capped at SIGNATURE_MAX_AGE_SECONDS). | 3600 |
| OAUTH_REFRESH_TOKEN_TTL_SECONDS | No | OAuth refresh token lifetime (wallet sign-ins are capped at SIGNATURE_MAX_AGE_SECONDS). | 2592000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tronsave_get_internal_accountA | Retrieve the Tronsave internal account profile for the current logged-in session (wallet/represent address, balances, deposit address). Requires an internal API key: |
| tronsave_get_deposit_addressA | Fetches the specific deposit address for the TronSave internal account. Requires an internal API key: |
| tronsave_internal_order_historyA | List paginated order history for the internal account linked to the API key, newest first. Requires an internal API key: |
| tronsave_internal_order_detailsA | Fetch full details for one internal-account order by order ID. Requires an internal API key: |
| tronsave_internal_order_bookA | Return the current TronSave market depth/price tiers for ENERGY or BANDWIDTH via the api-key REST endpoint. Requires an internal API key: |
| tronsave_internal_order_estimateA | Estimate the TRX cost and availability for a buy order before submitting it (api-key internal account). Requires an internal API key: |
| tronsave_internal_order_createA | Place a new buy order for ENERGY or BANDWIDTH on TronSave, paid from the internal account balance. Requires an internal API key: |
| tronsave_internal_extend_delegatesA | Return extendable delegations for a receiver plus an |
| tronsave_internal_create_extend_requestA | Submit an extension request for existing delegated resources on TronSave via authenticated REST |
| tronsave_get_sign_messageA | Step 1 of wallet login. Returns |
| tronsave_loginA | Log in to TronSave for the rest of this MCP connection. Provide EXACTLY ONE of: |
| tronsave_logoutA | Remove the TronSave login bound to this MCP connection (api-key or signature). Returns |
| tronsave_get_session_statusA | Report the current authentication state without calling TronSave: |
| tronsave_get_user_infoA | Read the current authenticated user's profile and linked TronSave internal account. Returns |
| tronsave_get_user_auto_settingA | Read the current user's auto-sell configuration ( |
| tronsave_get_user_permissionsA | Read the enabled permission operations ( |
| tronsave_estimate_buy_resourceA | Quote price and availability for buying ENERGY or BANDWIDTH for a receiver address before placing an order. Returns |
| tronsave_get_orderA | Read one order by |
| tronsave_list_ordersA | Query the market order list with paging ( |
| tronsave_list_order_booksA | Read market depth buckets for |
| tronsave_get_min_priceA | Quote the minimum unit price for a buy. Returns |
| tronsave_list_extendable_delegatesA | List extendable delegate candidates for a |
| tronsave_create_orderA | Create a buy order for ENERGY/BANDWIDTH delegated to |
| tronsave_sell_order_manualA | Manually execute seller-side fulfillment of an existing order with a wallet |
| tronsave_cancel_orderA | Cancel an open order by |
| tronsave_update_orderA | Update an open order by |
| tronsave_register_auto_sellA | Create the initial auto-sell configuration for the authenticated user. Returns the persisted |
| tronsave_update_auto_sell_settingA | Update the existing auto-sell configuration with partial fields. Returns the updated |
| tronsave_generate_api_keyA | Generate a new internal API key credential for the current user. Returns |
| tronsave_revoke_api_keyA | 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_delete_auto_buy_settingA | Permanently delete one auto-buy rule by |
| tronsave_get_market_overviewA | 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. Public, read-only. Data refreshes about every TRON block (3 s). |
| tronsave_get_price_tableA | Read the price grid for ENERGY or BANDWIDTH: |
| tronsave_get_system_infoA | 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. Public, read-only. |
| tronsave_get_account_resourcesA | 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. |
| tronsave_suggest_create_orderA | 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 |
| tronsave_list_extendable_receiversA | List the receiver addresses that have delegations bought by |
| tronsave_get_seller_statsA | 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' questions. Requires a wallet signature identity. Read-only. |
| tronsave_list_delegationsA | 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. Requires a wallet signature identity. Read-only. |
| tronsave_list_auto_buy_settingsA | 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_create_auto_buy_settingA | Create a rule that automatically buys |
| tronsave_update_auto_buy_settingA | Change an auto-buy rule by id: pause or resume it with |
| tronsave_list_notificationsA | 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. Requires a wallet signature identity. Read-only. |
| tronsave_mark_notifications_readA | Mark one notification (by |
| tronsave_get_referralA | 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. Requires a wallet signature identity. Read-only. |
| tronsave_get_telegram_notify_settingA | 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). |
| tronsave_update_telegram_notify_settingA | Replace the Telegram alert filters. Send the COMPLETE |
| tronsave_get_agency_botA | 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. |
| tronsave_list_internal_transactionsA | 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. Requires a wallet signature identity. Read-only. |
| tronsave_get_flash_unstake_requestA | Read the logged-in user's flash-unstake request (selling staked TRX early for an immediate payout): state, payout state, amounts and release progress. |
| tronsave_list_flash_unstake_ordersA | Browse the flash-unstake market: |
| tronsave_estimate_flash_unstakeA | 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. Public (any address), read-only. Fails with 404 when the address has nothing staked. |
| tronsave_bulk_create_internal_ordersA | 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 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| buy_resource | Quote, confirm and place a TronSave order for a receiver address. |
| account_overview | Summarize auth state, balances and recent orders for the logged-in account. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| agent-guide | Auth model, units, workflows, tool map and error codes for agents using this server. |
TDQS
Scored across 53 tools
The surface has heavy, function-level duplication between an api-key/internal path and a signature/market path: `tronsave_internal_order_create` vs `tronsave_create_order`, `tronsave_internal_order_estimate` vs `tronsave_estimate_buy_resource`, `tronsave_internal_order_book` vs `tronsave_list_order_books`, and `tronsave_internal_extend_delegates` vs `tronsave_list_extendable_delegates`. There are also three separate extend-discovery tools (`list_extendable_delegates`, `list_extendable_receivers`, `internal_extend_delegates`) plus overlapping quote/depth tools (`estimate_buy_resource`, `get_min_price`, `list_order_books`, `get_price_table`). Descriptions explain the differences, but at 53 tools an agent can easily misselect the wrong auth path or quote tool.
Most names use the `tronsave_` prefix with snake_case, which is readable and mostly consistent. However, several tools drop the leading verb (`tronsave_internal_order_create`, `tronsave_internal_order_book`, `tronsave_internal_order_history`, `tronsave_internal_order_details`) while others follow verb_noun (`tronsave_list_orders`, `tronsave_get_order`, `tronsave_create_order`), creating mixed conventions within the same order domain. Additions like `tronsave_sell_order_manual` further blur the pattern.
53 tools is well above a comfortable surface size, even for a broad server covering market data, orders, automation, notifications, referral, Telegram, and flash unstake. Much of the count comes from duplicating the same operations across internal/api-key and signature paths rather than adding genuinely distinct capabilities. This makes the surface heavy and increases selection risk.
Coverage is broad: authentication/session tools, market quotes and depth, full order lifecycle (estimate, create, get, list, update, cancel), extend flows, auto-sell and auto-buy configuration, notifications, referral, Telegram alert settings, agency bot, internal ledger, and flash unstake. Minor gaps exist, such as no explicit reclaim/withdraw tool for expired delegations and no dedicated auto-sell delete/disable tool, but most workflows can be completed. Agents can work around these gaps with the existing update and order tools.