Skip to content
fxapis logo

fxapis MCP server

Which servers in the official MCP registry are fxapis's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-21

← Back to fxapis

Whose server it is
  • Registry namecom.fxapis/mt5verified in the MCP registry

The registry name sits under fxapis.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-21
  • Stateanswerschecked 2026-10-21
  • Tools29
  • Server calls itselffxapis
  • Server version1.1.0
  • Protocol version2025-06-18

On 2026-10-21 the server answered initialize and tools/list without a sign-in. First answer in 256 ms.

Should an agent connect itNot proven either way yet
  • Its tools do every use case we checked: send one trade to many MT5 accounts at once; read positions and deals for risk checks.
  • Checked on 2 of the 7 days it takes to judge reliability.

Once connected

  • For "send one trade to many MT5 accounts at once", the likely first call is place_multi_account_order.
  • modify_position, cancel_order, cancel_multi_account_order change data without a sign-in: anyone with the address can call them.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 2, the first on 2026-10-21
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 2 so far
  • What an agent can do with it2 of 2 use cases
  • Answeredmeasuring2 of the 7 daily checks it takes to print a share
  • Median first answer252 ms
  • Space in an agent's context≈ 9,921 tokensthe definitions of all its tools (29), which an agent carries on every turn
  • Tool definitionsA · 99 of 100
  • Typed results29 of 29 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 1 of 29

What an agent can do with it

  • can do · send one trade to many MT5 accounts at once
  • not sure · copy a strategy onto follower accounts with sized volumes
  • can do · read positions and deals for risk checks

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: modify_position, cancel_order, cancel_multi_account_order

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers29 tools · read 2026-10-21
  • get_workspace

    This connection's workspace: its plan, the plan's limits and features, and whether trading is switched off. Call it first when unsure what the user can do. Example: {}

  • get_usage

    This month's usage against the plan, and its cost so far in minor units (9900 is $99.00). Over quota opening is refused, closing never is. Example: {}

  • list_accounts

    The workspace's MT5 accounts with id, login, server, state and environment (demo or live); use the id, not the login, everywhere else. Only `ready` accounts trade, so bring the others online first. Example: {"limit": 25}

  • get_account

    One account: login, broker, state, environment, and its last-read balance, equity and free margin. Example: {"account_id": "<id from list_accounts>"}

  • get_account_status

    Just an account's state, cheap enough to poll every few seconds after bring_accounts_online until `ready`. States invalid_credentials, needs_2fa, needs_certificate and trading_disabled need the user, so stop polling. Example…

  • get_account_figures

    Balance, equity, margin, free margin and margin level as decimal strings in the account currency, read every 15 s while online. Set fresh to ask the terminal now (the account must be `ready`). Example: {"account_id": "<id>", "fresh": true}

  • bring_accounts_online

    Starts each account's MT5 terminal in the cloud and logs it in; poll get_account_status until `ready`. Places no trades and is safe to repeat. Example: {"account_ids": ["<id>"]}

  • take_account_offline

    Stops an account's terminal; open positions and their stops stay at the broker. Refused while an order is in flight. Example: {"account_id": "<id>"}

  • list_positions

    Open positions on one account as last observed; brokerPositionId is what close_position and modify_position take. Pages with limit and cursor. Example: {"account_id": "<id>"}

  • list_instruments

    Markets named once (XAUUSD, US30, BTCUSD) whatever each broker calls them. list_account_instruments gives one account's own symbol for each. Example: {"category": "metals"}

  • search_broker_servers

    MT5 broker servers matching a broker or server name, servers seen working on fxapis first. A server not listed can still be used. Example: {"query": "icmarkets"}

  • list_account_instruments

    Each instrument's symbol on this account's broker: mapped, ambiguous (with candidates) or missing. Trade the mapped symbol. Example: {"account_id": "<id>", "query": "XAU"}

  • get_market_hours

    Whether a market is open now on this account's broker, and when it next opens or closes, in UTC. A broker holiday missing from its schedule still refuses orders. Example: {"account_id": "<id>", "instrument": "XAUUSD"}

  • get_quotes

    Live bid and ask for up to 20 symbols or instruments from this account's broker; a closed market answers its last price with marketOpen false. The account must be online. Example: {"account_id": "<id>", "instruments": ["EURUSD"]}

  • list_orders

    Orders placed through fxapis, newest first, for one account or all; state `unknown` means still being confirmed, so never resend those. Pages with cursor. Example: {"state": "unknown"}

  • get_order

    The authoritative record of one order: what was asked, the broker's answer, fill volume and price. Poll it after ORDER_UNRESOLVED until it leaves `unknown`. Example: {"order_id": "<id>", "include_deals": true}

  • list_deals

    An account's deal history as the broker recorded it, newest first, including stops that fired, swaps and manual trades. Realised profit is here. Example: {"account_id": "<id>", "since": "2026-10-01T00:00:00Z"}

  • calculate

    The margin an order would need, or its profit between two prices, as the broker computes it; opens nothing. The account must be online. Example: {"account_id": "<id>", "kind": "margin", "symbol": "EURUSD", "side": "buy", "volume": "0.10"…

  • place_market_order

    Opens a position at market on the user's real broker account (or demo) and waits for the broker; confirm account, symbol, side and volume with the user first. On ORDER_UNRESOLVED never resend, poll get_order. Example: {"account_id"…

  • place_pending_order

    Places a limit or stop order on the user's real broker account (or demo) that waits at the broker; success means working, not filled. Confirm it with the user first. Example: {"account_id": "<id>", "symbol": "EURUSD", "side": "buy"…

  • close_position

    Closes a position on the user's real broker account (or demo), whole or by volume. Sent twice it opens the opposite position, so reuse an idempotency_key only to retry the same close. Example: {"account_id": "<id>", "position_id"…

  • modify_position

    Moves a position's stop loss or take profit on the user's real broker account (or demo); null removes a level. Remove a stop loss only when the user asks. Example: {"account_id": "<id>", "position_id": "<brokerPositionId>", "stop_loss"…

  • cancel_order

    Cancels a pending order on the user's real broker account (or demo) that has not triggered. If it triggered there is a position to close instead. Example: {"order_id": "<id>", "idempotency_key": "<new uuid>"}

  • list_multi_account_orders

    Recent multi-account orders (one trade on many accounts), each with its per-account result. Pages with limit and cursor. Example: {}

  • get_multi_account_order

    One multi-account order and each account's result; poll it after placing one. An account left `unresolved` must not be resent, so poll its order instead. Example: {"multi_account_order_id": "<id>"}

  • place_multi_account_order

    Places the same market order on many of the user's real broker accounts (or demo) at once and returns at once; follow it with get_multi_account_order. Confirm the accounts, symbol, side and volume with the user first. Example…

  • cancel_multi_account_order

    Calls off a multi-account order on the user's real broker accounts (or demo) before anything is sent. Once orders went out, close the positions instead. Example: {"multi_account_order_id": "<id>", "idempotency_key": "<new uuid>"}

  • get_account_overview

    One account in one call: state, environment, balance and equity, and its largest open positions with their total P/L. Start here when asked how an account is doing. Example: {"account_id": "<id>"}

  • get_symbol_snapshot

    One symbol on one account in one call: its specification, live quote, whether the market is open, and the margin for a volume. Use it before proposing a trade. Example: {"account_id": "<id>", "instrument": "XAUUSD", "volume": "0.10"…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "mt5": {
      "type": "http",
      "url": "https://api.fxapis.com/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http fxapis https://api.fxapis.com/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://api.fxapis.com/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.