{"name":"Broker API Hub: cTrader Open API","page":"https://openbrokerapi.com/platforms/ctrader","file":"https://openbrokerapi.com/data/platforms/ctrader.json","generated":"2026-10-12","generatedBasis":"The newest checked date among the records in this file. It is not the date the file was built.","newestReading":"2026-10-12","newestReadingBasis":"The date the page prints as Newest reading: the newest checked date on the record itself, on its claims, on its limit and endpoint records and, for a platform, on a broker's note that it offers the platform. generated can be later, because this file also holds error, change and MCP records.","licence":"Mixed. Each section states its own licence. Sections from the registers are CC BY 4.0. Sections from the broker, platform, endpoint and error records are all rights reserved and are given for reference.","licenceUrl":"https://creativecommons.org/licenses/by/4.0/","cite":"Broker API Hub, cTrader Open API, openbrokerapi.com/platforms/ctrader, newest check 2026-10-12","note":"Independent and unofficial. An empty list or a null means this site holds no record. It does not mean that none exists. Every record carries its own source and checked date: cite those where you rely on a single figure.","identity":{"licence":"All rights reserved","leftOut":"The tagline, which is this site's own writing. It is on the page.","id":"ctrader-open-api","slug":"ctrader","name":"cTrader Open API","kind":"platform","nativeApi":null,"apiFamily":["Protobuf over TCP/WebSocket","JSON over TCP/WebSocket","Python package","C# package"],"products":["CFD","FX"],"availability":"active","legalEntity":null,"regulator":null,"docsUrl":"https://help.ctrader.com/open-api/","baseUrls":{"live":"live.ctraderapi.com:5035 (Protobuf), :5036 (JSON)","demo":"demo.ctraderapi.com:5035 (Protobuf), :5036 (JSON)"},"orderTypes":["Market","Limit","Stop","Market range","Stop limit","Guaranteed stop loss","Trailing stop loss"],"sources":[{"url":"https://help.ctrader.com/open-api/creating-new-app/","title":"cTrader Help: Creating a new app","checked":"2026-09-20"},{"url":"https://help.ctrader.com/open-api/","title":"cTrader Open API documentation","checked":"2026-10-12"},{"url":"https://help.ctrader.com/open-api/proxies-endpoints/","title":"Proxies and endpoints","checked":"2026-09-22"},{"url":"https://help.ctrader.com/open-api/account-authentication/","title":"cTrader Open API: account authentication","checked":"2026-09-23"},{"url":"https://help.ctrader.com/open-api/messages/","title":"Messages","checked":"2026-09-20"},{"url":"https://github.com/spotware/OpenApiPy","title":"spotware/OpenApiPy","checked":"2026-09-22"},{"url":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","title":"Spotware OpenApiMessages.proto","checked":"2026-09-22"},{"url":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","title":"Spotware OpenApiModelMessages.proto","checked":"2026-09-22"},{"url":"https://ctrader.com/mcp-server-for-trading","title":"cTrader: MCP server for trading","checked":"2026-09-22"},{"url":"https://www.spotware.com/news/ctrader-store-affiliate-programme/","title":"cTrader Store Affiliate Programme, Spotware","checked":"2026-09-25"},{"url":"https://ctrader.com/faq/open-api/","title":"cTrader Open API and MCP FAQ","checked":"2026-09-20"},{"url":"https://help.ctrader.com/ctrader-ai-agent-connect/","title":"cTrader MCP servers","checked":"2026-09-20"},{"url":"https://help.ctrader.com/open-api/connection/","title":"Connection, cTrader Open API","checked":"2026-09-20"},{"url":"https://pypi.org/project/ctrader-open-api/","title":"ctrader-open-api on PyPI","checked":"2026-09-20"}],"lastChecked":"2026-10-12","review":"ported"},"claims":{"licence":"All rights reserved","records":[{"key":"access_route","value":"Register an app at openapi.ctrader.com; Spotware reviews new apps, so describe your use case in detail.","status":"verified","sources":[{"url":"https://help.ctrader.com/open-api/creating-new-app/","title":"Creating a new application","checked":"2026-09-20"}]},{"key":"eligibility","value":"Supported by all trading accounts of any cTrader affiliated brokers by default, which means both demo and live accounts.","status":"verified","sources":[{"url":"https://help.ctrader.com/open-api/","title":"cTrader Open API","checked":"2026-09-20"}]},{"key":"demo","value":"Yes: separate demo endpoint; demo and live environments are fully separated.","status":"verified","sources":[{"url":"https://help.ctrader.com/open-api/proxies-endpoints/","title":"Proxies and endpoints","checked":"2026-09-21"}]},{"key":"auth","value":"OAuth 2.0 authorisation code flow: the auth code lives 1 minute, the access token 30 days. Scopes are accounts, which is read only, and trading, which is full.","status":"verified","sources":[{"url":"https://help.ctrader.com/open-api/account-authentication/","title":"Account authentication","checked":"2026-09-20"}]},{"key":"streaming","value":"Yes: spot quotes, depth of market and execution events on the same connection, at 50 requests a second per connection (5 for historical data) with a heartbeat every 10 seconds. Host live1.p.ctrader.com port 5035, SSL mandatory for TCP and WebSocket. Spotware recommends at most two connections, one demo and one live, each carrying an unlimited number of accounts of that type.","status":"verified","sources":[{"url":"https://help.ctrader.com/open-api/messages/","title":"Messages","checked":"2026-09-20"}]},{"key":"history_depth","value":"Trend bars and ticks by from/to timestamp with optional count; deals by range with maxRows. Cash flow history max 1 week per request.","status":"verified","sources":[{"url":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","title":"Spotware OpenApiMessages.proto","checked":"2026-09-22"}]},{"key":"rate_limits","value":"50 requests a second per connection for requests that are not for historical data, and 5 requests a second per connection for historical data requests, as stated on the cTrader Open API documentation home page, re-read 12 Oct 2026.","status":"verified","sources":[{"url":"https://help.ctrader.com/open-api/","title":"cTrader Open API documentation","checked":"2026-10-12"}]}]},"platformApis":{"licence":"All rights reserved","records":[]},"sdks":{"licence":"All rights reserved","records":[{"name":"OpenApiPy (ctrader-open-api)","language":"Python","url":"https://github.com/spotware/OpenApiPy","official":true,"source":"https://pypi.org/project/ctrader-open-api/","checked":"2026-09-20"},{"name":"OpenAPI.Net","language":"C#","url":"https://github.com/spotware/OpenAPI.Net","official":true,"source":"https://github.com/spotware/OpenAPI.Net","checked":null},{"name":"cTrader MCP server","language":"MCP","url":"https://ctrader.com/mcp-server-for-trading","official":true,"source":"https://ctrader.com/mcp-server-for-trading","checked":"2026-09-18"},{"name":"cTrader Remote and Local MCP servers","language":"Any MCP client","url":"https://www.spotware.com/news/ctrader-launches-official-mcp-servers/","official":true,"source":"https://ctrader.com/faq/open-api","checked":"2026-09-19"},{"name":"spotware/ctrader-skills (Agent Skills)","language":"Agent Skills","url":"https://github.com/spotware/ctrader-skills","official":true,"source":"https://github.com/spotware/ctrader-skills","checked":"2026-09-19"}]},"endpoints":{"licence":"All rights reserved","leftOut":"Parameters, request bodies, example responses and notes. Each is on the endpoint's page.","records":[]},"calls":{"licence":"All rights reserved","what":"Functions of a language binding and messages of a wire protocol: calls that are not HTTP requests, so they have no method and no path and are in no OpenAPI file.","leftOut":"Descriptions of arguments and fields, return values, samples and notes. Each is on the call's page.","records":[{"kind":"message","interface":"cTrader Open API","name":"ProtoHeartbeatEvent","group":"Connection","summary":"A message with no content that shows the connection is alive. The server sends it when nothing else is being sent, and a client can send it to keep a connection open through a quiet spell of more than 30 seconds.","role":"event","payloadType":{"name":"HEARTBEAT_EVENT","id":51},"replies":[],"fields":[{"name":"payloadType","type":"ProtoPayloadType","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/common-messages/#protoheartbeatevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiCommonMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protoheartbeatevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAccountAuthReq","group":"Authorisation","summary":"Opens a session for one trading account on a connection where the application is already authorised, using the access token granted for that account.","role":"request","payloadType":{"name":"PROTO_OA_ACCOUNT_AUTH_REQ","id":2102},"replies":["ProtoOAAccountAuthRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"accessToken","type":"string","required":true}],"tasks":["session"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaaccountauthreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountauthreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAccountAuthRes","group":"Authorisation","summary":"Confirms that the session for the trading account is open, naming the account.","role":"response","payloadType":{"name":"PROTO_OA_ACCOUNT_AUTH_RES","id":2103},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaaccountauthres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountauthres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAccountDisconnectEvent","group":"Connection","summary":"Sent when the server drops the session of one trading account. The account has to be authorised again before it can be used.","role":"event","payloadType":{"name":"PROTO_OA_ACCOUNT_DISCONNECT_EVENT","id":2164},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaaccountdisconnectevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountdisconnectevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAccountLogoutReq","group":"Authorisation","summary":"Asks to end the session of one trading account on this connection.","role":"request","payloadType":{"name":"PROTO_OA_ACCOUNT_LOGOUT_REQ","id":2162},"replies":["ProtoOAAccountLogoutRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":["session"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaaccountlogoutreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountlogoutreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAccountLogoutRes","group":"Authorisation","summary":"Acknowledges the logout request. The definition says the logout itself is complete only when ProtoOAAccountDisconnectEvent arrives.","role":"response","payloadType":{"name":"PROTO_OA_ACCOUNT_LOGOUT_RES","id":2163},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaaccountlogoutres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountlogoutres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAccountsTokenInvalidatedEvent","group":"Connection","summary":"Sent when the server ends the session of particular trading accounts while the connection and its other account sessions carry on. The definition gives the causes: the account or the cTrader ID was deleted, or the token was refreshed or revoked.","role":"event","payloadType":{"name":"PROTO_OA_ACCOUNTS_TOKEN_INVALIDATED_EVENT","id":2147},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountIds","type":"repeated int64","required":false},{"name":"reason","type":"string","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaaccountstokeninvalidatedevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountstokeninvalidatedevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAmendOrderReq","group":"Orders and positions","summary":"Changes a pending order: its size, its prices, its expiry or its stop loss and take profit. The definition allows it only where the access token has trade permission for the account.","role":"request","payloadType":{"name":"PROTO_OA_AMEND_ORDER_REQ","id":2109},"replies":["ProtoOAExecutionEvent"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"orderId","type":"int64","required":true},{"name":"volume","type":"int64","required":false},{"name":"limitPrice","type":"double","required":false},{"name":"stopPrice","type":"double","required":false},{"name":"expirationTimestamp","type":"int64","required":false},{"name":"stopLoss","type":"double","required":false},{"name":"takeProfit","type":"double","required":false},{"name":"slippageInPoints","type":"int32","required":false},{"name":"relativeStopLoss","type":"int64","required":false},{"name":"relativeTakeProfit","type":"int64","required":false},{"name":"guaranteedStopLoss","type":"bool","required":false},{"name":"trailingStopLoss","type":"bool","required":false},{"name":"stopTriggerMethod","type":"ProtoOAOrderTriggerMethod","required":false}],"tasks":["amend-order"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaamendorderreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaamendorderreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAAmendPositionSLTPReq","group":"Orders and positions","summary":"Changes the stop loss and take profit of an open position. The definition allows it only where the access token has trade permission for the account.","role":"request","payloadType":{"name":"PROTO_OA_AMEND_POSITION_SLTP_REQ","id":2110},"replies":["ProtoOAExecutionEvent"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"positionId","type":"int64","required":true},{"name":"stopLoss","type":"double","required":false},{"name":"takeProfit","type":"double","required":false},{"name":"guaranteedStopLoss","type":"bool","required":false},{"name":"trailingStopLoss","type":"bool","required":false},{"name":"stopLossTriggerMethod","type":"ProtoOAOrderTriggerMethod","required":false}],"tasks":["amend-order"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaamendpositionsltpreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaamendpositionsltpreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAApplicationAuthReq","group":"Authorisation","summary":"Authorises the application on a newly opened connection, with the client id and client secret it was registered with. An account session can be opened only on a connection where this has been done.","role":"request","payloadType":{"name":"PROTO_OA_APPLICATION_AUTH_REQ","id":2100},"replies":["ProtoOAApplicationAuthRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"clientId","type":"string","required":true},{"name":"clientSecret","type":"string","required":true}],"tasks":["session"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaapplicationauthreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaapplicationauthreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAApplicationAuthRes","group":"Authorisation","summary":"Confirms that the application is authorised on this connection. It carries nothing beyond its payload type.","role":"response","payloadType":{"name":"PROTO_OA_APPLICATION_AUTH_RES","id":2101},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaapplicationauthres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaapplicationauthres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOACancelOrderReq","group":"Orders and positions","summary":"Cancels a pending order. The definition allows it only where the access token has trade permission for the account.","role":"request","payloadType":{"name":"PROTO_OA_CANCEL_ORDER_REQ","id":2108},"replies":["ProtoOAExecutionEvent"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"orderId","type":"int64","required":true}],"tasks":["cancel-order"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooacancelorderreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooacancelorderreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAClientDisconnectEvent","group":"Connection","summary":"Sent when the server ends the connection with the application. Every trading account session on the connection ends with it.","role":"event","payloadType":{"name":"PROTO_OA_CLIENT_DISCONNECT_EVENT","id":2148},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"reason","type":"string","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaclientdisconnectevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaclientdisconnectevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAClosePositionReq","group":"Orders and positions","summary":"Closes an open position, in full or in part. The definition allows it only where the access token has trade permission for the account.","role":"request","payloadType":{"name":"PROTO_OA_CLOSE_POSITION_REQ","id":2111},"replies":["ProtoOAExecutionEvent"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"positionId","type":"int64","required":true},{"name":"volume","type":"int64","required":true}],"tasks":["close-position"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaclosepositionreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaclosepositionreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOADealListReq","group":"Orders and positions","summary":"Asks for the account's deals in a period of time. A deal is one execution, so this is the trade history.","role":"request","payloadType":{"name":"PROTO_OA_DEAL_LIST_REQ","id":2133},"replies":["ProtoOADealListRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"fromTimestamp","type":"int64","required":false},{"name":"toTimestamp","type":"int64","required":false},{"name":"maxRows","type":"int32","required":false}],"tasks":["history"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooadeallistreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooadeallistreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOADealListRes","group":"Orders and positions","summary":"Returns the deals in the period, one page at a time.","role":"response","payloadType":{"name":"PROTO_OA_DEAL_LIST_RES","id":2134},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"deal","type":"repeated ProtoOADeal","required":false},{"name":"hasMore","type":"bool","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooadeallistres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooadeallistres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAErrorRes","group":"Connection","summary":"The general answer when a request fails. It names the error and can say when maintenance ends or how long a rate limited payload type stays blocked.","role":"response","payloadType":{"name":"PROTO_OA_ERROR_RES","id":2142},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":false},{"name":"errorCode","type":"string","required":true},{"name":"description","type":"string","required":false},{"name":"maintenanceEndTimestamp","type":"int64","required":false},{"name":"retryAfter","type":"uint64","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaerrorres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaerrorres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAExecutionEvent","group":"Orders and positions","summary":"Sent when the server accepts or executes an order. It is the answer to the new order, cancel, amend and close requests, and it is also sent when a deposit or withdrawal takes place.","role":"event","payloadType":{"name":"PROTO_OA_EXECUTION_EVENT","id":2126},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"executionType","type":"ProtoOAExecutionType","required":true},{"name":"position","type":"ProtoOAPosition","required":false},{"name":"order","type":"ProtoOAOrder","required":false},{"name":"deal","type":"ProtoOADeal","required":false},{"name":"bonusDepositWithdraw","type":"ProtoOABonusDepositWithdraw","required":false},{"name":"depositWithdraw","type":"ProtoOADepositWithdraw","required":false},{"name":"errorCode","type":"string","required":false},{"name":"isServerEvent","type":"bool","required":false}],"tasks":["order-status"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaexecutionevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaexecutionevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAExpectedMarginReq","group":"Orders and positions","summary":"Asks for an estimate of the margin a trade would need under the account's leverage profile, which the definition says can be done before a new order is sent.","role":"request","payloadType":{"name":"PROTO_OA_EXPECTED_MARGIN_REQ","id":2139},"replies":["ProtoOAExpectedMarginRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"int64","required":true},{"name":"volume","type":"repeated int64","required":false}],"tasks":["order-preview"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaexpectedmarginreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaexpectedmarginreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAExpectedMarginRes","group":"Orders and positions","summary":"Returns the margin estimate for buying and for selling, for each size that was asked about.","role":"response","payloadType":{"name":"PROTO_OA_EXPECTED_MARGIN_RES","id":2140},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"margin","type":"repeated ProtoOAExpectedMargin","required":false},{"name":"moneyDigits","type":"uint32","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaexpectedmarginres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaexpectedmarginres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAGetAccountListByAccessTokenReq","group":"Authorisation","summary":"Asks which trading accounts an access token was granted for.","role":"request","payloadType":{"name":"PROTO_OA_GET_ACCOUNTS_BY_ACCESS_TOKEN_REQ","id":2149},"replies":["ProtoOAGetAccountListByAccessTokenRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"accessToken","type":"string","required":true}],"tasks":["accounts"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooagetaccountlistbyaccesstokenreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooagetaccountlistbyaccesstokenreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAGetAccountListByAccessTokenRes","group":"Authorisation","summary":"Lists the trading accounts the access token covers, with the scope of permission the token carries.","role":"response","payloadType":{"name":"PROTO_OA_GET_ACCOUNTS_BY_ACCESS_TOKEN_RES","id":2150},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"accessToken","type":"string","required":true},{"name":"permissionScope","type":"ProtoOAClientPermissionScope","required":false},{"name":"ctidTraderAccount","type":"repeated ProtoOACtidTraderAccount","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooagetaccountlistbyaccesstokenres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooagetaccountlistbyaccesstokenres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAGetTickDataReq","group":"Historical data","summary":"Asks for historical ticks of one symbol, bid or ask, in a period of time.","role":"request","payloadType":{"name":"PROTO_OA_GET_TICKDATA_REQ","id":2145},"replies":["ProtoOAGetTickDataRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"int64","required":true},{"name":"type","type":"ProtoOAQuoteType","required":true},{"name":"fromTimestamp","type":"int64","required":false},{"name":"toTimestamp","type":"int64","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooagettickdatareq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooagettickdatareq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAGetTickDataRes","group":"Historical data","summary":"Returns the historical ticks, newest first, one page at a time.","role":"response","payloadType":{"name":"PROTO_OA_GET_TICKDATA_RES","id":2146},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"tickData","type":"repeated ProtoOATickData","required":false},{"name":"hasMore","type":"bool","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooagettickdatares","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooagettickdatares"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAGetTrendbarsReq","group":"Historical data","summary":"Asks for historical bars of one size for one symbol, by period of time or by count.","role":"request","payloadType":{"name":"PROTO_OA_GET_TRENDBARS_REQ","id":2137},"replies":["ProtoOAGetTrendbarsRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"fromTimestamp","type":"int64","required":false},{"name":"toTimestamp","type":"int64","required":false},{"name":"period","type":"ProtoOATrendbarPeriod","required":true},{"name":"symbolId","type":"int64","required":true},{"name":"count","type":"uint32","required":false}],"tasks":["candles"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooagettrendbarsreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooagettrendbarsreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAGetTrendbarsRes","group":"Historical data","summary":"Returns the historical bars that were asked for.","role":"response","payloadType":{"name":"PROTO_OA_GET_TRENDBARS_RES","id":2138},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"period","type":"ProtoOATrendbarPeriod","required":true},{"name":"trendbar","type":"repeated ProtoOATrendbar","required":false},{"name":"symbolId","type":"int64","required":false},{"name":"hasMore","type":"bool","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooagettrendbarsres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooagettrendbarsres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOANewOrderReq","group":"Orders and positions","summary":"Sends a new order. The definition allows it only where the access token has trade permission for the account.","role":"request","payloadType":{"name":"PROTO_OA_NEW_ORDER_REQ","id":2106},"replies":["ProtoOAExecutionEvent"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"int64","required":true},{"name":"orderType","type":"ProtoOAOrderType","required":true},{"name":"tradeSide","type":"ProtoOATradeSide","required":true},{"name":"volume","type":"int64","required":true},{"name":"limitPrice","type":"double","required":false},{"name":"stopPrice","type":"double","required":false},{"name":"timeInForce","type":"ProtoOATimeInForce","required":false},{"name":"expirationTimestamp","type":"int64","required":false},{"name":"stopLoss","type":"double","required":false},{"name":"takeProfit","type":"double","required":false},{"name":"comment","type":"string","required":false},{"name":"baseSlippagePrice","type":"double","required":false},{"name":"slippageInPoints","type":"int32","required":false},{"name":"label","type":"string","required":false},{"name":"positionId","type":"int64","required":false},{"name":"clientOrderId","type":"string","required":false},{"name":"relativeStopLoss","type":"int64","required":false},{"name":"relativeTakeProfit","type":"int64","required":false},{"name":"guaranteedStopLoss","type":"bool","required":false},{"name":"trailingStopLoss","type":"bool","required":false},{"name":"stopTriggerMethod","type":"ProtoOAOrderTriggerMethod","required":false}],"tasks":["place-order"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaneworderreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaneworderreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAOrderErrorEvent","group":"Orders and positions","summary":"Sent when an order request meets an error. It names the error and, where they apply, the order and the position.","role":"event","payloadType":{"name":"PROTO_OA_ORDER_ERROR_EVENT","id":2132},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"errorCode","type":"string","required":true},{"name":"orderId","type":"int64","required":false},{"name":"positionId","type":"int64","required":false},{"name":"description","type":"string","required":false}],"tasks":["order-status"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaordererrorevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaordererrorevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAOrderListReq","group":"Orders and positions","summary":"Asks for the account's orders in a period of time.","role":"request","payloadType":{"name":"PROTO_OA_ORDER_LIST_REQ","id":2175},"replies":["ProtoOAOrderListRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"fromTimestamp","type":"int64","required":false},{"name":"toTimestamp","type":"int64","required":false}],"tasks":["history"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaorderlistreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaorderlistreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAOrderListRes","group":"Orders and positions","summary":"Returns the orders in the period, one page at a time.","role":"response","payloadType":{"name":"PROTO_OA_ORDER_LIST_RES","id":2176},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"order","type":"repeated ProtoOAOrder","required":false},{"name":"hasMore","type":"bool","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaorderlistres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaorderlistres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAReconcileReq","group":"Account","summary":"Asks for the account's open positions and pending orders as they stand now.","role":"request","payloadType":{"name":"PROTO_OA_RECONCILE_REQ","id":2124},"replies":["ProtoOAReconcileRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"returnProtectionOrders","type":"bool","required":false}],"tasks":["positions","open-orders"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooareconcilereq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooareconcilereq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAReconcileRes","group":"Account","summary":"Returns the account's open positions and its pending orders in one message.","role":"response","payloadType":{"name":"PROTO_OA_RECONCILE_RES","id":2125},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"position","type":"repeated ProtoOAPosition","required":false},{"name":"order","type":"repeated ProtoOAOrder","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooareconcileres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooareconcileres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOARefreshTokenReq","group":"Authorisation","summary":"Exchanges a refresh token for a new access token for the granted trading account.","role":"request","payloadType":{"name":"PROTO_OA_REFRESH_TOKEN_REQ","id":2173},"replies":["ProtoOARefreshTokenRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"refreshToken","type":"string","required":true}],"tasks":["session"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooarefreshtokenreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooarefreshtokenreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOARefreshTokenRes","group":"Authorisation","summary":"Returns the new access token, how long it lasts and a new refresh token.","role":"response","payloadType":{"name":"PROTO_OA_REFRESH_TOKEN_RES","id":2174},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"accessToken","type":"string","required":true},{"name":"tokenType","type":"string","required":true},{"name":"expiresIn","type":"int64","required":true},{"name":"refreshToken","type":"string","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooarefreshtokenres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooarefreshtokenres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASpotEvent","group":"Live prices","summary":"Carries a live price for a subscribed symbol. The first one after subscribing holds the latest prices even when the market is closed.","role":"event","payloadType":{"name":"PROTO_OA_SPOT_EVENT","id":2131},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"int64","required":true},{"name":"bid","type":"uint64","required":false},{"name":"ask","type":"uint64","required":false},{"name":"trendbar","type":"repeated ProtoOATrendbar","required":false},{"name":"sessionClose","type":"uint64","required":false},{"name":"timestamp","type":"int64","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaspotevent","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaspotevent"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASubscribeLiveTrendbarReq","group":"Live prices","summary":"Subscribes to live bars of one size for one symbol. The definition says the symbol's live prices have to be subscribed to first, and the bars arrive inside ProtoOASpotEvent.","role":"request","payloadType":{"name":"PROTO_OA_SUBSCRIBE_LIVE_TRENDBAR_REQ","id":2135},"replies":["ProtoOASubscribeLiveTrendbarRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"period","type":"ProtoOATrendbarPeriod","required":true},{"name":"symbolId","type":"int64","required":true}],"tasks":["streaming-subscribe"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasubscribelivetrendbarreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribelivetrendbarreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASubscribeLiveTrendbarRes","group":"Live prices","summary":"Acknowledges the subscription to live bars.","role":"response","payloadType":{"name":"PROTO_OA_SUBSCRIBE_LIVE_TRENDBAR_RES","id":2165},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasubscribelivetrendbarres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribelivetrendbarres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASubscribeSpotsReq","group":"Live prices","summary":"Subscribes to the live prices of one or more symbols. The definition says a first ProtoOASpotEvent with the latest price follows, and then one for each price update.","role":"request","payloadType":{"name":"PROTO_OA_SUBSCRIBE_SPOTS_REQ","id":2127},"replies":["ProtoOASubscribeSpotsRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"repeated int64","required":false},{"name":"subscribeToSpotTimestamp","type":"bool","required":false}],"tasks":["streaming-subscribe"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasubscribespotsreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribespotsreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASubscribeSpotsRes","group":"Live prices","summary":"Acknowledges that the subscription has been queued. The definition says the first ProtoOASpotEvent with the current price arrives shortly after.","role":"response","payloadType":{"name":"PROTO_OA_SUBSCRIBE_SPOTS_RES","id":2128},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasubscribespotsres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribespotsres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASymbolByIdReq","group":"Symbols","summary":"Asks for the full details of one or more symbols, by id.","role":"request","payloadType":{"name":"PROTO_OA_SYMBOL_BY_ID_REQ","id":2116},"replies":["ProtoOASymbolByIdRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"repeated int64","required":false}],"tasks":["instrument-search"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasymbolbyidreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolbyidreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASymbolByIdRes","group":"Symbols","summary":"Returns each requested symbol with its full set of fields.","role":"response","payloadType":{"name":"PROTO_OA_SYMBOL_BY_ID_RES","id":2117},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbol","type":"repeated ProtoOASymbol","required":false},{"name":"archivedSymbol","type":"repeated ProtoOAArchivedSymbol","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasymbolbyidres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolbyidres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASymbolsListReq","group":"Symbols","summary":"Asks for the symbols a trading account can use. Each comes back in a light form with a limited set of fields.","role":"request","payloadType":{"name":"PROTO_OA_SYMBOLS_LIST_REQ","id":2114},"replies":["ProtoOASymbolsListRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"includeArchivedSymbols","type":"bool","required":false}],"tasks":["instrument-search"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasymbolslistreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolslistreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOASymbolsListRes","group":"Symbols","summary":"Returns the account's symbols in their light form, and archived symbols where they were asked for.","role":"response","payloadType":{"name":"PROTO_OA_SYMBOLS_LIST_RES","id":2115},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbol","type":"repeated ProtoOALightSymbol","required":false},{"name":"archivedSymbol","type":"repeated ProtoOAArchivedSymbol","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooasymbolslistres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolslistres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOATraderReq","group":"Account","summary":"Asks for the data of one trading account.","role":"request","payloadType":{"name":"PROTO_OA_TRADER_REQ","id":2121},"replies":["ProtoOATraderRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":["accounts"],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooatraderreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooatraderreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOATraderRes","group":"Account","summary":"Returns the trading account's data as a ProtoOATrader entity.","role":"response","payloadType":{"name":"PROTO_OA_TRADER_RES","id":2122},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"trader","type":"ProtoOATrader","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooatraderres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooatraderres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAUnsubscribeSpotsReq","group":"Live prices","summary":"Stops the live prices of one or more symbols. The definition suggests it as a way to cut traffic, most of all when markets are volatile.","role":"request","payloadType":{"name":"PROTO_OA_UNSUBSCRIBE_SPOTS_REQ","id":2129},"replies":["ProtoOAUnsubscribeSpotsRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true},{"name":"symbolId","type":"repeated int64","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaunsubscribespotsreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaunsubscribespotsreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAUnsubscribeSpotsRes","group":"Live prices","summary":"Acknowledges that the request to stop live prices has been queued. The definition says a few more ProtoOASpotEvent messages can still arrive until it is done.","role":"response","payloadType":{"name":"PROTO_OA_UNSUBSCRIBE_SPOTS_RES","id":2130},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"ctidTraderAccountId","type":"int64","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaunsubscribespotsres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaunsubscribespotsres"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAVersionReq","group":"Connection","summary":"Asks the server for its version, which the definition says can be used to check the current version of the Open API scheme.","role":"request","payloadType":{"name":"PROTO_OA_VERSION_REQ","id":2104},"replies":["ProtoOAVersionRes"],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaversionreq","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaversionreq"},{"kind":"message","interface":"cTrader Open API","name":"ProtoOAVersionRes","group":"Connection","summary":"Returns the version of the server application.","role":"response","payloadType":{"name":"PROTO_OA_VERSION_RES","id":2105},"replies":[],"fields":[{"name":"payloadType","type":"ProtoOAPayloadType","required":false},{"name":"version","type":"string","required":true}],"tasks":[],"status":"verified","source":"https://help.ctrader.com/open-api/messages/#protooaversionres","officialReference":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/ctrader/messages/protooaversionres"}]},"limits":{"licence":"CC BY 4.0","register":"https://openbrokerapi.com/data/limits.json","structure":"structuredValue, structuredUnit and windowSeconds restate a limit as numbers where its own value and unit, or the opening of its text, state them outright: a count, optionally what is counted, and a window. They are read by a fixed pattern and are null wherever the pattern does not fit, so a null means not restated, not that there is no limit. windowSeconds is null for an allowance that is not a rate. structuredUnit is null where the wording does not name what is counted. A week is taken as 7 days. They add nothing to the record: value, unit, text and scope are unchanged and remain the record. A record whose status is conflicting has a second reading under conflict, which these fields do not restate.","records":[{"id":"ctrader.headline","broker":"ctrader","name":"Requests a second, not historical data","value":50,"text":null,"unit":"requests per second","scope":"Per connection, requests that are not for historical data","source":"https://help.ctrader.com/open-api/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"note":"Historical data requests have their own lower limit, held in a separate record.","structuredValue":50,"structuredUnit":"requests","windowSeconds":1},{"id":"ctrader.historical","broker":"ctrader","name":"Requests a second, historical data","value":5,"text":null,"unit":"requests per second","scope":"Per connection, historical data requests only","source":"https://help.ctrader.com/open-api/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"structuredValue":5,"structuredUnit":"requests","windowSeconds":1}]},"errors":{"licence":"All rights reserved","leftOut":"The meaning and the fix of each error. They are this site's own writing, which the open licence does not cover, so each record gives the address of the page that holds them.","index":"https://openbrokerapi.com/errors/ctrader","register":"https://openbrokerapi.com/data/errors.json","records":[{"code":"1","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/oa-auth-token-expired"},{"code":"1","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/unknown-error"},{"code":"2","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/account-not-authorized"},{"code":"2","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/unsupported-message"},{"code":"3","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/invalid-request"},{"code":"5","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/timeout-error"},{"code":"6","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/entity-not-found"},{"code":"7","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/cant-route-request"},{"code":"8","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/frame-too-long"},{"code":"9","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/market-closed"},{"code":"10","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/concurrent-modification"},{"code":"11","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/common-model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/blocked-payload-type"},{"code":"12","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ret-no-such-login"},{"code":"14","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/already-logged-in"},{"code":"35","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/incorrect-boundaries"},{"code":"64","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ret-account-disabled"},{"code":"67","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/connections-limit-exceeded"},{"code":"68","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/worse-gsl-not-allowed"},{"code":"69","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/symbol-has-holiday"},{"code":"101","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-client-auth-failure"},{"code":"102","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-client-not-authenticated"},{"code":"103","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-client-already-authenticated"},{"code":"104","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-access-token-invalid"},{"code":"105","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-server-not-reachable"},{"code":"106","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-ctid-trader-account-not-found"},{"code":"107","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/ch-oa-client-not-found"},{"code":"108","http":null,"category":"protocol-error-code","rateLimit":true,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/request-frequency-exceeded"},{"code":"109","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/server-is-under-maintenance"},{"code":"110","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/channel-is-blocked"},{"code":"112","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/not-subscribed-to-spots"},{"code":"113","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/already-subscribed"},{"code":"114","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/symbol-not-found"},{"code":"115","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/unknown-symbol"},{"code":"117","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/no-quotes"},{"code":"118","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/not-enough-money"},{"code":"119","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/max-exposure-reached"},{"code":"120","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/position-not-found"},{"code":"121","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/order-not-found"},{"code":"122","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/position-not-open"},{"code":"123","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/position-locked"},{"code":"124","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/too-many-positions"},{"code":"125","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/trading-bad-volume"},{"code":"126","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/trading-bad-stops"},{"code":"127","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/trading-bad-prices"},{"code":"128","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/trading-bad-stake"},{"code":"129","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/protection-is-too-close-to-market"},{"code":"130","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/trading-bad-expiration-date"},{"code":"131","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/pending-execution"},{"code":"132","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/trading-disabled"},{"code":"133","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/trading-not-allowed"},{"code":"134","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/unable-to-cancel-order"},{"code":"135","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiModelMessages.proto","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/ctrader/unable-to-amend-order"},{"code":"136","http":null,"category":"protocol-error-code","rateLimit":null,"status":"verified","source":"https://help.ctrader.com/open-api/model-messages/","checked":"2026-09-19","page":"https://openbrokerapi.com/errors/ctrader/short-selling-not-allowed"}]},"mcpServers":{"licence":"CC BY 4.0","page":"https://openbrokerapi.com/ai/mcp-directory","register":"https://openbrokerapi.com/data/mcp-servers.json","records":[{"id":"ctrader","name":"cTrader AI Agent Connect","vendor":"Spotware","owner":"ctrader","official":true,"officialNote":"First party. Launched 14 May 2026.","can":"Market data, account, orders and positions, plus desktop workspace control on the Local server. Two servers: Remote for cTrader Web and Local for Windows and Mac. Ships a skills library. Named clients: Claude Code, ChatGPT Codex, Cursor, Gemini CLI.","placesOrders":true,"posture":"open","postureNote":"No platform gate. The page says AI-assisted workflows can trigger real trading actions when enabled, and puts the review on the trader.","custody":null,"custodyNote":"Remote uses a configuration token. Where that token is stored is not documented.","demo":null,"demoNote":"Demo support is not stated on the pages we opened.","maintained":"Yes, first party. Launched 14 May 2026.","sources":[{"url":"https://mcp.spotware.com/","title":"mcp.spotware.com","checked":"2026-09-24"},{"url":"https://www.spotware.com/news/ctrader-launches-official-mcp-servers/","title":"Spotware launch note","checked":"2026-09-24"}],"checked":"2026-09-24"}],"noneFound":[]},"partnerProgramme":{"licence":"CC BY 4.0","register":"https://openbrokerapi.com/data/programmes.json","page":"https://openbrokerapi.com/partners/ctrader-open-api","record":{"id":"ctrader-open-api","firm":"Spotware (cTrader)","programmeType":"not-verified","pagesOpened":[],"publishedFigure":null,"figureAsWorded":"not verified this cycle: no programme page was opened","figureIsCeiling":false,"figureNote":null,"restrictionsForPublishers":"No programme page was opened this cycle, so no restriction is recorded. The address tried returned HTTP 404, which is not evidence that the firm runs no programme.","documentsNotOpened":null,"checked":"2026-10-05","verification":"not-verified"}},"changes":{"licence":"CC BY 4.0","page":"https://openbrokerapi.com/changes","register":"https://openbrokerapi.com/data/changes.json","checkedMeans":"checked is the day the source was last opened. It is null where the register does not record one: read that as not recorded.","records":[{"id":"ctrader-2026-09-23-1","date":"2026-09-23","kind":"docs","text":"Re-read today. The token lifetimes are now recorded precisely: authorisation code 1 minute, access token 30 days, with accounts as the read only scope and trading as the full one. The rate limits are unchanged at 50 a second per connection and 5 a second for historical calls.","source":"https://help.ctrader.com/open-api/account-authentication/","sourceTitle":"cTrader Open API: account authentication","checked":"2026-09-23"},{"id":"ctrader-2026-09-20-1","date":"2026-09-20","kind":"change","text":"cTrader AI Agent Connect, launched 14 May 2026, is two official MCP servers plus a skills library. An agent can execute trades, analyse accounts and control charts. Remote MCP serves the web platform and Local MCP the desktop. The server defaults to demo accounts and requires user confirmation before an order action. Execution authority on this site: agent executes.","source":"https://ctrader.com/mcp-server-for-trading","sourceTitle":"cTrader: MCP server for trading","checked":"2026-09-22"},{"id":"ctrader-2026-05-14-1","date":"2026-05-14","kind":"ecosystem","text":"Spotware launched official cTrader MCP servers, remote for cTrader Web and local for cTrader Windows.","source":"https://www.spotware.com/news/ctrader-launches-official-mcp-servers/","sourceTitle":"Spotware news","checked":null},{"id":"ctrader-2026-05-14-2","date":"2026-05-14","kind":"ecosystem","text":"Spotware launched cTrader AI Agent Connect: a remote MCP server that needs cTrader Web and a local one inside cTrader Windows, both able to trade. Spotware does not say they run on the Open API, so Open API apps are unaffected.","source":"https://www.spotware.com/news/ctrader-launches-official-mcp-servers/","sourceTitle":"Spotware: cTrader launches official MCP servers","checked":"2026-09-18"},{"id":"ctrader-2024-08-07-1","date":"2024-08-07","kind":"change","text":"Spotware yanked version 0.9.3 of its official Python SDK, ctrader-open-api, from PyPI. Version 0.9.2 from 26 Jun 2024 remains the current release.","source":"https://pypi.org/project/ctrader-open-api/#history","sourceTitle":"ctrader-open-api release history, PyPI","checked":null}]}}