spotware/ctrader-skills/ctrader-mcp-servers
- community
Checking that the SKILL.md file is still in the repository.
Use this skill ALWAYS when working with any cTrader MCP server.
Install
npx vskill@latest install spotware/ctrader-skills/ctrader-mcp-serversSKILL.md
Top-5 critical quirks (inline teaser)
The following 5 quirks are the most consequential as of the audit date. Full Detect / Workaround / Verify-fixed / Removal-criteria content lives in references/known-quirks.md; the rows below are link-only teasers. See also references/self-healing-playbook.md for the named recovery patterns.
| Quirk | Server | One-liner | Link | |
|---|---|---|---|---|
| Q-R10 | remote | amend_position omitting a leg REMOVES it (not preserves it) | Q-R10 | |
| Q-R4 | remote | MARKET REJECTS absolute SL/TP — use relativeStopLoss/relativeTakeProfit (single call) or P-REMOTE-MARKET-2STEP (fallback) | Q-R4 | |
| Q-R1 | remote | period enum is 9 values, NOT 26 (delete granular claims) | Q-R1 | |
| Q-L2 | local | SL is absolute price, TP is raw pips (asymmetric get_pending_orders) | Q-L2 | |
| Q-K19 | both | Pipettes vs display foot-gun — silent market fills | Q-K19 |
Self-healing principle
Both ctrader-remote-mcp and ctrader-local-mcp ship as-is with documented runtime behaviors last re-verified on 2026-05-14 against rest-proxy 1.0.18 (Remote) and local build observed-on 2026-05-14 (Local). Six Remote quirks remain ACTIVE on 1.0.18 (Q-R1, Q-R2, Q-R3, Q-R5, Q-R8, Q-R10). Two quirks had their error-message format refined (Q-R4 and Q-R7 now return plain-string error envelopes with actionable hints instead of JSON envelopes — both DETECT signatures cover both formats). One quirk is likely fixed (Q-R11 — get_deals propagation lag — passed Verify-fixed on session 1 of 5; not yet removed pending 4 more confirmations). This skill describes SEMANTICS, GOTCHAS, and RECOVERY; the MCP JSON-Schema is the source of truth on SHAPE. Never duplicate schema content in this skill. Every claim about runtime behavior in this skill carries a build-stamp — either an as-of: header on a reference file, or an Observed-on: line on a quirk in references/known-quirks.md.
Every quirk in the ledger is self-deprecating: it carries a Verify-fixed probe (a session-local check the agent can run) and a Removal criteria condition (the explicit signal that the server has been fixed and the entry should be deleted). When the server is fixed, delete the matching entry from references/known-quirks.md — that is the entire cleanup cost. Optional follow-up: grep for any stale QUIRK breadcrumbs across the reference files and remove them.
On unexpected server behavior (anything deviating from BOTH the MCP JSON-Schema AND the ledger), do NOT improvise — follow references/self-healing-playbook.md. The playbook names the pre-flight gates (quote sanity, side-direction, SL/TP sidedness, volume-step, schema-fields-only, pipettes-vs-display detection, required-fields), the post-flight verification rules (re-read after every mutation; for Remote amend_position, always re-read to confirm BOTH SL and TP legs survived per Q-R10), the error-classification matrix (Zod / INVALID_REQUEST / 502 uProxy / plain-text Local / available:false / truncated / hasMore), the unknown-quirk decision tree (4 steps from STOP to provisional ledger entry), and the named patterns (P-AMEND-SAFE, P-REMOTE-MARKET-RELATIVE (preferred for MARKET+SL/TP), P-REMOTE-MARKET-2STEP (fallback for absolute-price SL/TP on MARKET), P-REMOTE-MARKET-RANGE, P-LOCAL-OLDEST-FIRST, P-REMOTE-HISTORY-CHUNK).
Per-broker overlay extension point
The skill's quirks ledger uses the Q-B<n> prefix as a reserved slot for future per-broker overrides (lotSize divergences, symbol-naming variants, broker-specific SL/TP behaviors). A future assets/broker_overrides.example.json overlay would carry these per-broker values without restructuring this skill. NOT shipped this iteration — added on demand when broker-specific divergences become a blocking class.
Tool-surface routing: Local HTTP (ctrader-local-mcp) vs Remote HTTP (ctrader-remote-mcp)
The bound tool surface determines which cTrader MCP server is in front of you. Inspect tool names and response DTO shape to identify the family. Apply the routing rule below at the start of every cTrader-related interaction; cache the result for the session.
| Server family | Fingerprint to detect it | What it does best | Default routing rule | |
|---|---|---|---|---|
Local HTTP (ctrader-local-mcp) | ping, get_accounts_list, list_charts, listChartIndicators, listPlugins, show_notification, get_server_time; volume in units; ISO 8601 with mandatory Z; symbol identified by string name ("EURUSD"). HTTP transport bound to the cTrader Desktop application. | Charts, drawings, indicators, watchlists, alerts, news, cBots, UI notifications, multi-account work. | Route here for any UI / visualization / cBot / chart-bound workflow. | |
Remote HTTP (ctrader-remote-mcp) | get_version, get_assets, integer symbolId-keyed tools (get_spot_prices(symbolId), get_trendbars(symbolId)); moneyDigits field in money responses; volume in cents (1 lot of forex = 10 000 000); prices in pipettes. HTTP transport against the remote REST proxy (rest-proxy). | Headless trading, broad symbol scans, trailing stop loss, MARKET_RANGE, granular timeframe history. | Route here when no chart / UI need exists. | |
| Both surfaces bound | Both fingerprints visible. | Depends on the action. | Pick by capability: drawings / cBots / charts go to Local; trailing SL / MARKET_RANGE / multi-symbol batch quotes / granular timeframes go to Remote. |
Units conventions across the two servers
The two servers encode the same trading concepts in different units and identifier types; passing Local values to Remote (or the reverse) silently produces wrong sizes, wrong prices, or schema rejections.
| Dimension | Local HTTP encoding | Remote HTTP encoding | Conversion script | |
|---|---|---|---|---|
| Volume | Units (integer; for forex typically 1 lot = 100 000 units, but broker-dependent — always read get_symbol_details.lotSize). | Cents (integer; 1 lot of forex = 10 000 000 cents). | scripts/units_encoding.py lots-to-units / lots-to-cents | |
| Price | Display value (e.g., 1.21345). | Pipettes (integer; divide by 10^pipDigits to display). | scripts/pip_math.py (handles both directions) | |
| Money (balance, commission, swap, P&L) | Display value (e.g., 12345.67). | Integer in 10^moneyDigits units (moneyDigits field on the response; typically 2). | scripts/units_encoding.py display-money / parse-money | |
| Timestamp | ISO 8601 with mandatory Z suffix (2026-01-15T14:30:00Z). | Epoch milliseconds for expirationTimestamp (integer-only as of rest-proxy 1.0.13); either form for history window endpoints. | Passed through unchanged for Local; check field type for Remote. | |
| Symbol identifier | String name ("EURUSD", "XAUUSD"). | Integer symbolId (resolve via get_symbols, cache for the session). | N/A (look up by ID) | |
Stop loss / take profit on place_*_order / amend_order | Pip distance integer (stopLossPips, takeProfitPips). | Absolute price (stopLoss, takeProfit). | scripts/pip_math.py pips-to-price / price-to-pips |
Stop loss and take profit: pip distance vs absolute price
Order-placement tools take SL / TP as pip distance from entry; position-amendment tools take SL / TP as absolute price. The convention depends on which TOOL is called, not which server.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ctrader-mcp-servers/SKILL.md
Popularity
- Repository stars
- 11
- Repository forks
- 2
- 7-day trend score
- 12
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/spotware/ctrader-skills/ctrader-mcp-servers)