Trading 212 Controlled MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Trading 212 Controlled MCPWhat's my current portfolio value?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Trading 212 Controlled MCP
An open-source MCP server for Trading 212 account access. It supports Codex and Claude Desktop locally today, with a portable Agent Plugins manifest for future broader distribution. It exposes portfolio tools plus a controlled, two-step process for live Market orders and pending-order cancellations.
It cannot transfer money, withdraw money, manage Pies, generate exports, or create limit, stop, or stop-limit orders.
This project is not affiliated with or endorsed by Trading 212, Anthropic, or OpenAI. It is software tooling, not investment advice.
Included tools
Tool | Trading 212 source |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
get_portfolio is a calculated view over positions because the current Trading 212 documentation exposes open positions rather than the older portfolio endpoint.
Related MCP server: Trading 212 MCP Server
Secure setup
In this folder, copy
.env.exampleto.env.Set
TRADING212_API_KEYandTRADING212_API_SECRETlocally. Do not paste them into chat, source code, or any committed file.Keep
TRADING212_ENVIRONMENT=demofor an initial verification. Useliveonly to read the live Invest/Stocks ISA account supported by Trading 212's public API.Install dependencies with
npm install, then runnpm testandnpm start.Add or install this folder as a local Codex plugin/MCP server. Its
.mcp.jsonstartssrc/server.jsover standard input/output. Configure credentials in the MCP host environment if it does not load the local.envfile.
For extra protection, restrict the API key to the machine/server IP in Trading 212 if your account settings offer that control. Revoke and recreate the key if it is ever disclosed.
Use with Claude and Codex
After cloning the repository, run npm install, copy .env.example to .env, and add your own Trading 212 credentials locally. Never commit .env.
Claude Desktop (one click): download the
.mcpbbundle from a GitHub Actions artifact or release, then open it with Claude Desktop and select Install. Claude will prompt for your Trading 212 API key and secret and stores them in the operating system's secure credential store. Build it locally withnpm run build:claude.Claude Desktop (manual): alternatively, adapt
claude-desktop-config.example.jsonwith this repository's absolute path.Codex: install the local plugin or configure
mcp.json. The portableplugin.jsonandmcp.jsonare at the repository root;.codex-plugin/plugin.jsonremains as a Codex compatibility manifest.
Public ChatGPT and Claude connector
GitHub distribution supports local installation, but it is not a public connector by itself. A public ChatGPT or Claude connector needs a hosted Streamable HTTP MCP service that securely stores each user's own credentials and authorizes each request. See the public-hosting plan before attempting deployment.
API and data notes
Authentication is HTTP Basic authentication using API key as username and API secret as password. The server creates this header in memory and never logs it.
Trading 212 documents cursor pagination for historical orders, dividends, and transactions. Use the returned
nextPagePathto obtain the next cursor; the MCP tools accept a cursor, not a custom URL.Historical list calls accept at most 50 items. Some endpoints have rate limits, so avoid bulk repeated calls.
This project uses the official current documentation: https://docs.trading212.com/api/accounts/getaccountsummary, https://docs.trading212.com/api/positions, https://docs.trading212.com/api/historical-events/transactions, and https://docs.trading212.com/api/section/authentication/building-the-authorization-header.
Security model
No credentials are stored in the skill, plugin manifest, source, tests, or example environment file.
The client blocks every path outside the read-only allowlist before making a network request and always uses
GET.Errors truncate upstream response text and never include authorization headers.
The process communicates over MCP stdio; do not expose it as a public HTTP service without an authenticated proxy and secret manager.
A market order must be previewed before it can be submitted. Its confirmation token expires after five minutes, is consumed before submission, and is never retried because Trading 212 states that Market order requests are not idempotent.
For live accounts, Trading 212 currently documents Market orders as the supported API execution type. The tool supports positive quantities for buys and negative quantities for sells.
Available Tools
11 toolsexecute_confirmed_actionA
Execute exactly one previously previewed market order or pending-order cancellation. Call only after the user directly confirms the exact preview. The confirmation token is single-use and expires after five minutes; executions are never retried automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation | Yes | Must be the exact word EXECUTE after the user directly confirms this preview. | |
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It surfaces important behavior: the token is single-use, expires after five minutes, and executions are never retried automatically. These details go well beyond a generic 'execute' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences front-load the core action, then add usage constraints with no filler. Every clause earns its place, and the most critical safety condition appears early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema and no annotations, the description covers the action, the mandatory confirmation prerequisite, and the token's behavior. An agent has enough context to select and invoke it correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the confirmation parameter is fully described in the schema, while confirmationToken only has a uuid format. The description compensates by explaining token lifecycle (single-use, five-minute expiry) and ties it to the previous preview, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Execute') and resource ('previously previewed market order or pending-order cancellation'), making the action unmistakable. It clearly distinguishes this from the read and preview siblings by describing the execution step that follows user confirmation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a hard precondition: 'Call only after the user directly confirms the exact preview.' This tells the agent exactly when this tool is appropriate versus the preview alternatives, though it does not explicitly name sibling tools or list exhaustive when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_summaryB
Retrieve the current account summary. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and it clearly states 'Read-only,' which is useful safety-relevant behavioral information. However, it does not disclose what the summary contains, whether it reflects live data, or any other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words; the core action and read-only nature are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter read tool, the description is minimally adequate, but there is no output schema and no annotations to fill in what an account summary actually includes. The lack of relationship to overlapping siblings also leaves some selection ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema fully covers that. There is nothing for the description to add about parameter meanings, so the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb ('Retrieve') and resource ('current account summary') and explicitly labels the operation as read-only. It is understandable, but 'account summary' is broad enough that the agent cannot tell it apart from siblings like get_portfolio or get_cash.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as get_portfolio, get_cash, or get_positions. The read-only statement is a property, not a usage condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cashA
Retrieve account summary for cash information only. Read-only; no transfers or withdrawals.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly discloses the read-only nature and that no transfers or withdrawals are performed, which is valuable safety context for a financial tool. For a zero-parameter retrieval, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the key purpose ('Retrieve account summary for cash information only') and then adds a safety qualifier. Every word contributes value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read-only tool with no output schema, the description provides enough context: purpose, scope, and safety behavior. It does not enumerate the exact cash fields returned, but that is a minor omission for this tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain beyond what the empty input schema already shows. The baseline of 4 applies because parameter semantics are not a concern here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and a clear resource ('account summary') with an explicit scope ('cash information only'). This distinguishes it from siblings like get_positions and get_account_summary without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states this tool is for cash information only and that it is read-only with no transfers or withdrawals. It does not explicitly name an alternative tool for broader account information, but the scope exclusion is enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividendsA
List paid dividends with cursor pagination and optional ticker filter. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return (1–50; API default is 20). | |
| cursor | No | Cursor from a previous response's nextPagePath. | |
| ticker | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It explicitly states 'Read-only' and mentions cursor pagination, which are genuine behavioral traits beyond the schema. It does not cover every possible detail, but for a simple read operation this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core purpose, key features, and safety profile with no wasted words. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with three optional parameters, the description covers the essential behavior and parameter intent. There is no output schema, but the tool is simple enough that 'List paid dividends' adequately signals the response type. Minor missing details like ticker format are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema already documents limit and cursor well. The description adds meaning by explaining that ticker is an optional filter and by framing the cursor as part of pagination, which the bare schema does not fully convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List paid dividends'. It also names the key features—cursor pagination and optional ticker filter—which clearly differentiate it from sibling tools like get_cash, get_positions, and get_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this tool is for listing paid dividends, but it does not provide explicit when-to-use vs. when-not-to-use guidance or mention any sibling tool as an alternative. Usage context is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_ordersA
List completed/cancelled historical orders with cursor pagination. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return (1–50; API default is 20). | |
| cursor | No | Cursor from a previous response's nextPagePath. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the key safety trait by stating 'Read-only' and indicates pagination via 'cursor pagination'. However, it does not mention other behavioral details such as ordering, error conditions, or rate limits. With no annotations, the description carries the full burden, and while it is adequate, it is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is just two short sentences, clear and free of filler. It front-loads the main action and scope, then adds the safety qualifier 'Read-only' in a standalone sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with fully documented parameters and a cursor semantics that implies a paginated response, this is largely complete. The lack of an output schema is not a blocker, though mentioning the response structure explicitly would have made it a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both 'limit' and 'cursor' are already fully documented in the input schema. The description only reiterates 'cursor pagination' without adding new parameter-specific detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'List' and the resource 'historical orders', and adds the qualifier 'completed/cancelled' which clearly distinguishes it from tools like get_pending_orders. This leaves no ambiguity about what the tool retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is explicit: completed/cancelled historical orders, which excludes pending orders and other account views. It does not explicitly mention get_pending_orders as the alternative for open orders, so it stops short of a 5, but the context is clear enough for an agent to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pending_ordersA
List currently pending orders. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses 'Read-only,' which is a meaningful safety trait for an agent. However, it does not mention any required authentication, whether results come in a specific order, or any rate-limit implications. The read-only hint adds value but leaves other behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero waste. The action is front-loaded ('List currently pending orders') and the safety trait is appended immediately. Perfectly sized for a zero-parameter read-only tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter, read-only list operation, the description covers the essential information an agent needs to select and call it. It lacks an explicit note about the return format, but the absence of an output schema and the simplicity of the operation make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description is not required to explain parameter meanings. The baseline of 4 applies because there are no parameters to document; the description adds nothing needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List currently pending orders.' It clearly indicates the operation and scope, and the 'currently pending' phrasing implicitly distinguishes it from get_historical_orders. It does not explicitly name the sibling, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives. The availability of get_historical_orders suggests a distinction between pending and historical, but the description does not state it explicitly or explain the conditions under which one should be used over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolioA
Build a current portfolio view with market values and allocation from open positions. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly discloses 'Read-only', which is essential for safety, and notes the tool derives data from open positions. However, it does not mention return format, data freshness, or behavior when there are no open positions, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core purpose, includes the key qualifiers 'current', 'market values', and 'allocation', and ends with a useful 'Read-only' safety disclosure. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, low-complexity read-only tool, the description conveys the essential purpose and data source. Since there is no output schema, a note on return shape or inclusion/exclusion of cash could improve completeness, but the tool is simple enough that the current description is nearly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and the baseline for such tools is 4. The description appropriately focuses on output content rather than parameter details, so no further parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Build a current portfolio view') and specifies content ('market values and allocation') and data source ('from open positions'). This clearly distinguishes it from siblings such as get_positions, which likely returns raw positions rather than a derived valuation view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: when you need a current portfolio snapshot with market values and allocation. It does not explicitly name alternatives or exclusion criteria, but the context is obvious enough that an agent knows when to choose this tool over raw position or cash queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positionsA
List open positions, optionally for one exact Trading 212 ticker. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does state 'Read-only,' which is important safety information, but it does not disclose output shape, pagination, live-vs-delayed data, or exact-match behavior beyond the word 'exact.' This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence covers purpose, optionality, and safety with no wasted words. The key information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one optional parameterholed and no output schema. The description covers what the tool does, the filtering option, and the read-only nature. It lacks explicit sibling differentiation and return-format details, but these are minor omissions for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the bare string schema. It adds meaningful semantics: the ticker is optionalaisle and when provided is an exact Trading 212 ticker. This is useful, though it omits formatting/case/suffix conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a specific resource ('open positions'), and clarifies the optional exact-ticker filter. 'Read-only' further disambiguates intent. It is clear enough to stand apart from siblings like get_portfolio and get_account_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool versus siblings, and no exclusions or alternatives are mentioned. The only usage hint is that the ticker is optional and exact, which is a filtering rule rather than a when-to-use directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionsA
List account cash movements with cursor pagination, optionally from an ISO-8601 time. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | ISO-8601 start time. | |
| limit | No | Items to return (1–50; API default is 20). | |
| cursor | No | Cursor from a previous response's nextPagePath. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses read-only behavior and cursor pagination, which is useful. However, it does not mention what the response looks like, whether the cursor is required for subsequent pages, or any rate-limit or auth considerations. The description adds some behavioral context but is not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose, pagination behavior, optional time filter, and read-only nature. Every phrase earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with fully documented parameters, the description is mostly adequate. However, with no output schema and no annotations, an agent might benefit from knowing the response shape or how to use nextPagePath for pagination. The description is complete enough for basic invocation but leaves pagination mechanics implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds the 'optional' qualifier for time and mentions cursor pagination, which slightly reinforces the cursor parameter's role. However, it does not add meaning beyond the schema's existing descriptions, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), resource ('account cash movements'), and key behaviors (cursor pagination, optional ISO-8601 time, read-only). It is clear enough to distinguish from siblings like get_cash or get_positions, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it is a read-only listing tool with pagination and optional time filtering. It does not explicitly state when to prefer this over get_cash or get_historical_orders, nor does it mention exclusions. The read-only hint and pagination details give some guidance, but no explicit alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_market_orderA
Create a five-minute preview for a real buy or sell Market order. It does not place an order. Present every detail and wait for the user to directly confirm before calling execute_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Exact Trading 212 ticker, for example AAPL_US_EQ. | |
| quantity | Yes | Positive to buy; negative to sell. | |
| extendedHours | No | Allow execution outside normal market hours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explicitly states the tool does not place an order, describes the five-minute preview nature, and specifies the required confirmation workflow. These are meaningful behavioral traits beyond what the schema conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core purpose and the critical safety constraint ('does not place an order' and 'wait for user to directly confirm') are front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema fully documents parameters and the description covers purpose, non-execution, and the confirmation workflow, the agent has everything needed to invoke the tool correctly and route the result to execute_confirmed_action. No output schema exists, but the instruction to 'Present every detail' covers handling the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents ticker, quantity, and extendedHours thoroughly. The description adds only the context that the order is a buy or sell market order, which aligns with the quantity sign semantics but doesn't materially expand on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('preview for a real buy or sell Market order'), and immediately distinguishes itself from execution by stating 'It does not place an order.' This clearly differentiates it from siblings like execute_confirmed_action and preview_order_cancellation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool: before placing a real market order, and instructs the agent to wait for direct user confirmation before calling execute_confirmed_action. It doesn't explicitly discuss alternatives like limit orders or cancellation previews, but the main execution-vs-preview distinction is well covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_order_cancellationA
Check a pending order and create a five-minute cancellation preview. It does not cancel anything. Present the order details and wait for direct user confirmation before calling execute_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The numeric ID of the pending order to cancel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden and it does well: it discloses the non-destructive nature ('It does not cancel anything'), the five-minute preview window, and the requirement for user confirmation. It does not specify the exact return shape or any side effects, but the key safety-relevant behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each earning its place: the action, the critical non-destructive clarification, and the required follow-up workflow. The most important information is front-loaded, with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter preview tool, the description covers purpose, behavior, and the next step in the workflow. The absence of an output schema is partially mitigated by the instruction to 'present the order details,' though richer details about what the preview returns would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter orderId is fully described in the schema with type, bounds, and meaning, so schema coverage is 100%. The description adds no parameter-level detail beyond the schema, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check a pending order and create a five-minute cancellation preview.' It also explicitly distinguishes the tool from an actual cancellation with 'It does not cancel anything,' making its purpose unmistakable among siblings like preview_market_order and execute_confirmed_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear workflow context: use it for pending orders, present the details, and then call execute_confirmed_action only after direct user confirmation. It does not explicitly name alternatives or say when not to use it beyond the fact that it does not cancel, which keeps this at a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v1.1.0- First observed
execute_confirmed_action - First observed
get_account_summary - First observed
get_cash - First observed
get_dividends - First observed
get_historical_orders - First observed
get_pending_orders - First observed
get_portfolio - First observed
get_positions - First observed
get_transactions - First observed
preview_market_order - First observed
preview_order_cancellation
TDQS
Scored across 11 tools
Most tools are clearly distinct, but there is overlap between get_cash and get_account_summary, and between get_positions and get_portfolio since both concern position/account data. The descriptions help clarify intent, but an agent could still select the wrong getter without deeper inspection.
All tools follow a consistent get_/preview_/execute_ prefix pattern with clear object/action naming. There is no mixing of casing, verb styles, or vague generic names.
11 tools is well within the ideal range for a trading account server. Each tool serves a distinct read or controlled-action role, and there is no obvious bloat or unnecessary duplication.
The read surface is thorough, covering cash, positions, portfolio, orders, transactions, dividends, and account summary. The action surface supports market order previews, cancellation previews, and confirmed execution; missing limit/stop order types and order modification are minor given the apparent controlled scope.
Maintenance
Related MCP Connectors
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
Agentic brokerage access to a US brokerage account: quotes, orders, positions, cash and documents.
Institutional financial data with SEC filing citations, for every AI agent. OAuth 2.1.
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Trading 212 investment accounts for portfolio tracking, account management, and real-time order execution. It supports managing investment pies, analyzing historical data, and monitoring market performance across multiple instrument types.232MIT
- FlicenseNot gradedqualityDmaintenanceProvides secure access to Trading 212 Public API through MCP, enabling Claude Desktop users to manage portfolios, execute trades, and analyze market data using natural language commands.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Trading212 brokerage accounts, including portfolio analysis, order placement (demo mode), and investment pie management.5MIT
- AlicenseNot gradedqualityDmaintenanceProvides read-only access to Trading 212 accounts, enabling AI assistants to retrieve portfolio positions, account summaries, instrument data, and transaction history.12 npm5MIT