# MERX - TRON Resource Exchange (remote · merx.exchange)

TRON energy exchange for AI agents. 54 tools, 30 prompts, 21 resources. A2A + ACP.

- Trust score: 67/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `merx.exchange`: 67/100 (this document), [markdown](https://verifymcp.io/servers/exchange-merx-mcp/merx.md), [page](https://verifymcp.io/servers/exchange-merx-mcp/merx)
- npm · `merx-mcp`: 68/100, [markdown](https://verifymcp.io/servers/exchange-merx-mcp/merx-mcp.md), [page](https://verifymcp.io/servers/exchange-merx-mcp/merx-mcp)

## Channel facts

- Endpoint: `https://merx.exchange/mcp/sse`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.5`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (transfer_trx).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 83/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 6138 tokens (~76/item across 80 items; 66 tools + 14 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http exchange-merx-mcp https://merx.exchange/mcp/sse
```

### Codex

```toml
[mcp_servers.exchange-merx-mcp]
url = "https://merx.exchange/mcp/sse"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "exchange-merx-mcp": {
      "type": "remote",
      "url": "https://merx.exchange/mcp/sse",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add exchange-merx-mcp --url https://merx.exchange/mcp/sse --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  exchange-merx-mcp:
    url: "https://merx.exchange/mcp/sse"
```

### Other

```json
{
  "mcpServers": {
    "exchange-merx-mcp": {
      "type": "http",
      "url": "https://merx.exchange/mcp/sse"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 65, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 65, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 63)

First indexed and scored.

## MCP tools (66)

### `get_prices` (~164 tokens)

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.

Input parameters:

- `duration` (number): 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.
- `resource` (string): Filter by resource type. Omit for all.

### `get_best_price` (~169 tokens)

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.

Input parameters:

- `amount` (number): Amount of resource units needed.
- `resource` (string, required): Resource type.

### `analyze_prices` (~36 tokens)

Market price analysis with trends and recommendations. No auth required.

Input parameters:

- `resource` (string): Filter by resource type. Omit for all.

### `get_price_history` (~54 tokens)

Historical price snapshots. No auth required.

Input parameters:

- `period` (string): Time period (default: 24h).
- `provider` (string): Filter by provider name.
- `resource` (string): Filter by resource type.

### `compare_providers` (~39 tokens)

Side-by-side provider comparison with prices and availability. No auth required.

Input parameters:

- `resource` (string): Filter by resource type. Omit for all.

### `estimate_transaction_cost` (~256 tokens)

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.

Input parameters:

- `amount` (string): Token amount (as string).
- `contract_address` (string): Contract address (custom).
- `from_address` (string): Sender TRON address.
- `function_selector` (string): Function selector (custom).
- `operation` (string, required): Transaction type.
- `parameter` (string): ABI-encoded parameter (custom).
- `to_address` (string): Recipient TRON address.
- `token_address` (string): TRC20 contract address.

### `check_address_resources` (~42 tokens)

Check energy, bandwidth, and TRX balance for any TRON address. No auth required.

Input parameters:

- `address` (string, required): TRON address (starts with T).

### `create_order` (~130 tokens)

Buy energy or bandwidth on Merx. Routed to cheapest provider. Auth required.

Input parameters:

- `amount` (number, required): Amount of resource units (min 65000 for ENERGY, 300 for BANDWIDTH).
- `duration_sec` (number, required): Rental duration in seconds (e.g. 300, 3600, 86400, 2592000).
- `max_price_sun` (number): Optional max price in SUN/unit. Order fails if no provider is cheaper.
- `resource_type` (string, required): Resource type to purchase.
- `target_address` (string, required): TRON address to receive delegated resources.

### `get_order` (~110 tokens)

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).

Input parameters:

- `order_id` (string, required): The order UUID.

### `list_orders` (~48 tokens)

List recent orders with optional status filter. Auth required.

Input parameters:

- `limit` (number): Max number of orders to return (default: 20).
- `status` (string): Filter by order status.

### `ensure_resources` (~92 tokens)

Declarative resource provisioning. Checks current resources on target address and purchases only what is missing. Auth required.

Input parameters:

- `bandwidth_minimum` (number): Minimum bandwidth the address should have.
- `duration_sec` (number): Rental duration in seconds (default: 3600).
- `energy_minimum` (number): Minimum energy the address should have.
- `target_address` (string, required): TRON address to provision resources for.

### `wait_for_delegation` (~149 tokens)

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.

Input parameters:

- `order_id` (string, required): The order UUID returned by create_order.
- `poll_interval_sec` (number): How often to check status in seconds (default: 3, min: 1).
- `timeout_sec` (number): Maximum time to wait in seconds (default: 60, max: 300).

### `get_balance` (~29 tokens)

Get your Merx account balance (TRX, USDT, locked). Requires MERX_API_KEY.

### `get_deposit_info` (~25 tokens)

Get your Merx deposit address and memo. Requires MERX_API_KEY.

### `get_transaction_history` (~40 tokens)

Get your Merx account transaction history. Requires MERX_API_KEY.

Input parameters:

- `period` (string): Time period to query. Default: 30D.

### `explain_concept` (~183 tokens)

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.

Input parameters:

- `topic` (string, required): 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.

### `suggest_duration` (~48 tokens)

Recommend a rental duration based on your use case. No authentication required.

Input parameters:

- `transaction_count` (number): Expected number of transactions (optional).
- `use_case` (string, required): Your intended use case.

### `calculate_savings` (~55 tokens)

Calculate savings from renting energy vs burning TRX. No authentication required.

Input parameters:

- `operation` (string): Operation type. Default: trc20_transfer.
- `transaction_count` (number): Number of transactions. Default: 1.

### `list_providers` (~26 tokens)

List all Merx providers with types, durations, and availability. No authentication required.

### `get_account_info` (~122 tokens)

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.

Input parameters:

- `address` (string, required): TRON address (T...).

### `get_trx_balance` (~37 tokens)

Quick TRX balance for a TRON address. No auth required.

Input parameters:

- `address` (string, required): TRON address (T...).

### `get_trc20_balance` (~70 tokens)

Get TRC-20 token balance for an address. Supports symbol (USDT, USDC) or contract address. No auth required.

Input parameters:

- `address` (string, required): TRON address to query.
- `token` (string, required): Token symbol (USDT, USDC) or contract address.

### `get_transaction` (~34 tokens)

Look up a transaction by ID on TRON. No auth required.

Input parameters:

- `tx_id` (string, required): Transaction ID (hash).

### `get_block` (~40 tokens)

Get TRON block info by number (or latest if omitted). No auth required.

Input parameters:

- `block_number` (number): Block number. Omit for latest.

### `get_chain_parameters` (~33 tokens)

Get TRON network parameters (energy fee, bandwidth cost, etc.) with Merx price comparison. No auth required.

### `convert_address` (~50 tokens)

Convert TRON address between base58 (T...) and hex (41...) formats. No auth required.

Input parameters:

- `address` (string, required): TRON address in base58 (T...) or hex (41...).

### `get_trx_price` (~38 tokens)

Get current TRX price from CoinGecko. No auth required.

Input parameters:

- `currency` (string): Fiat currency code (default: usd).

### `validate_address` (~36 tokens)

Validate a TRON address format and check on-chain status. No auth required.

Input parameters:

- `address` (string, required): TRON address to validate.

### `search_transaction_history` (~62 tokens)

Get on-chain transaction history for a TRON address. No auth required.

Input parameters:

- `address` (string, required): TRON address.
- `limit` (number): Max results (default: 20).
- `type` (string): Transaction type filter (default: all).

### `transfer_trx` (~65 tokens)

Send TRX to an address. Checks bandwidth, buys via Merx if needed. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.

Input parameters:

- `amount_trx` (string, required): Amount of TRX to send.
- `to_address` (string, required): Recipient TRON address.

### `transfer_trc20` (~77 tokens)

Transfer TRC-20 tokens with automatic energy optimization. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.

Input parameters:

- `amount` (string, required): Amount to transfer (human-readable).
- `to_address` (string, required): Recipient TRON address.
- `token` (string, required): Token symbol (USDT, USDC) or contract address.

### `approve_trc20` (~73 tokens)

Approve TRC-20 spending allowance. Signs and broadcasts on-chain. Requires TRON_PRIVATE_KEY.

Input parameters:

- `amount` (string, required): Allowance amount (human-readable, or "unlimited").
- `spender` (string, required): Spender TRON address.
- `token` (string, required): Token symbol or contract address.

### `get_token_info` (~42 tokens)

Get TRC-20 token metadata: name, symbol, decimals, total supply. No auth required.

Input parameters:

- `token` (string, required): Token symbol or contract address.

### `read_contract` (~73 tokens)

Call a view/pure function on a TRON smart contract. No auth or private key required.

Input parameters:

- `contract_address` (string, required): Contract TRON address.
- `function_selector` (string, required): Function signature, e.g. "balanceOf(address)".
- `parameter` (string): ABI-encoded parameter hex (optional).

### `estimate_contract_call` (~93 tokens)

Estimate energy and bandwidth cost for a smart contract call. Compares rental vs burn cost. No auth required.

Input parameters:

- `caller_address` (string): Caller TRON address for simulation (optional).
- `contract_address` (string, required): Contract TRON address.
- `function_selector` (string, required): Function signature, e.g. "transfer(address,uint256)".
- `parameter` (string): ABI-encoded parameter hex (optional).

### `call_contract` (~99 tokens)

Execute a state-changing smart contract function. Estimates resources, buys via Merx if needed. Requires TRON_PRIVATE_KEY and TRON_ADDRESS.

Input parameters:

- `call_value_trx` (string): TRX to send with call (optional).
- `contract_address` (string, required): Contract TRON address.
- `function_selector` (string, required): Function signature, e.g. "stake(uint256)".
- `parameter` (string): ABI-encoded parameter hex (optional).

### `get_contract_info` (~100 tokens)

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.

Input parameters:

- `address` (string, required): Contract TRON address (T...)

### `get_swap_quote` (~87 tokens)

Get a real swap quote from SunSwap V2. No auth required.

Input parameters:

- `amount` (string, required): Amount of source token to swap
- `from_token` (string, required): Source token symbol (TRX, USDT, USDC, etc.)
- `slippage` (number): Slippage tolerance in percent (default 1)
- `to_token` (string, required): Destination token symbol

### `execute_swap` (~87 tokens)

Execute a token swap on SunSwap V2. Requires TRON_PRIVATE_KEY.

Input parameters:

- `amount` (string, required): Amount of source token to swap
- `from_token` (string, required): Source token symbol (TRX, USDT, USDC, etc.)
- `slippage` (number): Slippage tolerance in percent (default 1)
- `to_token` (string, required): Destination token symbol

### `get_token_price` (~46 tokens)

Get token price via SunSwap quote + CoinGecko USD rate. No auth required.

Input parameters:

- `token` (string, required): Token symbol (USDT, USDC, SUN, etc.)

### `create_account` (~54 tokens)

Create a new Merx account, generate an API key, and get deposit info. No auth needed.

Input parameters:

- `email` (string, required): Email address for the account
- `password` (string, required): Password (min 8 characters)

### `login` (~40 tokens)

Log in to an existing Merx account. No MERX_API_KEY needed.

Input parameters:

- `email` (string, required): Email address
- `password` (string, required): Password

### `set_api_key` (~60 tokens)

Set your Merx API key for this session. Unlocks all authenticated tools (trading, balance, orders). Use this if you already have an API key.

Input parameters:

- `api_key` (string, required): Your Merx API key (starts with sk_live_)

### `set_private_key` (~77 tokens)

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.

Input parameters:

- `private_key` (string, required): Your TRON private key (64 hex characters)

### `deposit_trx` (~44 tokens)

Deposit TRX to your Merx account. Requires MERX_API_KEY + TRON_PRIVATE_KEY.

Input parameters:

- `amount_trx` (string, required): Amount of TRX to deposit

### `enable_auto_deposit` (~149 tokens)

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.

Input parameters:

- `deposit_amount_trx` (string, required): Amount of TRX per deposit
- `max_daily_deposits` (number): Max deposits per day (default 5)
- `threshold_trx` (string, required): Balance threshold in TRX

### `pay_invoice` (~135 tokens)

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.

Input parameters:

- `invoice_id` (string, required): Invoice ID to pay

### `create_paid_order` (~73 tokens)

Create a zero-registration order via x402 pay-per-use. Requires TRON_PRIVATE_KEY.

Input parameters:

- `amount` (number, required): Amount of resource units
- `duration_sec` (number, required): Duration in seconds
- `resource_type` (string, required): Resource type
- `target_address` (string, required): TRON address to receive resources

### `execute_intent` (~157 tokens)

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.

Input parameters:

- `dry_run` (boolean): If true, simulate only without executing (default: false).
- `resource_strategy` (string): Resource acquisition strategy (default: batch_cheapest).
- `steps` (array, required): Array of { action, params } steps to execute.

### `simulate` (~110 tokens)

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.

Input parameters:

- `resource_strategy` (string): Resource acquisition strategy (default: batch_cheapest).
- `steps` (array, required): Array of { action, params } steps to simulate.

### `create_standing_order` (~148 tokens)

Create a server-side standing order with trigger-based automation. Auth required.

Input parameters:

- `action_params` (object, required): Action parameters: { resource_type, amount, duration_sec, target_address }.
- `action_type` (string, required): Action to perform when triggered.
- `budget_trx` (string, required): Maximum budget in TRX (converted to SUN internally).
- `expires_at` (string): ISO 8601 expiration date (optional).
- `max_executions` (number, required): Maximum number of times this order can execute.
- `trigger_params` (object, required): Trigger parameters: { resource, threshold_sun } or { cron }.
- `trigger_type` (string, required): Condition that triggers the order.

### `list_standing_orders` (~32 tokens)

List all standing orders with optional status filter. Auth required.

Input parameters:

- `status` (string): Filter by status.

### `get_standing_order` (~60 tokens)

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).

Input parameters:

- `order_id` (string, required): Standing order UUID (from list_standing_orders).

### `cancel_standing_order` (~60 tokens)

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).

Input parameters:

- `order_id` (string, required): Standing order UUID to cancel.

### `create_monitor` (~264 tokens)

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).

Input parameters:

- `monitor_type` (string, required): Type of monitor to create.
- `notify` (object): Notification config: { webhook?: boolean, telegram_chat_id?: string }. Defaults to { webhook: true } if omitted.
- `params` (object, required): Type-specific params. delegation_expiry: { alert_before_sec, auto_renew, resource_type }. balance_threshold: { resource: "TRX"|"ENERGY"|"BANDWIDTH", below: number }. price_alert: { resource: "ENERGY"…
- `target_address` (string): TRON address to monitor. Required for delegation_expiry, balance_threshold, address_activity. Not used for price_alert.

### `list_monitors` (~122 tokens)

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).

Input parameters:

- `status` (string): Filter by monitor status.

### `cancel_monitor` (~40 tokens)

Cancel an active monitor by its UUID. The monitor stops firing notifications. Auth required (API key).

Input parameters:

- `monitor_id` (string, required): Monitor UUID to cancel.

### `withdraw` (~216 tokens)

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.

Input parameters:

- `address` (string, required): Destination TRON address (starts with T).
- `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.
- `amount_trx` (string): DEPRECATED alias for "amount" — kept for backwards compatibility. Pass "amount" instead in new code.
- `currency` (string): Currency to withdraw. Default: TRX.

### `compile_policy` (~161 tokens)

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.

Input parameters:

- `address` (string): TRON address this policy applies to (optional)
- `apply` (boolean): Set to true to create the standing orders. Default false (preview only).
- `instruction` (string, required): Natural language description of the desired automation policy

### `resource_broadcast` (~178 tokens)

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.

Input parameters:

- `signed_tx` (string, required): Hex-encoded signed TRON transaction
- `target_address` (string, required): TRON address that will execute the transaction (must match TX sender)

### `register_agent` (~128 tokens)

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).

Input parameters:

- `label` (string): Optional human-readable label (max 64 chars)
- `tron_address` (string, required): Your TRON address (T...) that will receive payments and act as the agent identity.

### `request_payment` (~160 tokens)

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.

Input parameters:

- `amount_usdt` (string, required): Amount in token units (e.g. "5.00")
- `description` (string): What this payment is for
- `timeout_seconds` (number): Wait timeout (10-3600, default 300)
- `tolerance_pct` (number): Amount tolerance % (default 0 = exact)
- `webhook_url` (string): URL to notify on payment (optional)

### `lookup_invoice` (~90 tokens)

Look up a MERX invoice. Shows amount, recipient, token, and status. Agent must sign and broadcast the transfer separately (non-custodial).

Input parameters:

- `invoice_id` (string, required): Invoice UUID (e.g. eaa00c4e-1234-5678-90ab-cdef12345678) returned by create_invoice, or a full payment URL containing /pay/<uuid>.

### `create_invoice` (~87 tokens)

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).

