MERX - TRON Resource Exchange
TRON energy exchange for AI agents. 54 tools, 30 prompts, 21 resources. A2A + ACP.
使うべきか
品質と安全性
検出事項(8)
- HIGH
- MEDIUMget_order 内
- LOWanalyze_prices 内
- LOWget_price_history 内
- LOWcompare_providers 内
- LOWcreate_order 内
- LOWsuggest_duration 内
- LOWget_transaction 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"merx-mcp"
]
}
}
}実行可能なパッケージ
1.0.5stdioリモートエンドポイント
https://merx.exchange/mcp/ssestreamable-httpできること
ツール一覧
ツール(66)
🟢get_prices(resource, duration)
Get current energy and bandwidth prices from all Merx providers, sorted by best (minimum) price across all duration tiers. Each provider lists ALL its duration tiers (5min/1h/1d/7d/30d etc) — short rentals are usually more expensive per unit than long ones, so always check tier-by-tier. Optionally filter by exact duration in seconds. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"resource": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Filter by resource type. Omit for all."
},
"duration": {
"type": "number",
"description": "Filter to providers offering this exact duration in seconds (e.g. 3600 for 1h, 86400 for 1d, 604800 for 7d, 2592000 for 30d). Omit to see all tiers."
}
}
}🟢get_best_price(resource, amount)
Quick lookup of the single cheapest provider for a resource type, with optional minimum amount filter. CAVEAT: this returns a single representative price per provider, not broken down by duration tier — short rentals (5min) and long rentals (30 days) have very different per-unit prices and this tool does not distinguish between them. For an accurate per-tier comparison, use get_prices(duration=N) where N is the exact rental duration in seconds (e.g. 3600 for 1h, 86400 for 1d, 2592000 for 30d). Use get_best_price only when you need the absolute floor price as a quick sanity-check. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"resource": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Resource type."
},
"amount": {
"type": "number",
"description": "Amount of resource units needed."
}
},
"required": [
"resource"
]
}🟢analyze_prices(resource)
Market price analysis with trends and recommendations. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"resource": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Filter by resource type. Omit for all."
}
}
}🟢get_price_history(resource, provider, period)
Historical price snapshots. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"resource": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Filter by resource type."
},
"provider": {
"type": "string",
"description": "Filter by provider name."
},
"period": {
"type": "string",
"enum": [
"1h",
"6h",
"24h",
"7d",
"30d"
],
"description": "Time period (default: 24h)."
}
}
}🟢compare_providers(resource)
Side-by-side provider comparison with prices and availability. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"resource": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Filter by resource type. Omit for all."
}
}
}🟢estimate_transaction_cost(operation, from_address, to_address, token_address, amount, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"operation": {
"type": "string",
"enum": [
"trc20_transfer",
"trc20_approve",
"trx_transfer",
"custom"
],
"description": "Transaction type."
},
"from_address": {
"type": "string",
"description": "Sender TRON address."
},
"to_address": {
"type": "string",
"description": "Recipient TRON address."
},
"token_address": {
"type": "string",
"description": "TRC20 contract address."
},
"amount": {
"type": "string",
"description": "Token amount (as string)."
},
"contract_address": {
"type": "string",
"description": "Contract address (custom)."
},
"function_selector": {
"type": "string",
"description": "Function selector (custom)."
},
"parameter": {
"type": "string",
"description": "ABI-encoded parameter (custom)."
}
},
"required": [
"operation"
]
}🟢check_address_resources(address)
Check energy, bandwidth, and TRX balance for any TRON address. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address (starts with T)."
}
},
"required": [
"address"
]
}🟡create_order(resource_type, amount, duration_sec, target_address, max_price_sun)
Buy energy or bandwidth on Merx. Routed to cheapest provider. Auth required.
入力スキーマ
{
"type": "object",
"properties": {
"resource_type": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Resource type to purchase."
},
"amount": {
"type": "number",
"description": "Amount of resource units (min 65000 for ENERGY, 300 for BANDWIDTH)."
},
"duration_sec": {
"type": "number",
"description": "Rental duration in seconds (e.g. 300, 3600, 86400, 2592000)."
},
"target_address": {
"type": "string",
"description": "TRON address to receive delegated resources."
},
"max_price_sun": {
"type": "number",
"description": "Optional max price in SUN/unit. Order fails if no provider is cheaper."
}
},
"required": [
"resource_type",
"amount",
"duration_sec",
"target_address"
]
}🟢get_order(order_id)
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).
入力スキーマ
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "The order UUID."
}
},
"required": [
"order_id"
]
}🟢list_orders(status, limit)
List recent orders with optional status filter. Auth required.
入力スキーマ
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"PENDING",
"FILLING",
"FILLED",
"PARTIAL",
"FAILED",
"CANCELLED"
],
"description": "Filter by order status."
},
"limit": {
"type": "number",
"description": "Max number of orders to return (default: 20)."
}
}
}⚪ensure_resources(target_address, energy_minimum, bandwidth_minimum, duration_sec)
Declarative resource provisioning. Checks current resources on target address and purchases only what is missing. Auth required.
入力スキーマ
{
"type": "object",
"properties": {
"target_address": {
"type": "string",
"description": "TRON address to provision resources for."
},
"energy_minimum": {
"type": "number",
"description": "Minimum energy the address should have."
},
"bandwidth_minimum": {
"type": "number",
"description": "Minimum bandwidth the address should have."
},
"duration_sec": {
"type": "number",
"description": "Rental duration in seconds (default: 3600)."
}
},
"required": [
"target_address"
]
}🟡wait_for_delegation(order_id, timeout_sec, poll_interval_sec)
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.
入力スキーマ
{
"type": "object",
"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)."
}
},
"required": [
"order_id"
]
}🟢get_balance
Get your Merx account balance (TRX, USDT, locked). Requires MERX_API_KEY.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢get_deposit_info
Get your Merx deposit address and memo. Requires MERX_API_KEY.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢get_transaction_history(period)
Get your Merx account transaction history. Requires MERX_API_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"period": {
"type": "string",
"enum": [
"7D",
"30D",
"90D"
],
"description": "Time period to query. Default: 30D."
}
}
}🟢explain_concept(topic)
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.
入力スキーマ
{
"type": "object",
"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."
}
},
"required": [
"topic"
]
}🟢suggest_duration(use_case, transaction_count)
Recommend a rental duration based on your use case. No authentication required.
入力スキーマ
{
"type": "object",
"properties": {
"use_case": {
"type": "string",
"enum": [
"single_transfer",
"batch_transfers",
"dapp_session",
"daily_operations",
"weekly_operations",
"monthly_budget"
],
"description": "Your intended use case."
},
"transaction_count": {
"type": "number",
"description": "Expected number of transactions (optional)."
}
},
"required": [
"use_case"
]
}🟢calculate_savings(operation, transaction_count)
Calculate savings from renting energy vs burning TRX. No authentication required.
入力スキーマ
{
"type": "object",
"properties": {
"operation": {
"type": "string",
"enum": [
"trc20_transfer",
"trc20_approve",
"trx_transfer"
],
"description": "Operation type. Default: trc20_transfer."
},
"transaction_count": {
"type": "number",
"description": "Number of transactions. Default: 1."
}
}
}🟢list_providers
List all Merx providers with types, durations, and availability. No authentication required.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢get_account_info(address)
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.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address (T...)."
}
},
"required": [
"address"
]
}🟢get_trx_balance(address)
Quick TRX balance for a TRON address. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address (T...)."
}
},
"required": [
"address"
]
}🟢get_trc20_balance(address, token)
Get TRC-20 token balance for an address. Supports symbol (USDT, USDC) or contract address. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address to query."
},
"token": {
"type": "string",
"description": "Token symbol (USDT, USDC) or contract address."
}
},
"required": [
"address",
"token"
]
}🟢get_transaction(tx_id)
Look up a transaction by ID on TRON. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"tx_id": {
"type": "string",
"description": "Transaction ID (hash)."
}
},
"required": [
"tx_id"
]
}🟢get_block(block_number)
Get TRON block info by number (or latest if omitted). No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"block_number": {
"type": "number",
"description": "Block number. Omit for latest."
}
}
}🟢get_chain_parameters
Get TRON network parameters (energy fee, bandwidth cost, etc.) with Merx price comparison. No auth required.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢convert_address(address)
Convert TRON address between base58 (T...) and hex (41...) formats. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address in base58 (T...) or hex (41...)."
}
},
"required": [
"address"
]
}🟢get_trx_price(currency)
Get current TRX price from CoinGecko. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"currency": {
"type": "string",
"description": "Fiat currency code (default: usd)."
}
}
}🟢validate_address(address)
Validate a TRON address format and check on-chain status. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address to validate."
}
},
"required": [
"address"
]
}🟢search_transaction_history(address, type, limit)
Get on-chain transaction history for a TRON address. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address."
},
"type": {
"type": "string",
"enum": [
"all",
"trx",
"trc20"
],
"description": "Transaction type filter (default: all)."
},
"limit": {
"type": "number",
"description": "Max results (default: 20)."
}
},
"required": [
"address"
]
}🔴transfer_trx(to_address, amount_trx)
Send TRX to an address. Checks bandwidth, buys via Merx if needed. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"to_address": {
"type": "string",
"description": "Recipient TRON address."
},
"amount_trx": {
"type": "string",
"description": "Amount of TRX to send."
}
},
"required": [
"to_address",
"amount_trx"
]
}🔴transfer_trc20(to_address, token, amount)
Transfer TRC-20 tokens with automatic energy optimization. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"to_address": {
"type": "string",
"description": "Recipient TRON address."
},
"token": {
"type": "string",
"description": "Token symbol (USDT, USDC) or contract address."
},
"amount": {
"type": "string",
"description": "Amount to transfer (human-readable)."
}
},
"required": [
"to_address",
"token",
"amount"
]
}🔴approve_trc20(token, spender, amount)
Approve TRC-20 spending allowance. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Token symbol or contract address."
},
"spender": {
"type": "string",
"description": "Spender TRON address."
},
"amount": {
"type": "string",
"description": "Allowance amount (human-readable, or \"unlimited\")."
}
},
"required": [
"token",
"spender",
"amount"
]
}🟢get_token_info(token)
Get TRC-20 token metadata: name, symbol, decimals, total supply. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Token symbol or contract address."
}
},
"required": [
"token"
]
}🟢read_contract(contract_address, function_selector, parameter)
Call a view/pure function on a TRON smart contract. No auth or private key required.
入力スキーマ
{
"type": "object",
"properties": {
"contract_address": {
"type": "string",
"description": "Contract TRON address."
},
"function_selector": {
"type": "string",
"description": "Function signature, e.g. \"balanceOf(address)\"."
},
"parameter": {
"type": "string",
"description": "ABI-encoded parameter hex (optional)."
}
},
"required": [
"contract_address",
"function_selector"
]
}🟢estimate_contract_call(contract_address, function_selector, parameter, caller_address)
Estimate energy and bandwidth cost for a smart contract call. Compares rental vs burn cost. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"contract_address": {
"type": "string",
"description": "Contract TRON address."
},
"function_selector": {
"type": "string",
"description": "Function signature, e.g. \"transfer(address,uint256)\"."
},
"parameter": {
"type": "string",
"description": "ABI-encoded parameter hex (optional)."
},
"caller_address": {
"type": "string",
"description": "Caller TRON address for simulation (optional)."
}
},
"required": [
"contract_address",
"function_selector"
]
}🔴call_contract(contract_address, function_selector, parameter, call_value_trx)
Execute a state-changing smart contract function. Estimates resources, buys via Merx if needed. Requires TRON_PRIVATE_KEY and TRON_ADDRESS.
入力スキーマ
{
"type": "object",
"properties": {
"contract_address": {
"type": "string",
"description": "Contract TRON address."
},
"function_selector": {
"type": "string",
"description": "Function signature, e.g. \"stake(uint256)\"."
},
"parameter": {
"type": "string",
"description": "ABI-encoded parameter hex (optional)."
},
"call_value_trx": {
"type": "string",
"description": "TRX to send with call (optional)."
}
},
"required": [
"contract_address",
"function_selector"
]
}🟢get_contract_info(address)
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.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Contract TRON address (T...)"
}
},
"required": [
"address"
]
}🟢get_swap_quote(from_token, to_token, amount, slippage)
Get a real swap quote from SunSwap V2. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"from_token": {
"type": "string",
"description": "Source token symbol (TRX, USDT, USDC, etc.)"
},
"to_token": {
"type": "string",
"description": "Destination token symbol"
},
"amount": {
"type": "string",
"description": "Amount of source token to swap"
},
"slippage": {
"type": "number",
"description": "Slippage tolerance in percent (default 1)"
}
},
"required": [
"from_token",
"to_token",
"amount"
]
}🔴execute_swap(from_token, to_token, amount, slippage)
Execute a token swap on SunSwap V2. Requires TRON_PRIVATE_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"from_token": {
"type": "string",
"description": "Source token symbol (TRX, USDT, USDC, etc.)"
},
"to_token": {
"type": "string",
"description": "Destination token symbol"
},
"amount": {
"type": "string",
"description": "Amount of source token to swap"
},
"slippage": {
"type": "number",
"description": "Slippage tolerance in percent (default 1)"
}
},
"required": [
"from_token",
"to_token",
"amount"
]
}🟢get_token_price(token)
Get token price via SunSwap quote + CoinGecko USD rate. No auth required.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Token symbol (USDT, USDC, SUN, etc.)"
}
},
"required": [
"token"
]
}🟡create_account(email, password)
Create a new Merx account, generate an API key, and get deposit info. No auth needed.
入力スキーマ
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address for the account"
},
"password": {
"type": "string",
"description": "Password (min 8 characters)"
}
},
"required": [
"email",
"password"
]
}⚪login(email, password)
Log in to an existing Merx account. No MERX_API_KEY needed.
入力スキーマ
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address"
},
"password": {
"type": "string",
"description": "Password"
}
},
"required": [
"email",
"password"
]
}🟡set_api_key(api_key)
Set your Merx API key for this session. Unlocks all authenticated tools (trading, balance, orders). Use this if you already have an API key.
入力スキーマ
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Your Merx API key (starts with sk_live_)"
}
},
"required": [
"api_key"
]
}🟡set_private_key(private_key)
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.
入力スキーマ
{
"type": "object",
"properties": {
"private_key": {
"type": "string",
"description": "Your TRON private key (64 hex characters)"
}
},
"required": [
"private_key"
]
}🔴deposit_trx(amount_trx)
Deposit TRX to your Merx account. Requires MERX_API_KEY + TRON_PRIVATE_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"amount_trx": {
"type": "string",
"description": "Amount of TRX to deposit"
}
},
"required": [
"amount_trx"
]
}⚪enable_auto_deposit(threshold_trx, deposit_amount_trx, max_daily_deposits)
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 to your Merx deposit address (memo-routed). For persistent auto-deposit you currently need to call this tool again at the start of each session.
入力スキーマ
{
"type": "object",
"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)"
}
},
"required": [
"threshold_trx",
"deposit_amount_trx"
]
}🔴pay_invoice(invoice_id)
Pay an x402 invoice by signing and broadcasting a TRX transfer to the invoice address, then verifying the payment with the facilitator. x402 (Coinbase + Cloudflare HTTP 402 standard) is the protocol AI agents use to pay APIs per call. Use this when you receive an invoice_id from a paywalled service or another agent. REQUIRES: TRON_PRIVATE_KEY in env (use set_private_key first) AND a valid invoice_id from create_invoice or x402 challenge response. The transfer is signed locally — your private key never leaves the MCP process.
入力スキーマ
{
"type": "object",
"properties": {
"invoice_id": {
"type": "string",
"description": "Invoice ID to pay"
}
},
"required": [
"invoice_id"
]
}🔴create_paid_order(resource_type, amount, duration_sec, target_address)
Create a zero-registration order via x402 pay-per-use. Requires TRON_PRIVATE_KEY.
入力スキーマ
{
"type": "object",
"properties": {
"resource_type": {
"type": "string",
"enum": [
"ENERGY",
"BANDWIDTH"
],
"description": "Resource type"
},
"amount": {
"type": "number",
"description": "Amount of resource units"
},
"duration_sec": {
"type": "number",
"description": "Duration in seconds"
},
"target_address": {
"type": "string",
"description": "TRON address to receive resources"
}
},
"required": [
"resource_type",
"amount",
"duration_sec",
"target_address"
]
}🔴execute_intent(steps, resource_strategy, dry_run)
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.
入力スキーマ
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"description": "Array of { action, params } steps to execute."
},
"resource_strategy": {
"type": "string",
"enum": [
"batch_cheapest",
"per_step",
"no_resources"
],
"description": "Resource acquisition strategy (default: batch_cheapest)."
},
"dry_run": {
"type": "boolean",
"description": "If true, simulate only without executing (default: false)."
}
},
"required": [
"steps"
]
}🟢simulate(steps, resource_strategy)
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.
入力スキーマ
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"description": "Array of { action, params } steps to simulate."
},
"resource_strategy": {
"type": "string",
"enum": [
"batch_cheapest",
"per_step",
"no_resources"
],
"description": "Resource acquisition strategy (default: batch_cheapest)."
}
},
"required": [
"steps"
]
}🟡create_standing_order(trigger_type, trigger_params, action_type, action_params, budget_trx, ...)
Create a server-side standing order with trigger-based automation. Auth required.
入力スキーマ
{
"type": "object",
"properties": {
"trigger_type": {
"type": "string",
"enum": [
"price_below",
"price_above",
"schedule",
"balance_below"
],
"description": "Condition that triggers the order."
},
"trigger_params": {
"type": "object",
"description": "Trigger parameters: { resource, threshold_sun } or { cron }."
},
"action_type": {
"type": "string",
"enum": [
"buy_resource",
"ensure_resources",
"notify_only"
],
"description": "Action to perform when triggered."
},
"action_params": {
"type": "object",
"description": "Action parameters: { resource_type, amount, duration_sec, target_address }."
},
"budget_trx": {
"type": "string",
"description": "Maximum budget in TRX (converted to SUN internally)."
},
"max_executions": {
"type": "number",
"description": "Maximum number of times this order can execute."
},
"expires_at": {
"type": "string",
"description": "ISO 8601 expiration date (optional)."
}
},
"required": [
"trigger_type",
"trigger_params",
"action_type",
"action_params",
"budget_trx",
"max_executions"
]
}🟢list_standing_orders(status)
List all standing orders with optional status filter. Auth required.
入力スキーマ
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"TRIGGERED",
"EXHAUSTED",
"EXPIRED",
"CANCELLED"
],
"description": "Filter by status."
}
}
}🟢get_standing_order(order_id)
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).
入力スキーマ
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Standing order UUID (from list_standing_orders)."
}
},
"required": [
"order_id"
]
}🔴cancel_standing_order(order_id)
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).
入力スキーマ
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Standing order UUID to cancel."
}
},
"required": [
"order_id"
]
}🟡create_monitor(monitor_type, target_address, params, notify)
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).
入力スキーマ
{
"type": "object",
"properties": {
"monitor_type": {
"type": "string",
"enum": [
"delegation_expiry",
"balance_threshold",
"price_alert",
"address_activity"
],
"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."
},
"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 }."
},
"notify": {
"type": "object",
"description": "Notification config: { webhook?: boolean, telegram_chat_id?: string }. Defaults to { webhook: true } if omitted."
}
},
"required": [
"monitor_type",
"params"
]
}🟢list_monitors(status)
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).
入力スキーマ
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"CANCELLED"
],
"description": "Filter by monitor status."
}
}
}🔴cancel_monitor(monitor_id)
Cancel an active monitor by its UUID. The monitor stops firing notifications. Auth required (API key).
入力スキーマ
{
"type": "object",
"properties": {
"monitor_id": {
"type": "string",
"description": "Monitor UUID to cancel."
}
},
"required": [
"monitor_id"
]
}🔴withdraw(address, amount, currency, amount_trx)
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.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Destination TRON address (starts with T)."
},
"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."
},
"currency": {
"type": "string",
"enum": [
"TRX",
"USDT"
],
"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."
}
},
"required": [
"address"
]
}🟡compile_policy(instruction, address, apply)
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.
入力スキーマ
{
"type": "object",
"properties": {
"instruction": {
"type": "string",
"description": "Natural language description of the desired automation policy"
},
"address": {
"type": "string",
"description": "TRON address this policy applies to (optional)"
},
"apply": {
"type": "boolean",
"description": "Set to true to create the standing orders. Default false (preview only)."
}
},
"required": [
"instruction"
]
}🔴resource_broadcast(signed_tx, target_address)
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.
入力スキーマ
{
"type": "object",
"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)"
}
},
"required": [
"signed_tx",
"target_address"
]
}🟡register_agent(tron_address, label)
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).
入力スキーマ
{
"type": "object",
"properties": {
"tron_address": {
"type": "string",
"description": "Your TRON address (T...) that will receive payments and act as the agent identity."
},
"label": {
"type": "string",
"description": "Optional human-readable label (max 64 chars)"
}
},
"required": [
"tron_address"
]
}🟡request_payment(amount_usdt, description, timeout_seconds, tolerance_pct, webhook_url)
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.
入力スキーマ
{
"type": "object",
"properties": {
"amount_usdt": {
"type": "string",
"description": "Amount in token units (e.g. \"5.00\")"
},
"description": {
"type": "string",
"description": "What this payment is for"
},
"timeout_seconds": {
"type": "number",
"description": "Wait timeout (10-3600, default 300)"
},
"tolerance_pct": {
"type": "number",
"description": "Amount tolerance % (default 0 = exact)"
},
"webhook_url": {
"type": "string",
"description": "URL to notify on payment (optional)"
}
},
"required": [
"amount_usdt"
]
}🟢lookup_invoice(invoice_id)
Look up a MERX invoice. Shows amount, recipient, token, and status. Agent must sign and broadcast the transfer separately (non-custodial).
入力スキーマ
{
"type": "object",
"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>."
}
},
"required": [
"invoice_id"
]
}🟡create_invoice(amount_usdt, description, expires_in)
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).
入力スキーマ
{
"type": "object",
"properties": {
"amount_usdt": {
"type": "string",
"description": "Amount in USDT"
},
"description": {
"type": "string",
"description": "What the invoice is for"
},
"expires_in": {
"type": "number",
"description": "Expiry in seconds (60-86400, default 3600)"
}
},
"required": [
"amount_usdt"
]
}⚪watch_address(address, event_types, min_amount_usdt, webhook_url, ttl_hours)
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.
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "TRON address to watch (T...)"
},
"event_types": {
"type": "array",
"items": {
"type": "string",
"enum": [
"usdt_incoming",
"usdt_outgoing",
"trx_incoming"
]
},
"description": "Event types to watch"
},
"min_amount_usdt": {
"type": "string",
"description": "Minimum amount filter (default \"0\")"
},
"webhook_url": {
"type": "string",
"description": "Webhook URL for notifications"
},
"ttl_hours": {
"type": "number",
"description": "Watch duration in hours (1-720, default 24)"
}
},
"required": [
"address",
"webhook_url"
]
}🟢agent_status
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.
入力スキーマ
{
"type": "object",
"properties": {}
}コミュニティ
エビデンス