Skip to main content
Glama
rubenviolinha

Trading 212 Controlled MCP

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_account_summary, get_cash

GET /api/v0/equity/account/summary

get_positions, get_portfolio

GET /api/v0/equity/positions

get_pending_orders

GET /api/v0/equity/orders

get_historical_orders

GET /api/v0/equity/history/orders

get_transactions

GET /api/v0/equity/history/transactions

get_dividends

GET /api/v0/equity/history/dividends

preview_market_orderexecute_confirmed_action

POST /api/v0/equity/orders/market after a five-minute, single-use confirmation

preview_order_cancellationexecute_confirmed_action

DELETE /api/v0/equity/orders/{id} after a five-minute, single-use confirmation

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

  1. In this folder, copy .env.example to .env.

  2. Set TRADING212_API_KEY and TRADING212_API_SECRET locally. Do not paste them into chat, source code, or any committed file.

  3. Keep TRADING212_ENVIRONMENT=demo for an initial verification. Use live only to read the live Invest/Stocks ISA account supported by Trading 212's public API.

  4. Install dependencies with npm install, then run npm test and npm start.

  5. Add or install this folder as a local Codex plugin/MCP server. Its .mcp.json starts src/server.js over standard input/output. Configure credentials in the MCP host environment if it does not load the local .env file.

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 .mcpb bundle 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 with npm run build:claude.

  • Claude Desktop (manual): alternatively, adapt claude-desktop-config.example.json with this repository's absolute path.

  • Codex: install the local plugin or configure mcp.json. The portable plugin.json and mcp.json are at the repository root; .codex-plugin/plugin.json remains 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

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 tools
execute_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmationYesMust be the exact word EXECUTE after the user directly confirms this preview.
confirmationTokenYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems to return (1–50; API default is 20).
cursorNoCursor from a previous response's nextPagePath.
tickerNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems to return (1–50; API default is 20).
cursorNoCursor from a previous response's nextPagePath.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoISO-8601 start time.
limitNoItems to return (1–50; API default is 20).
cursorNoCursor from a previous response's nextPagePath.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesExact Trading 212 ticker, for example AAPL_US_EQ.
quantityYesPositive to buy; negative to sell.
extendedHoursNoAllow execution outside normal market hours.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderIdYesThe numeric ID of the pending order to cancel.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 11 tool updatesv1.1.0
    • First observedexecute_confirmed_action
    • First observedget_account_summary
    • First observedget_cash
    • First observedget_dividends
    • First observedget_historical_orders
    • First observedget_pending_orders
    • First observedget_portfolio
    • First observedget_positions
    • First observedget_transactions
    • First observedpreview_market_order
    • First observedpreview_order_cancellation

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    23
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Trading212 brokerage accounts, including portfolio analysis, order placement (demo mode), and investment pie management.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides read-only access to Trading 212 accounts, enabling AI assistants to retrieve portfolio positions, account summaries, instrument data, and transaction history.
    12 npm
    5
    MIT