{"name":"exchange.merx/mcp","slug":"merx-mcp","title":"MERX - TRON Resource Exchange","description":"TRON energy exchange for AI agents. 54 tools, 30 prompts, 21 resources. A2A + ACP.","url":"https://mcp.market/server/merx-mcp","rating":null,"grade":"B","score":73,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":17,"stars":3,"forks":0,"downloads_week":null,"last_push_at":"2026-04-08T19:36:19.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:00:49.280Z","last_ok_at":"2026-11-04T05:00:49.280Z","latency_ms":543},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/Hovsteder/merx-mcp","website":null,"version":"1.0.5","remotes":[{"type":"streamable-http","url":"https://merx.exchange/mcp/sse"}],"packages":[{"registryType":"npm","identifier":"merx-mcp","version":"1.0.5","transport":{"type":"stdio"},"environmentVariables":[{"description":"API key from merx.exchange. Unlocks trading, balance, standing orders, and monitors.","isSecret":true,"name":"MERX_API_KEY"},{"description":"TRON wallet private key for signing transactions. Never sent to any server. Enables transfers, swaps, and contract calls.","isSecret":true,"name":"TRON_PRIVATE_KEY"}]}],"tools":[{"name":"agent_status","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"analyze_prices","description":"Market price analysis with trends and recommendations. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"resource":{"type":"string","enum":["ENERGY","BANDWIDTH"],"description":"Filter by resource type. Omit for all."}}}},{"name":"approve_trc20","description":"Approve TRC-20 spending allowance. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"calculate_savings","description":"Calculate savings from renting energy vs burning TRX. No authentication required.","write_action":false,"price_micros":0,"input_schema":{"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."}}}},{"name":"call_contract","description":"Execute a state-changing smart contract function. Estimates resources, buys via Merx if needed. Requires TRON_PRIVATE_KEY and TRON_ADDRESS.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"cancel_monitor","description":"Cancel an active monitor by its UUID. The monitor stops firing notifications. Auth required (API key).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"Monitor UUID to cancel."}},"required":["monitor_id"]}},{"name":"cancel_standing_order","description":"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).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"order_id":{"type":"string","description":"Standing order UUID to cancel."}},"required":["order_id"]}},{"name":"check_address_resources","description":"Check energy, bandwidth, and TRX balance for any TRON address. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"TRON address (starts with T)."}},"required":["address"]}},{"name":"compare_providers","description":"Side-by-side provider comparison with prices and availability. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"resource":{"type":"string","enum":["ENERGY","BANDWIDTH"],"description":"Filter by resource type. Omit for all."}}}},{"name":"compile_policy","description":"Convert a natural language energy management policy into MERX automation. Creates standing orders and monitors based on your instructions.\n\nExamples:\n- \"Keep 500k energy on my wallet, buy when price is below 55 SUN, max 200 TRX/week\"\n- \"Buy energy every day at 6 AM UTC, 1 million units, for 24 hours\"\n- \"Alert me when my energy drops below 100k\"\n\nReturns a preview of what will be created. Set apply=true to execute.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"convert_address","description":"Convert TRON address between base58 (T...) and hex (41...) formats. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"TRON address in base58 (T...) or hex (41...)."}},"required":["address"]}},{"name":"create_account","description":"Create a new Merx account, generate an API key, and get deposit info. No auth needed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","description":"Email address for the account"},"password":{"type":"string","description":"Password (min 8 characters)"}},"required":["email","password"]}},{"name":"create_invoice","description":"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).","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"create_monitor","description":"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).","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"create_order","description":"Buy energy or bandwidth on Merx. Routed to cheapest provider. Auth required.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"create_paid_order","description":"Create a zero-registration order via x402 pay-per-use. Requires TRON_PRIVATE_KEY.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"create_standing_order","description":"Create a server-side standing order with trigger-based automation. Auth required.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"deposit_trx","description":"Deposit TRX to your Merx account. Requires MERX_API_KEY + TRON_PRIVATE_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"amount_trx":{"type":"string","description":"Amount of TRX to deposit"}},"required":["amount_trx"]}},{"name":"enable_auto_deposit","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"ensure_resources","description":"Declarative resource provisioning. Checks current resources on target address and purchases only what is missing. Auth required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"estimate_contract_call","description":"Estimate energy and bandwidth cost for a smart contract call. Compares rental vs burn cost. No auth required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"estimate_transaction_cost","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"execute_intent","description":"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.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"execute_swap","description":"Execute a token swap on SunSwap V2. Requires TRON_PRIVATE_KEY.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"explain_concept","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"get_account_info","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"TRON address (T...)."}},"required":["address"]}},{"name":"get_balance","description":"Get your Merx account balance (TRX, USDT, locked). Requires MERX_API_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_best_price","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"resource":{"type":"string","enum":["ENERGY","BANDWIDTH"],"description":"Resource type."},"amount":{"type":"number","description":"Amount of resource units needed."}},"required":["resource"]}},{"name":"get_block","description":"Get TRON block info by number (or latest if omitted). No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"block_number":{"type":"number","description":"Block number. Omit for latest."}}}},{"name":"get_chain_parameters","description":"Get TRON network parameters (energy fee, bandwidth cost, etc.) with Merx price comparison. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_contract_info","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"Contract TRON address (T...)"}},"required":["address"]}},{"name":"get_deposit_info","description":"Get your Merx deposit address and memo. Requires MERX_API_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_order","description":"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).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"order_id":{"type":"string","description":"The order UUID."}},"required":["order_id"]}},{"name":"get_price_history","description":"Historical price snapshots. No auth required.","write_action":false,"price_micros":0,"input_schema":{"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)."}}}},{"name":"get_prices","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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."}}}},{"name":"get_standing_order","description":"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).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"order_id":{"type":"string","description":"Standing order UUID (from list_standing_orders)."}},"required":["order_id"]}},{"name":"get_swap_quote","description":"Get a real swap quote from SunSwap V2. No auth required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"get_token_info","description":"Get TRC-20 token metadata: name, symbol, decimals, total supply. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Token symbol or contract address."}},"required":["token"]}},{"name":"get_token_price","description":"Get token price via SunSwap quote + CoinGecko USD rate. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Token symbol (USDT, USDC, SUN, etc.)"}},"required":["token"]}},{"name":"get_transaction","description":"Look up a transaction by ID on TRON. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tx_id":{"type":"string","description":"Transaction ID (hash)."}},"required":["tx_id"]}},{"name":"get_transaction_history","description":"Get your Merx account transaction history. Requires MERX_API_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"period":{"type":"string","enum":["7D","30D","90D"],"description":"Time period to query. Default: 30D."}}}},{"name":"get_trc20_balance","description":"Get TRC-20 token balance for an address. Supports symbol (USDT, USDC) or contract address. No auth required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"get_trx_balance","description":"Quick TRX balance for a TRON address. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"TRON address (T...)."}},"required":["address"]}},{"name":"get_trx_price","description":"Get current TRX price from CoinGecko. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"currency":{"type":"string","description":"Fiat currency code (default: usd)."}}}},{"name":"list_monitors","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["ACTIVE","CANCELLED"],"description":"Filter by monitor status."}}}},{"name":"list_orders","description":"List recent orders with optional status filter. Auth required.","write_action":false,"price_micros":0,"input_schema":{"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)."}}}},{"name":"list_providers","description":"List all Merx providers with types, durations, and availability. No authentication required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_standing_orders","description":"List all standing orders with optional status filter. Auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["ACTIVE","TRIGGERED","EXHAUSTED","EXPIRED","CANCELLED"],"description":"Filter by status."}}}},{"name":"login","description":"Log in to an existing Merx account. No MERX_API_KEY needed.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","description":"Email address"},"password":{"type":"string","description":"Password"}},"required":["email","password"]}},{"name":"lookup_invoice","description":"Look up a MERX invoice. Shows amount, recipient, token, and status. Agent must sign and broadcast the transfer separately (non-custodial).","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"pay_invoice","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"invoice_id":{"type":"string","description":"Invoice ID to pay"}},"required":["invoice_id"]}},{"name":"read_contract","description":"Call a view/pure function on a TRON smart contract. No auth or private key required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"register_agent","description":"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).","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"request_payment","description":"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.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"resource_broadcast","description":"Broadcast a signed TRON transaction with automatic energy optimization.\nIf the target address lacks sufficient energy, MERX purchases the deficit at the best\nmarket price before broadcasting. One call: estimate, buy energy, wait for delegation, broadcast.\n\nRequires MERX_API_KEY with the \"broadcast\" scope, and a pre-signed transaction.\nReturns txid on success, refunds on timeout.\n\nNOTE: This endpoint is currently behind a feature flag and disabled by default in production.\nIf you get a 503 MAINTENANCE error, use the manual flow instead: call ensure_resources to\nprovision energy, then sign and broadcast the transaction with your own TronWeb client.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"search_transaction_history","description":"Get on-chain transaction history for a TRON address. No auth required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"set_api_key","description":"Set your Merx API key for this session. Unlocks all authenticated tools (trading, balance, orders). Use this if you already have an API key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"type":"string","description":"Your Merx API key (starts with sk_live_)"}},"required":["api_key"]}},{"name":"set_private_key","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"private_key":{"type":"string","description":"Your TRON private key (64 hex characters)"}},"required":["private_key"]}},{"name":"simulate","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"suggest_duration","description":"Recommend a rental duration based on your use case. No authentication required.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"transfer_trc20","description":"Transfer TRC-20 tokens with automatic energy optimization. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"transfer_trx","description":"Send TRX to an address. Checks bandwidth, buys via Merx if needed. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"validate_address","description":"Validate a TRON address format and check on-chain status. No auth required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"TRON address to validate."}},"required":["address"]}},{"name":"wait_for_delegation","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"watch_address","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"withdraw","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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"]}}],"scan":{"score":73,"grade":"B","scanned_at":"2026-09-27T23:17:40.747Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T23:17:40.673Z","components":{"code":{"score":25,"max":25,"notes":["162 source files scanned"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2164ms"]},"poisoning":{"score":15,"max":15,"notes":["66 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 17 write-action tools with no auth"]},"maintenance":{"score":8,"max":15,"notes":["last push 172 days ago"]},"identity":{"score":5,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://merx.exchange/mcp/sse","reachable":true,"authRequired":false,"latencyMs":2164,"serverInfo":{"name":"merx","version":"2.0.0"}}],"packages":[{"registryType":"npm","identifier":"merx-mcp","version":"1.0.5","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":1,"publishedAt":"2026-04-02T18:54:04.514Z","repositoryUrl":"git+https://github.com/merx-exchange/merx-mcp.git"}],"repo":{"found":true,"owner":"Hovsteder","repo":"merx-mcp","archived":false,"pushedAt":"2026-04-08T19:36:19Z","stars":3,"forks":0,"openIssues":2,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/152806318?v=4","ownerCreatedAt":"2023-12-03T17:46:29Z","license":"MIT"},"icon":{"url":"https://merx.exchange/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":3,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-04-08T19:36:19.000Z","score":17}}}},"grade_history":[],"reviews":[]}