A small service inside the VPS image plus one REST/MCP API. Start and stop Expert Advisors, switch risk presets, change parameters — with server-side validation, a confirmation step, and proof of what actually happened on the terminal.
The chat never touches the terminal. Every request passes through our validation layer, is executed by a small agent on the VPS, and is checked against what the terminal actually shows afterwards.
Your LLM agent with our tool definitions, or any backend. Shows the dry run, asks the user, relays the outcome.
REST + MCP. Catalog of EAs, whitelist of parameters and ranges, risk presets, restart-safety status. Rejects before queuing.
Outbound-only service. Keeps terminals up, streams state every 15 s, executes commands, self-heals after restarts.
One per terminal. Opens charts and applies templates with the EA and its inputs; reads the applied inputs back.
Closed .ex5 as delivered by the vendor. No source code, no reverse engineering, no Manager API.
Whatever the model sends, the server validates again. These rules are enforced in our layer for every tenant.
Only catalogued EAs, only allowed symbols, only whitelisted inputs inside their ranges. Everything else is a 422 with a message the model can relay.
Every parameter change restarts the EA. Changes on an EA with open positions are refused until that EA's basket recovery has been verified on a demo account.
Each command carries what was asked, what was applied and what the terminal shows afterwards, with timestamps. Inputs are read back from the running EA.
dry_run: true returns the summary and the was → now diff without queuing anything — the natural place for a confirmation step.
EAs a customer already runs by hand appear in the API as managed instances, with their real inputs, without touching them.
Positions and closed deals are mapped to EA instances by magic number, so your reporting knows which EA did what.
One OpenAPI 3.1 contract. The same capabilities ship as tool schemas for any function-calling model and as an MCP server for MCP-capable clients. Every call carries the customer id; there is no shared database.
| Method | Path | Purpose |
|---|---|---|
GET | /v1/clients/{client_id}/state | Everything the customer owns, live: VPS health, accounts, running EAs with effective inputs, positions, orders. |
GET | /v1/eas · /v1/eas/{ea_id} | Catalog: presets, allowed symbols, every changeable input with label, range and whether to confirm. |
POST | /v1/accounts/{account_id}/commands | start_ea, stop_ea, set_risk, set_param, restart_ea — 202 + command id, or 200 dry run. |
GET | /v1/commands/{command_id}?wait=30 | Long-poll the outcome: status, diff, observed state, timeline. |
GET | /v1/accounts/{account_id}/history | Closed deals with ea_id attribution. |
Full reference: OpenAPI document and Swagger UI · tool definitions for Claude and other function-calling models · MCP server (stdio).
We install the service into your VPS image, onboard your EA catalog (about ten minutes of review per EA), and give your team the sandbox, the spec and the tool schemas. You keep the dashboard, the agent persona and the customer relationship.
Thirty minutes: your EAs, a demo account, the chat driving them end to end.
Contact MTCodec