trading212-mcp-server
Trading 212 MCP Server
Connect your AI assistant to your Trading 212 brokerage account. Ask questions about your portfolio, place trades, manage pies, and analyze dividends - all through natural language.
Works with Claude Desktop, Claude Code, ChatGPT, Gemini, Cursor, Windsurf, and any client that supports the Model Context Protocol (MCP).
Why this server?
32 tools covering the full Trading 212 API, plus 4 analytics tools that combine multiple API calls into actionable insights
Smart rate limiting - reads T212's rate limit headers, auto-waits, and retries on 429 (up to 3 times). No rate limit errors leak to your AI
Zero config - install from PyPI, add your API key, done. No Docker, no database, no Redis
Typed responses - every tool returns structured Pydantic models, not raw JSON
Paper trading - set
ENVIRONMENT=demoto test with virtual money first
Related MCP server: trading-mcp
What can it do?
Category | Tools | Examples |
Analytics | Portfolio summary, performance, dividends, activity | "Show me my portfolio P&L" |
Trading | Market, limit, stop, stop-limit orders | "Buy 5 shares of AAPL" |
Portfolio | Positions, cash balance, account info | "What's my cash balance?" |
Pies | Create, update, duplicate, delete pies | "Show my pie allocations" |
Market Data | Instrument search, exchange schedules | "Search for Tesla" |
History | Past orders, dividends, transactions, CSV exports | "Show my dividend history" |
Analytics tools
These combine multiple API calls into single high-level responses:
fetch_portfolio_summary- Complete snapshot: total value, P&L, cash, top holdings, allocationfetch_portfolio_performance- Per-position returns with dividends, best/worst performersfetch_dividend_summary- Income analysis grouped by ticker and monthfetch_recent_activity- Combined timeline of trades and transactions
Quick start
Install
uvx trading212-mcp-serverOr via pip:
pip install trading212-mcp-serverGet your API credentials
From the Trading 212 app: Settings > API (Beta). You need both the API Key and Secret - the server uses Basic Auth.
Connect to Claude Desktop
Add to claude_desktop_config.json (Windows: %APPDATA%\Claude\, Mac: ~/Library/Application Support/Claude/):
{
"mcpServers": {
"trading212": {
"command": "uvx",
"args": ["trading212-mcp-server"],
"env": {
"TRADING212_API_KEY": "<your-api-key>",
"TRADING212_API_SECRET": "<your-api-secret>",
"ENVIRONMENT": "live"
}
}
}
}Connect to Claude Code
claude mcp add trading212 -- uvx trading212-mcp-serverThen set the environment variables in your shell or .env file.
Other clients (Cursor, Windsurf, ChatGPT, etc.)
Same command and env vars - configure per your client's MCP docs. Set ENVIRONMENT to demo for paper trading.
From source
git clone https://github.com/KyuRish/trading212-mcp-server.git
cd trading212-mcp-server
cp .env.example .env # fill in your API keys
uv sync
uv run -m trading212_mcp_server.server{
"mcpServers": {
"trading212": {
"command": "uv",
"args": ["run", "--directory", "<path-to-repo>", "-m", "trading212_mcp_server.server"],
"env": {
"TRADING212_API_KEY": "<your-api-key>",
"TRADING212_API_SECRET": "<your-api-secret>",
"ENVIRONMENT": "live"
}
}
}
}All 32 tools
Analytics (composite)
Tool | Description |
| Complete portfolio snapshot with P&L and allocations |
| Per-position returns, dividends, best/worst performers |
| Dividend income by ticker and month |
| Combined timeline of trades and transactions |
Account
Tool | Description |
| Account metadata (currency, ID) |
| Cash balance, invested value, P&L |
| All portfolio positions with live prices |
| Single position lookup by ticker |
Trading
Tool | Description |
| Buy/sell at current market price |
| Buy/sell at specified price or better |
| Trigger order at stop price |
| Stop trigger with limit execution |
| List all pending orders |
| Get specific order by ID |
| Cancel a pending order |
Pies
Tool | Description |
| List all investment pies |
| Pie details with instrument allocations |
| Create a new pie with target weights |
| Update pie settings and allocations |
| Clone an existing pie |
| Remove a pie |
Market Data
Tool | Description |
| Search tradeable instruments by ticker or name |
| Search available exchanges |
History
Tool | Description |
| Past orders with pagination |
| Dividend payment history |
| Deposits and withdrawals |
| List CSV export reports |
| Request a new CSV export |
Compatibility
Tested with these MCP clients:
Client | Status |
Claude Desktop | Supported |
Claude Code | Supported |
Cursor | Supported |
Windsurf | Supported |
Any MCP-compatible client | Supported |
Author
Built by Rishabh Dogra.
Support
If this server saves you time, a coffee would mean a lot.
License
MIT
Available Tools
28 toolscancel_orderADestructiveIdempotent
Cancel a pending order and remove it from the order book. This is irreversible -
once cancelled, the order cannot be reinstated and must be placed again.
Use fetch_all_orders or fetch_order first to confirm the order is still
active before attempting to cancel.
Args:
order_id: Numeric ID of the pending order to cancel (e.g., 12345678).
Get this from fetch_all_orders or from the response when the order was placed.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds crucial behavioral context beyond annotations: describes irreversibility and that the order cannot be reinstated. This complements destructiveHint and idempotentHint annotations.
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?
Well-structured with purpose, then usage guideline, then parameter detail. Front-loaded and efficient, though could be slightly more 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?
Complete for a simple tool: covers purpose, usage, parameter semantics, and behavioral traits. Output schema exists to handle return value documentation.
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?
With 0% schema coverage, the description fully compensates by explaining order_id is a numeric ID, providing an example, and telling where to obtain it.
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 clearly states the verb 'cancel' and the resource 'pending order', and distinguishes from sibling tools like fetch_all_orders and place_limit_order.
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?
Explicitly advises to use fetch_all_orders first to confirm order is active, and warns that cancellation is irreversible, guiding when and when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pieA
Create a new investment pie with the given instruments and target weights.
This creates a real pie in your account - instruments will be purchased
when you fund the pie.
Use search_instrument to find valid ticker symbols before creating. Weights
must sum to 1.0 (100%). See also: duplicate_pie to clone an existing pie.
Args:
name: Display name for the pie (e.g., 'Tech Growth')
instrument_shares: Mapping of ticker to target weight, must sum to 1.0.
Example: {'AAPL_US_EQ': 0.5, 'MSFT_US_EQ': 0.3, 'NVDA_US_EQ': 0.2}
dividend_cash_action: REINVEST (buy more shares) or TO_ACCOUNT_CASH (withdraw to cash).
Defaults to REINVEST if not specified.
end_date: Optional target date in ISO 8601 (e.g., '2029-12-31T23:59:59Z')
goal: Optional target value in account currency (e.g., 20000.0)
icon: Optional pie icon identifier (e.g., 'Coins', 'Education')
Returns:
PieDetails: Full details of the newly created pie
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| instrument_shares | Yes | ||
| dividend_cash_action | No | ||
| end_date | No | ||
| goal | No | ||
| icon | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| settings | No | |
| instruments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that creation is real and triggers purchase upon funding, beyond the annotations which only indicate non-read-only, non-destructive, non-idempotent. Adds meaningful context without contradiction.
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?
Concise yet informative: single-sentence purpose, followed by usage guidelines, then structured parameter explanations. No fluff, every sentence 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?
Covers creation process, prerequisites, constraints, defaults, and return type. Given the complexity (6 params, nested objects), the description is fully complete and agent-ready.
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?
Despite 0% schema coverage, the description explains each parameter with examples, defaults, and constraints (e.g., weights must sum to 1.0, dividend_cash_action default). Adds significant value 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 clearly states the tool creates a new investment pie, with specifics that it's a real creation and instruments are purchased on funding. It distinguishes from siblings like duplicate_pie, delete_pie, update_pie.
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?
Explicitly advises using search_instrument first, states weight constraint (sum to 1.0), and references duplicate_pie as an alternative for cloning. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pieADestructiveIdempotent
Permanently delete a pie. This is irreversible. Instruments inside the pie
become standalone positions in your portfolio - they are not sold.
Use fetch_a_pie first to review the pie contents before deleting. Consider
whether you want to sell the positions separately after deletion.
Args:
pie_id: Numeric ID of the pie to delete (e.g., 6894572). Get this from fetch_pies.
| Name | Required | Description | Default |
|---|---|---|---|
| pie_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint: true, idempotentHint: true. Description adds irreversible nature, what happens to instruments, and prior review recommendation – adding valuable context beyond annotations.
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 short paragraphs, each earning its place. First sentence states purpose, second explains consequences, third gives argument details. 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 single-parameter delete tool with no output schema, the description covers essential behavioral context (irreversibility, instrument treatment). Could mention response format but not strictly needed.
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%. Description adds meaning: 'Numeric ID of the pie to delete (e.g., 6894572). Get this from fetch_pies.' Provides example and source, compensating for lack of schema description.
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?
Description clearly states 'Permanently delete a pie' – specific verb and resource. Distinguishes from sibling tools like create_pie, duplicate_pie, update_pie.
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?
Recommends fetching the pie first to review contents, explains that instruments become standalone positions, and suggests considering selling them separately. Provides clear context but does not explicitly state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_pieA
Clone an existing pie into a new one with identical instrument allocations
and settings. The new pie starts with zero invested value.
Use this to create a variation of an existing pie without rebuilding it
from scratch. See also: create_pie for building a pie from scratch.
Args:
pie_id: ID of the source pie to copy (e.g., 6894572). Get this from fetch_pies.
name: Optional custom name for the clone. Defaults to the original name with a suffix.
icon: Optional icon for the clone.
Returns:
PieDetails: Full details of the newly cloned pie
| Name | Required | Description | Default |
|---|---|---|---|
| pie_id | Yes | ||
| name | No | ||
| icon | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| settings | No | |
| instruments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the new pie starts with zero invested value, which goes beyond the annotations that only indicate it's not read-only or destructive. Missing details on side effects like the original pie being unchanged, but still strong.
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?
Five sentences plus structured Args/Returns section. Front-loaded with purpose and key behavioral detail (zero invested value). Every sentence 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?
Covers all parameters, includes return type reference (PieDetails), and provides usage context with sibling tool. Given output schema exists, no need to detail return fields.
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?
With 0% schema description coverage, the description provides meaningful context: pie_id is the source pie ID obtainable from fetch_pies, name is optional with default behavior, and icon is optional. Adds value beyond bare 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?
Description clearly states it clones an existing pie with identical allocations and settings, distinguishing it from create_pie which builds from scratch.
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?
Explicitly advises using this tool to create a variation of an existing pie without rebuilding, and references create_pie as an alternative for building from scratch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_account_cashARead-onlyIdempotent
Get a detailed breakdown of the account balance including available cash,
invested capital, profit/loss, blocked funds, and pie cash.
Use this to check buying power before placing orders, or to understand
the overall account health. See also: fetch_portfolio_summary for a
richer overview that includes individual positions.
Returns:
Cash with free, invested, total, ppl (profit/loss), result, blocked, pieCash
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| free | No | |
| invested | No | |
| total | No | |
| ppl | No | |
| result | No | |
| blocked | No | |
| pieCash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, indicating safe read operation. The description adds value by listing the return fields (free, invested, total, ppl, result, blocked, pieCash), which helps the agent understand the output structure. No contradictions with annotations.
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 concise (two short paragraphs) and front-loaded with the main purpose. Every sentence adds value: it states what the tool does, when to use it, mentions siblings, and lists return values with clear labels.
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 no parameters and the presence of an output schema (implied by the return field list), the description provides sufficient context for a simple read operation. The account health context and buying power use case complete the picture.
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 input schema coverage is 100% (void). The description does not need to clarify parameters. It mentions return fields, which is beyond parameter semantics but not a deficiency. Baseline 4 is appropriate for a parameterless tool with full schema coverage.
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 clearly states the tool retrieves a detailed breakdown of account balance, listing specific components (available cash, invested capital, etc.). It also distinguishes itself from the sibling fetch_portfolio_summary by noting that the sibling provides a richer overview including positions.
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?
Explicitly says when to use: 'check buying power before placing orders' and 'understand the overall account health'. It also directs to an alternative tool (fetch_portfolio_summary) for a more comprehensive view, providing clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_account_infoARead-onlyIdempotent
Retrieve account metadata such as the account currency and unique identifier.
Use this as a starting point to determine the account's base currency before
interpreting monetary values from other tools. Safe to call frequently.
Returns:
Account with id (int) and currencyCode (e.g., 'EUR', 'GBP', 'USD')
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| currencyCode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, non-destructive, idempotent. The description adds the return format (Account with id and currencyCode) and confirms safe frequent calls. Missing details like possible error cases or rate limits, but compensated by annotations.
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 short sentences. Front-loaded with purpose, then usage guidance, then return format. No fluff, every sentence adds value.
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 zero parameters and an output schema that is apparently not provided but mentioned in description, the description fully covers what the agent needs to call and interpret results. No gaps.
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?
No parameters in schema, baseline 4. Description adds meaning by detailing the return values (id, currencyCode), which is beyond the schema's empty definition. Provides concrete examples of currency codes.
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 clearly states it retrieves account metadata (currency and unique identifier). It uses specific nouns ('account metadata', 'base currency', 'unique identifier') and distinguishes from siblings that fetch other data like cash, orders, or pies.
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?
Explicitly says to use as a starting point before interpreting monetary values from other tools, and states it's safe to call frequently. This tells the agent when and why to invoke this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_all_open_positionsARead-onlyIdempotent
Retrieve every open position in the portfolio with live prices, quantities,
cost basis, and unrealised gains.
Use this to get a complete view of current holdings. Each position includes
the ticker, quantity, averagePrice, currentPrice, and ppl (profit/loss).
Positions held inside pies show a non-zero pieQuantity field.
See also: search_specific_position_by_ticker for a single position lookup,
or fetch_portfolio_summary for an aggregated portfolio view.
Returns:
List of Position objects, one per held instrument
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by specifying the return fields (ticker, quantity, averagePrice, etc.) and mentioning the pieQuantity field for pies, without contradicting any annotations.
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 concise with two short paragraphs and a 'Returns' line. The first sentence immediately states the main purpose. Every sentence provides necessary context without 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?
Given no parameters, comprehensive annotations, and an output schema (implied by 'List of Position objects'), the description fully covers what the tool does, its return structure, and special cases like pies. It is complete for a read-only, parameterless tool.
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?
There are no parameters, so the description does not need to add parameter details. Schema coverage is 100% trivially. A baseline of 4 is appropriate for a zero-parameter tool.
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 'Retrieve every open position' which is a specific verb and resource. It clearly distinguishes from siblings by mentioning 'search_specific_position_by_ticker' for single position lookup and 'fetch_portfolio_summary' for aggregated 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 states 'Use this to get a complete view of current holdings' and provides alternative tools but does not explicitly state when not to use this tool. However, the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_all_ordersARead-onlyIdempotent
List all active pending orders (limit, stop, stop-limit) waiting to be filled.
Use this to review open orders before placing new ones or to check if a
previously placed order is still active. Does not include filled or
cancelled orders - use fetch_historical_order_data for those.
Returns:
List of Order objects with id, ticker, type, status, quantity, limitPrice, stopPrice
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, destructive, and idempotent hints. The description adds valuable context: it returns a list with specific fields and excludes filled/cancelled orders. No contradictions.
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?
Efficiently structured: summary line, usage guidance, explicit exclusion, and return format. Every sentence adds 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?
Given no parameters, explicit annotations, and a simple return structure described in the description, everything an agent needs to invoke correctly is present.
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?
No parameters exist, so the description doesn't need to add param details. Per guidelines, baseline is 4 for zero-param tools. The description covers the absence of filters implicitly by describing the scope.
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 clearly states 'List all active pending orders' with specific order types, and distinguishes from sibling tools like fetch_order and fetch_historical_order_data.
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?
Explicitly says when to use (review open orders before placing new ones, check if previously placed order is active) and when not to (for filled/cancelled, use fetch_historical_order_data), naming the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_a_pieARead-onlyIdempotent
Get full details for a single pie including every instrument allocation,
current vs target weights, per-instrument P/L, and pie settings.
Use fetch_pies first to get the list of pie IDs, then call this for
detailed breakdown of a specific pie.
Args:
pie_id: Numeric ID of the pie (e.g., 6894572). Get this from fetch_pies.
Returns:
PieDetails with settings (name, goal, endDate, dividendCashAction) and
instruments (ticker, expectedShare, currentShare, ownedQuantity, result)
| Name | Required | Description | Default |
|---|---|---|---|
| pie_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| settings | No | |
| instruments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so no side-effects are expected. The description adds value by detailing the returned data (settings and instruments), though it omits potential rate limits or pagination (not applicable here).
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 compact paragraph with clear sections: purpose, usage, argument, returns. Every sentence is necessary and contributes to understanding with zero fluff.
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?
With a simple 1-parameter tool and an existing output schema, the description covers all necessary context: what it does, how to use it, what it returns. No gaps for an agent to misuse.
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?
Given 0% schema coverage on the single parameter, the description fully compensates by explaining the parameter's nature (numeric ID), providing an example (6894572), and linking it to fetch_pies. This goes beyond the bare 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 specifies 'Get full details for a single pie' and enumerates exact contents (allocations, weights, P/L, settings), clearly differentiating from sibling fetch_pies which lists pie IDs.
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?
Explicitly instructs to use fetch_pies first to obtain the pie ID, then call this tool for details, providing a clear sequential workflow and disambiguation from other pie-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_dividend_summaryARead-onlyIdempotent
Analyse dividend income history by collecting up to 200 dividend records
and breaking them down by ticker and by calendar month.
Use this to identify which holdings generate the most income and to spot
monthly income trends. For raw dividend records with pagination control,
use fetch_paid_out_dividends instead.
Returns:
dict with currency, total_dividends, dividend_count, average_monthly,
by_ticker (sorted highest-paying first), by_month (chronological)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show readOnlyHint=true and idempotentHint=true. The description adds that it collects up to 200 records, returns a dict with specific keys, and aggregates by ticker and month, offering behavioral detail beyond annotations.
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 with bulleted return details. Every sentence adds value: purpose, usage, alternatives, and output structure. 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?
Given zero parameters and no output schema, the description fully covers purpose, usage, alternatives, return format, and aggregation behavior. Annotations handle safety. Complete for a summary tool.
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 schema coverage is 100% (empty). Baseline is 4; no parameter info needed as there are none.
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 clearly states the tool's function: 'Analyse dividend income history' and 'breaking them down by ticker and by calendar month.' It distinguishes from sibling 'fetch_paid_out_dividends' by noting raw record pagination, making the purpose 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?
Explicitly states when to use ('identify which holdings generate the most income and to spot monthly income trends') and when not ('For raw dividend records with pagination control, use fetch_paid_out_dividends instead'), providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_exports_listARead-onlyIdempotent
List all previously generated CSV account exports with their status and
download links.
Use this to check if an export requested via request_csv_export is ready
for download. Completed reports include a downloadLink field.
Returns:
List of Report objects with reportId, status, and downloadLink (when complete)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds return format details (Report objects with reportId, status, downloadLink), providing useful context beyond annotations.
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?
Concise two-paragraph structure with no fluff. First sentence states purpose, second gives usage context, third describes returns. Every sentence contributes.
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 zero parameters and presence of an output schema, the description fully covers what the tool does and returns, leaving no gaps.
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?
No parameters exist, baseline is 4. Description adds no parameter info, but none 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 clearly states the tool lists previously generated CSV account exports with status and download links. It uses specific verbs and resources, and distinguishes from sibling tool 'request_csv_export' by indicating it checks export readiness.
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?
Explicitly instructs to use this tool to check if an export requested via 'request_csv_export' is ready, providing clear context and indirect when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_historical_order_dataARead-onlyIdempotent
Retrieve past orders (filled, cancelled, rejected) with execution details,
fill prices, and timestamps. Supports pagination and ticker filtering.
Use this to review trade history or to analyze past execution quality.
For currently active orders, use fetch_all_orders instead.
Args:
cursor: Pagination cursor from a previous response. Omit for the first page.
ticker: Filter results to a specific instrument (e.g., 'AAPL_US_EQ'). Omit for all.
limit: Number of orders per page, 1-50. Defaults to 20.
Returns:
List of HistoricalOrder with ticker, type, status, filledQuantity, fillPrice,
dateCreated, dateExecuted, and more
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| ticker | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds context about pagination and ticker filtering, which are behavioral details beyond annotations. It does not contradict annotations.
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 concise with a clear structure: purpose, usage, args, returns. It is front-loaded with the main purpose, and every sentence adds value without 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?
The output schema exists, and the description lists the return fields (ticker, type, status, etc.). It covers input parameters, usage guidance, and return value details, making it complete for the tool's moderate 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?
The input schema has no descriptions (0% coverage), but the description explains each parameter: cursor for pagination, ticker for filtering, limit for page size with defaults and constraints (1-50, default 20). This fully compensates for the missing schema descriptions.
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 clearly states the tool retrieves past orders with execution details, fill prices, and timestamps. It explicitly distinguishes itself from fetch_all_orders for active orders, providing a specific verb-resource pairing.
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 explicitly states when to use the tool ('review trade history', 'analyze past execution quality') and when not to ('For currently active orders, use fetch_all_orders'). This provides clear usage context and a sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_orderARead-onlyIdempotent
Retrieve a single pending order by its ID to check its current status,
fill progress, and price parameters.
Use this after placing an order to monitor its status, or before cancelling
to confirm the order is still active. See also: fetch_all_orders to list
all pending orders at once.
Args:
order_id: Numeric order ID returned when the order was placed (e.g., 12345678)
Returns:
Order with id, ticker, type, status, quantity, filledQuantity, limitPrice, stopPrice
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| ticker | Yes | |
| type | No | |
| status | No | |
| quantity | No | |
| filledQuantity | No | |
| filledValue | No | |
| limitPrice | No | |
| stopPrice | No | |
| strategy | No | |
| value | No | |
| creationTime | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds no additional behavioral traits beyond mentioning the tool retrieves pending orders, which is consistent. No contradictions.
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?
Very concise, front-loaded with purpose and usage, no wasted words. Parameter and return information are clearly separated.
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?
Covers purpose, usage, parameter, and return fields. Could mention error handling, but for a simple retrieval tool it is sufficiently 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?
Schema coverage 0%, but description provides meaningful context: order_id is numeric and returned when order placed. Single parameter is fully described.
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?
Clearly states it retrieves a single pending order by ID to check status, fill progress, and price parameters. Distinguishes from sibling fetch_all_orders which retrieves all pending orders.
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?
Explicitly tells when to use: after placing an order to monitor, or before cancelling to confirm active. Also points to alternative fetch_all_orders for listing all pending orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_paid_out_dividendsARead-onlyIdempotent
Retrieve dividend payments received, including per-share amounts, payment dates,
and total payouts. Supports pagination and ticker filtering.
Use this to track income from dividend-paying stocks. For a summarized view
grouped by ticker and month, use fetch_dividend_summary instead.
Args:
cursor: Pagination cursor from a previous response. Omit for the first page.
ticker: Filter to a specific instrument (e.g., 'AAPL_US_EQ'). Omit for all.
limit: Number of records per page, 1-50. Defaults to 20.
Returns:
PaginatedDividends with items (ticker, amount, paidOn, quantity) and nextPagePath
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| ticker | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| nextPagePath | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about pagination, filtering, and return fields (ticker, amount, paidOn, quantity, nextPagePath), which goes beyond annotations but does not contradict them.
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 concise with a clear opening sentence, a usage line, an Args section, and a Returns section. Every sentence adds value, and the structure is front-loaded with the main purpose.
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 output schema exists, the description appropriately mentions return fields but doesn't over-specify. It covers pagination, filtering, defaults, and provides an alternative tool. Combined with annotations, it is fully complete for an agent to use correctly.
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?
Input schema has 0% description coverage, but the description's 'Args' section explains each parameter: cursor (pagination cursor), ticker (filter to instrument), limit (records per page, 1-50, default 20). This adds essential meaning absent from 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 clearly states 'Retrieve dividend payments received' with specifics (per-share amounts, dates, payouts) and distinguishes from sibling fetch_dividend_summary by noting that this tool provides detailed records vs. a summarized 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?
Explicitly says 'Use this to track income from dividend-paying stocks' and provides an alternative: 'For a summarized view grouped by ticker and month, use fetch_dividend_summary instead.' This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_piesARead-onlyIdempotent
List all investment pies with their cash balances, dividend details,
goal progress, and overall investment performance.
Use this to get an overview of all pies before drilling into a specific one
with fetch_a_pie. Each pie includes its numeric ID needed for other pie operations.
Returns:
List of PieSummary objects with id, status, cash, progress, result, dividendDetails
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description complements by specifying the return structure (list of PieSummary with fields), adding value beyond annotations.
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 compact, includes a header, usage tip, and return overview. Every sentence adds 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?
With 0 parameters, an output schema, and a clear description explaining the return type and fields, the tool is well-documented and complete for its 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?
No parameters exist, so the description does not need to add parameter info. Baseline score of 4 is appropriate due to 100% schema coverage.
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 clearly states the tool lists all investment pies with specific details (cash balances, dividends, goal progress, performance). It distinguishes itself from fetch_a_pie, which drills into a specific pie.
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?
Explicitly says to use this for an overview before drilling into a specific pie with fetch_a_pie, which provides clear context. Lacks explicit when-not-to-use or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_portfolio_performanceARead-onlyIdempotent
Build a detailed performance report across all positions by combining
current holdings, recent order history, and dividend payouts.
Calculates per-position total returns (price P/L + dividends) and identifies
best and worst performers. Use this for deeper analysis than fetch_portfolio_summary
provides, especially when dividend income matters.
Returns:
dict with currency, total_price_ppl, total_dividends, total_return,
best_performer, worst_performer, positions (each with invested, current_value,
price_ppl, dividends, total_return, return_pct, held_since), recent_filled_orders
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, etc.), the description details the exact calculations (total returns, best/worst performers) and the return dict structure. No contradictions with annotations.
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 concise: two sentences for purpose/usage, then a bullet-like list of returns. Every sentence adds value, no 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 zero-parameter tool with no output schema, the description covers the key output structure thoroughly. It lacks examples or caveats, but is sufficient for correct invocation.
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?
No parameters exist, so the baseline is 4. The description adds no parameter info (none needed) but effectively conveys the tool's behavior.
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 explicitly states it builds a detailed performance report combining holdings, orders, and dividends. It clearly distinguishes itself from the sibling tool fetch_portfolio_summary by mentioning deeper analysis and dividend relevance.
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 provides explicit guidance: 'Use this for deeper analysis than fetch_portfolio_summary provides, especially when dividend income matters.' This clearly states when to use and names an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_portfolio_summaryARead-onlyIdempotent
Produce a complete portfolio snapshot in one call by combining account info,
cash balance, and all open positions into a single aggregated response.
This is the recommended starting point for portfolio analysis. It calculates
total value, P/L percentages, and ranks holdings by current value. For
per-position performance with dividends, use fetch_portfolio_performance instead.
Returns:
dict with currency, total_value, cash_available, invested, profit_loss,
profit_loss_pct, position_count, positions (sorted by value descending),
and top_holdings (top 5)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the return format (dictionary fields) but does not disclose additional behavioral traits beyond what annotations provide. No contradiction.
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 paragraphs: first sentence defines purpose, second gives usage recommendation, third distinguishes sibling, then lists return fields. Front-loaded and efficient with no extraneous text.
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 zero parameters, adequate annotations, and no output schema, the description fully covers what the tool does, how to use it, and what it returns. No gaps identified.
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?
No parameters present in schema, and schema coverage is 100% (empty). Baseline for 0 parameters is 4. Description adds no parameter information, which 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?
Clearly states 'complete portfolio snapshot' combining multiple data sources. Distinguishes itself from fetch_portfolio_performance by specifying its scope (all positions vs. per-position performance).
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?
Explicitly labels itself as 'recommended starting point' and directs to an alternative (fetch_portfolio_performance) for per-position dividend performance, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_recent_activityARead-onlyIdempotent
Get a unified timeline of recent trades and account movements by merging
order history with deposit/withdrawal transactions into a single
chronologically sorted feed.
Use this for a quick "what happened recently" overview. Each entry is tagged
as either 'order' (trade) or 'transaction' (cash movement). For separate
access, use fetch_historical_order_data or fetch_transaction_list.
Args:
limit: How many items to pull from each source (orders and transactions
separately), 1-50. Defaults to 20. Total activity items may be up to 2x this.
Returns:
dict with currency, activity (sorted newest-first, each tagged as 'order' or
'transaction'), order_count, transaction_count
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds behavioral details about the merging process, chronological sorting, and tagging of entries. It also explains how the limit parameter affects total items (up to 2x limit). This adds value beyond annotations.
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 well-structured with a clear summary line, usage guidance, parameter explanation, and return format. It is concise without wasted words, every sentence adds value.
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 tool with one parameter and no output schema, the description is complete. It covers the merged feed nature, parameter semantics, return structure (dict with specific fields), and tagging. It also specifies the limit range (1-50) not in the schema.
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 only a limit parameter with default and type. The description explains its semantics in detail: how many items from each source, range 1-50, default 20, and total may be 2x this. With 0% schema coverage, the description fully compensates and adds significant meaning.
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 clearly states it gets a unified timeline of recent trades and account movements, merging order history with deposits/withdrawals. It distinguishes from siblings like fetch_historical_order_data and fetch_transaction_list by specifying they provide separate access.
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 explicitly says 'Use this for a quick "what happened recently" overview' and mentions alternatives for separate access, providing clear context for when to use this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_transaction_listARead-onlyIdempotent
Retrieve account cash movements such as deposits, withdrawals, fees,
interest payments, and internal transfers. Supports cursor-based pagination.
Use this to audit account cash flow or to reconcile deposits/withdrawals.
For a combined view of orders and transactions together, use fetch_recent_activity.
Args:
cursor: Pagination cursor from a previous response. Omit for the first page.
time: Filter transactions from this ISO 8601 timestamp onward
(e.g., '2024-06-01T00:00:00Z'). Omit for all.
limit: Number of records per page, 1-50. Defaults to 20.
Returns:
PaginatedTransactions with items (type, dateTime, amount, reference) and nextPagePath
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| time | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| nextPagePath | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, destructive, and idempotent traits. Description adds details about cursor-based pagination and return structure (items with type, dateTime, amount, reference, and nextPagePath), which goes beyond annotations.
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?
Description is concise and well-structured: a brief purpose statement, usage guidance, argument list with clear explanations, and return description. Every sentence adds value without 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?
Given the tool's simplicity (3 optional parameters, output schema exists), the description covers all necessary aspects: purpose, usage, parameters, pagination behavior, and return shape. No gaps.
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?
With 0% schema description coverage, the description fully compensates by explaining each parameter's purpose (cursor for pagination, time for filtering from timestamp, limit for page size with default 20 and range 1-50). No ambiguity.
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?
Description clearly states the verb 'Retrieve' and resource 'account cash movements', with specific examples (deposits, withdrawals, fees, interest, transfers). It also distinguishes from sibling tool fetch_recent_activity by noting that tool provides a combined view of orders and 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?
Explicitly tells when to use (audit cash flow, reconcile deposits/withdrawals) and when not to (for combined view, use fetch_recent_activity). Parameter usage is explained with defaults and ranges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_limit_orderA
Submit a limit order that executes only when the instrument reaches your
target price. The order stays open until filled, cancelled, or expired.
Use this instead of a market order when you want to control the execution
price. Check fetch_all_orders afterward to monitor fill status.
Args:
ticker: Instrument ticker (e.g., 'AAPL_US_EQ'). Use search_instrument to find valid tickers.
quantity: Number of shares. Positive to buy, negative to sell.
limit_price: Maximum price to pay (buy) or minimum to accept (sell).
For example, 150.00 means "buy at 150 or lower".
time_validity: How long the order stays active. DAY (expires end of trading day)
or GOOD_TILL_CANCEL (stays open until filled or manually cancelled). Defaults to DAY.
Returns:
Order: The newly created limit order with its pending status
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| quantity | Yes | ||
| limit_price | Yes | ||
| time_validity | No | DAY |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| ticker | Yes | |
| type | No | |
| status | No | |
| quantity | No | |
| filledQuantity | No | |
| filledValue | No | |
| limitPrice | No | |
| stopPrice | No | |
| strategy | No | |
| value | No | |
| creationTime | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only readOnlyHint, destructiveHint, and idempotentHint as false. The description adds behavioral context: the order stays open until filled, cancelled, or expired, and the return is a pending status order. It does not disclose potential partial fills or order book dynamics, but the given info is sufficient for safe use.
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 front-loaded with the core behavior, followed by usage guidance and parameter docs. It is concise with no wasted sentences; each line adds value. Parameter explanations are well-structured under 'Args:'.
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 description covers all necessary aspects: purpose, usage, parameters, return value, and monitoring advice. An output schema exists for the return type, so the description need not detail the Order structure. Complete for an agent to invoke correctly.
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 0%, so the description fully explains all four parameters: ticker format and validation tip, quantity sign meaning, limit_price with concrete example, and time_validity options with defaults. This adds essential meaning beyond the bare schema titles.
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 clearly defines a limit order as executing only when the instrument reaches a target price and staying open until filled, cancelled, or expired. It explicitly distinguishes from market orders by stating 'Use this instead of a market order when you want to control the execution price.'
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 provides clear when-to-use guidance: 'Use this instead of a market order when you want to control the execution price.' It also advises monitoring fill status via fetch_all_orders and finding valid tickers via search_instrument. However, it does not explicitly contrast with stop-limit or stop orders, which are sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_market_orderA
Execute a market order at the current price. This creates a real trade that
affects your portfolio immediately. The order fills at the best available
market price.
Use search_instrument first to find the correct ticker symbol. Check
fetch_account_cash to verify sufficient buying power before placing.
Args:
ticker: Instrument ticker to trade (e.g., 'AAPL_US_EQ', 'MSFT_US_EQ').
Use search_instrument to find valid tickers.
quantity: Number of shares. Positive to buy, negative to sell.
Fractional shares are supported (e.g., 0.5).
Returns:
Order: The newly created order with its initial status
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| quantity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| ticker | Yes | |
| type | No | |
| status | No | |
| quantity | No | |
| filledQuantity | No | |
| filledValue | No | |
| limitPrice | No | |
| stopPrice | No | |
| strategy | No | |
| value | No | |
| creationTime | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that the order creates a real trade affecting the portfolio immediately and fills at best available price. Annotations are minimal (no readOnly, destructive, or idempotent hints), so description adds necessary behavioral context without contradiction.
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?
Concise, front-loaded with purpose, followed by usage guidelines, then parameter details. Every sentence adds value without 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?
Covers all necessary aspects: purpose, prerequisites, parameter semantics, and return type. No gaps given the tool's simplicity and presence of output schema.
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?
Despite 0% schema description coverage, the parameter docs add extensive meaning: ticker format with examples and reference to search_instrument, quantity meaning with sign convention and fractional share support.
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?
Clearly states 'Execute a market order at the current price' with specific verb and resource. Distinguishes from sibling tools like place_limit_order by implying immediacy and market price execution.
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?
Explicitly advises using search_instrument first to find correct ticker and checking fetch_account_cash for sufficient buying power, providing clear prerequisites and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_stop_limit_orderA
Submit a combined stop-limit order: once the stop price is hit, a limit order
is placed at your specified limit price instead of executing at market.
This gives more control than a plain stop order by preventing execution at
an unfavourable price during fast market moves, but the order may not fill
if the price moves through the limit. See also: place_stop_order for a
simpler stop that guarantees execution.
Args:
ticker: Instrument ticker (e.g., 'AAPL_US_EQ'). Use search_instrument to find valid tickers.
quantity: Number of shares. Positive to buy, negative to sell.
stop_price: Trigger price that activates the limit order (e.g., 140.00).
limit_price: Price at which the resulting limit order is placed (e.g., 139.50).
Typically set slightly below the stop price for sells.
time_validity: DAY or GOOD_TILL_CANCEL. Defaults to DAY.
Returns:
Order: The newly created stop-limit order
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| quantity | Yes | ||
| stop_price | Yes | ||
| limit_price | Yes | ||
| time_validity | No | DAY |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| ticker | Yes | |
| type | No | |
| status | No | |
| quantity | No | |
| filledQuantity | No | |
| filledValue | No | |
| limitPrice | No | |
| stopPrice | No | |
| strategy | No | |
| value | No | |
| creationTime | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description discloses that the tool creates an order (mutation), explains the non-fill risk, and contrasts with market execution. It doesn't mention auth or rate limits, but the annotations provide sufficient baseline, and the description adds useful context.
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 concise with a clear structure: purpose statement, benefits, risk, alternative, then args in bullet-like format, then return type. Every sentence adds value; 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?
Given the tool has an output schema (Order), the description doesn't need to detail return values. It covers purpose, usage, parameters, and behavior adequately. Could mention idempotency or side effects (e.g., multiple submissions create multiple orders), but overall it's quite 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 input schema has 5 parameters with 0% description coverage. The description adds full semantic context: ticker example and lookup hint, quantity direction (positive/negative), stop_price, limit_price tip for sells, and time_validity default. Schema provides types but description adds meaning.
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 clearly states it submits a stop-limit order, explains the mechanism ('once the stop price is hit, a limit order is placed'), and distinguishes it from a plain stop order. It also mentions specific parameters and returns an Order.
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 explicitly states when to use this tool ('gives more control than a plain stop order') and names the alternative ('See also: place_stop_order'). It also warns about the risk of non-fill if the price moves through the limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_stop_orderA
Submit a stop order that triggers a market execution once the instrument
reaches the specified stop price. Commonly used as a stop-loss to limit
downside risk on an existing position.
When the stop price is hit, the order becomes a market order and fills at
the best available price (which may differ from the stop price in fast markets).
For more control over the fill price, use place_stop_limit_order instead.
Args:
ticker: Instrument ticker (e.g., 'AAPL_US_EQ'). Use search_instrument to find valid tickers.
quantity: Number of shares. Positive to buy, negative to sell.
stop_price: Trigger price that activates the order (e.g., 140.00).
time_validity: DAY or GOOD_TILL_CANCEL. Defaults to DAY.
Returns:
Order: The newly created stop order
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| quantity | Yes | ||
| stop_price | Yes | ||
| time_validity | No | DAY |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| ticker | Yes | |
| type | No | |
| status | No | |
| quantity | No | |
| filledQuantity | No | |
| filledValue | No | |
| limitPrice | No | |
| stopPrice | No | |
| strategy | No | |
| value | No | |
| creationTime | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the order becomes a market order and may fill at a price different from the stop price in fast markets, adding critical behavioral context beyond annotations.
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?
Well-structured with clear sections, but slightly verbose. Could be tightened slightly without losing clarity.
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?
Covers inputs, behavioral notes, and alternative tool. Output schema exists, so return value explanation is not needed. Comprehensive for a stop order tool.
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?
With 0% schema description coverage, the description provides detailed parameter explanations in the 'Args:' section, including example for ticker, sign convention for quantity, and default for time_validity.
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?
Clearly states it submits a stop order that becomes a market order at a specified stop price, commonly used as a stop-loss. Distinguishes from sibling tools like place_stop_limit_order.
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?
Explicitly states common use case (stop-loss) and advises using place_stop_limit_order when more control over fill price is needed, providing clear when-to and when-not-to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_csv_exportA
Queue a CSV export of your account history. The export runs asynchronously -
check fetch_exports_list to monitor progress and get the download link.
This creates a server-side export job. Each call generates a new report.
Use the time range parameters to limit the export to a specific period.
Args:
include_dividends: Include dividend payment records. Defaults to True.
include_interest: Include interest payment records. Defaults to True.
include_orders: Include trade/order history. Defaults to True.
include_transactions: Include deposit/withdrawal records. Defaults to True.
time_from: Start of the reporting window in ISO 8601 (e.g., '2024-01-01T00:00:00Z').
Omit for all history.
time_to: End of the reporting window in ISO 8601 (e.g., '2024-12-31T23:59:59Z').
Omit for up to now.
Returns:
EnqueuedReport with the reportId for tracking via fetch_exports_list
| Name | Required | Description | Default |
|---|---|---|---|
| include_dividends | No | ||
| include_interest | No | ||
| include_orders | No | ||
| include_transactions | No | ||
| time_from | No | ||
| time_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| reportId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, non-destructive, non-idempotent. The description adds key behaviors: runs asynchronously, each call generates a new report, and returns an EnqueuedReport with reportId. No contradictions.
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 well-structured with a brief intro, async behavior note, and a docstring-style Args/Returns. Every sentence is informative, though slightly lengthy. Could be tightened but still effective.
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 tool's complexity (6 parameters, async, sibling tool), the description covers purpose, async handling, parameter details, return value, and how to track progress. No gaps identified.
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 0%, but the description provides detailed explanations for all 6 parameters via an Args section, including defaults, format for time parameters, and meaning of omission. This greatly adds value 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 clearly states the tool queues a CSV export of account history, with a specific verb 'queue' and resource 'CSV export'. It distinguishes itself from sibling fetch_exports_list by noting the export runs asynchronously and that sibling is used for monitoring.
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 explicitly guides when to use this tool (to start an export) and points to fetch_exports_list for progress and download. It notes each call creates a new report, implying non-idempotency, but doesn't explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_exchangeARead-onlyIdempotent
Search for stock exchanges by name or numeric ID. Returns exchange details
including trading hours and working schedules.
Use this to check when a specific exchange is open for trading, or to
look up exchange information by its numeric ID from an instrument's
workingScheduleId field.
Args:
search_term: Case-insensitive text to match against exchange names
(e.g., 'NASDAQ', 'London'), or an exact numeric exchange ID
(e.g., '71'). Omit to return all exchanges.
Returns:
List of Exchange objects with id, name, and workingSchedules
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds behavioral details such as case-insensitive matching, exact numeric ID search, and the structure of the return objects. This adds value beyond the annotations.
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 concise, front-loaded with the purpose, and uses a clear structure with Args and Returns sections. Every sentence adds value without 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?
Given the tool has one parameter and an output schema exists, the description covers the input semantics, output structure, and use cases comprehensively. No gaps are apparent.
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 schema has 0% description coverage, so the description carries full burden. It explains that search_term is case-insensitive, can be an exact numeric ID, and that omitting it returns all exchanges. This adds significant 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 clearly states 'Search for stock exchanges by name or numeric ID' and specifies the output includes trading hours and working schedules. It uses specific verbs and resources, making the purpose unambiguous. Although no explicit sibling comparison is made, the tool's functionality is distinct from other search tools on the server.
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 provides explicit usage guidance: 'Use this to check when a specific exchange is open for trading, or to look up exchange information by its numeric ID from an instrument's workingScheduleId field.' It also explains that omitting the parameter returns all exchanges. No exclusions or alternatives are mentioned, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_instrumentARead-onlyIdempotent
Search for tradeable instruments by ticker symbol or company name.
Returns matching instruments with their ticker, ISIN, currency, and type.
Use this before placing orders or creating pies to find the correct Trading 212
ticker format (e.g., 'AAPL_US_EQ' for Apple). Omit the search term to retrieve
the full instrument catalogue.
The search is case-insensitive and matches partial strings against both
ticker symbols and instrument names.
Args:
search_term: Text to match against tickers and names (e.g., 'Apple', 'AAPL',
'silver ETC'). Omit to return every available instrument.
Returns:
List of Instrument objects with ticker, name, type (STOCK/ETF), currencyCode,
isin, shortName, and maxOpenQuantity
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly and idempotent hints. Description adds case-insensitivity and partial matching, complementing annotations without contradiction.
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?
Well-structured with sections, concise yet comprehensive, no redundant sentences.
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 single parameter and presence of output schema, description adequately covers behavior and return values.
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%, but the description compensates by explaining search_term: a string for matching, can be omitted to return all instruments.
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 clearly states the tool searches for tradeable instruments by ticker or name, returning specific fields. It distinguishes itself from sibling tools like search_exchange by focusing on instruments.
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?
Description specifies when to use (before orders/pies) and that omitting search_term returns full catalogue. Lacks explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_specific_position_by_tickerARead-onlyIdempotent
Look up a single open position by its exact ticker symbol.
Use this when you need details on one specific holding without fetching the
entire portfolio. Returns the same Position data as fetch_all_open_positions
but for a single instrument.
Args:
ticker: The exact Trading 212 ticker symbol (e.g., 'AAPL_US_EQ', 'IGLDd_EQ').
Use search_instrument to find the correct ticker if unsure.
Returns:
Position with ticker, quantity, averagePrice, currentPrice, ppl, and more
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ticker | Yes | |
| quantity | Yes | |
| averagePrice | Yes | |
| currentPrice | Yes | |
| ppl | No | |
| fxPpl | No | |
| initialFillDate | No | |
| pieQuantity | No | |
| maxBuy | No | |
| maxSell | No | |
| frontend | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly, non-destructive, idempotent. Description adds that it returns the same Position data as fetch_all_open_positions and lists return fields (ticker, quantity, averagePrice, etc.), providing context beyond annotations.
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 paragraphs with bullet points for Args and Returns. Front-loaded with purpose. Every sentence provides value; 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?
Given one parameter and existing output schema, description covers purpose, usage, parameter details, and return fields. No gaps for a single-parameter lookup tool.
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 has 0% coverage, but description explains ticker format with examples ('AAPL_US_EQ', 'IGLDd_EQ') and advises using search_instrument for correct ticker. Adds substantial meaning beyond the bare 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?
Description clearly states it looks up a single open position by ticker symbol. Verb 'look up' combined with resource 'position by ticker' is specific. Distinguishes from sibling 'fetch_all_open_positions' by specifying single instrument.
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?
Explicitly says 'Use this when you need details on one specific holding without fetching the entire portfolio.' Also recommends 'search_instrument' for ticker lookup when unsure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pieA
Modify an existing pie's settings, instrument allocations, or target weights.
Only provided fields are updated - omitted fields remain unchanged.
Use fetch_a_pie first to see the current configuration before making changes.
The API requires providing a name even if you are not changing it.
Args:
pie_id: Numeric ID of the pie to modify (e.g., 6894572). Get this from fetch_pies.
name: Updated name for the pie. Required by the API even if unchanged.
instrument_shares: New ticker-to-weight mapping, must sum to 1.0.
Example: {'AAPL_US_EQ': 0.5, 'MSFT_US_EQ': 0.5}
dividend_cash_action: REINVEST or TO_ACCOUNT_CASH
end_date: Revised end date in ISO 8601 (e.g., '2029-12-31T23:59:59Z')
goal: Revised target value in account currency (e.g., 25000.0)
icon: Updated icon identifier
Returns:
PieDetails: The pie after applying your changes
| Name | Required | Description | Default |
|---|---|---|---|
| pie_id | Yes | ||
| name | No | ||
| instrument_shares | No | ||
| dividend_cash_action | No | ||
| end_date | No | ||
| goal | No | ||
| icon | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| settings | No | |
| instruments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses partial update behavior ('only provided fields are updated') and API requirement for name. Does not contradict annotations. Could mention error handling but 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?
Two paragraphs: summary, usage note, then Args list. Each sentence adds value. Front-loaded and well-organized.
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?
Covers update behavior, prerequisites, parameter details, and return type (PieDetails). Output schema exists but is referenced simply; complete for the tool's 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 description coverage is 0%, but description compensates with clear explanations for each parameter, including examples (e.g., pie_id example, instrument_shares format and sum constraint, dividend_cash_action enum).
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?
Clearly states 'Modify an existing pie's settings, instrument allocations, or target weights.' Specific verb and resource, distinguishes from sibling tools like create_pie and delete_pie.
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?
Provides explicit guidance: 'Use fetch_a_pie first to see the current configuration before making changes.' Also notes API requires name even if unchanged. Lacks explicit when-not-to-use, but context is clear.
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.
3 tool updates
v0.3.0- Changed
fetch_all_open_positions3 fields changed- removed
Output schema / $defs / ExecutorRemoved value: -{ - "enum": [ - "API", - "WEB", - "IOS", - "ANDROID", - "SYSTEM", - "AUTOINVEST" - ], - "title": "Executor", - "type": "string" -} - changed
Output schema / $defs / Position / properties / frontend / anyOfPrevious value: -[ - { - "$ref": "#/$defs/Executor" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / Position / properties / frontend / titleAdded value: +"Frontend"
- Changed
fetch_historical_order_data3 fields changed- removed
Output schema / $defs / ExecutorRemoved value: -{ - "enum": [ - "API", - "WEB", - "IOS", - "ANDROID", - "SYSTEM", - "AUTOINVEST" - ], - "title": "Executor", - "type": "string" -} - changed
Output schema / $defs / HistoricalOrder / properties / executor / anyOfPrevious value: -[ - { - "$ref": "#/$defs/Executor" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / HistoricalOrder / properties / executor / titleAdded value: +"Executor"
- Changed
search_specific_position_by_ticker3 fields changed- removed
Output schema / $defsRemoved value: -{ - "Executor": { - "enum": [ - "API", - "WEB", - "IOS", - "ANDROID", - "SYSTEM", - "AUTOINVEST" - ], - "title": "Executor", - "type": "string" - } -} - changed
Output schema / properties / frontend / anyOfPrevious value: -[ - { - "$ref": "#/$defs/Executor" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / frontend / titleAdded value: +"Frontend"
28 tool updates
v0.2.1- Added
cancel_order - Added
create_pie - Added
delete_pie - Added
duplicate_pie - Added
fetch_a_pie - Added
fetch_account_cash - Added
fetch_account_info - Added
fetch_all_open_positions - Added
fetch_all_orders - Added
fetch_dividend_summary - Added
fetch_exports_list - Added
fetch_historical_order_data - Added
fetch_order - Added
fetch_paid_out_dividends - Added
fetch_pies - Added
fetch_portfolio_performance - Added
fetch_portfolio_summary - Added
fetch_recent_activity - Added
fetch_transaction_list - Added
place_limit_order - Added
place_market_order - Added
place_stop_limit_order - Added
place_stop_order - Added
request_csv_export - Added
search_exchange - Added
search_instrument - Added
search_specific_position_by_ticker - Added
update_pie
TDQS
Scored across 28 tools
Most tools target a distinct resource and action (orders vs pies vs positions vs dividends), and cross-references clarify when to use aggregate vs granular tools. A few composite tools like fetch_portfolio_summary and fetch_recent_activity overlap with underlying fetch_* endpoints, but the descriptions explicitly disambiguate them.
The set is largely consistent: fetch_* for reads, place_* for order creation, create/update/delete for pies, and search_* for lookups. Minor deviations like search_specific_position_by_ticker instead of fetch_position_by_ticker, and request_csv_export instead of create/fetch_csv_export, prevent a perfect score.
At 28 tools, this exceeds the 25+ heavy threshold. Several composite tools such as fetch_portfolio_summary, fetch_portfolio_performance, fetch_recent_activity, and fetch_dividend_summary duplicate data available from more granular endpoints, inflating the surface beyond what is strictly necessary.
The tool surface covers the core account lifecycle well: orders can be placed, listed, fetched, cancelled, and reviewed historically; pies have full CRUD; positions, dividends, transactions, and exports are all readable. Minor gaps exist, such as no standalone price/quote lookup and no order modification, but agents can work around these with search_instrument or cancel+recreate.
Maintenance
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for stocksense-ai documentation, generated by doc2mcp.
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides a comprehensive suite of 20 tools for cryptocurrency trading and technical analysis across 100+ exchanges like Binance and MEXC via CCXT. It enables users to execute orders, track positions, and scan for market opportunities through Claude Desktop using natural language.2010 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides foundational trading utilities by fetching market data through Akshare and computing technical indicators like RSI and MACD using TA-Lib. It enables users to retrieve candlestick data and technical analysis series via a standardized MCP interface.9-
- AlicenseAqualityAmaintenanceRenders 45+ interactive chart types, dashboards, and KPI widgets directly inside AI conversations. Supports drill-down, live API polling, 20 themes, and one-click export to PNG, PowerPoint, and A4 documents.40359 npm47Functional Source , Version 1.1, MIT Future

Purple Flea Tradingofficial
AlicenseNot gradedqualityDmaintenancePerpetual futures trading API for AI agents. Access 275+ markets (crypto, stocks, commodities, forex) via Hyperliquid. Copy trading, leaderboard, up to 50x leverage. No KYC. 20% referral commissions.12 npmMIT