tradingcli
This server is the MCP interface for TradingCLI, a local-first paper-trading and market-simulation platform that lets you manage fake brokerage accounts, execute diverse order types, analyze portfolios, backtest strategies, and access market data—all without a real broker. Key capabilities include:
Account Management: Create, list, rename, and view account details; deposit/withdraw cash; set a default account; view unified account activity.
Order & Position Management: Submit market, limit, stop, stop-limit, trailing, bracket, OCO, OTO orders; preview orders; cancel/replace orders; close or liquidate positions; trigger tick to fill pending orders.
Options & Futures: Buy/sell option contracts; view option chains; parse OCC symbols; list futures symbols with margin requirements.
Market Data: Search/validate symbols; get quotes, OHLCV bars, snapshots; bulk quotes (up to 50); news, most-actives, movers; check market status and trading calendar.
Portfolio Analytics & Research: View P&L, performance metrics (CAGR, Sharpe, Sortino, etc.), ledger balances; backtest holdings; walk-forward SMA tests; rebalancing suggestions (min variance, risk parity, equal weight); account snapshots.
Risk Management: Set shorting, leverage, concentration, drawdown limits; preview orders against limits; adjust commission/slippage/liquidity settings.
Watchlists: Create, manage watchlists; view live quotes per watchlist.
Journals & Audit: List journal entries; view attribution by symbol; browse audit trail.
Operations & Utilities: Healthcheck; database backups; export fills to CSV (generic, Alpaca, IBKR); list automations; view MCP tool catalog; manually process market ticks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tradingcliRun a backtest on my current holdings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tradingcli
Local, multi-account paper-trading CLI, live terminal dashboard, REST + MCP server. SQLite state, Yahoo Finance market data. Simulation only — never places live brokerage orders.
Stocks / ETFs / crypto (BTC-USD) / FX (EURUSD=X) / futures (ES=F) / equity options (OCC AAPL260116C00250000). Engine supports market / limit / stop / stop_limit / trailing_stop plus bracket / OCO / OTO / mleg with take_profit / stop_loss, notional sizing, client order IDs, TIF (gtc / day / ioc / fok / opg / cls), and extended-hours limit orders.
Setup
Requires Python 3.10+.
# from source
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt # or: pip install -e .
# isolated tool install (uv)
uv tool install .Database defaults to ~/.papertrade.db; override with PAPERTRADE_DB=/tmp/test.db or PAPERTRADE_DB=:memory: for isolated in-memory tests.
Related MCP server: tastytrade-mcp
Run
# first-run wizard + live TUI dashboard
python3 papertrade.py # or: tradingcli
# explicit dash
python3 papertrade.py dash # or: tradingcli dash# accounts
python3 papertrade.py new mybook --cash 50000
python3 papertrade.py accounts --json
python3 papertrade.py use mybook
# simple trade → inspect
python3 papertrade.py buy AAPL 5 -a mybook
python3 papertrade.py positions -a mybook --json
python3 papertrade.py market --json
# Alpaca-style order lifecycle
python3 papertrade.py order submit AAPL --side buy --qty 10 --type limit --limit-price 185 -a mybook
python3 papertrade.py order submit AAPL --side sell --qty 10 --type trailing-stop --trail-percent 3 -a mybook
python3 papertrade.py order get --order-id 1 --json
python3 papertrade.py order replace 1 --limit-price 184
python3 papertrade.py order cancel-all -a mybook
python3 papertrade.py order submit AAPL --side buy --qty 10 --type limit --limit-price 180 --dry-run --json
python3 papertrade.py position close AAPL --percent 50 -a mybook
python3 papertrade.py position close-all -a mybook
# bracket / OCO / OTO — use --take-profit / --stop-loss / --stop-loss-limit
# options / chain / watchlists / research
python3 papertrade.py option get AAPL270115C00100000 --json
python3 papertrade.py option exercise AAPL270115C00100000 -a mybook
python3 papertrade.py chain AAPL 2027-01-15
python3 papertrade.py watchlist create Tech --symbols AAPL,MSFT,NVDA -a mybook
python3 papertrade.py watchlist quotes Tech -a mybook --json
python3 papertrade.py data bars AAPL --timeframe 1Day --limit 30 --json
python3 papertrade.py data snapshot AAPL --json
python3 papertrade.py data movers --json
python3 papertrade.py calendar --start 2026-07-01 --end 2026-07-31 --json
# backtest current holdings as a retrospective (see notes below)
python3 papertrade.py backtest -a mybook --lookback-days 1825 --commission-bps 10 --jsonEvery command accepts one automation flag: --json / --csv / --quiet. --schema prints the command tree without touching market data; doctor checks DB integrity.
Press g in the TUI to open Backtesting & Graphs — live equity curve beside a backtesting.py current-holdings backtest (return, CAGR, vol, Sharpe, Sortino, costs, maxDD). Universe is the selected account's open positions; 6m / 1y / 2y / 5y / 10y / max presets or exact days. CAGR uses real calendar elapsed time; options appear as skipped (no point-in-time chain history); futures use continuous series without roll costs. Curves are time-weighted, so deposits/withdrawals don't masquerade as alpha. The result has intentional look-ahead/survivorship bias — it's a "what if we held today's book" retrospective, not an OOS strategy test. Yahoo adjusted closes are used; crypto top-of-book is indicative.
REST + web UI
python3 web_ui.py # http://127.0.0.1:8080 (or: tradingcli-web) — localhost only, no auth
uvicorn web_ui:app --port 8080 # alternative
HOST=0.0.0.0 PORT=3000 python3 web_ui.py # expose to network (no auth — do not do this on untrusted networks)GET /→ SPA (static/index.html, Chart.js). Tabs: Portfolio / Orders / Watchlists / Backtest / Settings.Binds to
127.0.0.1by default; mutating routes have no auth — do not expose to the network. CORS is limited tolocalhost:8080/3000.GET /api/accounts,/api/positions?account=…,/api/orders?account=…,/api/watchlists,/api/backtest?account=…&days=365,/api/equity-curve,/api/market/status,/api/market/quote/{symbol},/api/market/history/{symbol},/api/health,/api/config. All return{"ok": true, "data": …}or{"ok": false, "error": "…"}.
MCP server (for Claude Code / Cursor / Hermes)
Preferred surface for AI agents — typed, idempotent, single DB contract.
python3 mcp_server.py # core — 54 tools (default, safe)
PAPERTRADE_MCP_PROFILE=advanced python3 mcp_server.py # 66 tools — adds destructive/specialist ops
PAPERTRADE_MCP_PROFILE=full python3 mcp_server.py # 73 tools — adds 7 legacy aliases (buy/sell/quote/…)
PAPERTRADE_MCP_RESPONSE_FORMAT=json python3 mcp_server.py # force JSON contract
# or via entry point after pip install -e .
tradingcli-mcpcore responses use {"ok": true, "data": …} / {"ok": false, "error": {"code": "…", "message": "…"}}. mcp_catalog reports the active profile + tool list. Mutating tools take idempotency_key + agent for safe retries.
Client config — copy .mcp.json to your client's MCP config and fix the path:
{
"mcpServers": {
"papertrade": {
"command": "python3",
"args": ["/absolute/path/to/tradingcli/mcp_server.py"],
"env": { "PAPERTRADE_MCP_PROFILE": "core" }
}
}
}For agents importing as a library instead of MCP, see docs/agent-guide.md.
Verify
Tests are standalone scripts (no pytest needed):
python3 test_papertrade.py
python3 test_backtesting.py
python3 test_performance.py
python3 test_concurrency.py
python3 test_mcp_server.py
python3 test_mcp_profiles.py
python3 test_dashboard.py
python3 test_alpaca_parity.py
python3 test_cli.py
python3 test_edge_cases.py
python3 test_market_data.py
python3 test_mcp_features.py
python3 test_invariants.pytradingcli config list
tradingcli config set myapp.threshold 42
tradingcli events --since-id 0 --limit 20 --json
tradingcli export -a mybook --format parquet --output mybook.parquet
tradingcli perf -a mybook --benchmark SPY --jsonWeb streaming: GET /api/events/stream?since_id=0 (SSE) and WS /ws for live health.
Yahoo Finance supplies market data. Historical quote/trade series and crypto top-of-book are explicitly marked aggregated/indicative — not exchange tick tapes or full depth.
Available Tools
60 toolsaccount_activityC
Unified account fills, orders, transfers, dividends, splits, and option events.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| limit | No | ||
| start | No | ||
| account | Yes | ||
| activity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It lists content types but does not disclose behaviors like pagination via 'limit', date filtering via 'start'/'end', or how 'activity_type' filters the results. As a read-only query tool, no side effects are implied, but behavioral details are almost entirely absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It front-loads the key concept ('Unified account') and lists content types efficiently.
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 tool with 5 parameters and an output schema, the description is too sparse. It fails to explain how to filter by date range or activity type, mention pagination, or differentiate when to use this aggregated tool over its siblings. The output schema covers return shape, but usage context remains underdeveloped.
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 must compensate. It provides vocabulary for the 'activity_type' parameter by enumerating example types (fills, orders, etc.), and 'unified account' suggests the 'account' parameter. However, it does not elaborate on 'start', 'end', or 'limit', though their names are fairly self-explanatory.
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 identifies the resource as a unified aggregation of account activity types (fills, orders, transfers, dividends, splits, option events). It distinguishes from siblings by covering multiple event kinds in one tool, but it lacks an explicit verb like 'list' or 'retrieve,' making it slightly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as 'orders' or 'execution_get'. The description does not state that this is the go-to for a consolidated activity view, nor does it mention exclusions or scenarios where another tool would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_createC
Create an account. Reuse idempotency_key safely when retrying the same mutation.
| Name | Required | Description | Default |
|---|---|---|---|
| cash | No | ||
| name | Yes | ||
| agent | No | mcp | |
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It mentions idempotency_key safety for retries, which adds value, but omits details on required permissions, side effects beyond creation, or failure modes. This is sparse for a mutation tool.
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 sentences, front-loading the main purpose. It wastes no words, though the retry note is slightly tucked in as a second sentence.
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 create mutation with four parameters and an output schema, the description is under-specified. It doesn't explain what account creation entails, the meaning of initial cash/agent settings, or retry behavior beyond idempotency. The presence of an output schema reduces the need to describe returns, but contextual gaps remain.
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 must compensate. It only explains the purpose of idempotency_key (for safe retries) but provides no meaning for name, cash, or agent parameters. The default values in the schema partially hint at their roles, but the description adds minimal semantic value.
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 'Create an account' with a specific verb and resource, distinguishing it from sibling tools like account_list and rename_account. It lacks explicit differentiation but is unambiguous about its core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The idempotency note implies it is for creating accounts with retry-safe mutations, but no exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_detailsC
Account balances, configured risk limits, and open-position count.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only lists output data and does not explicitly state that the operation is read-only, describe error behavior, or mention required permissions. This leaves an agent without enough behavioral 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 extremely concise with no filler words, which is efficient. However, it is a sentence fragment lacking a verb and provides no structural organization beyond a simple list.
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?
Although an output schema exists to define return structure, the tool still lacks guidance on the required account parameter and when to choose this tool over siblings. The description lists only three output categories and omits invocation context and failure modes, leaving the overall guidance incomplete for an agent.
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%, and the description does not explain what the required 'account' string should represent, its format, or how it maps to the returned data. The parameter name 'account' offers minimal inference, but the description adds no meaningful semantics 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 conveys the resource and output scope: account balances, configured risk limits, and open-position count. It distinguishes from siblings by listing these specific data elements, but it lacks an explicit verb such as 'get' or 'retrieve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like account_list, positions, or risk_get. No prerequisites, exclusions, or alternative recommendations are provided; usage is only weakly implied by the listed contents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_listA
List all paper accounts and their cash balances.
| 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?
With no annotations, the description relies on 'List' to convey read-only behavior. It adds context about paper accounts and cash balances, but omits details like pagination, performance, or any side effects. For a simple list tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no redundancy, effectively communicating the tool's function.
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, an output schema, and a simple purpose, the description fully covers the essential information. It does not need to explain return values because output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter ambiguity. The description correctly focuses on output rather than inputs, matching the empty input 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 lists all paper accounts and their cash balances, using a specific verb 'List' and resource 'paper accounts'. It distinguishes from sibling tools like account_details and get_default_account by providing an aggregate view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving an overview of all paper accounts, which is clear context. It does not explicitly contrast with alternatives or provide when-not-to-use guidance, but for a list-all tool the purpose is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asset_searchB
Search Yahoo Finance for matching symbols, asset types, and exchanges.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only says 'Search Yahoo Finance' and does not disclose whether the operation is read-only, any rate limits, or the shape of results. It provides minimal behavioral insight beyond the search action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler words, efficiently conveying the core action 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 simple nature (two parameters, one required) and the existence of an output schema, the description is minimally adequate but lacks usage criteria, parameter details, and any behavioral disclaimers. It doesn't fully leverage the opportunity to guide tool selection or disclose constraints.
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 no descriptions (0% coverage), and the description only indicates that the query matches symbols, asset types, and exchanges. It does not explain the 'limit' parameter or provide format/constraints for 'query', leaving the agent with incomplete information.
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 'Search', the data source 'Yahoo Finance', and the output categories 'matching symbols, asset types, and exchanges', making its purpose immediately clear and distinct from sibling tools like validate_symbol or bulk_quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as validate_symbol or bulk_quotes. It simply describes what it does without context for selection, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_logA
Paginated mutation audit trail with agent and idempotency attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It adds pagination behavior and attribution fields, but omits whether it is read-only (though implied) and does not explain response structure or account filtering. Partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core purpose ('Paginated mutation audit trail') and contains no extraneous words. Every phrase 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?
Despite an output schema, the description is insufficient for a tool with 0% schema coverage and no annotations. It fails to explain the account filter and does not provide enough guidance for correct invocation, especially for differentiating this tool from similar audit/log tools.
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%, and the description does not compensate. 'Paginated' hints at limit/offset, but the account parameter is completely unexplained, leaving the agent to guess its purpose. The description adds minimal parameter context.
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 identifies the tool as a paginated audit trail for mutations, specifying agent and idempotency attribution. This distinguishes it from other listing tools and clearly states the resource and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'mutation audit trail' implies when to use this tool (to inspect mutations), but it does not explicitly name alternative tools or provide when-not-to-use guidance. No exclusion criteria are given, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_quotesA
Fetch up to 50 comma-separated live symbols concurrently.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It adds useful context like 'up to 50' and 'concurrently', but does not disclose failure modes, partial result behavior, or rate limits. These would be expected for a bulk fetch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and delivers all key details (limit, format, concurrency) without redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the essential constraints. It lacks some behavioral details like error handling, but given the tool's simplicity and the existence of an output schema, it is reasonably 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 schema only specifies 'symbols' as a string with 0% description coverage. The description compensates by explaining the comma-separated format and the 50-symbol limit, giving the agent the crucial constraint needed to invoke correctly.
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 'Fetch', the resource 'live symbols', and the scope 'up to 50 comma-separated' with 'concurrently' conveying bulk behavior. This distinguishes it from single-quote siblings like market_latest_quote or tick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. The description implies bulk fetching but does not mention watchlist_quotes or market_snapshot, nor does it state any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_optionA
Buy an option. expiry is YYYY-MM-DD, kind is 'C' or 'P', contracts x100 shares. Market order unless limit (premium) is given. Use option_chain to find valid expiries/strikes.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| agent | No | mcp | |
| limit | No | ||
| expiry | Yes | ||
| strike | Yes | ||
| account | Yes | ||
| contracts | Yes | ||
| underlying | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behaviors (market vs limit, x100 multiplier, expiry format) but omits execution risk, idempotency, and what happens after order submission.
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 three concise sentences with no wasted words. Every sentence adds value: what it does, parameter formats, order type, and prerequisite guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a financial action with 9 params and no annotations. While it covers core usage and has an output schema, missing param explanations and lack of behavioral depth make it only partially 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 is 0%, so the description must compensate. It explains expiry, kind, contracts, limit, and mentions strike via option_chain, but leaves account, agent, and idempotency_key unexplained.
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 starts with 'Buy an option,' a clear verb+resource statement. It distinguishes itself from siblings like sell_option and adds necessary context about order types and contract multiplier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the market/limit order behavior and explicitly directs users to option_chain for valid expiries/strikes. It does not explicitly state when not to use it, but the context is sufficient for most scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_deleteC
Delete a config key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| agent | No | mcp | |
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It communicates that deletion happens, but not whether it is permanent, whether it affects only the specified agent, what side effects occur, or how the idempotency_key parameter influences behavior.
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 very short and front-loaded, with no filler words. It is well-structured as a one-line purpose statement, though the brevity approaches under-specification for a destructive operation with multiple parameters.
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 destructive tool with no annotations and three parameters, 'Delete a config key' is not enough context. It omits which config system is referenced, whether deletion is reversible, and how the optional parameters affect invocation. The output schema exists, so return-value documentation is not strictly required, but the invocation semantics remain underspecified.
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 must compensate. It clarifies that 'key' is a config key, but it says nothing about the meaning or effects of the 'agent' or 'idempotency_key' parameters, both of which are present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses an explicit verb ('Delete') and a clear resource ('a config key'), which distinguishes it from sibling tools like config_get and config_set. It is not a tautology, but it does not clarify what config scope or namespace is affected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as config_get to inspect before deleting or config_set to update a value. The agent must infer that config_delete is the destructive counterpart based only on the tool name and one-sentence description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_getC
Get a config value.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says 'Get a config value.' It does not mention that the operation is read-only, what happens when a key is missing, whether configuration values can be stale, or any permission requirements.
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 extremely concise with no filler words, and the core operation is front-loaded. However, it is so minimal that it conveys little beyond the tool name itself, making it more under-specified than intentionally well-structured.
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?
Although the tool is simple with one parameter and an output schema, the description does not help the agent understand missing-key behavior, valid config namespaces, or the relationship to config_list and config_set. An agent can attempt a call but lacks enough context to do so confidently and 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%, and the description adds no meaning to the 'key' parameter. The input schema only says Key is a required string, and the description does not explain what a valid key looks like, how it is formatted, or how to discover available keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-resource pair: 'Get a config value.' This indicates a retrieval operation on a configuration item, and the singular 'a config value' distinguishes it from config_list, although it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus config_list, config_set, or config_delete. The intended use must be inferred entirely from the tool name and the single 'key' parameter, which is weak for an agent deciding between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_listA
List all config keys.
| 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?
With no annotations, the description carries the burden of behavioral disclosure. 'List' implies a read-only operation and 'keys' indicates that values are not returned, but side effects, ordering, and scope limits such as whether hidden keys are included are left implicit.
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?
'List all config keys.' is a single front-loaded sentence with no filler. It contains exactly the action, resource, and scope in four 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 zero-parameter listing tool with an output schema, this is nearly complete: no input guidance is needed and return shape is presumably covered by the schema. It loses a point because it does not route the agent away from single-key config operations or state the read-only nature explicitly.
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 takes zero parameters and the input schema is empty, so no parameter documentation is needed. The baseline of 4 applies because there is nothing for the description to add 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 names a specific verb ('List') and resource ('config keys') and conveys enumeration of the full set ('all'). This clearly distinguishes it from the sibling config_get/config_set/config_delete tools, which operate on individual keys or values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. The description does not tell the agent when to prefer this over config_get for individual key lookup, nor does it mention alternatives or exclusions such as 'to read a specific value, use config_get'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_setC
Set a config value.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| agent | No | mcp | |
| value | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Set a config value' and omits important traits such as whether existing values are overwritten, whether the config is persisted, how the idempotency_key is used, and what side effects occur for the 'agent' field. The presence of idempotency_key in the schema hints at retry semantics, but the description never explains it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that front-loads the action and resource. It contains no unnecessary words. However, it may be too terse to cover the tool's parameter complexity, but as far as conciseness alone, it is well-structured.
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 a 4-parameter tool with no annotations, 0% schema description coverage, and no usage guidance, the description is inadequate. Although an output schema exists, it does not compensate for missing information about parameter semantics, idempotency behavior, or whether the set operation is additive or overwriting. An agent cannot reliably invoke this tool correctly from the description alone.
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 must compensate for the schema's lack of parameter explanations. It does not explain the meaning of 'key', 'value', 'agent', or 'idempotency_key' beyond their titles. The schema provides only names and defaults, and the description adds no semantic value for any of the four parameters.
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 'Set a config value' clearly states the verb (set) and resource (config value), and is distinguishable from sibling tools like config_get, config_list, and config_delete by its write-oriented action. It lacks detail about whether this creates or updates an existing config entry, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool compared to config_get, config_list, or config_delete. There is no mention of prerequisites, scope (e.g., per-agent or global config), or when idempotency should be used. The verb 'set' implies modification, but the description does not help an agent choose this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
database_backupA
Create a consistent online backup under ~/.papertrade_backups.
| 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and destination, without mentioning side effects (e.g., whether it overwrites existing backups, if it is safe to run concurrently, or if it requires a running database). The term 'consistent' is left unexplained.
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 one concise, front-loaded sentence that directly states the purpose and location. There is no superfluous content, making it highly efficient.
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 an output schema, the description is mostly complete: it covers the action and target path. However, it lacks guidance on operational context (e.g., when to perform a backup) and does not clarify the relationship with the sibling 'database_backups' tool, which slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description adds no parameter details, but none are needed. It correctly focuses on the single action.
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 action ('Create'), the resource ('a consistent online backup'), and the location ('under ~/.papertrade_backups'). It is specific and distinguishes this create operation from the sibling 'database_backups' (likely a listing tool).
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 no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It lacks an explicit comparison to sibling tools like 'database_backups', leaving the agent to infer the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depositB
Add cash to a paper account.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| amount | Yes | ||
| account | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but fails to disclose side effects, authentication requirements, idempotency behavior, or error conditions. The minimal sentence adds little beyond the core action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, front-loading the core purpose effectively.
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?
Although an output schema exists, the tool has 4 parameters and no annotations. The description omits important operational context such as idempotency key handling, account requirement specifics, and behavioral impact, making it incomplete for safe 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?
Schema coverage is 0% with no parameter descriptions. The description only loosely implies 'amount' and 'account' via 'add cash' and 'paper account', but leaves 'agent' and 'idempotency_key' completely unexplained, failing to compensate for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and identifies the resource ('cash to a paper account'), clearly distinguishing it from sibling tools like 'withdraw' and account management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'withdraw' or 'account_create'. The description lacks context about prerequisites, scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eventsA
Poll unified audit/order events since an id. For agents to replace polling with incremental sync.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| account | No | ||
| since_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does convey that this is a polling-style read operation that supports incremental syncing via an id cursor, but it does not explain ordering guarantees, cursor inclusivity, pagination behavior, or whether the account parameter filters results. This is useful but incomplete.
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 and front-loaded: the first sentence says exactly what the tool does, and the second provides the intended use case. Every word earns its place with no filler or repetition.
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 conveys the core behavior and use case, and an output schema exists to explain return values. However, it omits important calling context such as how account filtering works, how limit behaves, what 'since an id' means precisely, and how this relates to audit_log or orders. It is minimally viable but has clear 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?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only hints at since_id's role ('since an id') and says nothing about limit or account semantics. This leaves most parameter meaning to be inferred rather than explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Poll') and a specific resource ('unified audit/order events'), and clarifies the mechanism ('since an id'). It is clear about what the tool does, though it does not explicitly distinguish itself from sibling tools like audit_log or orders beyond the term 'unified'.
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 phrase 'For agents to replace polling with incremental sync' gives a clear use case and context for when to use this tool. However, it does not name alternatives or provide explicit when-not-to-use guidance relative to sibling tools such as audit_log or account_activity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
futures_symbolsA
List supported futures symbols with their contract multiplier and initial margin.
| 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?
No annotations are provided, so the description carries the full burden. It clearly states the tool lists supported symbols with specific fields, which is fully transparent for a read-only listing operation. While it does not explicitly say 'read-only', the verb 'List' conveys the non-mutating nature. No side effects or additional behavior need disclosure for such a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, complete sentence that directly states the purpose and output without any filler or repetition. Every word adds value, making it exceptionally 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?
For a simple, parameterless listing tool, the description fully covers the necessary context. It specifies what the tool returns (symbols, multiplier, initial margin), and an output schema exists to define return structure, so no further explanation is required. Sibling tools do not overlap, and the description is sufficient for an agent to select and invoke it 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?
The input schema has zero parameters, so schema coverage is effectively 100%. The baseline for zero parameters is 4, and the description correctly focuses on the return content rather than parameter details. No compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'supported futures symbols' and adds details about the included fields (contract multiplier and initial margin). This distinguishes it from sibling tools like asset_search or validate_symbol, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when needing a list of futures symbols with contract specifications) but provides no explicit guidance on alternatives or exclusions. It lacks any 'use this instead of X' or context about 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.
get_default_accountA
Return the account used when CLI/TUI calls omit an explicit account.
| 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?
With no annotations, the description carries the full burden. It honestly describes a read-only getter with no side effects and adds useful context about the CLI/TUI use case. It does not address edge cases like a missing default, but the output schema likely covers return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple zero-parameter tool with an output schema, so the description needn't explain return values. It provides sufficient context for selection and use.
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 zero parameters, so the baseline is 4. The description adds meaningful context about the tool's purpose, though there is no parameter-specific information 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 explicitly states the tool returns the default account, using a specific verb and resource. It also distinguishes itself from sibling tools like set_default_account by clarifying it is a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly identifies when this tool is relevant: to retrieve the account used when CLI/TUI calls omit an explicit account. However, it does not explicitly mention alternatives or 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.
healthcheckA
Check SQLite integrity, WAL mode, schema version, and core record counts.
| 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?
With no annotations, the description carries the burden of disclosing behavior, and it does so by precisely listing what the healthcheck examines (integrity, WAL mode, schema version, record counts). This gives a clear read-only diagnostic profile. It does not mention potential side effects like performance impact or whether it acquires locks, but for a read-only health check, the disclosure is sufficient and adds value beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the action ('Check') and the specific aspects checked, ensuring every word earns its place. This is an exemplary concise structure.
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, read-only healthcheck tool with an output schema present, the description is complete. It lists all checks performed, and the output schema handles return value details. There are no missing prerequisites, side effects, or alternative guidance needed given the tool's simple, self-contained nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description needs to provide no parameter-level semantics, and it correctly avoids adding any. The input schema is empty, so there is nothing else to clarify.
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 the specific verb 'Check' with a clear resource ('SQLite') and enumerates four distinct aspects (integrity, WAL mode, schema version, record counts). This clearly distinguishes it from siblings like database_backup and database_backups, which deal with backups, making the purpose unmistakable.
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 tool's purpose as a healthcheck is implied by its name and description, but there is no explicit guidance on when to use it versus alternatives, nor any exclusionary conditions. It is evident that it should be used for verifying database health, but more explicit context (e.g., 'run before backups' or 'use when debugging database issues') would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_barsC
Historical OHLCV bars from Yahoo Finance.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| limit | No | ||
| start | No | ||
| symbol | Yes | ||
| timeframe | No | 1Day |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only historical data fetch but does not explain default ranges, limit behavior, rate limits, error handling, or other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, lean sentence with no wasted words, but it is so terse that it sacrifices informative content. It is appropriately front-loaded yet under-specified.
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 absence of annotations and parameter explanations, the description is not complete enough for an agent to confidently select this tool over siblings or invoke it correctly. The output schema provides return structure, but selection and usage context are missing.
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%, and the description adds no parameter semantics. The meanings of symbol, timeframe, start, end, and limit must be inferred entirely from the schema, which the description does not supplement.
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 identifies the resource as historical OHLCV bars and names Yahoo Finance as the source, which distinguishes it from real-time market data tools. However, it lacks an explicit action verb and does not mention the symbol parameter, so it's clear but not exemplary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternative market data tools such as tick, market_snapshot, or bulk_quotes. There is no mention of prerequisites, alternatives, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_latest_quoteC
Latest bid, ask, and last indication.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core behavior (returns latest bid, ask, and last indication) but does not mention caveats like data delay, market coverage, or whether the quote is indicative. It is minimal but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with zero fluff, making it very concise. However, it omits a verb and is slightly telegraphic, but for a simple tool this is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and one obvious parameter, but the description lacks any usage context relative to the many market-related siblings. It does not explain when this tool is preferable over alternatives, nor does it clarify whether the symbol is a ticker or something else. The brevity leaves it borderline inadequate.
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%, and the tool description does not mention the 'symbol' parameter at all. It fails to explain how to format the symbol or that it is required, leaving the agent to infer from the parameter name alone.
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 identifies the resource as a latest quote and lists the specific fields returned (bid, ask, last indication), which distinguishes it from historical tools like market_bars. However, it lacks an explicit verb like 'Gets' or 'Returns', so it's not a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as market_snapshot, tick, or bulk_quotes. The name implies real-time quotes but the description does not state use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_most_activesD
Current most-active equity screener.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only says 'Current most-active equity screener' without explaining what 'most active' means (volume, price change?), whether it includes ETFs, or any limitations. This is woefully insufficient.
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 extremely short, but under-specification is not conciseness. It's a single noun phrase that provides no actionable content, so the size doesn't serve the agent well.
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 is simple (one optional integer param, output schema exists), a basic description might suffice, but this one misses critical context. The sibling list includes 'market_movers', which likely overlaps significantly, and no differentiation or additional details are provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'limit' has no schema description (0% coverage) and the description doesn't mention it at all. The agent is left to guess how limit behaves, what its range might be, or its effect on results.
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 names a resource ('equity screener') and a temporal scope ('current most-active'), but doesn't use an explicit verb like 'lists' or 'returns', and doesn't distinguish from sibling tools like market_movers. It's more than a tautology but still vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No mention of use cases, prerequisites, or exclusions, so the agent gets no help deciding between this and e.g. market_movers or market_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_moversC
Current day gainers and losers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, but it only states 'current day'—it does not mention whether this is a read-only operation, how data is sorted, whether it is real-time or delayed, or what the response contains. Significant transparency gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is under-specification rather than genuine conciseness. It lacks structure or front-loaded key details such as parameter meaning or output behavior, and the brevity does not serve the user effectively.
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?
Although the tool has only one parameter and an output schema exists, the description is too sparse. It does not explain what data is returned, how 'limit' affects results, or how this tool fits with siblings. The description is incomplete for effective tool selection and 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?
The schema description coverage is 0% for the only parameter 'limit', and the description does not mention or explain this parameter at all. The agent receives no guidance on what 'limit' controls or its semantics, leaving the schema default as the only hint.
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 'Current day gainers and losers' clearly states the tool's purpose and the specific resource (gainers/losers). It is more specific than the name alone and distinguishes from many siblings by focusing on movers, though it does not explicitly differentiate from market_most_actives or market_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like market_most_actives or market_snapshot. There are no exclusions, prerequisites, or context about typical use cases, leaving the agent to infer usage from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_newsC
Recent symbol news headlines and links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only states 'Recent symbol news headlines and links,' which is the output but omits any details about read-only nature, error handling, or data freshness. Since it is a news-fetching tool, the read-only aspect is obvious, but the paucity of behavioral detail is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose. Every word is meaningful, and there is no redundancy or filler. It is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema exists to describe return values, the description lacks essential context such as the meaning of the 'limit' parameter and any usage scenarios. The tool is simple, but the description does not fully explain how to invoke it correctly, leaving gaps in parameter coverage and usage guidance.
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 description implies the 'symbol' parameter through 'symbol news' but does not explain the 'limit' parameter at all. Schema description coverage is 0%, so the description should compensate, but it only partially addresses the symbol parameter. The limit is left undocumented in the description, leaving the agent to rely on the schema's default value without context.
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 identifies the resource (symbol news) and the content (headlines and links), making it distinct from sibling market_* tools like market_bars or market_snapshot. However, it lacks an explicit verb like 'retrieve' or 'list,' instead using a noun phrase, which slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention any exclusions or prerequisites, such as valid symbol requirements or preferred contexts. The description simply states what the tool returns, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_snapshotC
Combined latest quote, daily bar, previous close, and change.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only lists output components and does not mention whether the operation is read-only, requires a valid symbol, or any potential error conditions. This is a significant gap for a data retrieval tool.
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 extremely concise at six words, front-loaded with the key information, and free of filler. However, its noun-phrase structure is slightly abrupt but acceptable for such a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values are presumably covered. The description lists all data components, but for a tool with many siblings, it lacks context about when to select this snapshot view over other market data tools. For a single-parameter read operation, it is minimally acceptable but leaves gaps in usage context.
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%, meaning the description does not mention the 'symbol' parameter at all. The schema itself only provides a type and title, so the description fails to add meaning such as symbol format, case sensitivity, or usage context. It does not compensate for the low 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 states the tool provides a combined view of latest quote, daily bar, previous close, and change. It clearly identifies the data payload and the 'combined' nature distinguishes it from siblings like market_latest_quote and market_bars, though it lacks an explicit verb like 'get' or 'retrieve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as market_latest_quote or market_bars. There is no explicit context, prerequisites, or exclusions, leaving the agent to infer usage solely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_statusA
Holiday/early-close-aware NYSE status and next open/close time.
| 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?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose a key behavioral trait ('Holiday/early-close-aware') and mentions the output concepts (status, next open/close time). However, it omits details such as timezone handling, whether the status is real-time or scheduled, and how market closures are determined. These gaps would require the agent to infer behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately communicates the tool's core function. It is concise and contains no filler or redundant information, every word contributing to understanding.
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 utility with an output schema present, the description covers the essential purpose and key behaviors. It tells the agent what to expect (status, next open/close time, holiday awareness) without needing to detail return values because the output schema handles that. Slight room for improvement exists, such as specifying timezone or update behavior, but it is largely 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 tool has zero parameters, so the baseline for this dimension is 4. The description adds meaning about what the returned status conveys, but there are no parameters to explain. The empty schema requires no special parameter semantics; the description's mention of NYSE and next open/close time provides sufficient context for invocation.
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 identifies the tool's purpose: providing NYSE market status with holiday/early-close awareness and next open/close times. It uses specific terms ('Holiday/early-close-aware', 'NYSE status', 'next open/close time') that distinguish it from siblings like market_snapshot or trading_calendar, making the tool's scope 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?
The description implies usage when the agent needs NYSE market status or upcoming trading times, but it does not explicitly discuss when to use this tool versus alternatives like trading_calendar or market_snapshot. No exclusions or alternate tool references are provided, so guidance is only inferred from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_catalogA
Describe the active catalog, response contract, profiles, and legacy aliases.
| 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?
With no annotations, the description carries the full burden of behavioral disclosure. The verb 'Describe' clearly implies a read-only, non-mutating operation, and the description lists the covered items. However, it does not explicitly mention authentication, side effects, or failure behavior, and it adds little beyond the verb and object list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundancy. Every word adds value by specifying the action and the objects it covers.
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 no-parameter introspection tool with an output schema, this description is mostly complete: it names the logical content areas (catalog, contract, profiles, aliases). However, terms like 'active catalog' and 'legacy aliases' are left undefined, and no context is given for when to expect these elements.
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 accepts zero parameters, so there are no parameter semantics to explain. Per the rubric, a 0-parameter tool receives a baseline of 4, and the description does not attempt to invent parameter details.
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 the specific verb 'Describe' followed by a clear list of objects ('active catalog', 'response contract', 'profiles', 'legacy aliases'), making the tool's core function evident. It is distinct from the sibling tools, none of which appear to be catalog/introspection-related. A small amount of ambiguity about what 'active catalog' precisely refers to prevents a perfect score.
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 no explicit guidance on when to use this tool versus alternatives, and it names no exclusions or alternative tools. The only implied use case comes from the tool's name and general purpose, which is not enough to qualify as meaningful usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
option_chainA
List option expiries for an underlying, or near-the-money strikes for one expiry (YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| expiry | No | ||
| underlying | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It explains the dual behavior (expiries vs. strikes) and the date format, but it does not disclose details like how many strikes are returned, what 'near-the-money' means, or any rate limits. The core behavior is clear, but richer context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action ('List') and packs all key information (underlying, expiry, format) without unnecessary words. Every phrase 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?
Given the tool's simplicity (2 params, output schema present), the description provides the essential mode distinction and parameter format. It does not explain the output structure, but the output schema presumably covers that. It could have mentioned how to choose between this and sibling 'option_contract', but overall it is adequately 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 is 0%, so the description must add parameter meaning. It clarifies that the optional 'expiry' parameter toggles the output mode and specifies the required format (YYYY-MM-DD). It also implicitly explains that 'underlying' is the ticker or symbol. This compensates well for the lack of 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 uses the specific verb 'List' and clearly identifies the resource: option expiries for an underlying, or near-the-money strikes for a specified expiry. It distinguishes itself from siblings like 'option_contract' by focusing on the chain/expiries rather than a single contract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies use cases: provide just the underlying to get expiries, or add an expiry to get near-the-money strikes. It does not explicitly mention when not to use the tool or name alternatives, but the two-mode behavior gives clear context for when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
option_contractA
Parse and quote one OCC option contract.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It indicates 'parse and quote' (suggesting a read-only operation), but does not disclose what 'parse' entails (e.g., symbol validation), whether the quote is real-time or delayed, any rate limits, or possible errors. This lack of detail leaves significant ambiguity for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence: 'Parse and quote one OCC option contract.' It front-loads the action and object with no wasted words, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no nesting) and an output schema exists, so return value details are not required. However, the description never clarifies usage context or behavioral details, and the absence of annotations makes this a gap. It is minimally viable but not complete for an agent to confidently invoke it without further assumptions.
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 one parameter 'symbol' with no description (0% coverage). The description adds the crucial context that the symbol must be an OCC option contract, implying a specific format (e.g., AAPL230616C00150000). However, it does not provide examples or further syntax details, so it partially compensates for the schema gap but not fully.
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 a specific verb and resource: 'Parse and quote one OCC option contract.' It specifies the object (an OCC option contract) and the action (parse and quote), and the inclusion of 'one' distinguishes it from the sibling tool option_chain, which handles multiple contracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining a quote for a single OCC option contract, as opposed to option_chain for multiple contracts. However, it does not explicitly state when to use it over alternatives or any exclusions, so guidance is only implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_cancelB
Cancel one pending order by id; canonical counterpart to order_cancel_all.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| order_id | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, and the description only states the action and scope. It does not disclose side effects, requirements (e.g., order must be pending), or error behavior, so the agent has no information about failure modes or consequences.
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 concise two-part sentence, immediately stating the action and the counterpart, with no redundant 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?
While the purpose is clear and an output schema exists, the tool has no annotations and zero parameter coverage, and the description omits behavioral details and parameter semantics, making it under-specified for reliable 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?
Schema description coverage is 0%, and the description does not explain the three parameters (agent, order_id, idempotency_key). The only hint is 'by id' which vaguely maps to order_id, but provides no guidance on idempotency_key or agent.
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 uses a specific verb ('Cancel') and resource ('pending order by id'), and explicitly contrasts with sibling tool order_cancel_all, making the scope 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?
It identifies order_cancel_all as the counterpart, implying this is for single-order cancellation vs bulk. However, it lacks explicit conditions like 'use order_replace to modify' or 'only works on pending orders', leaving some ambiguity relative to other order tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_cancel_allA
Cancel every pending/held order, optionally restricted to one account.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| account | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the key scope: 'every pending/held order' and the optional restriction to 'one account', implying that without an account it applies across all accounts. However, it does not mention irreversibility, idempotency implications, or any side effects, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the main action and scope. It contains no filler or redundant information, making it extremely concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a bulk destructive operation with three parameters, and an output schema exists. The description covers the core purpose and account restriction but omits critical context like idempotency behavior and the meaning of 'agent'. While the output schema may explain return values, the operational context is incomplete for a full understanding.
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 must compensate. It only explains the 'account' parameter ('optionally restricted to one account'), leaving 'agent' and 'idempotency_key' unexplained. Idempotency_key is particularly important for a cancel-all operation to avoid duplicate execution, and its absence weakens parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Cancel' and identifies the resource as 'every pending/held order', which clearly distinguishes this from the sibling tool 'order_cancel' (which cancels a single order). The optional account restriction is also stated, further clarifying scope.
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 phrase 'every pending/held order' implies a bulk operation, making it clear this is for mass cancellation rather than canceling individual orders (like order_cancel). However, it does not explicitly state when not to use it or mention alternatives, so a small deduction applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_getA
Get one order by numeric id or by account plus client order id.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| order_id | No | ||
| client_order_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only describes the lookup scope but does not disclose error handling, authentication requirements, or what happens if the order is not found. Minimal behavioral context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy, efficiently conveying the core purpose and lookup methods.
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 single-order fetch with an output schema, the description covers the core purpose, but leaves ambiguity around optional parameter combinations and precedence. Additional detail about required fields or fallback behavior would improve completeness.
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 does add meaning by clarifying the two identification modes ('numeric id' and 'account plus client order id'). However, it does not fully explain parameter interactions or constraints (e.g., whether order_id can be combined with account, or if client_order_id always requires account to be present).
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 with a specific verb ('Get') and resource ('order'), and distinguishes it from sibling tools like 'orders' (which likely lists) by specifying 'one order' and the two lookup mechanisms (numeric id or account plus client order id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to use when retrieving a single order by a known identifier, which differentiates it from listing ('orders') and mutation tools ('order_submit', 'order_cancel'). However, it does not explicitly name alternatives or 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.
order_replaceA
Replace selected fields on a pending order and return the new order id.
| Name | Required | Description | Default |
|---|---|---|---|
| qty | No | ||
| agent | No | mcp | |
| trail | No | ||
| order_id | Yes | ||
| stop_price | No | ||
| limit_price | No | ||
| time_in_force | No | ||
| client_order_id | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool mutates a pending order and returns a new order ID, which hints at a replace workflow. However, it does not mention side effects (e.g., cancellation of the original order), preconditions, permissions, or rate limits, leaving notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that clearly conveys the action, target, and return value. There is no filler or redundant content.
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 mutation tool with 9 parameters and no annotations, the description is too sparse. It omits which fields can be replaced, workflow implications of a new order ID, and conditions for safe use. Although an output schema exists, the description itself leaves significant gaps for an agent to understand the full context of the operation.
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%, and the description provides no parameter-level meaning. It only refers to 'selected fields' without naming qty, stop_price, limit_price, time_in_force, etc., so the agent must rely on parameter names alone. This fails to compensate for the absent 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 uses a specific verb 'Replace' with a clear resource 'pending order' and explicitly states the return value ('new order id'). It distinguishes this tool from siblings like order_submit (create) and order_cancel (cancel) by focusing on mutation of an existing pending 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 implies usage for modifying fields on a pending order, but it does not explicitly name alternatives or state when not to use it (e.g., for non-pending orders or as an alternative to cancel/re-submit). No exclusions or contextual comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ordersB
List paginated order history, including source agent and idempotency key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' implies a safe read operation, and 'paginated' hints at limit/offset behavior. However, it does not disclose whether orders are scoped to the required 'account' parameter or how history is ordered. There are no side effects mentioned, but for a list operation that is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the core action 'List paginated order history.' Every word 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?
The presence of an output schema covers return values, but the description still lacks context about the required 'account' parameter and pagination details. It is adequate for a simple list tool but leaves the agent to inspect the schema for invocation details. Missing usage comparisons further reduce completeness.
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 must compensate. It does not explain the required 'account' parameter or the 'limit' and 'offset' parameters beyond the vague term 'paginated.' The mention of 'source agent and idempotency key' refers to output fields, not input parameters, providing no semantic help.
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 paginated order history' with a specific verb and resource, and distinguishes this from sibling tools like order_get (single order) and order_submit. It also adds detail with 'including source agent and idempotency key,' which enriches the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It does not mention order_get for single orders, order_submit for creating orders, or any exclusions. The agent is left to infer usage from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_submitC
Submit market, limit, stop, stop-limit, trailing, bracket, OCO, or OTO orders.
| Name | Required | Description | Default |
|---|---|---|---|
| qty | No | ||
| side | Yes | ||
| agent | No | mcp | |
| symbol | Yes | ||
| account | Yes | ||
| dry_run | No | ||
| notional | No | ||
| stop_loss | No | ||
| order_type | No | market | |
| stop_price | No | ||
| limit_price | No | ||
| order_class | No | simple | |
| take_profit | No | ||
| trail_price | No | ||
| time_in_force | No | gtc | |
| trail_percent | No | ||
| extended_hours | No | ||
| client_order_id | No | ||
| idempotency_key | No | ||
| stop_loss_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It fails to mention that this places real financial orders, that dry_run is available for simulation, or any idempotency/error behavior. This is a high-stakes tool, so the lack of caution is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently states the tool's action and scope, though the extreme brevity leaves out critical usage details. For conciseness, it is well-structured.
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 (20 parameters, 0% schema coverage, no annotations), the description is far from complete. It lists order types but lacks any guidance on parameter selection, risk, or workflow. The output schema doesn't reduce the need for usage context.
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 20 parameters with zero descriptions in the schema itself, so the description must compensate. It merely lists order types without explaining how to configure them—e.g., which parameters are needed for a stop-limit vs. trailing, the difference between qty and notional, or the meaning of order_class and time_in_force. This adds no parameter-level value.
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 the specific verb 'Submit' and identifies the resource 'orders', explicitly enumerating eight order types (market, limit, stop, etc.). This clearly distinguishes it from sibling tools like preview_order, order_cancel, and order_replace, which serve different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It doesn't mention preview_order for testing, order_cancel for cancellations, or any prerequisites like account permissions or safety checks. The only implicit hint is the word 'Submit'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performanceB
Portfolio performance since inception: return, CAGR, Sharpe, Sortino, volatility, max drawdown. Reconstructs a daily equity curve from the trade/cashflow ledger and real historical prices.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool reconstructs a daily equity curve from the ledger and real historical prices, which gives useful context about the computational method. However, it does not state whether this is a read-only operation, any potential side effects, data requirements, or failure scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the key metrics in a clear list, then provides a concise methodological note. Every sentence earns its place, and the structure is immediately scannable.
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 complexity and the presence of an output schema, the description covers the core purpose and method well. However, with no annotations, no parameter guidance, and no usage alternatives, the description is not fully complete. The single-parameter schema reduces the burden, but the lack of behavioral and selection guidance leaves 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?
The input schema has one required parameter 'account' with 0% description coverage, and the tool description does not mention parameters at all. The meaning of 'account' is implied by the tool name and concept of portfolio performance, but no explicit semantics are provided. Since the description adds no parameter-specific value beyond the schema's title, this dimension scores low.
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 identifies the tool's purpose as computing portfolio performance metrics since inception, including return, CAGR, Sharpe, Sortino, volatility, and max drawdown. It distinguishes itself from siblings like 'pnl' (simple profit/loss) and 'summary' by specifying risk-adjusted metrics and the equity-curve reconstruction method.
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 no explicit guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or comparisons to sibling tools such as 'summary', 'pnl', or 'account_details'. The usage context is only implied by the specific metrics listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pnlA
Mark-to-market P&L report for an account: positions, unrealized P&L, cash, total equity.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add useful behavioral context by specifying 'mark-to-market' and enumerating the report contents, which sets expectations for the valuation method and output. However, it does not mention permissions, data freshness, or any side effects, which is a notable gap for a tool with no 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 a single, well-structured sentence that front-loads the purpose and lists the key report components. Every word earns its place, with no redundancy or 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?
Given that the tool has an output schema (which covers return values) and a single simple parameter, the description provides most of the necessary context: what the report contains and the valuation basis. It lacks some details like error scenarios or account identification format, but it is reasonably complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter 'account' with zero description coverage. The tool description mentions 'for an account' but does not explain what the account parameter should contain (e.g., ID, name, format). This adds only minimal meaning beyond the schema, failing to compensate for the lack of parameter documentation.
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 that the tool generates a mark-to-market P&L report for an account and lists the specific components included (positions, unrealized P&L, cash, total equity). This is specific enough to distinguish it from sibling tools like summary or 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?
There is no guidance on when to use this tool versus alternatives. The description simply states what it does without any 'use this when' or comparison to similar tools, so the agent gets no explicit direction on selecting this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio_backtestA
Backtest the account's current open positions and cash with backtesting.py.
The universe is read from this account's SQLite positions, options without reliable continuous history are reported as skipped, and results include the equity curve, return, CAGR, volatility, Sharpe, Sortino, and drawdown. The default window is five years; request up to 36500 calendar days. This is a current-holdings retrospective, not an out-of-sample strategy test.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| account | Yes | ||
| lookback_days | No | ||
| commission_bps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses important behaviors: the universe is read from SQLite positions, options without reliable history are skipped, and it reports specific metrics. It also specifies the default and maximum window. It does not explicitly state that the tool is read-only, but 'current-holdings retrospective' implies no modifications. This is solid coverage.
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 four sentences, front-loaded with the primary purpose, then concise details. Every sentence adds value: data source, metrics, window limits, and the caveat about out-of-sample testing. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a moderate complexity and an output schema, which covers return values. The description covers purpose, data source, skipped instruments, metrics, and window constraints. It lacks parameter usage details, but overall it provides enough context for an agent to use the tool correctly with defaults.
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 5 parameters with 0% description coverage, so the description must compensate. It only hints at lookback_days via 'default window is five years; request up to 36500 calendar days,' but does not explain start/end alternatives, commission_bps, or the relationship between parameters. This is insufficient for effective parameter use.
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: 'Backtest the account's current open positions and cash with backtesting.py.' It specifies the resource (account's positions/cash) and the action (backtest), and distinguishes it from strategy testing: 'This is a current-holdings retrospective, not an out-of-sample strategy test.' This makes it highly specific and differentiates from siblings like strategy_walk_forward.
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 context for use: it backtests current holdings, with a default window and explicit maximum. It also says what it is not ('not an out-of-sample strategy test'), which serves as a when-not. However, it does not explicitly name alternative tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
position_closeB
Close all or part of one position by quantity or percentage.
| Name | Required | Description | Default |
|---|---|---|---|
| qty | No | ||
| agent | No | mcp | |
| symbol | Yes | ||
| account | Yes | ||
| percent | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action (closing) and the method (quantity or percentage), but does not disclose side effects, whether qty and percent are mutually exclusive, or the execution nature (e.g., market order, fees). This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action. However, given the tool's complexity (6 parameters, no annotations), it might benefit from additional sentences to cover key behavioral details, though the existing sentence is appropriately 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?
The description is minimal for a tool with 6 parameters, 2 required, and no annotations. It does not cover critical usage nuances like when to use qty vs percent, idempotency behavior, or the requirement of account/symbol. The presence of an output schema somewhat lessens the need to describe returns, but the overall context is insufficient for safe and 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?
Schema description coverage is 0%, so the description must clarify parameters. It only hints at 'quantity or percentage' (qty and percent), but does not explain required parameters account and symbol, nor the purpose of agent, idempotency_key, or the relationship between qty and percent. The schema itself lacks descriptions, so an agent would struggle to correctly set all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Close') and resource ('one position'), and clearly distinguishes its scope ('all or part') and method ('by quantity or percentage'). This differentiates it from sibling tools like position_close_all (which closes all positions) and order_cancel (which cancels 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?
The description clearly implies when to use this tool: to close a single position, either fully or partially. However, it does not explicitly name alternative tools or state when not to use it, such as comparing to position_close_all or order_submit. The context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
position_close_allB
Liquidate every open position in an account at current market prices.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| account | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'at current market prices' (implying market orders) and the scope 'every open position,' but omits critical traits such as whether the action is irreversible, whether it also cancels open orders, or potential slippage. This lack of detail is notable for a high-impact liquidation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action and scope. Every word earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists (which may document return values), the description lacks essential context for a bulk liquidation tool. It does not address edge cases like empty accounts, partial fills, or whether open orders are also cancelled. For an agent to invoke this tool safely, more context is 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 description coverage is 0%, so the description must compensate by explaining parameters. It implicitly covers the required 'account' parameter via 'in an account,' but leaves 'agent' and 'idempotency_key' completely unexplained. The description adds minimal value beyond the schema's structural definitions.
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 'Liquidate every open position in an account at current market prices' uses a specific verb (Liquidate) and resource (every open position in an account), making the tool's purpose unmistakable. It clearly distinguishes itself from siblings like position_close, which likely handles a single position, and order_cancel_all, which cancels 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?
The description implies usage when the user wants to close all positions in an account, but it does not explicitly state when to use this tool versus alternatives like position_close or order_cancel_all. No exclusions or alternative tool mentions are provided, leaving the usage context to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
position_getA
Get one live-marked position with market value and unrealized P&L.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the output content and that the position is live-marked, which adds behavioral context. However, it does not mention potential errors, data freshness guarantees, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the verb and resource up front. It is concise and structured effectively, with no redundant 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?
The tool is simple with two parameters and an output schema, so the description need not cover return values. However, the absence of parameter explanations and usage guidance makes the description only minimally complete for an agent selecting the 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 description coverage is 0%, and the description does not explain the parameters. It only implies that 'symbol' and 'account' identify the position but does not clarify formats or constraints, adding little value over the bare schema field names.
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 gets a single live-marked position and specifies the return data (market value and unrealized P&L). This distinguishes it from siblings like 'positions' (likely plural) and 'position_close' (mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single position by symbol and account, but does not explicitly mention alternatives or when not to use it. It lacks exclusions or comparisons to sibling tools like 'positions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
positionsA
List open positions (symbol, side, qty, avg cost, asset class) for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explicitly says 'List', which clearly implies a read-only, non-mutating operation, and it enumerates the returned fields. It does not mention error behavior or pagination, but for a simple list tool the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: verb, resource, scope, and output fields. Every word adds value, with no repetition or 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?
Given that a tool with one parameter and an output schema, the description fully covers the purpose, scope, and return fields. It does not need to explain return values further because the description already lists them, and the output schema exists. This is complete for a simple list endpoint.
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% for the single 'account' parameter. The description adds the context that it is 'for an account' but does not clarify whether this is an account ID, name, or format requirements. It partially compensates for the schema gap but not fully.
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 action ('List'), the resource ('open positions'), the scope ('for an account'), and even enumerates the returned fields (symbol, side, qty, avg cost, asset class). This fully distinguishes it from siblings like position_get (single position) and position_close (closing 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?
No guidance is provided on when to use this tool versus alternatives such as position_get, summary, or account_list. The description only implies usage context ('for an account') but does not mention exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_orderA
Dry-run an order against cash, margin, short, naked-option, and leverage limits.
| Name | Required | Description | Default |
|---|---|---|---|
| qty | Yes | ||
| side | Yes | ||
| price | No | ||
| symbol | Yes | ||
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It does disclose that the tool checks multiple limit types, but does not explicitly state whether it is read-only, what happens on violation, or whether any state is affected. 'Dry-run' implies no actual order, but the absence of explicit assurances leaves some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key action ('Dry-run'), and every word adds value. There is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and 5 parameters, but no annotations. The description provides a clear high-level purpose but fails to cover usage context, parameter semantics, or what the output represents. Given the existence of an output schema, some return details may be elsewhere, but the overall description is under-specified for a tool with this 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%, yet the description does not mention any parameter names, formats, or acceptable values (e.g., side values). While some parameter names are self-explanatory, the lack of guidance on required fields like account, symbol, side, and qty beyond the schema is a significant gap.
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 the specific verb 'Dry-run' and clearly states the resource ('an order') and the scope ('against cash, margin, short, naked-option, and leverage limits'). This distinguishes it from sibling tools like order_submit, which actually places 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?
The term 'Dry-run' clearly implies a non-executing preview, providing context for use before placing an actual order. However, it does not explicitly name alternatives or state when not to use, but the implied usage is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quotes_streamA
Poll live quotes N times at an interval; returns list of snapshots for a simple stream without WebSocket.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | ||
| snapshots | No | ||
| interval_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose that the tool repeatedly polls and returns snapshots, which covers the core behavior. However, it omits details such as rate limits, how failures are handled, whether the operation is purely read-only, or any caveats about 'live' data availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the main action and result. Every word contributes meaning, with no filler or repetition of the tool name.
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 reduces the need to describe return values, and the tool is conceptually simple. Still, with no annotations and no explanation of the required symbols format or how this compares to sibling quote tools, the description is not fully complete for safe autonomous 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?
Schema description coverage is 0%, so the description must compensate, but it only vaguely references 'N times' and 'interval' without explicitly tying them to snapshots and interval_sec. The required 'symbols' parameter is entirely unexplained, leaving its expected format open to guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Poll', the resource ('live quotes'), and the exact mechanism (N times at an interval, returning a list of snapshots). This clearly distinguishes it from one-shot quote tools like market_snapshot or bulk_quotes by framing it as a simple polling stream.
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 phrase 'for a simple stream without WebSocket' implies a use case and points toward polling rather than a persistent connection. However, it does not name any sibling quote tools or provide explicit when-to-use versus when-not-to-use guidance among the many available quote-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_accountA
Rename a paper portfolio. Updates positions, orders, history, and the default pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| new | Yes | ||
| old | Yes | ||
| agent | No | mcp | |
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It aptly reveals that renaming updates positions, orders, history, and the default pointer, warning about side effects. However, it omits details like reversibility or permission requirements, though these are less critical for a rename operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action, and every phrase adds value. There is no redundancy or fluff, making it easy to scan and quickly understand.
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 relatively simple rename tool with an output schema and no annotations, the description covers the core purpose and critical side effects. It lacks edge-case guidance (e.g., behavior when old account doesn't exist) but remains largely complete for an agent to use safely.
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%, and the description does not explain any of the parameters. While 'old' and 'new' are self-evident, 'agent' and 'idempotency_key' are left completely unexplained. This is a significant gap given the schema provides no 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's function: 'Rename a paper portfolio' with a specific verb and resource. It goes beyond a simple restatement by mentioning the side effects on positions, orders, history, and the default pointer, which also distinguishes it from sibling tools like account_create and set_default_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a rename is needed) but does not explicitly state alternatives or exclusions. It does not compare with account_create or set_default_account, leaving the decision rules to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
risk_getA
Show the account's shorting, naked-option, leverage, and order-size limits.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description carries the full burden of behavioral disclosure. It says 'Show', which implies a read-only operation, but it does not mention potential errors (e.g., invalid account), required permissions, or whether the operation has side effects. For a simple getter, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that lists exactly what the tool shows. There is no redundancy or filler, making it highly concise and well-structured.
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 (one required parameter, no nested objects, and an output schema provided), the description is largely sufficient to understand its purpose. It lacks details on valid account values or error behavior, but these are not critical for such a straightforward getter, and the output schema covers return structure.
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 description connects the sole 'account' parameter to the tool's purpose ('the account's limits'), giving it contextual meaning. However, it does not specify the expected format, whether it is an ID or name, or any constraints, and the schema itself has no description (0% coverage). Thus, it adds only minimal 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's function with a specific verb ('Show') and a well-defined resource ('the account's shorting, naked-option, leverage, and order-size limits'). This distinguishes it from the sibling tool 'risk_set', which presumably sets these limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving account risk limits but does not explicitly state when to use it versus alternatives like 'risk_set' or 'account_details'. No exclusions or prerequisites are mentioned, so guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
risk_setB
Change selected account risk limits; omitted fields retain their current values.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| account | Yes | ||
| allow_short | No | ||
| clear_max_order | No | ||
| idempotency_key | No | ||
| max_gross_leverage | No | ||
| max_order_notional | No | ||
| allow_naked_options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. The statement that omitted fields retain current values is genuinely useful and discloses the partial-update behavior. However, it does not mention side effects, authorization requirements, immediacy of changes, or how clear_max_order and idempotency_key interact with the update, leaving notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the core action immediately and includes the key partial-update caveat efficiently. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing tool with eight parameters, no annotations, and no schema-level parameter descriptions, the description leaves out critical operational context: when to choose this over risk_get, prerequisites, permission implications, and the behavior of fields like clear_max_order and idempotency_key. The existence of an output schema helps but does not compensate for these 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?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only provides generic 'omitted fields retain current values' semantics, which helps interpret null defaults but does not explain the eight parameters individually or clarify meanings beyond their titles. This is insufficient for a tool with multiple risk-limit fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Change') and a clear resource ('account risk limits'), and it adds the important patch-style behavior that omitted fields are retained. It is clear enough to distinguish from the sibling risk_get, which is a read operation, though it does not explicitly name alternatives or enumerate the limit fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like risk_get, nor any prerequisites, permissions, or conditions. The verb 'Change' implies use for modifying risk limits, but the agent is left to infer selection and invocation context on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sell_optionB
Sell/write an option (opens a short if not covering). Same params as buy_option.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| agent | No | mcp | |
| limit | No | ||
| expiry | Yes | ||
| strike | Yes | ||
| account | Yes | ||
| contracts | Yes | ||
| underlying | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only mentions the short-position effect but omits critical details such as margin requirements, risk, execution behavior, and settlement implications, especially since selling options carries substantial risk.
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 concise sentences with the action front-loaded. Every word adds value, and the structure is highly scannable.
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 high-stakes financial tool with no annotations, the description is under-specified. It fails to explain order type behavior, covering semantics, potential risks, or prerequisites, making it incomplete for safe invocation despite the output schema existing.
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 must compensate. Saying 'Same params as buy_option' is not self-contained and provides no actual semantics for the 9 parameters, leaving the agent without sufficient information to fill them correctly.
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?
Specifically identifies the action as 'Sell/write an option' and clarifies the position effect ('opens a short if not covering'), clearly distinguishing it from buy_option and other siblings.
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?
Usage is implied as the inverse of buy_option, and the reference to buy_option's parameters provides some guidance, but there is no explicit statement on when to use this tool versus alternatives or 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.
set_default_accountA
Set the default portfolio used by the CLI and dashboard when no account is specified.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| agent | No | mcp | |
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose that the setting affects CLI/dashboard behavior and applies only when no account is specified, but it does not mention persistence, overwrite behavior, permissions, or idempotency. This adds some context but remains incomplete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler or redundancy. It front-loads the primary action and scope, making it easy to scan. Every word earns its place, though it sacrifices parameter detail.
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 mutation tool with no annotations and zero parameter coverage, the description is under-specified. It does not clarify what the 'name' parameter should contain, whether the setting persists across sessions, or how it interacts with get_default_account. The presence of an output schema does not compensate for these 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?
Schema description coverage is 0%, and the description provides no explanation for any of the three parameters. The required 'name' parameter is ambiguous (portfolio vs account name), and 'agent' and 'idempotency_key' are entirely undocumented. The description fails to compensate 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's function: setting the default portfolio used by the CLI and dashboard when no account is specified. This is a specific verb+resource+scope and is distinct from sibling get_default_account, which reads the default.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a default fallback account is needed for CLI/dashboard operations. It does not explicitly mention alternatives or exclusions, but the context is clear and distinct from related tools like get_default_account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summaryA
One-line-per-portfolio snapshot for all accounts: cash, equity, unrealized P&L, position count. Fast overview for deciding which account to act on.
| 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?
With no annotations provided, the description carries the transparency burden. It discloses the output behavior (one-line snapshot, specific metrics) and a performance trait ('fast'), which is useful. However, it does not discuss data freshness, whether it aggregates across all accounts, or potential latency, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core purpose and includes only essential details, making it highly concise and well-structured.
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 an output schema, the description is complete: it explains what it does, what fields are returned, and why to use it. The presence of sibling tools like account_list and pnl provides additional context without needing explicit cross-references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly adds no parameter details because none exist, and the schema coverage is 100% (vacuously).
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 specifies the tool's function: it provides a one-line-per-portfolio snapshot for all accounts, listing specific fields (cash, equity, unrealized P&L, position count). This distinguishes it from sibling tools like account_details or positions that focus on individual accounts or detailed 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?
The description gives clear context: 'Fast overview for deciding which account to act on.' This implies when to use it (for quick comparison across accounts) but does not explicitly name alternatives or state when not to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tickA
Check all pending limit orders against current prices and fill any that crossed.
| 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?
No annotations are provided, so the description carries the transparency burden. It clearly states the side effect (filling crossed limit orders), but does not disclose potential risks, return values, or conditions under which no action occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and resource. It wastes no 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 zero-parameter input and existing output schema, the description adequately covers the tool's purpose. It could mention what happens to unfilled orders, but that is largely implied by the described behavior.
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 takes no parameters; the empty input schema is fully covered. Since there are no parameters, the description has nothing to compensate for, and the baseline of 4 applies.
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 with a specific verb ('Check') and resource ('pending limit orders') and outcome ('fill any that crossed'). It distinguishes itself from sibling order-management tools by describing the matching process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to process pending limit orders, but it does not explicitly state when to use it over alternatives or any exclusions. No guidance on prerequisites or frequency is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trading_calendarB
List NYSE sessions, including holidays and early closes.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It adds minimal behavioral specifics beyond the name: 'including holidays and early closes' is useful, but it omits details like date range filtering (start/end parameters), return fields, or whether sessions are weekdays only. This is thin coverage for its safety and behavior profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the verb and resource without any unnecessary words. It is appropriately concise for the tool's simplicity, though it lacks parameter information (captured elsewhere).
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 is incomplete for a tool with two optional parameters and no schema descriptions. It does not explain how start/end affect the output, what 'sessions' includes (dates, times, status), or how to interpret results. The presence of an output schema partially covers return structure, but the description still leaves critical usage 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?
Schema description coverage is 0% and the description does not mention the 'start' and 'end' parameters at all. There is no guidance on their meaning, format, or whether they are optional filters. This is a complete lack of parameter documentation, forcing the agent to guess from the parameter names alone.
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 'List NYSE sessions, including holidays and early closes' clearly states a specific action (list) and resource (NYSE sessions), and includes a distinctive detail (holidays/early closes). This unambiguously differentiates it from sibling tools like market_bars or market_status.
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 does not explicitly state when to use vs. alternatives, but the purpose is clear enough that an agent can infer it should be used for obtaining trading session dates. There is no mention of exclusions or alternative tools, which prevents a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_symbolC
Validate a symbol and return its live price, class, multiplier, and margin.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only operation (validate, return price) but does not explicitly state that it is safe, whether it errors on invalid symbols, or if any side effects exist. The return fields are listed but no additional behavioral context is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loaded with the primary action and output. It earns its place but could have included a brief note on alternatives or valid symbol formats without becoming verbose.
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 (one parameter) and the existence of an output schema, the description provides adequate information about what is returned. However, it lacks contextual guidance about when to use this tool instead of related tools, and it does not address potential failure modes or performance implications.
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 only parameter 'symbol' has no schema description (0% coverage), and the description does not add meaning beyond the word 'symbol'. It does not clarify accepted formats, examples, or constraints, leaving the agent without sufficient semantic guidance for a parameter that is critical to the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool validates a symbol and returns live price, class, multiplier, and margin. This clearly indicates the primary purpose and distinguishes it from simple quote tools by including validation and additional metadata. However, the exact meaning of 'validate' is not expanded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like asset_search or market_latest_quote. The description does not state any scenarios, prerequisites, or behavioral exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_addB
Add a symbol to a persistent watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| symbol | Yes | ||
| account | Yes | ||
| watchlist | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states the basic action without disclosing behavior like idempotency, duplicate handling, or validation errors, despite having an idempotency_key parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no redundant wording, making it efficient. However, it is also quite minimal, so it does not fully earn a 5.
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 5 parameters and existence of an output schema, the one-line description is inadequate. It doesn't explain required account and watchlist context, return value, or how it interacts with other watchlist tools.
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 coverage is 0%, and the description only mentions 'symbol', leaving account, watchlist, agent, and idempotency_key unexplained. The parameter names are somewhat self-explanatory but the description adds minimal semantics.
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 the verb 'add' with the resource 'symbol to a persistent watchlist', clearly distinguishing it from sibling tools like watchlist_remove and watchlist_delete. It is specific and 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?
The description implies when to use the tool (to add a symbol to a watchlist) but does not explicitly mention alternatives or when not to use it. Given the large sibling set, explicit guidance would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_createB
Create a persistent named watchlist with comma-separated symbols.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| agent | No | mcp | |
| account | Yes | ||
| symbols | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions persistence but omits side effects, idempotency (despite having an idempotency_key parameter), required account details, and failure behavior. Minimal context beyond the obvious create action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly worded sentence with no filler. Every word (persistent, named, comma-separated symbols) adds meaningful information.
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 create tool with 5 parameters and no annotations, the description is too sparse. It lacks context on required account, idempotency behavior, and handling of existing watchlists, making it insufficient for an agent to reliably invoke the 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 schema has 0% description coverage. The description clarifies the 'symbols' parameter (comma-separated) and that the watchlist is named, but leaves account, agent, and idempotency_key unexplained. Incomplete compensation for 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 action (create), the resource (persistent named watchlist), and the input format (comma-separated symbols). This distinguishes it from sibling tools like watchlist_add, watchlist_remove, and watchlist_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating a new watchlist but does not explicitly contrast with alternatives or state when not to use it. No prerequisites or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_deleteC
Delete a persistent watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| account | Yes | ||
| watchlist | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Delete' implies a destructive action, but the description does not disclose whether deletion is permanent, irreversible, or whether it cascades to watchlist items. It also does not mention any safety or idempotency behavior. This leaves the agent unaware of important side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single brief sentence, which is concise, but it is under-specified. It lacks essential details about the operation, making it minimally adequate but with clear gaps. It earns its place but could be expanded to provide more value without becoming verbose.
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?
While an output schema exists (so return values are covered), the description lacks contextual information. For a destructive tool with no annotations, it should mention permanence, prerequisites, or how to identify the target watchlist. The presence of sibling tools adds potential confusion without explicit disambiguation. This is incomplete for a safe 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?
Schema description coverage is 0% and the description provides no information about the parameters (agent, account, watchlist, idempotency_key). The names are somewhat self-explanatory, but required parameters like 'account' and 'watchlist' are not clarified, and optional parameters like 'agent' and 'idempotency_key' are completely unexplained. This fails to compensate for the lack of 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 'Delete a persistent watchlist' clearly states the action (delete) and resource (persistent watchlist). It does not explicitly differentiate from sibling watchlist_remove, but the verb 'delete' versus 'remove' and the name 'watchlist_delete' imply deleting an entire watchlist rather than a symbol. This is a clear purpose but lacks explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like watchlist_remove. There is no mention of prerequisites (e.g., needing an existing watchlist) or context for when deletion is appropriate. This is a clear gap in usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_getC
Get one named watchlist or numeric watchlist id.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| watchlist | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action and identifier types; it does not disclose whether the operation is read-only, what happens for invalid or missing watchlists, or any account-specific requirements. The tool's safety profile is left entirely to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It delivers the core purpose and a key parameter detail in very compact form, earning every word.
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 is overly sparse for a tool with two required parameters and no annotations. It fails to explain the role of `account`, offers no guidance on when to use the tool, and does not set expectations for output or errors. The presence of an output schema mitigates some return-value ambiguity, but the missing account context and operational guidance make it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. The phrase 'named watchlist or numeric watchlist id' adds meaningful clarification that the `watchlist` parameter accepts either a display name or an ID. However, the `account` parameter remains completely unexplained, and no format or constraints are added beyond what the schema shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get') on a specific resource ('one named watchlist or numeric watchlist id'), which distinguishes it from watchlist_list (list all) and watchlist_quotes (quotes). However, it does not clarify what the returned watchlist contains or how it differs from a simple read of metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like watchlist_list or watchlist_quotes. The phrase 'one named watchlist' implies a single fetch, but the description does not state prerequisites, exclusions, or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_listB
List an account's persistent watchlists.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose safety and side-effect properties. It simply states the listing action without explicitly stating that it is read-only, whether it requires any permissions, or how it handles an invalid account. It also lacks details about pagination or response structure, which are not provided elsewhere since the output schema exists but is not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It immediately states the action and resource, earning high marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered, but the description lacks context about the watchlist lifecycle, the meaning of 'persistent,' and how this tool fits with watchlist_create/update/delete. Given the simplicity, it's partially complete but misses important surrounding information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The 'account' parameter has no schema description (0% coverage). The description says 'an account's,' which gives minimal context, but it does not specify the expected format (ID vs name), required permissions, or examples. This does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('watchlists') scoped to 'an account's persistent' variant. This distinguishes it from sibling tools like watchlist_get (single watchlist) and watchlist_create. Clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus watchlist_get, watchlist_quotes, or other watchlist tools. It does not state whether to call this before modifying watchlists, nor does it mention any alternatives. The only implied usage is from the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_quotesA
Return live quotes for every symbol saved in a watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| watchlist | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read-only operation via 'Return' and 'live', but does not mention potential issues like empty watchlists, invalid account, network delays, or whether any state changes occur. It lacks details on error behavior, rate limits, or authentication requirements, leaving the agent with limited understanding of side effects and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary purpose. There is no redundant information, and it earns its place by being immediately scannable. This is an ideal length and structure.
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?
Although the tool is relatively simple and has an output schema (which covers return values), the description is too sparse for a no-annotation, zero-schema-coverage case. The required 'account' parameter is unexplained, and there is no guidance on what constitutes a valid watchlist reference. The description leaves critical input semantics uncovered, making the tool incomplete for an agent to invoke correctly without additional context.
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%, and the description only references 'watchlist' as a concept, not explaining the 'watchlist' parameter specifically or the 'account' parameter at all. The agent is left to infer what values to pass (e.g., account name vs. ID, watchlist ID vs. name). Since the description does not compensate for the missing schema descriptions, parameter semantics are insufficient.
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: returning live quotes for all symbols in a specified watchlist. This distinguishes it from siblings like watchlist_get (which returns watchlist contents) and bulk_quotes (which quotes arbitrary symbols). The verb 'Return' and resource 'live quotes for every symbol saved in a watchlist' are specific and 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?
The description implies use when you need quotes for all symbols in a watchlist, providing clear context. However, it does not explicitly mention alternatives or when not to use it, such as using market_latest_quote for a single symbol or bulk_quotes for a custom symbol list. This falls just short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_removeB
Remove a symbol from a persistent watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| symbol | Yes | ||
| account | Yes | ||
| watchlist | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description must convey behavioral consequences, but it only states 'remove' without discussing side effects, error handling, or idempotency. The presence of an idempotency_key parameter suggests retry semantics that are not addressed, leaving the agent to guess about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant text. It conveys the core purpose efficiently.
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?
Despite having an output schema, the description lacks sufficient context for a mutation tool with five parameters and no annotations. It does not explain prerequisites, failure modes, or idempotency behavior, and it doesn't differentiate from closely related watchlist operations, making it incomplete for reliable selection and 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?
Schema description coverage is 0%, and the description only mentions symbol and watchlist, omitting the required 'account' parameter and the optional 'idempotency_key' and 'agent'. It adds minimal meaning over the parameter names, failing to clarify how account or idempotency_key affect the operation.
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 action (remove), the target (symbol), and the context (persistent watchlist), distinguishing it from sibling tools like watchlist_add and watchlist_delete. The verb is specific and the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for removing symbols from a watchlist but provides no explicit guidance on when to choose this over alternatives such as watchlist_add or watchlist_delete. Sibling tool names suggest distinctions, but the description does not articulate them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdrawB
Remove cash from a paper account (fails if it would go negative).
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | mcp | |
| amount | Yes | ||
| account | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses one key behavioral trait: it fails if withdrawal would make account negative. However, with no annotations, it doesn't mention other important behaviors such as authentication requirements, reversibility, or side effects (e.g., affecting cash balance).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, action-first, no unnecessary words. It effectively front-loads the core 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?
The tool is simple, but with 0% schema coverage and no usage guidance, the description leaves the agent to guess parameter semantics and when to use it. The output schema helps, but the description is too thin to be self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 4 parameters with 0% description coverage, and the tool description provides no information about what 'account', 'amount', 'agent', or 'idempotency_key' mean or their formats. The description adds no value beyond the parameter names.
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 action ('Remove cash') and the resource ('paper account'), distinguishing it from sibling tools like deposit and order_submit. It is specific and 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?
No guidance on when to use this tool versus alternatives; no mention of prerequisites, exclusions, or sibling comparisons. The user must infer usage from the name and context.
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.
16 tool updates
v0.4.0- Removed
automation_list - Removed
broker_export - Added
config_delete - Added
config_get - Added
config_list - Added
config_set - Removed
database_backups - Added
events - Removed
execution_get - Removed
journal_attribution - Removed
journal_list - Removed
ledger_balances - Added
quotes_stream - Removed
rebalance_suggest - Changed
risk_set8 fields changed- removed
Input schema / properties / clear_concentrationRemoved value: -{ - "default": false, - "title": "Clear Concentration", - "type": "boolean" -} - removed
Input schema / properties / clear_daily_lossRemoved value: -{ - "default": false, - "title": "Clear Daily Loss", - "type": "boolean" -} - removed
Input schema / properties / clear_drawdownRemoved value: -{ - "default": false, - "title": "Clear Drawdown", - "type": "boolean" -} - removed
Input schema / properties / clear_symbol_exposureRemoved value: -{ - "default": false, - "title": "Clear Symbol Exposure", - "type": "boolean" -} - removed
Input schema / properties / max_concentrationRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Max Concentration" -} - removed
Input schema / properties / max_daily_lossRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Max Daily Loss" -} - removed
Input schema / properties / max_drawdownRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Max Drawdown" -} - removed
Input schema / properties / max_symbol_exposureRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Max Symbol Exposure" -}
- Removed
strategy_walk_forward
63 tool updates
v0.1.0- First observed
account_activity - First observed
account_create - First observed
account_details - First observed
account_list - First observed
asset_search - First observed
audit_log - First observed
automation_list - First observed
broker_export - First observed
bulk_quotes - First observed
buy_option - First observed
database_backup - First observed
database_backups - First observed
deposit - First observed
execution_get - First observed
futures_symbols - First observed
get_default_account - First observed
healthcheck - First observed
journal_attribution - First observed
journal_list - First observed
ledger_balances - First observed
market_bars - First observed
market_latest_quote - First observed
market_most_actives - First observed
market_movers - First observed
market_news - First observed
market_snapshot - First observed
market_status - First observed
mcp_catalog - First observed
option_chain - First observed
option_contract - First observed
order_cancel - First observed
order_cancel_all - First observed
order_get - First observed
order_replace - First observed
order_submit - First observed
orders - First observed
performance - First observed
pnl - First observed
portfolio_backtest - First observed
position_close - First observed
position_close_all - First observed
position_get - First observed
positions - First observed
preview_order - First observed
rebalance_suggest - First observed
rename_account - First observed
risk_get - First observed
risk_set - First observed
sell_option - First observed
set_default_account - First observed
strategy_walk_forward - First observed
summary - First observed
tick - First observed
trading_calendar - First observed
validate_symbol - First observed
watchlist_add - First observed
watchlist_create - First observed
watchlist_delete - First observed
watchlist_get - First observed
watchlist_list - First observed
watchlist_quotes - First observed
watchlist_remove - First observed
withdraw
TDQS
Scored across 60 tools
Most tools are grouped by resource with specific descriptions, but there is overlap between order_submit and buy_option/sell_option for option trades, and events/audit_log/account_activity all present similar history/log data. Helpful descriptions mitigate the ambiguity, but selection is not always obvious.
Naming is readable due to consistent resource prefixes like order_, watchlist_, market_, and config_, but the convention is mixed: order_submit is object_verb, validate_symbol is verb_object, and summary/positions/pnl/healthcheck are noun-only. The lack of a uniform pattern prevents a higher score.
At 60 tools, this server far exceeds the 3-15 well-scoped range and crosses the 50+ extreme mismatch threshold. Even for a trading CLI, the tool surface is overwhelming; it should be consolidated or split into focused sub-servers to keep agent selection tractable.
The tool surface covers account management, order lifecycle, positions, watchlists, market data, options and futures, risk management, performance/backtest, audit/events, config, and backup/admin. Common trading workflows have no obvious dead ends, making this a very complete server for its domain.
Maintenance
Related MCP Connectors
Hosted MCP for stocks, options, Greeks, brokers, order previews, alerts, and workflows.
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
Open-source MCP server for Zerodha Kite Connect. Portfolio, market data, backtesting, alerts.
Live prices, perps, prediction markets and a paper trading desk over one MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceFull-lifecycle algorithmic trading MCP server. AI strategy generation from plain English, backtesting, live bot deployment to 10+ brokers, portfolio monitoring, and prediction markets. Stocks, options, crypto, futures. 32 tools. Free tier.-
- FlicenseAqualityDmaintenanceMCP server for the tastytrade brokerage API, providing tools for account management, market data, and order execution.18-
- FlicenseBqualityCmaintenanceMCP server for Interactive Brokers via IB Gateway, enabling read access to account data and trading capabilities for paper accounts.11-
- AlicenseBqualityCmaintenanceA read-only-by-default MCP server for Interactive Brokers that exposes account, positions, PnL, market data, and trade history from a local TWS/IB Gateway session, with optional trading capabilities.15MIT