trading212-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| T212_ENV | No | Target environment: demo (paper trading) or live (real money) | demo |
| T212_API_KEY | Yes | API key (Basic auth username), generated in the Trading 212 app | |
| T212_API_SECRET | Yes | API secret (Basic auth password) | |
| T212_MCP_ENABLE_TRADING | No | Set to true/1/yes/on to register the write tools | off |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_account_summaryA | Get the account summary: cash breakdown, investments, and overall result. Returns a dict with:
Rate limit: 1 request per 5 seconds. |
| list_exchangesA | List exchanges with working schedules trimmed to session open/close events. Returns one entry per exchange: Rate limit: 1 request per 30 seconds (data refreshes server-side every 10 minutes). |
| list_instrumentsA | Search the tradable instrument universe. The API returns the full universe (roughly 17,000 instruments) in one
response with no server-side filtering, so Rate limit: 1 request per 50 seconds — strict. Every call fetches the whole universe, so batch your lookups into one broad search rather than issuing several calls in quick succession. Returns per instrument: |
| get_portfolioA | List all open positions in the account. Returns up to Rate limit: 1 request per 1 second. |
| get_positionA | Fetch a single open position by its Trading 212 ticker. Returns the same trimmed fields as get_portfolio: ticker, quantity (shares, fractional allowed), averagePrice and currentPrice (per share, instrument currency), ppl (unrealized profit/loss, account currency), fxImpact (nullable, account currency), initialFillDate (ISO 8601). Errors if there is no open position for the ticker. Rate limit: 1 request per 1 second. |
| list_ordersA | List all pending (not yet filled/cancelled/expired) equity orders. Returns a list of order objects with: id, ticker (e.g. 'AAPL_US_EQ'),
type (LIMIT|STOP|MARKET|STOP_LIMIT), side (BUY|SELL), status,
quantity, filledQuantity, limitPrice/stopPrice (when applicable),
timeInForce (DAY|GOOD_TILL_CANCEL), currency, extendedHours,
createdAt. The API returns every pending order; |
| get_orderA | Fetch one pending equity order by its id. Returns the order's id, ticker, type (LIMIT|STOP|MARKET|STOP_LIMIT), side (BUY|SELL), status, quantity, filledQuantity, limitPrice / stopPrice (when applicable), timeInForce, currency, extendedHours and createdAt. Responds HTTP 404 if no pending order has that id. Rate limit: 1 request per 1 second. |
| list_piesA | List all pies in the account with money-in, progress, and performance. Returns a list of pie summaries: id (use with get_pie), cash (money put into the pie, in the account currency), progress (fraction of the goal reached, 0..1), status ("AHEAD" | "ON_TRACK" | "BEHIND"), dividendDetails (gained/inCash/reinvested), and result (invested value, absolute result, result coefficient, current value). The API returns all pies; the limit is applied after fetching. Rate limit: 1 request per 30 seconds. |
| get_pieA | Fetch one pie's full definition and per-instrument breakdown. Returns the pie settings (id, name, icon, goal in account currency, creationDate, endDate, dividendCashAction, initialInvestment, instrumentShares as a ticker-to-weight map, publicUrl) plus an instruments list with each holding's ticker, ownedQuantity, currentShare vs expectedShare (weights, 0..1), result, and any issues (e.g. DELISTED, SUSPENDED) with severity. Raises HTTP 404 if the pie does not exist. Rate limit: 1 request per 5 seconds. |
| list_historical_ordersA | List executed (historical) equity orders, newest first. Returns {"items": [...], "next_cursor": str | None}. Each item has an
"order" part (id, ticker, type LIMIT|STOP|MARKET|STOP_LIMIT, side
BUY|SELL, status, quantity, filledQuantity, limitPrice, stopPrice,
timeInForce DAY|GOOD_TILL_CANCEL, currency, createdAt) and a "fill"
part (filledAt, price, quantity, type e.g. TRADE, tradingMethod
TOTV|OTC) plus a "walletImpact" with netValue and realisedProfitLoss
in the account currency. Pass next_cursor back as |
| list_dividendsA | List paid-out dividends. Returns {"items": [...], "next_cursor": str | None}. Each item:
ticker, paidOn (ISO 8601), amount (net, in the account currency),
grossAmountPerShare (in the instrument currency), quantity (shares
held), type (e.g. ORDINARY, INTEREST, CAPITAL_GAINS), reference.
Pass next_cursor back as |
| list_transactionsA | List cash transactions (deposits, withdrawals, fees, transfers). Returns {"items": [...], "next_cursor": str | None}. Each item:
type (WITHDRAW | DEPOSIT | FEE | TRANSFER), amount (in the
transaction currency), currency, dateTime (ISO 8601), reference
(transaction ID). Unlike the other history endpoints the cursor here
is a string, not a number. Pass next_cursor back as |
| list_exportsA | List requested CSV export reports and their processing status. Returns {"items": [...]} where each report has: reportId, timeFrom, timeTo, dataIncluded (the four include* flags), status, downloadLink (populated once the report is finished). Status values are Mixed-Case, not upper-case: "Queued", "Processing", "Running", "Canceled", "Failed", "Finished". Poll this after request_export until the report's status is "Finished", then fetch the CSV from downloadLink. Rate limit: 1 request per 1 minute. |
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
- 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/florinel-chis/trading212-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server