MCP server

The Senti MCP server exposes the Senti Quant Public API to an AI assistant through the Model Context Protocol. Point Claude Code, Claude Desktop, Cursor or any MCP client at it, and you can ask about your accounts in plain language instead of writing HTTP calls.

It is open source (Koniverse/Senti-MCP, MIT) and published on npm as senti-mcp-server.

What you need

  • Node.js 22.11.0 or newer. Node 20 reached end of life on 2026-04-30. If you are still on it, pin senti-mcp-server@1.4.0 — the last release that runs there, with ten tools and no authoring support.
  • A Senti API key (sq_live_…). Create one at the API Keys dashboard with these six read scopes: accounts:read, brokers:read, strategies:read, performance:read, trading:read, authoring:read.

There is no key-introspection endpoint, so a missing scope is not caught at startup. It surfaces as a 403 naming the scope the first time you call a tool that needs it — every other tool keeps working.

Install

No install step. npx fetches the package on first run. Add this to your MCP client’s config:

{
  "mcpServers": {
    "senti": {
      "command": "npx",
      "args": ["-y", "senti-mcp-server"],
      "env": {
        "SENTI_API_KEY": "sq_live_..."
      }
    }
  }
}

Restart the client and fourteen tools appear. To hold a specific release, pin it in args: ["-y", "senti-mcp-server@2.8.1"] — 2.8.1 is npm’s current latest. To put it on your PATH instead, run npm install -g senti-mcp-server and set "command": "senti-mcp-server" with no args.

The tools

Fourteen tools, all read-only.

One GET has no tool yet. The API gained GET /api/v1/drafts/{draftId}/attachments/{attachmentId} — read a single attachment by id — after 2.8.1 shipped, so the server does not wrap it. Use list_draft_attachments with its filename argument to read one attachment, or call the endpoint directly through the API.

Group Tools
Accounts list_accounts, list_account_strategies
Catalog list_brokers, list_strategies
Trading list_positions, list_pending_orders, list_deals
Performance get_account_performance, get_performance_breakdowns, get_equity_timeseries
Authoring get_authoring_conventions, list_drafts, get_draft, list_draft_attachments

The id a tool returns is the accountId every other Senti endpoint takes. login is your MT5 account number, not a key.

Three responses are deliberately shaped rather than returned whole, because the underlying endpoints can produce megabytes:

  • get_performance_breakdowns keeps at most 10 symbols, by largest absolute net P&L.
  • get_equity_timeseries downsamples to at most 200 points, but always keeps the first point, the last point and the deepest drawdown, so the start, the end and the worst of the curve stay exact.
  • list_drafts drops source code, compiler logs and diagnostics; call get_draft for one draft’s source.

Whatever was cut is reported in a notes field, which is empty when nothing was. Narrow your date range for finer resolution.

A 409 from list_positions or list_pending_orders means the account’s MT5 terminal is offline — not that the account holds no positions. Performance tools have no 409; an unreachable terminal arrives as a null live block and is reported as unreachable rather than as zeroes.

Authoring MQL5 from your editor

Set SENTI_ENABLE_AUTHORING_WRITE and seven more tools are registered — create_draft, update_draft, delete_draft, add_draft_attachment, update_draft_attachment, delete_draft_attachment and compile_draft. That is the whole write → build → read the errors → write again loop without leaving the editor. Your key also needs the authoring:write scope.

"env": {
  "SENTI_API_KEY": "sq_live_...",
  "SENTI_ENABLE_AUTHORING_WRITE": "1"
}

Leave it unset — or set it to 0, false, no or off — and none of the seven are registered, so there is nothing a model can call by accident.

Four things worth knowing before you turn it on:

  • update_draft is a full replace, not a patch. Both name and sourceCode are always written, so send the complete draft every time. Sending only what you changed deletes the rest of the file.
  • The two delete tools pause for a human. delete_draft and delete_draft_attachment ask for explicit confirmation through MCP elicitation, because nothing here can undo them. On a client that does not support elicitation they cannot be used at all — deliberately, rather than degraded to a silent delete.
  • Call get_authoring_conventions first. Code that breaks the platform rules is rejected by a static scan before it reaches the compiler, and compile slots are globally serial, so learning a rule by failing a compile is slow.
  • A failed build is not an error. compile_draft succeeds and reports ok: false with diagnostics. Read the result rather than retrying.

What it cannot do

No trading writes. Closing a position, cancelling an order, stopping a strategy and deploying one to an account have no tool, deliberately. They sit behind different scopes (trading:write, strategies:write) and no setting of SENTI_ENABLE_AUTHORING_WRITE reaches them.

No registering an authored EA. POST /api/v1/drafts/{draftId}/register is left out on purpose, because no tool in the authoring surface can delete what it would create. Register from the API or the dashboard.

Security

The API key is read from the environment and never appears in a tool’s input schema. A tool parameter would live in the model’s context, and from there in transcripts and logs; an environment variable does not. The test suite asserts the key appears in no error message.

Everything the server can reach is what your key’s scopes allow — the same non-custodial boundary as the rest of Senti. See non-custodial permissions.

Troubleshooting

A valid-looking key returns 401. Keys are bound to the environment that issued them. SENTI_API_BASE_URL defaults to the production API, so a key created against a different environment is rejected however valid it is. Check that the key and the base URL belong to the same environment before regenerating the key.

A tool you expect is missing. npx -y senti-mcp-server resolves to whatever npm’s latest tag points at. Run npm view senti-mcp-server dist-tags to see what that is, and pin a version in args if you need a specific one. The authoring read tools arrived across 2.1.0–2.4.0; the write tools in 2.5.0–2.8.0.

Nothing appears after editing the config. Most clients only read their MCP config at startup. Restart the client fully.