Input parameters:

- `amount_usdt` (string, required): Amount in USDT
- `description` (string): What the invoice is for
- `expires_in` (number): Expiry in seconds (60-86400, default 3600)

### `watch_address` (~127 tokens)

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.

Input parameters:

- `address` (string, required): TRON address to watch (T...)
- `event_types` (array): Event types to watch
- `min_amount_usdt` (string): Minimum amount filter (default "0")
- `ttl_hours` (number): Watch duration in hours (1-720, default 24)
- `webhook_url` (string, required): Webhook URL for notifications

### `agent_status` (~91 tokens)

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.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/exchange-merx-mcp/merx#diagnostics

## Score history

- 2026-08-03: 67
- 2026-08-02: 66
- 2026-08-01: 66
- 2026-07-31: 65
- 2026-07-30: 65
- 2026-07-29: 65
- 2026-07-28: 64
- 2026-07-27: 63
- 2026-07-26: 63

## Links

- Remote endpoint: https://merx.exchange/mcp/sse
- Repository: https://github.com/Hovsteder/merx-mcp
- Changelog RSS feed: https://verifymcp.io/servers/exchange-merx-mcp/merx/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/exchange-merx-mcp/merx/changelog.json
- HTML version of this page: https://verifymcp.io/servers/exchange-merx-mcp/merx
