directa-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DIRECTA_AUTOSTART | No | If set to 'true', the server exposes the start_darwin tool which launches dGO. Defaults to false. | false |
| DIRECTA_ENABLE_ORDERS | No | If set to 'true', tools that place, modify or cancel orders are enabled. Defaults to false for safety. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_connectionA | Check whether Darwin's local trading and historical-data ports are reachable. Call this first if any other tool fails: it distinguishes "Darwin is not running" from "Darwin refused the command", and needs only Darwin running and listening, not the account logged in.
|
| start_darwinA | Launch dGO, Directa's launcher, so the user can bring Darwin up. Needs the server to have been started with DIRECTA_AUTOSTART=true. This does not finish the job and does not wait: Darwin requires an OTP, so the call returns as soon as dGO is running and the user takes it from there. Tell them to complete the login (and, if dGO stops on its tile grid rather than opening Darwin, that AutoSelezione must be set to "Darwin 2" in dGO's Preferenze), then call check_connection to see whether the ports have opened. Do not call this repeatedly while waiting — Directa allows one session at a time, and a second dGO can disturb the login in progress. Since it puts a window and an OTP prompt in front of the user, never call it on your own initiative to repair a failed tool: propose it and let the user ask for it. |
| get_darwin_statusA | Get Darwin's connection status, release, and whether the real-time
datafeed is enabled. Richer than check_connection since it goes through the
dAPI conversation rather than a raw TCP probe. The |
| get_account_balanceA | Get raw account figures from dAPI INFOACCOUNT: liquidity, equity and two fields whose documented names do not match their contents.
|
| get_availabilityA | Get buying power: cash available for stocks and derivatives, with and without margin (dAPI INFOAVAILABILITY). Use this rather than get_account_balance when the question is "how much can I invest". |
| get_positionsA | Get every open position in the portfolio, with quantity, average price and theoretical gain. Returns the complete list. |
| get_portfolio_overviewA | The whole picture in one call: every position with its current price and value, plus portfolio totals and P&L. Prefer this over get_positions when the question is about how the portfolio is doing or what it is worth. Darwin does not report a current price, so price and value are derived from
the average price and the theoretical gain. Do not compute values yourself
from get_positions: bonds (symbols starting |
| get_positionA | Get a single position by symbol, as it appears in get_positions. |
| get_ordersA | Get orders placed today with their state — "In negoziazione" (working), "Eseguito" (filled), "Revocato" (cancelled), and so on. A symbol usually carries several order records with different states, so
read the |
| preview_limit_orderA | Ask Darwin what an order would cost, without placing it. Use this before place_limit_order, and whenever the user asks about commissions. The order is submitted and deliberately left unconfirmed, so it never reaches the market, and Darwin answers with its pre-trade disclosure: the instrument's full name, the amount, the commission that would apply, and any conflict-of-interest note. This is the only way to obtain commission figures — no dAPI command reports them, and they depend on the order's value, so they cannot be looked up in advance. Read Subject to the same DIRECTA_ENABLE_ORDERS gate as place_limit_order, since this does send an order command to a real account. |
| place_limit_orderA | Place a REAL limit order with real money. There is no simulation mode. Disabled unless the server runs with DIRECTA_ENABLE_ORDERS=true. Prefer preview_limit_order first: it reports the commission and the exact instrument Darwin matched, without placing anything. Darwin requires a two-step submit-then-confirm exchange, and both steps
happen inside this one call because a pending confirmation does not survive
the connection that produced it. Read order_id is the client-side reference Darwin echoes back; one is generated if omitted. |
| modify_orderA | Change the limit price of an open order (signal_price applies only to
stop orders). Confirms in the same exchange, like place_limit_order, and
reports |
| cancel_orderA | Cancel one open order by the order_id shown in get_orders. Same order gate as place_limit_order. |
| cancel_all_ordersA | Cancel every open order for a symbol. Confirm the symbol with the user first — this affects orders the user may not have asked about. Same order gate as place_limit_order. |
| get_daily_candlesA | Get daily OHLC candles for the last N days. Needs the real-time quote entitlement — without it this fails with code 1032. |
| get_intraday_candlesA | Get intraday OHLC candles bucketed by period_minutes over the last N days. Needs the real-time quote entitlement (code 1032 without it). |
| get_candle_data_rangeA | Get OHLC candles within an explicit range. Dates as YYYYMMDDHHMMSS (e.g. 20260810093000); period_seconds sets the bucket (60=1min, 300=5min, 3600=1hr, 86400=1day). Needs the real-time quote entitlement. |
| get_tick_dataA | Get tick-by-tick trades over the last N days. Can be very large — prefer get_intraday_candles beyond a single session. Needs the real-time quote entitlement. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/simoneb/directa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server