TRON energy exchange for AI agents. 54 tools, 30 prompts, 21 resources. A2A + ACP.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get a snapshot of your agent payment service: registered TRON address, count of pending payment requests (request_payment), active address watches (watch_address), and outstanding invoices (create_invoice). Use this right after register_agent to confirm the agent is set up, or any time you want to see how much in-flight activity your agent has. Auth required (API key) and agent must be registered first via register_agent.
This tool takes no arguments.
Get a snapshot of your agent payment service: registered TRON address, count of pending payment requests (request_payment), active address watches (watch_address), and outstanding invoices (create_invoice). Use this right after register_agent to confirm the agent is set up, or any time you want to see how much in-flight activity your agent has. Auth required (API key) and agent must be registered first via register_agent.
No arguments.
{
"type": "object",
"properties": {}
}Market price analysis with trends and recommendations. No auth required.
| Argument | Type | Description |
|---|---|---|
| resource | string | Filter by resource type. Omit for all. |
{
"type": "object",
"properties": {
"resource": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string",
"description": "Filter by resource type. Omit for all."
}
}
}Approve TRC-20 spending allowance. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token symbol or contract address. |
| amount* | string | Allowance amount (human-readable, or "unlimited"). |
| spender* | string | Spender TRON address. |
| resource_operation_id | string | Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent. |
{
"type": "object",
"required": [
"token",
"spender",
"amount"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol or contract address."
},
"amount": {
"type": "string",
"description": "Allowance amount (human-readable, or \"unlimited\")."
},
"spender": {
"type": "string",
"description": "Spender TRON address."
},
"resource_operation_id": {
"type": "string",
"description": "Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent."
}
}
}Calculate savings from renting energy vs burning TRX. No authentication required.
| Argument | Type | Description |
|---|---|---|
| operation | string | Operation type. Default: trc20_transfer. |
| target_address* | string | TRON recipient address required for an executable MERX quote. |
| transaction_count | number | Number of transactions. Default: 1. |
{
"type": "object",
"required": [
"target_address"
],
"properties": {
"operation": {
"enum": [
"trc20_transfer",
"trc20_approve",
"trx_transfer"
],
"type": "string",
"description": "Operation type. Default: trc20_transfer."
},
"target_address": {
"type": "string",
"description": "TRON recipient address required for an executable MERX quote."
},
"transaction_count": {
"type": "number",
"description": "Number of transactions. Default: 1."
}
}
}Execute a state-changing smart contract function. Estimates resources, buys via Merx if needed. Requires TRON_PRIVATE_KEY and TRON_ADDRESS.
| Argument | Type | Description |
|---|---|---|
| parameter | string | ABI-encoded parameter hex (optional). |
| call_value_trx | string | TRX to send with call (optional). |
| contract_address* | string | Contract TRON address. |
| function_selector* | string | Function signature, e.g. "stake(uint256)". |
| resource_operation_id | string | Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent. |
{
"type": "object",
"required": [
"contract_address",
"function_selector"
],
"properties": {
"parameter": {
"type": "string",
"description": "ABI-encoded parameter hex (optional)."
},
"call_value_trx": {
"type": "string",
"description": "TRX to send with call (optional)."
},
"contract_address": {
"type": "string",
"description": "Contract TRON address."
},
"function_selector": {
"type": "string",
"description": "Function signature, e.g. \"stake(uint256)\"."
},
"resource_operation_id": {
"type": "string",
"description": "Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent."
}
}
}Cancel an active monitor by its UUID. The monitor stops firing notifications. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| monitor_id* | string | Monitor UUID to cancel. |
{
"type": "object",
"required": [
"monitor_id"
],
"properties": {
"monitor_id": {
"type": "string",
"description": "Monitor UUID to cancel."
}
}
}Cancel a standing order by its UUID. The order is moved to CANCELLED status and will not trigger again. Already-executed actions are NOT reversed. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| order_id* | string | Standing order UUID to cancel. |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"description": "Standing order UUID to cancel."
}
}
}Check energy, bandwidth, and TRX balance for any TRON address. No auth required.
| Argument | Type | Description |
|---|---|---|
| address* | string | TRON address (starts with T). |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "TRON address (starts with T)."
}
}
}Show raw provider observations for market analytics. This tool does not identify an executable provider; use get_best_price for an executable quote.
| Argument | Type | Description |
|---|---|---|
| resource | string | Filter by resource type. Omit for all. |
{
"type": "object",
"properties": {
"resource": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string",
"description": "Filter by resource type. Omit for all."
}
}
}Convert a natural language energy management policy into MERX automation. Creates standing orders and monitors based on your instructions. Examples: - "Keep 500k energy on my wallet, buy when price is below 55 SUN, max 200 TRX/week" - "Buy energy every day at 6 AM UTC, 1 million units, for 24 hours" - "Alert me when my energy drops below 100k" Returns a preview of what will be created. Set apply=true to execute.
| Argument | Type | Description |
|---|---|---|
| apply | boolean | Set to true to create the standing orders. Default false (preview only). |
| address | string | TRON address this policy applies to (optional) |
| instruction* | string | Natural language description of the desired automation policy |
{
"type": "object",
"required": [
"instruction"
],
"properties": {
"apply": {
"type": "boolean",
"description": "Set to true to create the standing orders. Default false (preview only)."
},
"address": {
"type": "string",
"description": "TRON address this policy applies to (optional)"
},
"instruction": {
"type": "string",
"description": "Natural language description of the desired automation policy"
}
}
}Convert TRON address between base58 (T...) and hex (41...) formats. No auth required.
| Argument | Type | Description |
|---|---|---|
| address* | string | TRON address in base58 (T...) or hex (41...). |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "TRON address in base58 (T...) or hex (41...)."
}
}
}Create a new Merx account, generate an API key, and get deposit info. No auth needed.
| Argument | Type | Description |
|---|---|---|
| email* | string | Email address for the account |
| password* | string | Password (min 8 characters) |
{
"type": "object",
"required": [
"email",
"password"
],
"properties": {
"email": {
"type": "string",
"description": "Email address for the account"
},
"password": {
"type": "string",
"description": "Password (min 8 characters)"
}
}
}Create an invoice for another agent or human to pay. Returns payment URL, address, and QR code. Payment is detected automatically via ZeroMQ (<3 seconds).
| Argument | Type | Description |
|---|---|---|
| expires_in | number | Expiry in seconds (60-86400, default 3600) |
| amount_usdt* | string | Amount in USDT |
| description | string | What the invoice is for |
{
"type": "object",
"required": [
"amount_usdt"
],
"properties": {
"expires_in": {
"type": "number",
"description": "Expiry in seconds (60-86400, default 3600)"
},
"amount_usdt": {
"type": "string",
"description": "Amount in USDT"
},
"description": {
"type": "string",
"description": "What the invoice is for"
}
}
}Create a persistent server-side monitor that fires notifications when a condition is met. Four monitor types: delegation_expiry (warns when leased energy is about to expire so you can re-rent), balance_threshold (fires when an address goes below a TRX/USDT level), price_alert (fires when energy/bandwidth price crosses a SUN threshold), address_activity (fires on any incoming TX). Notification defaults to webhook=true if omitted. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| notify | object | Notification config: { webhook?: boolean, telegram_chat_id?: string }. Defaults to { webhook: true } if omitted. |
| params* | object | Type-specific params. delegation_expiry: { alert_before_sec, auto_renew, resource_type }. balance_threshold: { resource: "TRX"|"ENERGY"|"BANDWIDTH", below: number }. price_alert: { resource: "ENERGY"|"BANDWIDTH", above_sun?: number, below_sun?: number }. address_activity: { min_amount_trx?: number }. |
| monitor_type* | string | Type of monitor to create. |
| target_address | string | TRON address to monitor. Required for delegation_expiry, balance_threshold, address_activity. Not used for price_alert. |
{
"type": "object",
"required": [
"monitor_type",
"params"
],
"properties": {
"notify": {
"type": "object",
"description": "Notification config: { webhook?: boolean, telegram_chat_id?: string }. Defaults to { webhook: true } if omitted."
},
"params": {
"type": "object",
"description": "Type-specific params. delegation_expiry: { alert_before_sec, auto_renew, resource_type }. balance_threshold: { resource: \"TRX\"|\"ENERGY\"|\"BANDWIDTH\", below: number }. price_alert: { resource: \"ENERGY\"|\"BANDWIDTH\", above_sun?: number, below_sun?: number }. address_activity: { min_amount_trx?: number }."
},
"monitor_type": {
"enum": [
"delegation_expiry",
"balance_threshold",
"price_alert",
"address_activity"
],
"type": "string",
"description": "Type of monitor to create."
},
"target_address": {
"type": "string",
"description": "TRON address to monitor. Required for delegation_expiry, balance_threshold, address_activity. Not used for price_alert."
}
}
}Buy energy or bandwidth at the Merx market quote. Confirmed Merx funds and API key required; no commission.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Amount of resource units (min 65000 for ENERGY, 1000 for BANDWIDTH). |
| duration_sec* | number | Rental duration in seconds on the fixed market grid, from 2 minutes through 24 hours. |
| max_price_sun | number | Optional offered price in SUN/unit. Below-current offers fail; equal or higher offers execute at the submitted price. Omit to use the current best price. |
| resource_type* | string | Resource type to purchase. |
| target_address* | string | TRON address to receive delegated resources. |
| idempotency_key* | string | Unique operation ID (1–200 characters). Reuse this exact value when retrying after a timeout or lost response. |
{
"type": "object",
"required": [
"resource_type",
"amount",
"duration_sec",
"target_address",
"idempotency_key"
],
"properties": {
"amount": {
"type": "number",
"description": "Amount of resource units (min 65000 for ENERGY, 1000 for BANDWIDTH)."
},
"duration_sec": {
"enum": [
120,
300,
600,
900,
1800,
3600,
10800,
21600,
86400
],
"type": "number",
"description": "Rental duration in seconds on the fixed market grid, from 2 minutes through 24 hours."
},
"max_price_sun": {
"type": "number",
"multipleOf": 0.001,
"description": "Optional offered price in SUN/unit. Below-current offers fail; equal or higher offers execute at the submitted price. Omit to use the current best price."
},
"resource_type": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string",
"description": "Resource type to purchase."
},
"target_address": {
"type": "string",
"description": "TRON address to receive delegated resources."
},
"idempotency_key": {
"type": "string",
"description": "Unique operation ID (1–200 characters). Reuse this exact value when retrying after a timeout or lost response."
}
}
}Unavailable legacy resource-invoice order. No transaction is sent. Fund your personal Merx account and use quoted resource orders instead.
| Argument | Type | Description |
|---|---|---|
| amount* | number | |
| duration_sec* | number | |
| resource_type* | string | |
| target_address* | string |
{
"type": "object",
"required": [
"resource_type",
"amount",
"duration_sec",
"target_address"
],
"properties": {
"amount": {
"type": "number"
},
"duration_sec": {
"type": "number"
},
"resource_type": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string"
},
"target_address": {
"type": "string"
}
}
}Create a server-side standing order with trigger-based automation. Auth required.
| Argument | Type | Description |
|---|---|---|
| budget_trx* | string | Maximum budget in TRX (converted to SUN internally). |
| expires_at | string | ISO 8601 expiration date (optional). |
| action_type* | string | Action to perform when triggered. |
| trigger_type* | string | Condition that triggers the order. |
| action_params* | object | Action parameters: { resource_type, amount, duration_sec, target_address }. |
| max_executions* | number | Maximum number of times this order can execute. |
| trigger_params* | object | Trigger parameters: { resource, threshold_sun } or { cron }. |
{
"type": "object",
"required": [
"trigger_type",
"trigger_params",
"action_type",
"action_params",
"budget_trx",
"max_executions"
],
"properties": {
"budget_trx": {
"type": "string",
"description": "Maximum budget in TRX (converted to SUN internally)."
},
"expires_at": {
"type": "string",
"description": "ISO 8601 expiration date (optional)."
},
"action_type": {
"enum": [
"buy_resource",
"ensure_resources",
"notify_only"
],
"type": "string",
"description": "Action to perform when triggered."
},
"trigger_type": {
"enum": [
"price_below",
"price_above",
"schedule",
"balance_below"
],
"type": "string",
"description": "Condition that triggers the order."
},
"action_params": {
"type": "object",
"description": "Action parameters: { resource_type, amount, duration_sec, target_address }."
},
"max_executions": {
"type": "number",
"description": "Maximum number of times this order can execute."
},
"trigger_params": {
"type": "object",
"description": "Trigger parameters: { resource, threshold_sun } or { cron }."
}
}
}Send a plain TRX transfer to your personal Merx deposit address. No memo is required. Broadcast acceptance does not mean the deposit is credited. Requires MERX_API_KEY + TRON_PRIVATE_KEY.
| Argument | Type | Description |
|---|---|---|
| amount_trx* | string | Amount of TRX to deposit |
{
"type": "object",
"required": [
"amount_trx"
],
"properties": {
"amount_trx": {
"type": "string",
"description": "Amount of TRX to deposit"
}
}
}Configure automatic top-up when balance drops below a threshold. The configuration lives ONLY in the current MCP session — it is held in memory by the MCP server process and is lost on server restart, MCP client reconnect, or server redeploy. Top-ups are signed locally with TRON_PRIVATE_KEY and sent as plain TRX transfers to your personal Merx deposit address, without a memo. For persistent auto-deposit you currently need to call this tool again at the start of each session.
| Argument | Type | Description |
|---|---|---|
| threshold_trx* | string | Balance threshold in TRX |
| deposit_amount_trx* | string | Amount of TRX per deposit |
| max_daily_deposits | number | Max deposits per day (default 5) |
{
"type": "object",
"required": [
"threshold_trx",
"deposit_amount_trx"
],
"properties": {
"threshold_trx": {
"type": "string",
"description": "Balance threshold in TRX"
},
"deposit_amount_trx": {
"type": "string",
"description": "Amount of TRX per deposit"
},
"max_daily_deposits": {
"type": "number",
"description": "Max deposits per day (default 5)"
}
}
}Declarative resource provisioning. Checks current resources on target address and purchases only what is missing. Auth required.
| Argument | Type | Description |
|---|---|---|
| duration_sec | number | Rental duration in seconds on the fixed market grid, from 2 minutes through 24 hours (default: 3600). |
| energy_minimum | number | Minimum energy the address should have. |
| target_address* | string | TRON address to provision resources for. |
| idempotency_key* | string | Unique operation ID (1–200 characters). Reuse exactly this ID when retrying this operation. |
| bandwidth_minimum | number | Minimum bandwidth the address should have. |
{
"type": "object",
"required": [
"target_address",
"idempotency_key"
],
"properties": {
"duration_sec": {
"enum": [
120,
300,
600,
900,
1800,
3600,
10800,
21600,
86400
],
"type": "number",
"description": "Rental duration in seconds on the fixed market grid, from 2 minutes through 24 hours (default: 3600)."
},
"energy_minimum": {
"type": "number",
"description": "Minimum energy the address should have."
},
"target_address": {
"type": "string",
"description": "TRON address to provision resources for."
},
"idempotency_key": {
"type": "string",
"description": "Unique operation ID (1–200 characters). Reuse exactly this ID when retrying this operation."
},
"bandwidth_minimum": {
"type": "number",
"description": "Minimum bandwidth the address should have."
}
}
}Estimate energy and bandwidth cost for a smart contract call. Compares rental vs burn cost. No auth required.
| Argument | Type | Description |
|---|---|---|
| parameter | string | ABI-encoded parameter hex (optional). |
| caller_address | string | Caller TRON address for simulation (optional). |
| contract_address* | string | Contract TRON address. |
| function_selector* | string | Function signature, e.g. "transfer(address,uint256)". |
{
"type": "object",
"required": [
"contract_address",
"function_selector"
],
"properties": {
"parameter": {
"type": "string",
"description": "ABI-encoded parameter hex (optional)."
},
"caller_address": {
"type": "string",
"description": "Caller TRON address for simulation (optional)."
},
"contract_address": {
"type": "string",
"description": "Contract TRON address."
},
"function_selector": {
"type": "string",
"description": "Function signature, e.g. \"transfer(address,uint256)\"."
}
}
}Estimate cost of a TRON transaction BEFORE sending. Aliases: estimate_cost, calculate_cost, transaction_cost, energy_cost, transfer_cost. Calculate exactly how much energy, bandwidth, and TRX a TRON transaction will cost before sending it. Use this to answer questions like "how much does a USDT transfer cost?" or "what will it cost me to send 100 USDT to address X?". Returns: energy units needed, bandwidth needed, TRX cost if you burn directly, and TRX cost if you rent energy from Merx (typically 70-80% cheaper). Supports trc20_transfer (e.g. USDT/USDC), trc20_approve, trx_transfer, and custom contract calls. No auth required.
| Argument | Type | Description |
|---|---|---|
| amount | string | Token amount (as string). |
| operation* | string | Transaction type. |
| parameter | string | ABI-encoded parameter (custom). |
| to_address | string | Recipient TRON address. |
| from_address | string | Sender TRON address. |
| token_address | string | TRC20 contract address. |
| contract_address | string | Contract address (custom). |
Plan a multi-step operation (transfer, swap, buy resources, etc) and return a cost estimate, total energy/bandwidth needed, and the cheapest resource acquisition strategy. NOTE: actual on-chain execution of multi-step intents is not yet wired up — currently returns the same plan as simulate, regardless of dry_run. Use this for planning; for real execution call the underlying tools (create_order, transfer_trc20, execute_swap) yourself in sequence. Auth required.
| Argument | Type | Description |
|---|---|---|
| steps* | array | Array of { action, params } steps to execute. |
| dry_run | boolean | If true, simulate only without executing (default: false). |
| resource_strategy | string | Resource acquisition strategy (default: batch_cheapest). |
{
"type": "object",
"required": [
"steps"
],
"properties": {
"steps": {
"type": "array",
"description": "Array of { action, params } steps to execute."
},
"dry_run": {
"type": "boolean",
"description": "If true, simulate only without executing (default: false)."
},
"resource_strategy": {
"enum": [
"batch_cheapest",
"per_step",
"no_resources"
],
"type": "string",
"description": "Resource acquisition strategy (default: batch_cheapest)."
}
}
}Execute a token swap on SunSwap V2. Requires TRON_PRIVATE_KEY.
| Argument | Type | Description |
|---|---|---|
| amount* | string | Amount of source token to swap |
| slippage | number | Slippage tolerance in percent (default 1) |
| to_token* | string | Destination token symbol |
| from_token* | string | Source token symbol (TRX, USDT, USDC, etc.) |
| resource_operation_id | string | Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent. |
{
"type": "object",
"required": [
"from_token",
"to_token",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Amount of source token to swap"
},
"slippage": {
"type": "number",
"description": "Slippage tolerance in percent (default 1)"
},
"to_token": {
"type": "string",
"description": "Destination token symbol"
},
"from_token": {
"type": "string",
"description": "Source token symbol (TRX, USDT, USDC, etc.)"
},
"resource_operation_id": {
"type": "string",
"description": "Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent."
}
}
}Explain a TRON or Merx concept in plain language. Hardcoded topics (exact match): energy, bandwidth, staking, delegation, sun_units, burn_vs_rent, merx_routing, provider_types. The lookup is fuzzy — substring matches also work, so "rent" finds "burn_vs_rent" and "providers" finds "provider_types". For topics outside this list (e.g. x402, stablecoins, gasfree), pick the closest hardcoded topic, or just answer the question yourself from the broader context — this tool only returns canned explanations of TRON resource economics.
| Argument | Type | Description |
|---|---|---|
| topic* | string | Topic to explain. Exact: energy, bandwidth, staking, delegation, sun_units, burn_vs_rent, merx_routing, provider_types. Fuzzy substrings (e.g. "rent", "providers") also work. |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string",
"description": "Topic to explain. Exact: energy, bandwidth, staking, delegation, sun_units, burn_vs_rent, merx_routing, provider_types. Fuzzy substrings (e.g. \"rent\", \"providers\") also work."
}
}
}Inspect any TRON address. Aliases: check_address, get_address_info, get_wallet_info, address_info, account_status. Read the full on-chain state of ANY TRON address (does not have to be your own): TRX balance, free + delegated energy, free + delegated bandwidth, frozen TRX, account creation timestamp. Use this to check if an address has enough resources before sending a transaction, or to inspect any TRON wallet. No auth required, no API key needed.
| Argument | Type | Description |
|---|---|---|
| address* | string | TRON address (T...). |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "TRON address (T...)."
}
}
}Get your Merx account balance (TRX, USDT, locked). Requires MERX_API_KEY.
No arguments.
{
"type": "object",
"properties": {}
}Get the exact executable MERX quote and quoted provider. Requires resource, amount, a fixed-grid duration, and target_address.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Amount of resource units needed. |
| duration* | number | Exact rental duration in seconds on the fixed grid, from 2 minutes through 24 hours. |
| resource* | string | Resource type. |
| target_address* | string | TRON recipient address. |
{
"type": "object",
"required": [
"resource",
"amount",
"duration",
"target_address"
],
"properties": {
"amount": {
"type": "number",
"description": "Amount of resource units needed."
},
"duration": {
"enum": [
120,
300,
600,
900,
1800,
3600,
10800,
21600,
86400
],
"type": "number",
"description": "Exact rental duration in seconds on the fixed grid, from 2 minutes through 24 hours."
},
"resource": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string",
"description": "Resource type."
},
"target_address": {
"type": "string",
"description": "TRON recipient address."
}
}
}Get TRON block info by number (or latest if omitted). No auth required.
| Argument | Type | Description |
|---|---|---|
| block_number | number | Block number. Omit for latest. |
{
"type": "object",
"properties": {
"block_number": {
"type": "number",
"description": "Block number. Omit for latest."
}
}
}Get TRON network parameters (energy fee, bandwidth cost, etc.) with Merx price comparison. No auth required.
No arguments.
{
"type": "object",
"properties": {}
}Get on-chain metadata for a TRON smart contract: existence check, owner address, energy origin, code hash, contract name (if set), ABI entries count. Use this to check whether an address is a contract before calling read_contract or estimate_contract_call. For TRC20-specific metadata (name, symbol, decimals, totalSupply) use get_token_info instead. No auth required.
| Argument | Type | Description |
|---|---|---|
| address* | string | Contract TRON address (T...) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Contract TRON address (T...)"
}
}
}Get your personal TRON address for TRX deposits. No memo is required. Requires MERX_API_KEY.
No arguments.
{
"type": "object",
"properties": {}
}Get order status by UUID. Aliases: get_order_status, check_order, order_status, order_details, fetch_order. Check the status and fill details of an existing order by its UUID. Returns current status (PENDING/FILLING/FILLED/PARTIAL/FAILED/CANCELLED), fill amounts, provider used, on-chain delegation tx hash if delivered. Use this to poll order progress after creating an order. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The order UUID. |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"description": "The order UUID."
}
}
}Historical price snapshots. No auth required.
| Argument | Type | Description |
|---|---|---|
| period | string | Time period (default: 24h). |
| provider | string | Filter by provider name. |
| resource | string | Filter by resource type. |
{
"type": "object",
"properties": {
"period": {
"enum": [
"1h",
"6h",
"24h",
"7d",
"30d"
],
"type": "string",
"description": "Time period (default: 24h)."
},
"provider": {
"type": "string",
"description": "Filter by provider name."
},
"resource": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string",
"description": "Filter by resource type."
}
}
}Get an executable MERX quote when resource, amount, fixed-grid duration and target_address are supplied. The response names the quoted provider. Without all four fields, returns raw provider observations labelled as non-executable analytics.
| Argument | Type | Description |
|---|---|---|
| amount | number | Exact resource amount for an executable quote. |
| duration | number | Executable duration/filter in seconds on the fixed grid, from 2 minutes through 24 hours. Omit it to see every raw provider tier; raw analytics may include longer non-orderable observations. |
| resource | string | Filter by resource type. Omit for all. |
| target_address | string | TRON recipient address for an executable quote. |
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "Exact resource amount for an executable quote."
},
"duration": {
"enum": [
120,
300,
600,
900,
1800,
3600,
10800,
21600,
86400
],
"type": "number",
"description": "Executable duration/filter in seconds on the fixed grid, from 2 minutes through 24 hours. Omit it to see every raw provider tier; raw analytics may include longer non-orderable observations."
},
"resource": {
"enum": [
"ENERGY",
"BANDWIDTH"
],
"type": "string",
"description": "Filter by resource type. Omit for all."
},
"target_address": {
"type": "string",
"description": "TRON recipient address for an executable quote."
}
}
}Get full details of a single standing order by its UUID. Returns trigger config, action params, budget, executions count, and status. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| order_id* | string | Standing order UUID (from list_standing_orders). |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"description": "Standing order UUID (from list_standing_orders)."
}
}
}Get a real swap quote from SunSwap V2. No auth required.
| Argument | Type | Description |
|---|---|---|
| amount* | string | Amount of source token to swap |
| slippage | number | Slippage tolerance in percent (default 1) |
| to_token* | string | Destination token symbol |
| from_token* | string | Source token symbol (TRX, USDT, USDC, etc.) |
{
"type": "object",
"required": [
"from_token",
"to_token",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Amount of source token to swap"
},
"slippage": {
"type": "number",
"description": "Slippage tolerance in percent (default 1)"
},
"to_token": {
"type": "string",
"description": "Destination token symbol"
},
"from_token": {
"type": "string",
"description": "Source token symbol (TRX, USDT, USDC, etc.)"
}
}
}Get TRC-20 token metadata: name, symbol, decimals, total supply. No auth required.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token symbol or contract address. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol or contract address."
}
}
}Get token price via SunSwap quote + CoinGecko USD rate. No auth required.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token symbol (USDT, USDC, SUN, etc.) |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol (USDT, USDC, SUN, etc.)"
}
}
}Look up a transaction by ID on TRON. No auth required.
| Argument | Type | Description |
|---|---|---|
| tx_id* | string | Transaction ID (hash). |
{
"type": "object",
"required": [
"tx_id"
],
"properties": {
"tx_id": {
"type": "string",
"description": "Transaction ID (hash)."
}
}
}Get your Merx account transaction history. Requires MERX_API_KEY.
| Argument | Type | Description |
|---|---|---|
| period | string | Time period to query. Default: 30D. |
{
"type": "object",
"properties": {
"period": {
"enum": [
"7D",
"30D",
"90D"
],
"type": "string",
"description": "Time period to query. Default: 30D."
}
}
}Get TRC-20 token balance for an address. Supports symbol (USDT, USDC) or contract address. No auth required.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token symbol (USDT, USDC) or contract address. |
| address* | string | TRON address to query. |
{
"type": "object",
"required": [
"address",
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol (USDT, USDC) or contract address."
},
"address": {
"type": "string",
"description": "TRON address to query."
}
}
}Quick TRX balance for a TRON address. No auth required.
| Argument | Type | Description |
|---|---|---|
| address* | string | TRON address (T...). |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "TRON address (T...)."
}
}
}Get current TRX price from CoinGecko. No auth required.
| Argument | Type | Description |
|---|---|---|
| currency | string | Fiat currency code (default: usd). |
{
"type": "object",
"properties": {
"currency": {
"type": "string",
"description": "Fiat currency code (default: usd)."
}
}
}List all monitors you created with create_monitor, optionally filtered by status (ACTIVE/CANCELLED). Each row shows the full monitor UUID (pass to cancel_monitor), monitor type, target address, and status. Note: the Target column will be empty for monitor types that do not have a single watched address — specifically price_alert and balance_threshold (when watching the API key holder rather than a third-party address). For delegation_expiry and address_activity monitors, Target will always be set. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| status | string | Filter by monitor status. |
{
"type": "object",
"properties": {
"status": {
"enum": [
"ACTIVE",
"CANCELLED"
],
"type": "string",
"description": "Filter by monitor status."
}
}
}List recent orders with optional status filter. Auth required.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max number of orders to return (default: 20). |
| status | string | Filter by order status. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max number of orders to return (default: 20)."
},
"status": {
"enum": [
"PENDING",
"FILLING",
"FILLED",
"PARTIAL",
"FAILED",
"CANCELLED"
],
"type": "string",
"description": "Filter by order status."
}
}
}List all Merx providers with types, durations, and availability. No authentication required.
No arguments.
{
"type": "object",
"properties": {}
}List all standing orders with optional status filter. Auth required.
| Argument | Type | Description |
|---|---|---|
| status | string | Filter by status. |
{
"type": "object",
"properties": {
"status": {
"enum": [
"ACTIVE",
"TRIGGERED",
"EXHAUSTED",
"EXPIRED",
"CANCELLED"
],
"type": "string",
"description": "Filter by status."
}
}
}Log in to an existing Merx account. No MERX_API_KEY needed.
| Argument | Type | Description |
|---|---|---|
| email* | string | Email address |
| password* | string | Password |
{
"type": "object",
"required": [
"email",
"password"
],
"properties": {
"email": {
"type": "string",
"description": "Email address"
},
"password": {
"type": "string",
"description": "Password"
}
}
}Look up a MERX invoice. Shows amount, recipient, token, and status. Agent must sign and broadcast the transfer separately (non-custodial).
| Argument | Type | Description |
|---|---|---|
| invoice_id* | string | Invoice UUID (e.g. eaa00c4e-1234-5678-90ab-cdef12345678) returned by create_invoice, or a full payment URL containing /pay/<uuid>. |
{
"type": "object",
"required": [
"invoice_id"
],
"properties": {
"invoice_id": {
"type": "string",
"description": "Invoice UUID (e.g. eaa00c4e-1234-5678-90ab-cdef12345678) returned by create_invoice, or a full payment URL containing /pay/<uuid>."
}
}
}Unavailable legacy resource-invoice payment. No transaction is sent. Fund your personal Merx account and use quoted resource orders instead.
| Argument | Type | Description |
|---|---|---|
| invoice_id* | string | Legacy invoice ID |
{
"type": "object",
"required": [
"invoice_id"
],
"properties": {
"invoice_id": {
"type": "string",
"description": "Legacy invoice ID"
}
}
}Call a view/pure function on a TRON smart contract. No auth or private key required.
| Argument | Type | Description |
|---|---|---|
| parameter | string | ABI-encoded parameter hex (optional). |
| contract_address* | string | Contract TRON address. |
| function_selector* | string | Function signature, e.g. "balanceOf(address)". |
{
"type": "object",
"required": [
"contract_address",
"function_selector"
],
"properties": {
"parameter": {
"type": "string",
"description": "ABI-encoded parameter hex (optional)."
},
"contract_address": {
"type": "string",
"description": "Contract TRON address."
},
"function_selector": {
"type": "string",
"description": "Function signature, e.g. \"balanceOf(address)\"."
}
}
}Register your TRON address as an agent on agent.merx.exchange. Required ONCE before using request_payment, create_invoice, watch_address, agent_status, or any other agent payment tool. Pass the TRON address you want to use as the on-chain identity for this API key. Idempotent — calling twice with the same key returns the existing registration. Auth required (API key).
| Argument | Type | Description |
|---|---|---|
| label | string | Optional human-readable label (max 64 chars) |
| tron_address* | string | Your TRON address (T...) that will receive payments and act as the agent identity. |
{
"type": "object",
"required": [
"tron_address"
],
"properties": {
"label": {
"type": "string",
"description": "Optional human-readable label (max 64 chars)"
},
"tron_address": {
"type": "string",
"description": "Your TRON address (T...) that will receive payments and act as the agent identity."
}
}
}Create a TRC20 payment request on TRON (USDT, USDC, USDD, or any TRC20). Returns a payment address. Fires webhook when payment arrives (<3 seconds). Use for receiving payments from other agents or humans. Requires agent registration first — call register_agent if you get AGENT_NOT_REGISTERED error.
| Argument | Type | Description |
|---|---|---|
| amount_usdt* | string | Amount in token units (e.g. "5.00") |
| description | string | What this payment is for |
| webhook_url | string | URL to notify on payment (optional) |
| tolerance_pct | number | Amount tolerance % (default 0 = exact) |
| timeout_seconds | number | Wait timeout (10-3600, default 300) |
{
"type": "object",
"required": [
"amount_usdt"
],
"properties": {
"amount_usdt": {
"type": "string",
"description": "Amount in token units (e.g. \"5.00\")"
},
"description": {
"type": "string",
"description": "What this payment is for"
},
"webhook_url": {
"type": "string",
"description": "URL to notify on payment (optional)"
},
"tolerance_pct": {
"type": "number",
"description": "Amount tolerance % (default 0 = exact)"
},
"timeout_seconds": {
"type": "number",
"description": "Wait timeout (10-3600, default 300)"
}
}
}Broadcast a signed TRON transaction with automatic energy optimization. If the target address lacks sufficient energy, MERX purchases the deficit at the best market price before broadcasting. One call: estimate, buy energy, wait for delegation, broadcast. Requires MERX_API_KEY with the "broadcast" scope, and a pre-signed transaction. Returns txid on success, refunds on timeout. NOTE: This endpoint is currently behind a feature flag and disabled by default in production. If you get a 503 MAINTENANCE error, use the manual flow instead: call ensure_resources to provision energy, then sign and broadcast the transaction with your own TronWeb client.
| Argument | Type | Description |
|---|---|---|
| signed_tx* | string | Hex-encoded signed TRON transaction |
| target_address* | string | TRON address that will execute the transaction (must match TX sender) |
{
"type": "object",
"required": [
"signed_tx",
"target_address"
],
"properties": {
"signed_tx": {
"type": "string",
"description": "Hex-encoded signed TRON transaction"
},
"target_address": {
"type": "string",
"description": "TRON address that will execute the transaction (must match TX sender)"
}
}
}Get on-chain transaction history for a TRON address. No auth required.
| Argument | Type | Description |
|---|---|---|
| type | string | Transaction type filter (default: all). |
| limit | number | Max results (default: 20). |
| address* | string | TRON address. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"type": {
"enum": [
"all",
"trx",
"trc20"
],
"type": "string",
"description": "Transaction type filter (default: all)."
},
"limit": {
"type": "number",
"description": "Max results (default: 20)."
},
"address": {
"type": "string",
"description": "TRON address."
}
}
}Set your Merx API key for this session. Unlocks all authenticated tools (trading, balance, orders). Use this if you already have an API key.
| Argument | Type | Description |
|---|---|---|
| api_key* | string | Your Merx API key (starts with sk_live_) |
{
"type": "object",
"required": [
"api_key"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your Merx API key (starts with sk_live_)"
}
}
}Set your TRON private key for this session. Address is derived automatically. Enables write tools: transfer_trx, transfer_trc20, approve_trc20, execute_swap, deposit_trx. Key stays local - never sent to Merx servers.
| Argument | Type | Description |
|---|---|---|
| private_key* | string | Your TRON private key (64 hex characters) |
{
"type": "object",
"required": [
"private_key"
],
"properties": {
"private_key": {
"type": "string",
"description": "Your TRON private key (64 hex characters)"
}
}
}Dry-run a multi-step operation (transfer, swap, buy resources, etc) without sending anything on-chain. Returns per-step energy and bandwidth estimates plus a total TRX cost. Use this to preview a plan before committing — for example, before transferring USDT to multiple recipients you can simulate to see the total energy cost. No auth required.
| Argument | Type | Description |
|---|---|---|
| steps* | array | Array of { action, params } steps to simulate. |
| resource_strategy | string | Resource acquisition strategy (default: batch_cheapest). |
{
"type": "object",
"required": [
"steps"
],
"properties": {
"steps": {
"type": "array",
"description": "Array of { action, params } steps to simulate."
},
"resource_strategy": {
"enum": [
"batch_cheapest",
"per_step",
"no_resources"
],
"type": "string",
"description": "Resource acquisition strategy (default: batch_cheapest)."
}
}
}Recommend a supported duration and return the executable MERX quote and quoted provider for a target address.
| Argument | Type | Description |
|---|---|---|
| use_case* | string | Your intended use case. |
| target_address* | string | TRON recipient address required for an executable offer. |
| transaction_count | number | Expected number of transactions (optional). |
{
"type": "object",
"required": [
"use_case",
"target_address"
],
"properties": {
"use_case": {
"enum": [
"single_transfer",
"batch_transfers",
"dapp_session",
"daily_operations"
],
"type": "string",
"description": "Your intended use case."
},
"target_address": {
"type": "string",
"description": "TRON recipient address required for an executable offer."
},
"transaction_count": {
"type": "number",
"description": "Expected number of transactions (optional)."
}
}
}Transfer TRC-20 tokens with automatic energy optimization. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token symbol (USDT, USDC) or contract address. |
| amount* | string | Amount to transfer (human-readable). |
| to_address* | string | Recipient TRON address. |
| resource_operation_id | string | Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent. |
{
"type": "object",
"required": [
"to_address",
"token",
"amount"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol (USDT, USDC) or contract address."
},
"amount": {
"type": "string",
"description": "Amount to transfer (human-readable)."
},
"to_address": {
"type": "string",
"description": "Recipient TRON address."
},
"resource_operation_id": {
"type": "string",
"description": "Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent."
}
}
}Send TRX to an address. Checks bandwidth, buys via Merx if needed. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.
| Argument | Type | Description |
|---|---|---|
| amount_trx* | string | Amount of TRX to send. |
| to_address* | string | Recipient TRON address. |
| resource_operation_id | string | Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent. |
{
"type": "object",
"required": [
"to_address",
"amount_trx"
],
"properties": {
"amount_trx": {
"type": "string",
"description": "Amount of TRX to send."
},
"to_address": {
"type": "string",
"description": "Recipient TRON address."
},
"resource_operation_id": {
"type": "string",
"description": "Optional stable ID for resource purchases. Reuse on retries; this does not make the token transfer itself idempotent."
}
}
}Validate a TRON address format and check on-chain status. No auth required.
| Argument | Type | Description |
|---|---|---|
| address* | string | TRON address to validate. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "TRON address to validate."
}
}
}Block until an order reaches a terminal state (FILLED, PARTIAL, FAILED, or CANCELLED) by polling get_order at fixed intervals. Use this right after create_order when you need to confirm the energy/bandwidth has actually been delegated on-chain before sending the next transaction. Returns the final order details including the on-chain delegation tx hash. Auth required.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The order UUID returned by create_order. |
| timeout_sec | number | Maximum time to wait in seconds (default: 60, max: 300). |
| poll_interval_sec | number | How often to check status in seconds (default: 3, min: 1). |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"description": "The order UUID returned by create_order."
},
"timeout_sec": {
"type": "number",
"description": "Maximum time to wait in seconds (default: 60, max: 300)."
},
"poll_interval_sec": {
"type": "number",
"description": "How often to check status in seconds (default: 3, min: 1)."
}
}
}Watch any TRON address for TRC20 transfers (USDT, USDC, USDD, or any token). Fires webhook on each matching transfer. Persistent - runs 24/7 even when conversation ends.
| Argument | Type | Description |
|---|---|---|
| address* | string | TRON address to watch (T...) |
| ttl_hours | number | Watch duration in hours (1-720, default 24) |
| event_types | array | Event types to watch |
| webhook_url* | string | Webhook URL for notifications |
| min_amount_usdt | string | Minimum amount filter (default "0") |
{
"type": "object",
"required": [
"address",
"webhook_url"
],
"properties": {
"address": {
"type": "string",
"description": "TRON address to watch (T...)"
},
"ttl_hours": {
"type": "number",
"description": "Watch duration in hours (1-720, default 24)"
},
"event_types": {
"type": "array",
"items": {
"enum": [
"usdt_incoming",
"usdt_outgoing",
"trx_incoming"
],
"type": "string"
},
"description": "Event types to watch"
},
"webhook_url": {
"type": "string",
"description": "Webhook URL for notifications"
},
"min_amount_usdt": {
"type": "string",
"description": "Minimum amount filter (default \"0\")"
}
}
}Withdraw TRX or USDT from your Merx account to an external TRON address. The "amount" parameter is interpreted in the currency specified by "currency" — i.e. for currency=TRX it is TRX units, for currency=USDT it is USDT units. (The legacy parameter "amount_trx" is still accepted as an alias for backwards compatibility, but is misleading when currency is USDT — prefer "amount" in new code.) Requires MERX_API_KEY.
| Argument | Type | Description |
|---|---|---|
| amount | string | Amount to withdraw, in units of the chosen currency. E.g. "100" with currency=TRX = 100 TRX, "100" with currency=USDT = 100 USDT. |
| address* | string | Destination TRON address (starts with T). |
| currency | string | Currency to withdraw. Default: TRX. |
| amount_trx | string | DEPRECATED alias for "amount" — kept for backwards compatibility. Pass "amount" instead in new code. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"amount": {
"type": "string",
"description": "Amount to withdraw, in units of the chosen currency. E.g. \"100\" with currency=TRX = 100 TRX, \"100\" with currency=USDT = 100 USDT."
},
"address": {
"type": "string",
"description": "Destination TRON address (starts with T)."
},
"currency": {
"enum": [
"TRX",
"USDT"
],
"type": "string",
"description": "Currency to withdraw. Default: TRX."
},
"amount_trx": {
"type": "string",
"description": "DEPRECATED alias for \"amount\" — kept for backwards compatibility. Pass \"amount\" instead in new code."
}
}
}| function_selector |
| string |
| Function selector (custom). |
{
"type": "object",
"required": [
"operation"
],
"properties": {
"amount": {
"type": "string",
"description": "Token amount (as string)."
},
"operation": {
"enum": [
"trc20_transfer",
"trc20_approve",
"trx_transfer",
"custom"
],
"type": "string",
"description": "Transaction type."
},
"parameter": {
"type": "string",
"description": "ABI-encoded parameter (custom)."
},
"to_address": {
"type": "string",
"description": "Recipient TRON address."
},
"from_address": {
"type": "string",
"description": "Sender TRON address."
},
"token_address": {
"type": "string",
"description": "TRC20 contract address."
},
"contract_address": {
"type": "string",
"description": "Contract address (custom)."
},
"function_selector": {
"type": "string",
"description": "Function selector (custom)."
}
}
}