Changelog
Additive changes within v1 are listed here as they ship. Breaking changes come as a new version, announced here in advance.
2026-11-13 — Your AI assistant can link the part of a help article that answers the question
read_help_articlegives each of the article's sections with its own link (sections, each with itstitleandurl), so your assistant can send you straight to the part that answers your question.- Its
updatedis now a date,YYYY-MM-DD; it was written out, such as “13 November 2026”.
2026-11-13 — Your AI assistant can see what your keys did
- New MCP tool
get_activity, on every key: what the account's keys did, newest first. Every REST, stream and MCP call, refusals included, with when, which key, what it was, a summary (instrument, side, volume, ticket: never prices or anything written) and how it ended. A key that can read the account sees every key's calls; one that can't, its own. - The Developers page lists the same under Activity: the latest 100, or one key's. Repeats of the same read or refusal within 15 minutes share a row with their count. Rows are kept 180 days; see Activity.
2026-11-13 — Your AI assistant can ask JAFX for what it can't do yet, and hears the answer
- New MCP tool
request_feature, on every key: when you want something JAFX can't do yet, your assistant asks whether to send it, then sends JAFX's team what you wanted and why. JAFX's team reads every request and answers it; nothing is promised. At most 5 a day per account (429 feature_request_limit). - New MCP tool
list_feature_requests: the account's requests with their status (new,considering,planned,done,declined) and JAFX's reply. When JAFX answers, every account that asked gets a notification (feature_request_answered,feature_request_merged). - The Developers page lists your requests under Feature requests, below Notifications.
- Over MCP, a tool the server doesn't have answers
404 tool_not_foundas a tool error (it was a protocol error), and inputs a tool doesn't take422 invalid_requestas a problem document (it was plain text), each with anextline (see Errors).
2026-11-13 — AI apps connect with just the MCP address and a JAFX sign-in
- Claude (on the web, the desktop app and phones), ChatGPT, Claude Code, Cursor and VS Code connect to the MCP server with just its address and a JAFX sign-in (OAuth 2.1 with PKCE): the app opens a JAFX page where you sign in with your trading account, choose what it may do and its limits, and press Allow. No key to make or paste, and no
mcp-remotebridge for Claude Desktop. - On live accounts an app can read, or propose trades that wait for your Confirm; trading without asking is for demo accounts only. Connected apps show on the Developers page under Connected apps, with the same limits and switches as keys, and Disconnect stops one within seconds.
- New code
invalid_token(MCP only): an app's sign-in has expired or was ended. REST and the stream still take API keys only.
2026-11-13 — Your AI assistant is told what changed, and your account's state, when it connects
- New MCP tool
get_changelog, on every key: this page's entries, each with a note written for the assistant, that the key hasn't read yet (or all of them, withall). When there is something new, the assistant is told as it connects, andget_limitssays so too. - When an assistant connects, the server's instructions open with the account's state while it matters: the API session ends within 2 hours (with around-the-clock trading off) or has ended, JAFX has paused API trading, live API trading is off, the key expires within 7 days, or the daily loss stop is reached. Each line says what to tell you.
- The MCP tool
get_limitsalso returns those lines (account_state), the key'sexpires_at, today's loss against the daily loss stop (daily_loss) and what's new (notices). REST'sGET /meis unchanged.
2026-11-13 — Your AI assistant hears what happened while it was away
- New MCP tool
get_notifications, on every key: what happened on the account while the assistant wasn't connected, newest first. A proposal confirmed (and what its order did), rejected or expired; a key's daily loss stop reached or reset; a key suspended, resumed, revoked, given a new secret or about to expire; the API session ending or ended, and why; JAFX pausing or limiting API trading, or switching it back on; an order whose outcome was unknown, settled. - When an assistant connects, the first line of the server's instructions says how many notifications are new, and
get_limitscarries the same line in its new fieldnotices. - The Developers page lists the account's latest 20 under Notifications, with a dot on those you haven't seen there.
2026-11-13 — Your AI assistant reads JAFX's help centre and these docs, and has three checklists
- New MCP tools
search_helpandread_help_article, on every key: JAFX's help centre at jafx.com/help, for questions about deposits, withdrawals, verification, accounts and fees. The assistant is told to search it first and give you the article's link, never to guess about money or verification. Article text comes asuntrusted_content. - New MCP tool
get_docs, on every key: a page of these docs as text, by topic, as published for the version you are connected to. - Three MCP prompts, which clients such as Claude Code show as commands (
/jafx:check-before-trade):check-before-trade,review-my-accountandconnect-a-bot. They check risks and report facts; none suggests a trade. - The MCP tool
get_symbolstakessymbols, to read only those instruments. - Two new codes, from these tools only:
503 help_centre_unavailableand404 help_article_not_found(see Errors).
2026-11-13 — Your AI assistant sees its proposals, can stop API trading, and is told what to do after a refusal
- New MCP tool
list_proposals: the account's proposals, newest first, with therequest_ideach order tool answered and what became of it (pending, executed, rejected, expired …). The same list asGET /accounts/{account}/proposals; a key that can read the account sees every key's. - New MCP tool
stop_api_trading, on every key: Stop API trading now, as on the Developers page. No tool starts trading again: that stays a sign-in to JAFX Terminal, or Renew. - Every problem an MCP tool returns carries
next, one plain sentence on what to do next. REST answers are unchanged. 409 order_busy: retry with a newIdempotency-Key. The old one keeps the broker's refusal, so a retry with it gets the same answer (the docs said only "retry").
2026-11-04 — Keep your bots trading around the clock, and lock keys to your bot's address
- New on the Developers page: Keep my bots trading around the clock, off by default. With it on, JAFX keeps your trading password encrypted and signs your keys' session in again by itself, so they keep trading past the 24 hours. See Around the clock.
GET /meand the MCP toolget_limitsshowsession.renews_automatically. A newsession.ended_reason,password_refused: the trading account refused the saved password, so around-the-clock trading stopped.- Creating a key that can trade or propose now says plainly who can use a key that leaks, recommends locking it to your bot's IP addresses (Only allow these IP addresses, next to that warning), and needs a tick to leave it open to any address. The key list shows each key's IP lock. See Keeping your key safe. Nothing changes for existing keys.
2026-11-04 — Orders go through your account's own session
- Your keys' orders now go through your account's own trading session, the way JAFX Terminal places a manual trade, so the broker records them as your own requests. Proposals you confirm in the terminal do too.
- A key trades for 24 hours after each sign-in to JAFX Terminal (or Renew on its Developers page), whether or not the terminal stays open. After that, orders answer the new code
409 sign_in_requiredand nothing is sent; retry with the sameIdempotency-Keyafter signing in. See Trading sessions. GET /meand the MCP toolget_limitsshow the session undersession(active,expires_at).GET /statuslists per server what needs the sign-in (sign_in_needed_for), and a server'sstatecan beready.- The Developers page shows until when your keys can trade, with Renew and Stop API trading now.
429 broker_throttlednow frees theIdempotency-Key: the broker kept nothing, so the same key goes through afterRetry-After.
2026-11-03 — Retries stay safe even if JAFX loses track of the first call
- Every attempt under one
Idempotency-Keynow reaches the broker as the same request. So a retry gets the original order back from the broker even when JAFX lost its own record of the first call, for example in a server crash, instead of relying on that record alone. That answer has a newrequest_idand noIdempotent-Replayedheader, but the originalticket. Nothing changes in what you send. - A key stays bound to its answer for 72 hours; after that, the same key places a new order. See Idempotency.
2026-10-31 — Every error is a problem document
- Requests refused before they reach the API used to get an HTML page. They now get a problem document with an
X-Request-Idheader and arequest_id, like every other answer: a body over 64 KB (413 invalid_request), too many requests from one IP address (429 rate_limited), and the few seconds while the API restarts (503 service_unavailable). - New code
service_unavailable(503, withRetry-After): the Trading API is restarting, for example for an update, cannot be reached, or did not answer in time. Wait forRetry-Afterand retry the same call; retry a write with the sameIdempotency-Key. - More than 50 requests a second from one IP address (bursts of 100, all keys together) now answer
429 rate_limitedwithRetry-After, instead of a503without it. See Limits. - Request IDs are opaque strings starting with
req_; their length can vary.
2026-10-31 — Keys for Live Server and Demo Server accounts
- Keys are created for accounts on the Live Server and the Demo Server. A key's mode follows its account's server:
jafx_demo_…for Demo Server accounts,jafx_live_…for Live Server accounts. GET /meand the MCP toolget_limitsname the key'sserver(liveordemo).GET /statusshows the broker connection of each server underbroker.servers.- The instrument list, quotes, candles and streams no longer show the load-test instruments (“Load test pair …”).
2026-10-31 — Fixes
- Streaming: resubscribing with
since_seqnow replays the order events that happened while you were disconnected, for up to 5 minutes, or answersresync_required. Before, a program whose only connection had dropped got neither. - Streaming: order event sequence numbers are now 13-digit numbers that keep growing across server restarts, so a
seqfrom before a restart can't be taken for a newer one. Store them as 64-bit integers. - A request body that is not JSON (
400) or is over 64 KB (413) now gets anX-Request-Idheader and arequest_id, like every other answer. 503 broker_unavailablenow always comes with aRetry-Afterheader.
2026-10-13 — v1
The first version of the API.
- REST API
https://terminal.jafx.com/trading-api/v1: instruments, quotes and candles; account summary, positions, pending orders, closed trades and balance operations; market and pending orders, stop and target changes, full and partial closes, cancels; request status and proposals. - Streaming
wss://terminal.jafx.com/trading-api/v1/stream: quotes, candles, account and order channels, with replay after reconnecting. - MCP server
https://terminal.jafx.com/trading-api/mcp: 14 tools for AI agents, filtered by the key's scopes. - API keys: scopes, per-key limits, proposals (confirm mode), rolling and revocation, created in the web terminal under Developers.
- Demo and live accounts; live keys start with tight limits and confirm mode on.