Skip to main content
Glama
bartest5

Alpaca MCP Server

by bartest5

Alpaca MCP Server v2 is here. This version is a complete rewrite built with FastMCP and OpenAPI. If you're upgrading from v1, please read the Upgrade Guide — tool names, parameters, and configuration have changed.

Table of Contents


Related MCP server: Alpaca MCP Server

Upgrading from V1

V2 is a complete rewrite built with FastMCP and OpenAPI. None of the V1 tools exist in V2 — tool names, parameters, and schemas have changed. You cannot use V2 as a drop-in replacement if your setup depends on specific V1 tool names or parameters.

What changes

Aspect

V1

V2

Tool names

Hand-crafted (e.g. get_account_info)

Spec-derived with overrides (e.g. get_account_info — names may overlap but schemas differ)

Parameters

Custom schemas

Aligned with Alpaca API specs

Configuration

.env + init command

Env vars in MCP client config only

Tool filtering

Not supported

ALPACA_TOOLSETS env var

Whitelisting

Not supported

Use ALPACA_TOOLSETS to restrict tools

How to avoid V1-style usage in V2

MCP clients discover tools dynamically from the server. There is no config file where you "whitelist" tool names — the client gets whatever tools the server exposes. To avoid your client or AI assistant using V2 incorrectly:

  1. Do not reuse V1 config — Treat V2 as a new server. Update your MCP client config with the new command/args; remove any .env or init-based setup.

  2. Clear tool caches — Restart your MCP client (Claude Desktop, Cursor, VS Code, etc.) after switching so it fetches the new tool list instead of using a stale one.

  3. Start a fresh chat/session — Existing conversations may have cached references to old tool names. Start a new chat so the LLM sees the current V2 tools and their schemas.

  4. Update custom instructions and rules — If you have Cursor rules, Claude instructions, or other prompts that mention specific V1 tool names (e.g. "use get_account_info"), update them to match V2 tool names or remove those references and let the LLM discover tools from context.

  5. Restrict tools with ALPACA_TOOLSETS — If you previously limited which capabilities your assistant could use, V2 supports server-side filtering via the ALPACA_TOOLSETS env var. See Configuration > Toolset Filtering for the list of toolsets.

Summary

Assume no backward compatibility with V1. Reconfigure your MCP client for V2, restart it, and use a fresh session. Check the Available Tools section for the current tool list.

If you had custom V1 workflows

If you documented allowed tools, wrote scripts that call tools by name, or built prompts around specific V1 tool/parameter shapes — treat them as obsolete. Recreate them using the Available Tools listed below and the current parameter schemas exposed by the server.

Staying on V1

If you need to stay on V1, pin to the last V1 release (e.g. uvx alpaca-mcp-server==1.x.x serve) in your MCP client config. V1 remains available on PyPI for existing setups.


Prerequisites

Getting Your API Keys

  1. Visit the Alpaca Dashboard

  2. Create a free paper trading account

  3. Generate API keys from the dashboard

Setup

Add the server to your MCP client config, then restart the client. No init command, no .env files — credentials are set in one place only.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "alpaca": {
      "command": "uvx",
      "args": ["alpaca-mcp-server"],
      "env": {
        "ALPACA_API_KEY": "your_alpaca_api_key",
        "ALPACA_SECRET_KEY": "your_alpaca_secret_key"
      }
    }
  }
}

Claude Mobile

Alpaca does not provide a hosted remote MCP server. To use the MCP server on the Claude mobile app, host it remotely on a cloud provider, then add it as a custom connector in Claude. The connector syncs to the mobile app once connected on the web.

For hosting, deployment, and connector setup, see How to Deploy Alpaca's MCP Server Remotely on Claude Mobile App.

ChatGPT

Alpaca does not provide a hosted remote MCP server. To use the MCP server in ChatGPT, host it remotely on a cloud provider, then add it as a connector.

See Connectors in ChatGPT and the Claude Mobile deployment guide for hosting and setup steps.

Cursor

Install from the Cursor Directory in a few clicks, or add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "alpaca": {
      "command": "uvx",
      "args": ["alpaca-mcp-server"],
      "env": {
        "ALPACA_API_KEY": "your_alpaca_api_key",
        "ALPACA_SECRET_KEY": "your_alpaca_secret_key"
      }
    }
  }
}

VS Code

Create .vscode/mcp.json in your project root. See the official docs.

{
  "mcp": {
    "servers": {
      "alpaca": {
        "type": "stdio",
        "command": "uvx",
        "args": ["alpaca-mcp-server"],
        "env": {
          "ALPACA_API_KEY": "your_alpaca_api_key",
          "ALPACA_SECRET_KEY": "your_alpaca_secret_key"
        }
      }
    }
  }
}

PyCharm

See the official guide.

  1. Go to File → Settings → Tools → Model Context Protocol (MCP)

  2. Add a new server:

  • Type: stdio

  • Command: uvx

  • Arguments: alpaca-mcp-server

  1. Set environment variables:

 ALPACA_API_KEY=your_alpaca_api_key
 ALPACA_SECRET_KEY=your_alpaca_secret_key

Claude Code

claude mcp add alpaca --scope user --transport stdio uvx alpaca-mcp-server \
  --env ALPACA_API_KEY=your_alpaca_api_key \
  --env ALPACA_SECRET_KEY=your_alpaca_secret_key

Verify with /mcp in the Claude Code CLI.

Antigravity CLI

See the Antigravity MCP docs.

Add to ~/.gemini/antigravity-cli/mcp_config.json (global) or .agents/mcp_config.json (workspace):

{
  "mcpServers": {
    "alpaca": {
      "command": "uvx",
      "args": ["alpaca-mcp-server"],
      "env": {
        "ALPACA_API_KEY": "your_alpaca_api_key",
        "ALPACA_SECRET_KEY": "your_alpaca_secret_key"
      }
    }
  }
}

Docker

git clone https://github.com/alpacahq/alpaca-mcp-server.git
cd alpaca-mcp-server
docker build -t mcp/alpaca:latest .

Add to your MCP client config:

{
  "mcpServers": {
    "alpaca": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "ALPACA_API_KEY=your_key",
        "-e", "ALPACA_SECRET_KEY=your_secret",
        "-e", "ALPACA_PAPER_TRADE=true",
        "mcp/alpaca:latest"
      ]
    }
  }
}

Configuration

All configuration is through environment variables set in your MCP client config. No files are written to disk.

Variable

Required

Default

Description

ALPACA_API_KEY

Yes

Your Alpaca API key

ALPACA_SECRET_KEY

Yes

Your Alpaca secret key

ALPACA_PAPER_TRADE

No

true

Set to false for live trading

ALPACA_TOOLSETS

No

all

Comma-separated list of toolsets to enable

Switching to Live Trading

Update the env block in your MCP client config and restart:

{
  "env": {
    "ALPACA_API_KEY": "your_live_api_key",
    "ALPACA_SECRET_KEY": "your_live_secret_key",
    "ALPACA_PAPER_TRADE": "false"
  }
}

Toolset Filtering

By default, all tools are enabled. To limit the server to specific toolsets, set ALPACA_TOOLSETS:

{
  "env": {
    "ALPACA_API_KEY": "...",
    "ALPACA_SECRET_KEY": "...",
    "ALPACA_TOOLSETS": "stock-data,crypto-data"
  }
}

Available toolsets:

Toolset

Description

account

Account info, config, portfolio history, activities

trading

Orders, positions, exercise options

watchlists

Watchlist CRUD operations

assets

Asset lookup, option contracts, calendar, clock

stock-data

Stock bars, quotes, trades, snapshots, screeners

crypto-data

Crypto bars, quotes, trades, snapshots, orderbooks

options-data

Option bars, quotes, trades, snapshots, chain, exchange codes

corporate-actions

Corporate action announcements

news

News articles for stocks and crypto

fixed-income-data

Fixed income (bond/treasury) quotes

index-data

Market index values (SPX, VIX, etc.)

Features

  • Market Data — Real-time quotes, trades, and price bars for stocks, crypto, and options. Historical data with flexible timeframes. Option Greeks and implied volatility.

  • Account Management — View balances, buying power, account status, and portfolio history.

  • Order Management — Place market, limit, stop, stop-limit, and trailing-stop orders for stocks, crypto, and options. Cancel orders individually or in bulk.

  • Options Trading — Search contracts by expiration/strike/type. Place single-leg or multi-leg strategies. Get latest quotes, Greeks, and IV.

  • Crypto Trading — Market, limit, and stop-limit orders with GTC/IOC. Quantity or notional-based.

  • Position Management — View, close, or liquidate positions. Exercise option contracts.

  • News — News articles filterable by ticker and date range.

  • Market Status — Market open/close times, calendar, corporate actions.

  • Watchlists — Create, update, and manage watchlists.

  • Asset Search — Query details for stocks, ETFs, crypto, and options with filtering.

Example Prompts

Basic Trading

  1. What's my current account balance and buying power on Alpaca?

  2. Show me my current positions in my Alpaca account.

  3. Buy 5 shares of AAPL at market price.

  4. Sell 5 shares of TSLA with a limit price of $300.

  5. Cancel all open stock orders.

  6. Cancel the order with ID abc123.

  7. Liquidate my entire position in GOOGL.

  8. Close 10% of my position in NVDA.

  9. Place a limit order to buy 100 shares of MSFT at $450.

  10. Place a market order to sell 25 shares of META.

Crypto Trading

  1. Place a market order to buy 0.01 ETH/USD.

  2. Place a limit order to sell 0.01 BTC/USD at $110,000.

Option Trading

  1. Show me available option contracts for AAPL expiring next month.

  2. Get the latest quote for the AAPL250613C00200000 option.

  3. Retrieve the option snapshot for the SPY250627P00400000 option.

  4. Liquidate my position in 2 contracts of QQQ calls expiring next week.

  5. Place a market order to buy 1 call option on AAPL expiring next Friday.

  6. What are the option Greeks for the TSLA250620P00500000 option?

  7. Find TSLA option contracts with strike prices within 5% of the current market price.

  8. Get SPY call options expiring the week of June 16th, 2025, within 10% of market price.

  9. Place a bull call spread using AAPL June 6th options: one with a 190.00 strike and the other with a 200.00 strike.

  10. Exercise my NVDA call option contract NVDA250919C001680.

Market Information

To access the latest 15-minute data, you need to subscribe to the Algo Trader Plus Plan.

  1. What are the market open and close times today?

  2. Show me the market calendar for next week.

  3. Show me recent cash dividends and stock splits for AAPL, MSFT, and GOOGL in the last 3 months.

  4. Get all corporate actions for SPY including dividends, splits, and any mergers in the past year.

  5. What are the upcoming corporate actions scheduled for SPY in the next 6 months?

Historical & Real-time Data

  1. Show me AAPL's daily price history for the last 5 trading days.

  2. What was the closing price of TSLA yesterday?

  3. Get the latest bar for GOOGL.

  4. What was the latest trade price for NVDA?

  5. Show me the most recent quote for MSFT.

  6. Retrieve the last 100 trades for AMD.

  7. Show me 1-minute bars for AMZN from the last 2 hours.

  8. Get 5-minute intraday bars for TSLA from last Tuesday through last Friday.

  9. Get a comprehensive stock snapshot for AAPL showing latest quote, trade, minute bar, daily bar, and previous daily bar all in one view.

  10. Compare market snapshots for TSLA, NVDA, and MSFT to analyze their current bid/ask spreads, latest trade prices, and daily performance.

Orders

  1. Show me all my open and filled orders from this week.

  2. What orders do I have for AAPL?

  3. List all limit orders I placed in the past 3 days.

  4. Filter all orders by status: filled.

  5. Get me the order history for yesterday.

Watchlists

At this moment, you can only view and update trading watchlists created via Alpaca's Trading API through the API itself

  1. Create a new watchlist called "Tech Stocks" with AAPL, MSFT, and NVDA.

  2. Update my "Tech Stocks" watchlist to include TSLA and AMZN.

  3. What stocks are in my "Dividend Picks" watchlist?

  4. Remove META from my "Growth Portfolio" watchlist.

  5. List all my existing watchlists.

Asset Information

  1. Search for details about the asset 'AAPL'.

  2. Show me the top 5 tradable crypto assets by trading volume.

  3. Get all NASDAQ active US equity assets and filter the results to show only tradable securities

Combined Scenarios

  1. Get today's market clock and show me my buying power before placing a limit buy order for TSLA at $340.

  2. Place a bull call spread with SPY July 3rd options: sell one 5% above and buy one 3% below the current SPY price.

Available Tools

Account & Portfolio

  • get_account_info — Balance, margin, and account status

  • get_account_config — Trading restrictions, margin settings, PDT checks

  • update_account_config — Update account configuration settings

  • get_portfolio_history — Equity and P/L over time

  • get_account_activities — Fills, dividends, transfers

  • get_account_activities_by_type — Activities filtered by type

Trading (Orders)

  • get_orders — Retrieve orders with filters

  • get_order_by_id — Single order by ID

  • get_order_by_client_id — Single order by client order ID

  • replace_order_by_id — Replace an existing open order

  • cancel_order_by_id — Cancel a specific order

  • cancel_all_orders — Cancel all open orders

  • place_stock_order — Stocks/ETFs (market, limit, stop, stop-limit, trailing-stop, brackets)

  • place_crypto_order — Crypto (market, limit, stop-limit)

  • place_option_order — Options (single-leg or multi-leg)

Positions

  • get_all_positions — All current positions

  • get_open_position — Details for a specific position

  • close_position — Close a specific position

  • close_all_positions — Liquidate entire portfolio

  • exercise_options_position — Exercise a held option contract

  • do_not_exercise_options_position — Do-not-exercise instruction

Watchlists

  • create_watchlist — Create a new watchlist

  • get_watchlists — List all watchlists

  • get_watchlist_by_id — Get a specific watchlist

  • update_watchlist_by_id — Update a watchlist

  • delete_watchlist_by_id — Delete a watchlist

  • add_asset_to_watchlist_by_id — Add an asset to a watchlist

  • remove_asset_from_watchlist_by_id — Remove an asset from a watchlist

Assets & Market Info

  • get_all_assets — List assets with optional filtering

  • get_asset — Detailed info for a specific asset

  • get_option_contracts — Option contracts for underlying symbol(s)

  • get_option_contract — Single option contract by symbol or ID

  • get_calendar — Market calendar for a date range

  • get_clock — Current market status and next open/close

  • get_corporate_action_announcements — Corporate action announcements

  • get_corporate_action_announcement — Single announcement by ID

Stock Data

  • get_stock_bars — Historical OHLCV bars

  • get_stock_quotes — Historical bid/ask quotes

  • get_stock_trades — Historical trades

  • get_stock_latest_bar — Latest minute bar

  • get_stock_latest_quote — Latest quote

  • get_stock_latest_trade — Latest trade

  • get_stock_snapshot — Comprehensive snapshot

  • get_most_active_stocks — Most active by volume/trade count

  • get_market_movers — Top gainers and losers

Crypto Data

  • get_crypto_bars — Historical OHLCV bars

  • get_crypto_quotes — Historical quotes

  • get_crypto_trades — Historical trades

  • get_crypto_latest_bar — Latest minute bar

  • get_crypto_latest_quote — Latest quote

  • get_crypto_latest_trade — Latest trade

  • get_crypto_snapshot — Comprehensive snapshot

  • get_crypto_latest_orderbook — Latest orderbook

Options Data

  • get_option_bars — Historical OHLCV bars

  • get_option_trades — Historical trades

  • get_option_latest_trade — Latest trade

  • get_option_latest_quote — Latest quote with bid/ask and exchange info

  • get_option_snapshot — Snapshot with Greeks and IV

  • get_option_chain — Full option chain for an underlying

  • get_option_exchange_codes — Exchange code to name mapping

Corporate Actions

  • get_corporate_actions — Corporate action announcements from market data

News

  • get_news — News articles for stocks and crypto

Fixed Income Data

  • get_fixed_income_latest_quotes — Latest quotes for fixed income securities by ISIN

Index Data

  • get_index_latest_values — Latest values for market indices

  • get_index_values — Historical values for market indices

Locates (Short Selling)

  • get_locates — List locate requests filtered by status, symbol, or date range

  • create_locate — Create a locate request for a short sale

  • get_locate — Get a single locate request by ID

  • get_locate_quotes — Get locate availability and pricing for symbols

Testing

The project includes a multi-layered test suite that runs in CI on every pull request:

  • Integrity tests — Validate consistency between OpenAPI specs, toolset definitions, and tool name/description overrides. No network or credentials required.

  • Server construction tests — Build the server with mocked credentials and verify the correct number of tools are exposed. No network required.

  • Paper API integration tests — Execute real calls against the Alpaca paper trading API, covering account info, market data, order lifecycle, watchlists, positions, and more. Requires ALPACA_API_KEY and ALPACA_SECRET_KEY.

Run the full suite locally:

# Core tests (no credentials needed)
pytest tests/test_integrity.py tests/test_server_construction.py -v

# Integration tests (requires paper API keys)
ALPACA_API_KEY=... ALPACA_SECRET_KEY=... pytest tests/ -m integration -v

Project Structure

alpaca-mcp-server/
├── src/
│   └── alpaca_mcp_server/
│       ├── __init__.py
│       ├── cli.py            ← CLI entry point
│       ├── server.py         ← FastMCP server built from OpenAPI specs
│       ├── tool_registry.py  ← Tool names, descriptions, and output risk classifications
│       ├── toolsets.py       ← Toolset → operationId allowlists
│       ├── overrides.py      ← Hand-crafted tools for complex trading endpoints
│       ├── market_data_overrides.py ← Hand-crafted tools for historical data
│       └── specs/
│           ├── trading-api.json
│           └── market-data-api.json
├── tests/
│   ├── conftest.py           ← Shared fixtures and paper-account cleanup
│   ├── test_integrity.py     ← Spec ↔ toolset ↔ names consistency checks
│   ├── test_server_construction.py ← Server build verification
│   └── test_paper_integration.py   ← Paper API integration tests
├── scripts/
│   └── sync-specs.sh        ← Download latest OpenAPI specs
├── .github/
│   └── workflows/
│       └── ci.yml            ← CI pipeline (core + integration)
├── AGENTS.md                 ← Instructions for coding agents
├── pyproject.toml
└── README.md

Troubleshooting

  • uv/uvx not found: Install uv from the official guide (https://docs.astral.sh/uv/getting-started/installation/) and then restart your terminal so uv/uvx are on PATH.

  • Credentials missing: Set ALPACA_API_KEY and ALPACA_SECRET_KEY in the client's env block. Paper mode default is ALPACA_PAPER_TRADE = True.

  • Client didn't pick up new config: Restart the client (Cursor, Claude Desktop, VS Code) after changes.

  • HTTP port conflicts: If using --transport streamable-http, change --port to a free port.

Disclosure

Insights generated by our MCP server and connected AI agents are for educational and informational purposes only and should not be taken as investment advice. Alpaca does not recommend any specific securities or investment strategies.Please conduct your own due diligence before making any decisions. All firms mentioned operate independently and are not liable for one another.

Options trading is not suitable for all investors due to its inherent high risk, which can potentially result in significant losses. Please read Characteristics and Risks of Standardized Options (Options Disclosure Document) before investing in options.

Alpaca does not prepare, edit, endorse, or approve Third Party Content. Alpaca does not guarantee the accuracy, timeliness, completeness or usefulness of Third Party Content, and is not responsible or liable for any content, advertising, products, or other materials on or available from third party sites.

All investments involve risk, and the past performance of a security, or financial product does not guarantee future results or returns. There is no guarantee that any investment strategy will achieve its objectives. Please note that diversification does not ensure a profit, or protect against loss. There is always the potential of losing money when you invest in securities, or other financial products. Investors should consider their investment objectives and risks carefully before investing.

The algorithm's calculations are based on historical and real-time market data but may not account for all market factors, including sudden price moves, liquidity constraints, or execution delays. Model assumptions, such as volatility estimates and dividend treatments, can impact performance and accuracy. Trades generated by the algorithm are subject to brokerage execution processes, market liquidity, order priority, and timing delays. These factors may cause deviations from expected trade execution prices or times. Users are responsible for monitoring algorithmic activity and understanding the risks involved. Alpaca is not liable for any losses incurred through the use of this system.

Past hypothetical backtest results do not guarantee future returns, and actual results may vary from the analysis.

The Paper Trading API is offered by AlpacaDB, Inc. and does not require real money or permit a user to transact in real securities in the market. Providing use of the Paper Trading API is not an offer or solicitation to buy or sell securities, securities derivative or futures products of any kind, or any type of trading or investment advice, recommendation or strategy, given or in any manner endorsed by AlpacaDB, Inc. or any AlpacaDB, Inc. affiliate and the information made available through the Paper Trading API is not an offer or solicitation of any kind in any jurisdiction where AlpacaDB, Inc. or any AlpacaDB, Inc. affiliate (collectively, "Alpaca") is not authorized to do business.

Securities brokerage services are provided by Alpaca Securities LLC ("Alpaca Securities"), member FINRA/SIPC, a wholly-owned subsidiary of AlpacaDB, Inc. Technology and services are offered by AlpacaDB, Inc.

Cryptocurrency services are provided by Alpaca Crypto LLC ("Alpaca Crypto"), a FinCEN registered money services business (NMLS # 2160858), and a wholly-owned subsidiary of AlpacaDB, Inc. Alpaca Crypto is not a member of SIPC or FINRA. Cryptocurrencies are not stocks and your cryptocurrency investments are not protected by either FDIC or SIPC. Cryptocurrency assets are highly volatile and speculative, involving substantial risk of loss, and are not insured by the FDIC or any government agency. Customers should be aware of the various risks prior to engaging these services, including potential loss of principal, cybersecurity considerations, regulatory developments, and the evolving nature of digital asset technology. For additional information on the risks of cryptocurrency, please click here.

This is not an offer, solicitation of an offer, or advice to buy or sell securities or cryptocurrencies or open a brokerage account or cryptocurrency account in any jurisdiction where Alpaca Securities or Alpaca Crypto, respectively, are not registered or licensed, as applicable.

Privacy Policy

For information about how Alpaca handles your data, please review:

Data Collection

  • What is collected: User agent string ('ALPACA-MCP-SERVER') for API calls

  • How it's used: To identify MCP server usage and improve user experience

  • Third-party sharing: Not shared with third parties

  • Retention: Retained per Alpaca's standard data retention policy

  • Opt-out: Modify or remove the USER_AGENT constant in .github/core/user_agent.py

Security Notice

This server can place real trades and access your portfolio. Treat your API keys as sensitive credentials. Review all actions proposed by the LLM carefully, especially for complex options strategies or multi-leg trades.

HTTP Transport Security: When using HTTP transport, the server defaults to localhost (127.0.0.1:8000) for security. For remote access, you can bind to all interfaces with --host 0.0.0.0, use SSH tunneling (ssh -L 8000:localhost:8000 user@server), or set up a reverse proxy with authentication for secure access.

Support

For issues or questions, please contact us at support@alpaca.markets.

GitHub Issues: https://github.com/alpacahq/alpaca-mcp-server/issues GitHub Pull requests: https://github.com/alpacahq/alpaca-mcp-server/pulls

MCP Registry Metadata

mcp-name: io.github.alpacahq/alpaca-mcp-server

Available Tools

69 tools
add_asset_to_watchlist_by_idA

Add an asset by symbol to a specific watchlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNothe symbol name to add to the watchlist
watchlist_idYeswatchlist id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the action 'Add' with no details about idempotency, failure behavior, whether it appends or replaces, or any side effects. For a write operation, this is insufficient behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-front-loaded sentence. Every word adds meaning, and there is no redundant or filler content. It is appropriately concise for a simple operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, complete schema coverage, and presence of an output schema, the description is minimally sufficient. However, it lacks any behavioral context or guidance about interaction with sibling tools, making it only complete enough for a straightforward selection but not for understanding side effects or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters described in the schema. The description adds minimal meaning beyond the schema, only tying 'by symbol' to the asset and 'specific watchlist' to the watchlist_id. It does not add syntax or additional semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Add' with a clear resource ('an asset by symbol') and destination ('a specific watchlist'). It clearly distinguishes this from sibling tools like remove_asset_from_watchlist_by_id and update_watchlist_by_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context (adding an asset to a watchlist) but does not explicitly state when to use this tool versus alternatives. It does not mention prerequisites like needing an existing watchlist or that the asset must be known, nor does it reference the opposing remove operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_all_ordersA

Cancel all open orders.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose safety-relevant behavior. It states the action but does not mention irreversibility, the full scope of orders affected (stocks, crypto, options), or potential side effects. This is a significant gap for a destructive 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with zero unnecessary words. It is perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and an output schema present, the description adequately states the operation's purpose and scope. However, it omits any caution or confirmation details that could be expected for a cancel-all operation, though these are more behavioral than contextual.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, and the schema coverage is trivially 100%. Per the baseline for 0-param tools, the description does not need to add parameter information. No additional semantics are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Cancel all open orders' uses a specific verb ('Cancel') and resource ('all open orders'), clearly distinguishing it from sibling tools like cancel_order_by_id and replace_order_by_id. The scope is unambiguous and operational.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when the goal is to cancel every open order at once. However, it does not explicitly mention alternatives (e.g., cancel_order_by_id) or exclusion conditions, so the usage guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_order_by_idA

Cancel a specific order by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesorder id

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden, but it only states the core action ('Cancel'). It does not disclose implications such as irreversibility, restrictions on order state (e.g., only open orders), or error handling if the order no longer exists. The behavioral scope is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action verb and resource. No extraneous words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description is minimally adequate but lacks context on side effects, exceptions, or what happens when the order cannot be canceled. Given the simplicity, this is a reasonable but not thorough description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes the order_id parameter as a UUID string with the description 'order id', achieving 100% coverage. The tool description adds no additional meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Cancel') and the target resource ('a specific order'), with the qualifier 'by its ID' distinguishing it from bulk-cancel and other order operations. This 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention alternatives or exclusions. The phrase 'a specific order' implies single-order cancellation, contrasting with sibling tools like cancel_all_orders, but it does not name them or provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_all_positionsA

Closes all open positions by placing sell orders for each. If the market is closed, the sell orders will remain queued and execute at the next market open.

ParametersJSON Schema
NameRequiredDescriptionDefault
cancel_ordersNoIf true is specified, cancel all open orders before liquidating all positions.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It discloses an important behavioral trait: sell orders remain queued when the market is closed and execute later. However, it does not mention the optional cancellation of existing orders, potential partial failures, or reversibility, which are significant 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: two sentences, the first stating the main action, the second adding a valuable edge-case caveat. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and an output schema. The description covers the core function and a key market-closed behavior, which is sufficient for most use cases. It could mention more about order types or failure modes, but overall it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the only parameter 'cancel_orders' with a clear conditional description. Schema coverage is 100%, so the description does not need to add parameter details; a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action and scope: 'Closes all open positions by placing sell orders for each.' This is specific and distinguishes it from the sibling 'close_position' which presumably targets a single position.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that this tool is for liquidating all open positions, which differentiates it from single-position tools. However, it does not explicitly mention alternatives or when not to use it, though the context is strong enough to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_positionA

Closes a specific position for a single symbol by placing a sell order. If the market is closed, the sell order will remain queued and execute at the next market open.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNothe number of shares to liquidate. Can accept up to 9 decimal points. Cannot work with percentage
percentageNopercentage of position to liquidate. Must be between 0 and 100. Would only sell fractional if position is originally fractional. Can accept up to 9 decimal points. Cannot work with qty
symbol_or_asset_idYessymbol or assetId

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively discloses that the tool places a sell order and that if the market is closed, the order queues and executes at the next open. This exceeds minimal coverage, though it could mention order type or default full-close behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary action and followed by an important behavioral note. Every sentence provides value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers the core purpose and the notable queued-order behavior. An output schema exists, so return values need not be described. It lacks explicit mention that omitting qty/percentage closes the entire position, but the title and description imply a full close.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter semantics beyond the schema, such as the default behavior when neither qty nor percentage is provided, which would be valuable but is not present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Closes a specific position for a single symbol by placing a sell order.' The verb 'closes' and the resource 'position' are specific, and 'for a single symbol' distinguishes it from sibling tools like close_all_positions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a single position, contrasting with close_all_positions, but does not explicitly state when to use this tool over alternatives or provide exclusions. The queued order behavior is a usability note, not a direct alternative comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_locateA

Creates a locate request for a short sale. Requires a symbol and quantity. Optionally set a limit price and all-or-none flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyYesNumber of shares to locate. Must be positive and in round lots of 100; invalid quantities return HTTP 400.
symbolYesStock symbol.
all_or_noneNoReject the locate unless the full requested quantity is available.
limit_priceNoMaximum acceptable locate fee per share, as a decimal string in USD. If omitted, any quoted fee is accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It transparently indicates this is a mutation (creates) and specifies required inputs, but it does not disclose what happens upon success, whether the locate is a hard check, or any permission requirements. The schema adds some behavioral detail (e.g., HTTP 400 for invalid quantities), but the description itself is thin beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and purpose. Every word contributes value, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters and an output schema, and the description plus detailed schema provide enough context for an agent to select and invoke the tool correctly. It could mention preconditions or the locate life cycle, but the combination of description and schema covers the essential information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates which parameters are required and optional but adds no new semantic information beyond the schema's already-detailed descriptions (e.g., round lots, decimal string for limit_price).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Creates' with a clear resource ('locate request for a short sale'), and explicitly lists required versus optional parameters. It clearly distinguishes itself from sibling tools like get_locates and get_locate, which query existing locates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states this tool is for creating a locate request and identifies the minimum required inputs (symbol and quantity). It does not explicitly direct users to alternatives (e.g., get_locates for checking existing requests), but the creation context is unambiguous enough for an agent to infer when it should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_watchlistB

Creates a new watchlist with specified symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe watchlist name.
symbolsNoList of asset symbols to include in the watchlist.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It does not disclose any side effects, whether duplicates are allowed, authentication requirements, or failure modes. It merely restates the core action without additional 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that leads with the verb and resource. It is concise, with no filler or redundant information, and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, the schema fully documents inputs, and an output schema exists. However, the description lacks usage guidance and behavioral caveats, making it minimally viable but incomplete for an agent to confidently select it among the many watchlist-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (name and symbols), so the schema already documents them. The description does not add any extra parameter semantics, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Creates') and the resource ('a new watchlist'), and adds the detail 'with specified symbols,' which distinguishes it from sibling tools that retrieve or modify watchlists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update_watchlist_by_id or add_asset_to_watchlist_by_id. The description states only the action, leaving the agent to infer the appropriate context from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_watchlist_by_idA

Delete a specific watchlist by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
watchlist_idYeswatchlist id

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description must disclose behavioral traits. It only states the action 'delete' without mentioning permanence, cascading effects, auth requirements, or error behavior. Minimal value beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with zero waste; front-loaded verb and object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple with one well-documented parameter; description is adequate for basic usage, though it omits behavioral details like return codes or idempotency, which are not critical given low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameter with description 'watchlist id', so baseline 3 applies. Description adds no additional meaning to the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Delete' with resource 'watchlist' and qualifier 'by its ID', clearly distinguishing from sibling operations like update_watchlist_by_id or get_watchlist_by_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternative mention. Usage is implied by the name and action, but the description lacks guidance on prerequisites or distinctions from other watchlist operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

do_not_exercise_options_positionB

Submits a do-not-exercise instruction for a held option contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_or_contract_idYesOption contract symbol or ID.

TDQS

B3.4/5.0
Behavior2/5

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 without explaining side effects, reversibility, or any submission requirements. No mention of potential outcomes or special conditions, making it insufficiently transparent for an action that modifies an option position.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 10 words, front-loaded with the verb 'Submits.' It contains no redundant information and is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is an action tool with no output schema and no annotations. The description fails to provide context such as when the instruction is valid, what happens after submission, or any restrictions. Given the existence of the closely related exercise_options_position, more explanatory detail is required to fully understand the tool's behavior and constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter with a description ('Option contract symbol or ID'), giving 100% coverage. The tool description adds the qualifier 'held option contract,' clarifying that the parameter must refer to a contract in the user's position, which goes beyond the schema's generic phrasing and improves semantic clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Submits') and a resource ('do-not-exercise instruction for a held option contract'), clearly distinguishing it from the sibling exercise_options_position. The 'do-not-exercise' phrasing directly contrasts with the exercise action, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 exercise_options_position or other alternatives. The description does not mention prerequisites, timing, or exclusions, leaving the agent to infer usage solely from the name and generic description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

exercise_options_positionA

Exercises a held option contract, converting it into the underlying asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_or_contract_idYesOption contract symbol or ID.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral disclosure. It reveals the primary effect (converting option to underlying asset), which is valuable, but it does not mention reversibility, cash requirements, expiration constraints, or whether it applies to both calls and puts. This is a moderate level of transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately states the action and result. Every word contributes value, and the structure is front-loaded with the key verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too brief for a financial action tool with no annotations or output schema. It does not clarify behavior for both call and put options (the phrase 'converting it into the underlying asset' is call-centric and may mislead for puts), nor does it mention prerequisites, return values, or side effects. This leaves significant gaps in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the only parameter ('Option contract symbol or ID.'), so schema coverage is 100%. The tool description adds no additional parameter meaning, hence baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('exercises') and resource ('held option contract'), and adds the key consequence ('converting it into the underlying asset'). This distinguishes it from siblings like 'do_not_exercise_options_position' and 'place_option_order'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (exercise an option you hold) but does not explicitly explain when to use it versus alternatives, nor mention any prerequisites or exclusions. The sibling tool 'do_not_exercise_options_position' is not referenced, so guidance on when not to use this tool is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_activitiesC

Returns a list of account activities such as fills, dividends, and transfers.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoFilter activities by their creation date (created_at), not the activity's settlement date. For non-trade activities such as fees, the creation date is typically the day after the trade date (in UTC). Both formats YYYY-MM-DD and YYYY-MM-DDTHH:MM:SSZ are supported.
afterNoGet activities created after this date. Both formats YYYY-MM-DD and YYYY-MM-DDTHH:MM:SSZ are supported.
untilNoGet activities created before this date. Both formats YYYY-MM-DD and YYYY-MM-DDTHH:MM:SSZ are supported.
categoryNoThe activity category. Cannot be used with "activity_types" parameter.
directionNoThe chronological order of response based on the activity datetime.desc
page_sizeNoThe maximum number of entries to return in the response.
page_tokenNoToken used for pagination. Provide the ID of the last activity from the last page to retrieve the next set of results.
activity_typesNoA comma-separated list of activity types used to filter the results.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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 that a list is returned, without mentioning pagination, default ordering, or that this is a read-only operation. Key behaviors like the 'direction' default and page_token usage are omitted from the description, though they appear in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the core purpose. It contains no redundant information and earns its place by clearly stating what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having a rich schema and output schema, the description is minimal. It does not clarify how this tool relates to the sibling get_account_activities_by_type, nor does it explain key behaviors like pagination or date filtering. This is inadequate for a tool with 8 parameters and a complex schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameters with detailed descriptions, so the baseline is 3. The tool description adds no additional parameter semantics beyond what the schema already provides, so the score remains at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and identifies the resource ('account activities') with examples. It is clear but does not explicitly distinguish from the sibling tool get_account_activities_by_type, which also returns account activities but in a more filtered manner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_account_activities_by_type. It does not mention whether this returns all activities or how to filter, leaving the agent to infer usage from the parameter schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_activities_by_typeB

Returns account activity entries for a specific type of activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoFilter activities by their creation date (created_at), not the activity's settlement date. For non-trade activities such as fees, the creation date is typically the day after the trade date (in UTC). Both formats YYYY-MM-DD and YYYY-MM-DDTHH:MM:SSZ are supported.
afterNoGet activities created after this date. Both formats YYYY-MM-DD and YYYY-MM-DDTHH:MM:SSZ are supported.
untilNoGet activities created before this date. Both formats YYYY-MM-DD and YYYY-MM-DDTHH:MM:SSZ are supported.
directionNoThe chronological order of response based on the activity datetime.desc
page_sizeNoThe maximum number of entries to return in the response.
page_tokenNoToken used for pagination. Provide the ID of the last activity from the last page to retrieve the next set of results.
activity_typeYesThe activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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, but it only states the return value. It fails to mention pagination, ordering, or any other behavioral characteristics that are not already evident from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, making it concise. However, it is so brief that it may under-specify; still, it is appropriately sized for the minimal content it provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters and an output schema, the description is too sparse. It doesn't explain the concept of activity types, the date filtering options, or pagination behavior, leaving the agent to rely on the schema without higher-level context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already provides detailed descriptions for all 7 parameters. The description adds no extra parameter semantics beyond what the schema offers, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and resource ('account activity entries') with a clear qualifier ('for a specific type of activity'), which distinguishes it from sibling tools like get_account_activities. It effectively communicates the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that get_account_activities exists for broader queries or any other conditions for using this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_configA

Retrieves the current account configuration settings, including trading restrictions, margin settings, PDT checks, and options trading level.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It explicitly conveys a read-only operation ('Retrieves') and indicates the current state of the configuration, adding context beyond the tool name. While it does not discuss error conditions or permissions, the zero-parameter, read-only nature makes this adequate, though slightly more detail on response traits could push it higher.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that leads with the action and includes a concise list of the settings covered. There is no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has zero parameters and includes an output schema for response details, so the description's job is simply to state what the tool does and what it covers. The sentence fully achieves this, making the description complete for this simple read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so the baseline is 4 per the rubric. The description cannot add parameter-specific meaning because there are none; the description's enumeration of output contents is the relevant semantic contribution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Retrieves' and clearly identifies the resource as 'account configuration settings', while enumerating key settings (trading restrictions, margin, PDT checks, options level). This differentiates it from siblings like get_account_info and update_account_config.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: whenever the agent needs the account's configuration settings, such as margin or PDT status. It does not explicitly mention alternatives or exclusion criteria, but the specificity of the listed settings provides enough contextual guidance to distinguish it from other account-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_infoA

Retrieves and formats the current account information including balances and status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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 says 'retrieves and formats,' but does not explain what 'formats' means, whether authentication is required, data freshness, or any side effects. Basic read-only behavior is implied but not explicitly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that is efficient and avoids excessive detail. The phrase 'and formats' is slightly vague and does not add much actionable value, but overall it is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters) and the presence of an output schema, the description is adequate. It identifies the core resource and data elements ('balances and status'). However, it could slightly benefit from noting that it returns current data or clarifying the 'formats' aspect, though the output schema likely covers return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema description coverage, so there are no parameter semantics to explain. Per the guideline, this yields a baseline of 4. The description adds no unnecessary parameter information, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: 'Retrieves and formats the current account information including balances and status.' It uses a specific verb ('retrieves') and resource ('current account information') and adds distinguishing detail ('balances and status') that separates it from siblings like get_account_config or get_account_activities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. It doesn't mention exclusions, prerequisites, or scenarios where another tool (e.g., get_account_config) would be more appropriate. The context signals show no such guidance in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_assetsA

Get all available assets with optional filtering. WARNING: The unfiltered response is very large (thousands of assets). Always narrow results with the status, asset_class, or exchange parameters. To look up a single asset, use get_asset instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoe.g. "active". By default, all statuses are included.
exchangeNoOptional AMEX, ARCA, BATS, NYSE, NASDAQ, NYSEARCA, OTC or CRYPTO
attributesNoComma separated values to query for more than one attribute. Assets which have any of the given attributes will be included. Supported values: - `ptp_no_exception`: Asset is a Publicly Traded Partnership (PTP) without a qualified notice; non-U.S. customers may incur 10% withholding on gross proceeds as per IRS guidance, and are blocked from being purchased by default. - `ptp_with_exception`: Users can open positions in these PTPs without general restrictions. - `ipo`: Accepting limit orders only before the stock begins trading on the secondary market. - `has_options`: The underlying equity has listed options available on the platform. Note: if the equity had inactive/expired contracts in the past, this will still show up. - `options_late_close`: Indicates the underlying asset's options contracts close at 4:15pm ET instead of the standard 4:00pm ET. - `fractional_eh_enabled`: Indicates the asset accepts fractional orders during extended hours sessions (pre-market, post-market, and overnight if enabled). - `overnight_tradable`: Asset is eligible for overnight (24x5) trading in supported venues on the platform. - `overnight_halted`: Asset is eligible for overnight trading but is currently halted/blocked for overnight sessions due to risk, corporate action, compliance, or venue constraints.
asset_classNoDefaults to us_equity.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It warns about the large unfiltered response size and advises filtering, which is important behavioral context beyond the schema. It doesn't mention pagination or rate limits, but the warning is the most critical behavioral trait for this list endpoint, so a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero wasted words. It front-loads the purpose, includes an essential warning, and names the alternative tool. Every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values don't need explanation. The description covers the essential usage context: it's a list tool with optional filters, warns about the large response, and directs to a more specific sibling tool. This is complete for a filtered-list tool with fully documented schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already having a detailed description, especially the attributes enum. The description adds a hint to use status, asset_class, or exchange for narrowing, but doesn't add new syntax or detail beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: "Get all available assets with optional filtering." It explicitly distinguishes from the sibling tool get_asset by stating "To look up a single asset, use get_asset instead," making the scope clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance by warning that the unfiltered response is very large and instructing to always narrow results with status, asset_class, or exchange. It also names the alternative tool (get_asset) for single-asset lookups, which is clear exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_positionsA

Retrieves all current positions in the portfolio as JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. It only states the return format (JSON) and does not mention whether the operation is read-only, requires permissions, or if there are any side effects. This is a significant gap for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's action, scope, and output format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are no parameters and an output schema exists, the description is sufficient. It specifies what the tool does ('retrieves all current positions'), the scope ('in the portfolio'), and the return format ('as JSON'), which is complete for a simple read-only listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema trivially covers 100% of parameters. The baseline of 4 applies since there is no parameter information to add; the description correctly focuses on what the tool returns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieves' and the resource 'all current positions in the portfolio', making it distinct from singular siblings like get_open_position and portfolio history tools. The 'all' and 'current' wording provides specific scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when a complete snapshot of current positions is needed, but it does not explicitly mention when not to use it or point to alternatives such as get_open_position for a single position. Guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_assetB

Retrieves and formats detailed information about a specific asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_or_asset_idYessymbol or assetId. CUSIP is also accepted for US equities.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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 says 'retrieves and formats' but doesn't explain data freshness, potential errors, required permissions, or any limitations. The vagueness of 'formats' also leaves room for ambiguity about the output shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is front-loaded with the action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with an output schema, the description is minimally sufficient. However, it lacks context about where this fits relative to snapshot tools and what asset classes are supported, so it's not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter schema fully describes symbol_or_asset_id (including CUSIP acceptance), achieving 100% coverage. The description adds no extra parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieves and formats' and the resource 'detailed information about a specific asset', which is distinct from sibling tools like get_all_assets that list assets. It precisely indicates the scope of a single asset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_stock_snapshot or get_crypto_snapshot. There is no mention of asset classes, use cases, or exclusions, leaving the agent to infer applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calendarA

Retrieves and formats market calendar for specified date range. WARNING: Always provide start and end dates (YYYY-MM-DD). Without date bounds the response contains the entire multi-year calendar and will be extremely large.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe last date to retrieve data for (inclusive).
startNoThe first date to retrieve data for (inclusive).
date_typeNoIndicates what start and end mean. Default: TRADING. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and discloses a critical behavioral trait: omitting date bounds yields an extremely large multi-year response. It also implies formatting behavior. This is valuable beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose first, followed by a critical warning. Every sentence earns its place, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description need not explain return values. It covers the main pitfall (large response) and the tool's purpose. Combined with high schema coverage, the description is complete for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful guidance by specifying the date format (YYYY-MM-DD) and emphasizing that both start and end are required in practice. This goes beyond the schema's date-time format and optional flags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieves and formats') with a clear resource ('market calendar') and scope ('for specified date range'). It distinguishes itself from sibling tools like get_clock by focusing on the calendar rather than current time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs users to always provide start and end dates, with a warning about the consequences of omitting them. However, it does not mention alternative tools or exclusions, so it falls short of full usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_clockA

Retrieves and formats current market status and next open/close times.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves and formats data, indicating a read-only operation. However, it does not describe potential side effects, authentication requirements, or behavior when the market is closed (e.g., whether next open/close times are still returned). This minimal disclosure is adequate but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action ('Retrieves and formats') and the target information ('current market status and next open/close times'). No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has no parameters, and an output schema is present (per context signals). The description conveys the core purpose without needing to detail return fields. It could be slightly more specific about what 'market status' includes (e.g., open/closed, extended hours), but given the output schema, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema covers 100% of parameter semantics. The description adds no parameter-specific information, but none is needed. Per guidelines, a zero-parameter tool gets a baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves and formats current market status and next open/close times. It specifies a distinct resource (current market status, times) and is easily distinguishable from sibling tools like get_calendar, which focus on calendar dates rather than the current state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The implied usage is evident: when you need to know if the market is open and when it next opens/closes. However, it does not explicitly mention alternatives or provide exclusion criteria. Since get_calendar is a sibling tool that might be confused with this, additional guidance on when to use get_clock vs get_calendar would improve the score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_corporate_action_announcementA

Retrieves a single corporate action announcement by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe corporate announcement's id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It indicates a read operation via 'Retrieves' but discloses no other behavioral traits such as 404/error handling, permissions, or what happens if the ID does not exist. The description is minimal and does not add value beyond the name and parameter schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the action without unnecessary words. It is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, output schema exists) the description is adequate for basic usage. However, it lacks context on error cases, prerequisites, or how this fits with the plural sibling tool, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'id' parameter. The description's 'by ID' adds marginal emphasis but no new semantic detail, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a single corporate action announcement by ID, which is a specific verb+resource+scope. It distinguishes from the sibling 'get_corporate_action_announcements' (plural) by indicating it operates on a single known ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by ID' implies the tool is for fetching a specific announcement when the ID is known, but it does not explicitly differentiate when to use this versus the plural sibling tool or mention alternatives/exclusions. Guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_corporate_action_announcementsA

Retrieves corporate action announcements (dividends, mergers, splits, spinoffs). Use a narrow date range and filter by symbol when possible — broad queries can return very large responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
cusipNoThe CUSIP of the company initiating the announcement.
sinceYesThe start (inclusive) of the date range when searching corporate action announcements. This should follow the YYYY-MM-DD format. The date range is limited to 90 days.
untilYesThe end (inclusive) of the date range when searching corporate action announcements. This should follow the YYYY-MM-DD format. The date range is limited to 90 days.
symbolNoThe symbol of the company initiating the announcement.
ca_typesYesA comma-delimited list of Dividend, Merger, Spinoff, or Split.
date_typeNodeclaration_date, ex_date, record_date, or payable_date

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It does warn that broad queries can return very large responses, which is a useful performance trait. However, it does not disclose other behaviors such as pagination, rate limits, or any side effects. Given this is a read operation, the warning is the main behavioral note, but more context could be added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences: the first states the core purpose, the second gives a crucial usage warning. There is zero wasted text, and the most important actionable advice is front-loaded. This is a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (per context signals), the description does not need to explain return values. It covers the essential selection information: what the tool retrieves and how to scope invocations effectively. The guidance about broad queries is important context. While it could mention optional params beyond symbol, the schema already defines them, so the description plus schema is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter coverage, so the schema already provides full meaning for all six parameters. The description does not add new semantic details beyond the schema, though it suggests filtering by symbol and using narrow date ranges, which is more of a usage guideline than parameter semantics. This aligns with the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves corporate action announcements with specific types listed (dividends, mergers, splits, spinoffs). It uses a specific verb and resource, making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like get_corporate_action_announcement (singular) or get_corporate_actions, so it misses the differentiation that would earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit practical guidance: 'Use a narrow date range and filter by symbol when possible — broad queries can return very large responses.' This tells the agent when to use the tool with constraints and warns about performance. It lacks explicit alternatives or exclusions, but gives clear context for invocation, earning a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_corporate_actionsB

Retrieves and formats corporate action announcements.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe inclusive end of the interval. The corporate actions are sorted by their `process_date`. Format: YYYY-MM-DD. Default: current day.
idsNoA comma-separated list of corporate action IDs. This parameter is mutually exclusive with all other filters (symbols, types, start, end).
sortNoSort data in ascending or descending order.asc
limitNoMaximum number of corporate actions to return in a response. The limit applies to the total number of data points, not the count per symbol! Use `next_page_token` to fetch the next set of corporate actions.
startNoThe inclusive start of the interval. The corporate actions are sorted by their `process_date`. Format: YYYY-MM-DD. Default: current day.
typesNoA comma-separated list of types. If not provided, search all types. The following types are supported: - reverse_split - forward_split - unit_split - cash_dividend - stock_dividend - spin_off - cash_merger - stock_merger - stock_and_cash_merger - redemption - name_change - worthless_removal - rights_distribution - partial_call - reorganization
cusipsNoA comma-separated list of CUSIPs.
regionNoThe region to filter corporate actions by. - `us`: only US corporate actions - `non_us`: only non-US corporate actions - `all`: both US and non-US corporate actions us
symbolsNoA comma-separated list of symbols.
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a non-destructive read operation ('retrieves') and mentions output formatting, but it does not disclose behaviors such as default date ranges, sorting, pagination, or any potential side effects. With no annotations provided, the description carries the burden but only partially addresses it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the tool's purpose without any wasted words. It is appropriately front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 10 optional parameters and a complex query interface, yet the description offers no overview or usage context. It does not explain how this tool fits with siblings or what scenarios it is designed for, leaving the agent to rely entirely on the schema. The output schema exists, so return values are covered, but the description is still inadequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage of parameter descriptions, so the description adds no additional semantic value. The baseline of 3 is appropriate since the schema already documents all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves and formats corporate action announcements, using a specific verb and resource. However, it does not differentiate from the sibling tool get_corporate_action_announcements, which likely serves a similar purpose, so it lacks distinctiveness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It simply states what it does without contextual usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_barsGet Crypto BarsA
Read-only

Retrieve historical price bars (OHLCV) for one or more cryptocurrencies.

When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback.

Args: symbols: Comma-separated crypto pairs (e.g. "BTC/USD" or "BTC/USD,ETH/USD"). timeframe: Bar aggregation period — "1Min", "5Min", "15Min", "30Min", "1Hour", "1Day", "1Week", or "1Month". start: Inclusive start time (RFC 3339). Omit to use relative lookback. end: Inclusive end time (RFC 3339). Omit for current time. days: Days to look back when start is omitted (default 1). hours: Additional hours in the lookback (default 0). minutes: Additional minutes in the lookback (default 0). limit: Max total data points returned across all symbols, 1–10000 (default 1000). sort: Timestamp sort order — "asc" (default) or "desc".

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
daysNo
sortNoasc
hoursNo
limitNo
startNo
minutesNo
symbolsYes
timeframeNo1Hour

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, lowering the bar. The description adds valuable behavioral details: automatic lookback calculation when start is omitted, limit semantics ('Max total data points returned across all symbols'), and sort order. It doesn't mention pagination, but for a read-only historical data tool, this is sufficient context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-sentence purpose followed by a labeled Args block. Every parameter earns its place, and the text avoids redundancy. It is longer than minimal, but the parameter count (9) justifies the detail. The content is front-loaded with the main verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, 1 required), the description covers all parameters, defaults, lookback logic, and sort/limit behaviors. The output schema exists, so return value details aren't needed in the description. This is complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, and it excels. The Args section explains each parameter's meaning, defaults, formats, and special behaviors—e.g., 'Inclusive start time', 'Max total data points across all symbols', 'Additional hours in the lookback'. This far exceeds the raw schema, making parameter semantics exceptionally clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Retrieve historical price bars (OHLCV) for one or more cryptocurrencies.' This clearly distinguishes it from sibling tools like get_stock_bars and get_option_bars by explicitly naming crypto, and from get_crypto_latest_bar by indicating historical data. The 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool (for crypto OHLCV data) and explains behavior for omitted start/end, but it does not explicitly name alternative tools or exclusions. The sibling tool list shows many bar/quote/trade tools, but the description itself doesn't state 'use this instead of get_stock_bars for crypto.' Thus it earns a 4 for clear context without explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_latest_barA

Returns the latest minute bar for one or more crypto symbols. The loc parameter is required — always set loc to "us".

ParametersJSON Schema
NameRequiredDescriptionDefault
locYesCrypto location from where the latest market data is retrieved.
symbolsYesA comma-separated list of crypto symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: the loc parameter must always be 'us', and the tool only returns the latest minute bar. However, it does not address potential edge cases (e.g., what happens if another loc is passed) or mention the read-only nature explicitly, though 'Returns' implies it. The description is adequate but sparse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary purpose. The first sentence states what the tool does, and the second gives a critical usage instruction. Every word contributes meaning; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with a rich output schema and fully described parameters, the description is mostly complete. It covers the essential purpose and the mandatory loc value. It could be improved by noting that this is for real-time latest data only and that historical data requires get_crypto_bars, but the absence is minor given the simplicity and schema support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters with 100% coverage, so a baseline of 3 applies. The description adds extra meaning for the loc parameter by specifying that it must always be set to 'us', which is not evident from the schema alone (since the enum lists multiple options). This guidance is valuable and raises the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Returns') and resource ('latest minute bar for one or more crypto symbols'), which distinguishes it from related tools like get_crypto_bars (which likely returns historical bars) and other latest-data tools (trade/quote). It is unambiguous and leaves no doubt about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a useful parameter instruction ('always set loc to "us"'), which is a form of usage guidance. However, it does not explicitly mention when to use this tool versus alternatives such as get_crypto_bars or when a different loc value would be appropriate. The condition is implied by the word 'latest' but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_latest_orderbookA

Returns the latest orderbook for one or more crypto symbols. The loc parameter is required — always set loc to "us". Note: the response includes the full order book depth and can be large.

ParametersJSON Schema
NameRequiredDescriptionDefault
locYesCrypto location from where the latest market data is retrieved.
symbolsYesA comma-separated list of crypto symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses important behavioral traits: the response includes 'full order book depth and can be large'. It also highlights a required parameter value. However, it does not explicitly state that this is a read-only operation or mention rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences each serve a distinct purpose: definition, mandatory parameter, and output size warning. No unnecessary filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple 2-parameter tool with an output schema present, the description covers the essentials: what it returns, the key parameter constraint, and the large response. The only minor gap is the potential confusion between the enum values and the directive to always use 'us'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by telling the agent to always set loc to 'us' despite the enum allowing other values. It also confirms that symbols can be a list ('one or more'), matching the comma-separated format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Returns the latest orderbook for one or more crypto symbols', specifying the verb, resource, and scope. This distinguishes it from sibling tools like get_crypto_latest_trade and get_crypto_latest_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool and includes a critical operational instruction ('always set loc to "us"'). It does not explicitly name alternatives or exclusions, but the large response warning helps set expectations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_latest_quoteB

Returns the latest quote for one or more crypto symbols. The loc parameter is required — always set loc to "us".

ParametersJSON Schema
NameRequiredDescriptionDefault
locYesCrypto location from where the latest market data is retrieved.
symbolsYesA comma-separated list of crypto symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that loc is required and should be 'us' and that multiple symbols are supported, but it does not explicitly indicate that the operation is read-only, nor does it cover error conditions, rate limits, or any side effects. This is minimal disclosure for a tool that could be used without additional safety context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, both front-loaded with essential information. The first sentence states the purpose, and the second gives a critical parameter instruction. Every word earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only two parameters and an output schema, the description is largely sufficient. It conveys the core functionality and the key loc constraint. The only notable gap is the lack of guidance on when to prefer this over sibling tools, but that belongs to the usage dimension. Given the low complexity, the description covers what an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both loc and symbols. The description adds the directive to always set loc to 'us', which is a meaningful recommendation beyond the schema's enum listing. It also clarifies that symbols can be one or more, reinforcing the comma-separated format. This additional value justifies a score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Returns the latest quote for one or more crypto symbols.' It identifies the resource (crypto quotes) and action (retrieve latest). It distinguishes from trade or bars tools by resource type, but does not explicitly compare with sibling quote tools like get_crypto_quotes, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as get_crypto_latest_trade or get_crypto_quotes. The only usage instruction, 'always set loc to "us"', is parameter-level advice, not tool-selection guidance. Thus, it does not help an agent decide between this and other quote-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_latest_tradeA

Returns the latest trade for one or more crypto symbols. The loc parameter is required — always set loc to "us".

ParametersJSON Schema
NameRequiredDescriptionDefault
locYesCrypto location from where the latest market data is retrieved.
symbolsYesA comma-separated list of crypto symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the disclosure burden. It does indicate a read-only operation ('returns') and communicates the required loc constraint, but it omits details such as response structure for multiple symbols, error behavior, or rate limits. The output schema covers return format, mitigating some risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core function. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple latest-trade tool with an output schema and full parameter descriptions, the description covers the essential operation and the critical loc value. It lacks explicit sibling differentiation, but output schema reduces the need to describe the return format. Overall sufficient for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, providing baseline 3. The description adds value by instructing the agent to always set loc to 'us', which disambiguates the enum and prevents incorrect selections. It also confirms the required nature of loc beyond the schema's required array.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('returns'), identifies the resource ('latest trade'), and scopes it to 'one or more crypto symbols', clearly distinguishing it from sibling tools like get_crypto_trades (historical trades) or get_stock_latest_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear parameter-level directive ('always set loc to "us"') but does not explicitly state when to choose this tool over sibling tools like get_crypto_trades or get_crypto_latest_quote. The tool name implies the use case, so usage context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_quotesGet Crypto QuotesA
Read-only

Retrieve historical bid/ask quotes for one or more cryptocurrencies.

When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback.

Args: symbols: Comma-separated crypto pairs (e.g. "BTC/USD" or "BTC/USD,ETH/USD"). start: Inclusive start time (RFC 3339). Omit to use relative lookback. end: Inclusive end time (RFC 3339). Omit for current time. days: Days to look back when start is omitted (default 0). hours: Additional hours in the lookback (default 0). minutes: Additional minutes in the lookback (default 15). limit: Max total data points returned across all symbols, 1–10000 (default 1000). sort: Timestamp sort order — "asc" (default) or "desc".

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
daysNo
sortNoasc
hoursNo
limitNo
startNo
minutesNo
symbolsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=true, the description adds valuable behavioral context beyond that: it explains the automatic lookback computation when start is omitted and the 'limit' parameter's cross-symbol semantics. It does not contradict the read-only annotation, and there are no destructive concerns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: a one-sentence purpose, a note about the start-omitted behavior, then a clear Arg list. Every line is informative, and the length is appropriate for a tool with 8 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's behavior comprehensively: parameter formats, defaults, time-zone semantics, and cross-symbol limits. Since an output schema exists, the lack of explicit return-value documentation is not a gap. It is complete for a historical-quotes tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given the schema has 0% per-parameter description coverage, the description fully compensates by documenting every parameter: symbols format with examples, start/end RFC 3339 and omission behavior, units for days/hours/minutes, limit range (1-10000), and sort values. This far exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Retrieve historical bid/ask quotes for one or more cryptocurrencies.' This clearly distinguishes it from sibling tools like get_crypto_latest_quote (latest rather than historical) and get_crypto_bars (bars, not bid/ask quotes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context by specifying 'historical' quotes, implying it is for past data rather than current/latest quotes. However, it does not explicitly name alternative tools or state when not to use it, 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.

get_crypto_snapshotA

Returns a snapshot for one or more crypto symbols including latest trade, quote, minute bar, daily bar, and previous daily bar. The loc parameter is required — always set loc to "us".

ParametersJSON Schema
NameRequiredDescriptionDefault
locYesCrypto location from where the latest market data is retrieved.
symbolsYesA comma-separated list of crypto symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses a critical constraint (loc must always be 'us') and lists the included data components, but does not mention safety profile, rate limits, or response format beyond what the output schema already covers. It is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states purpose and contents, the second gives a specific parameter instruction. No unnecessary words, and the most important usage constraint (loc='us') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's main purpose and a key constraint. Since an output schema exists, return structure is already documented. It lacks a note about sibling tools or when not to use it, but for a straightforward snapshot read operation, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters. The description adds value by emphasizing that loc is required and should always be set to 'us' (despite other enum options), and clarifies that symbols accepts one or more comma-separated crypto symbols, enhancing parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a snapshot for one or more crypto symbols, listing its contents (latest trade, quote, minute bar, daily bar, previous daily bar). This specific verb+resource+scope distinguishes it from sibling tools like get_crypto_latest_trade or get_crypto_bars.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage instruction for the loc parameter ('always set loc to "us"'), which is helpful. However, it does not explicitly mention alternatives or when to use this tool versus sibling snapshot-related tools, so usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_tradesGet Crypto TradesA
Read-only

Retrieve historical trade data for one or more cryptocurrencies.

When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback.

Args: symbols: Comma-separated crypto pairs (e.g. "BTC/USD" or "BTC/USD,ETH/USD"). start: Inclusive start time (RFC 3339). Omit to use relative lookback. end: Inclusive end time (RFC 3339). Omit for current time. days: Days to look back when start is omitted (default 0). hours: Additional hours in the lookback (default 0). minutes: Additional minutes in the lookback (default 15). limit: Max total data points returned across all symbols, 1–10000 (default 1000). sort: Timestamp sort order — "asc" (default) or "desc".

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
daysNo
sortNoasc
hoursNo
limitNo
startNo
minutesNo
symbolsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true and openWorldHint: true, so the safe-read nature is established. The description adds valuable behavioral context: automatic start computation from lookback parameters when start is omitted, inclusive time ranges, limit across all symbols, and default values. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence purpose, a brief note on start behavior, then a clear bullet-like arg list. Each parameter has a concise explanation without unnecessary elaboration. It is front-loaded with the main verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, 1 required, no schema descriptions, and an output schema present, the description covers all functional aspects: how to specify symbols, time range options, lookback logic, limit constraints, and sort behavior. It does not need to explain return values because an output schema exists, and it provides enough context to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully explain all 8 parameters, and it does. It provides meaning, defaults, examples, and conditional behavior for each parameter (e.g., symbols format, start/end inclusivity, lookback combination, limit range, sort order). This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: "Retrieve historical trade data for one or more cryptocurrencies." This clearly distinguishes it from sibling tools like get_crypto_latest_trade (latest trade), get_crypto_bars (OHLC bars), and get_crypto_quotes (quotes). The scope is explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for historical trade data and provides detailed parameter semantics, but it does not explicitly compare with alternatives or state when not to use this tool. No exclusions or alternative tool names are mentioned, leaving the selection decision to inference from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fixed_income_latest_quotesA

Returns the latest quotes for fixed income securities (bonds, treasuries). Provide a comma-separated list of ISINs (e.g. 'US912797SX61,US912810SK51'). Returns bid/ask prices, sizes, and yield-to-maturity for each security.

ParametersJSON Schema
NameRequiredDescriptionDefault
isinsYesA comma-separated list of ISINs with a limit of 100.
trade_sizeNoFilters to best bid/ask where the minimum trade size is less than or equal to the given numeric value. For any negative value the best bid/ask will be returned for the smallest trade size on either side.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It clearly states what the tool returns (bid/ask prices, sizes, yield-to-maturity) and the required input format, which gives the agent an accurate mental model. It does not cover error handling or latency, but for a read-only quote retrieval this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the core purpose front-loaded in the first sentence and a concrete example and output details in the second. Every sentence adds value, with no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the existence of an output schema, the description sufficiently covers purpose, input requirements, and return content. It does not explain edge cases like invalid ISINs, but the combination of schema descriptions and output schema makes it complete enough for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes both parameters (ising list and trade_size) with 100% coverage. The description reinforces the isins parameter with an example but adds no additional meaning for trade_size. Thus it merely meets the baseline without exceeding what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: returning latest quotes for fixed income securities. It specifically names the asset class (bonds, treasuries) and distinguishes it from sibling quote tools for stocks, crypto, and options. The verb 'Returns' is precise and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by telling the agent to provide a comma-separated list of ISINs, including an example. It implies this is the tool for fixed income quotes. However, it does not explicitly state when not to use it or mention alternative tools, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_index_latest_valuesB

Returns the latest values for market indices (e.g. SPX, VIX, DJI). Provide a comma-separated list of index symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYesA comma-separated list of index symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden but merely restates the tool's name. It does not mention data freshness, supported symbol formats, error conditions, or return value nuances, providing little beyond the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise, front-loaded sentences with no wasted words. The examples are useful without adding excessive length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with an output schema, the description is minimally sufficient but lacks clarity on which indices are supported and how this differs from get_index_values. An agent may need additional context to select the correct tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the symbols parameter as a comma-separated list. The description repeats this and adds three examples, which is marginal added value. Since schema coverage is 100%, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns latest values for market indices, with specific examples (SPX, VIX, DJI). However, it does not distinguish this from the sibling tool get_index_values, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only explains how to format the symbols parameter, not when to use this tool versus alternatives. No context or exclusions are provided, leaving the agent to guess applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_index_valuesA

Returns historical values for market indices over a time interval. Supports pagination, sorting, and date range filtering. Provide a comma-separated list of index symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe inclusive end of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the current time if the user has a real-time access for the feed, otherwise 15 minutes before the current time.
sortNoSort data in ascending or descending order.asc
limitNoThe maximum number of data points to return in the response page. The API may return less, even if there are more available data points in the requested interval. Always check the `next_page_token` for more pages. The limit applies to the total number of data points, not per symbol!
startNoThe inclusive start of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the beginning of the current day, but at least 15 minutes ago if the user doesn't have real-time access for the feed.
symbolsYesA comma-separated list of index symbols.
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool supports pagination, sorting, and date range filtering, and that it returns historical values (implying a read-only operation). However, it does not provide deeper behavioral context such as default time ranges, pagination token usage, or any side effects. This is adequate but minimal for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the core purpose, and every sentence earns its place. It avoids redundancy and is easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema and six parameters, so the description does not need to explain return values or parameter details. It covers the high-level capabilities (historical values, pagination, sorting, date filtering) relevant for selection and initial invocation. It does not mention edge cases like defaults for 'start' and 'end', but those are documented in the schema, making the description sufficient for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description's only parameter hint is 'Provide a comma-separated list of index symbols,' which duplicates the schema description for 'symbols' and adds no new meaning. Therefore, the description adds no value beyond the schema, matching the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: 'Returns historical values for market indices over a time interval.' This distinguishes it from the sibling tool get_index_latest_values by emphasizing 'historical' values, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for historical index values with date range filtering, pagination, and sorting. It also instructs the user to 'Provide a comma-separated list of index symbols.' While it does not explicitly name alternative tools for latest values, the phrase 'historical values' implicitly guides usage away from get_index_latest_values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_locateB

Returns a single locate request by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
locate_idYesThe locate ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It only says 'Returns' without detailing error behavior, authentication requirements, side effects, or its read-only nature. It also does not clarify what happens when the ID does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the tool's purpose. There is no wasted wording or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-ID retrieval tool, the description combined with the complete input schema and output schema provides an adequate core contract. However, it could benefit from noting its relationship to get_locates or handling of missing IDs, so it is slightly above the minimum viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a clear description for locate_id, so the schema already documents the parameter. The description's phrase 'by its ID' adds no additional semantic detail beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and a specific resource ('a single locate request by its ID'), clearly distinguishing it from sibling tools like get_locates (plural, likely listing) and get_locate_quotes. It precisely identifies the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as get_locates or get_locate_quotes. It lacks any mention of prerequisites, exclusions, or alternative conditions, so the agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_locate_quotesA

Returns locate availability and pricing for one or more symbols. Provide a comma-separated list of symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYesComma-separated list of stock symbols. Maximum 100 unique symbols.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns data (read-only), but it does not mention any additional behavioral traits such as data freshness, rate limits, required permissions, or handling of invalid symbols. The description adds minimal context beyond the basic read operation, which is insufficient for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the core purpose and followed by a concise usage instruction. Every word earns its place, with no redundancy or irrelevant information. This is an example of efficient writing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter read tool with an output schema available, so the description covers the essential purpose and invocation. The main gap is not differentiating from similar sibling tools like 'get_locates', but given the low complexity and presence of an output schema, the description is sufficiently complete for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the 'symbols' parameter already described as a comma-separated list with a max of 100 unique symbols. The description merely repeats this ('Provide a comma-separated list of symbols'), adding no new semantic meaning. According to the rubric, a baseline of 3 is appropriate when the schema fully covers parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Returns locate availability and pricing for one or more symbols.' It uses a specific verb ('returns') and identifies a distinct resource ('locate availability and pricing'), which differentiates it from sibling tools like get_stock_quotes or get_locates. The scope is explicit, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you need locate quotes for symbols) and gives input instructions ('Provide a comma-separated list of symbols'). However, it does not provide explicit alternatives or exclusions, such as explaining the difference between this tool and the similar 'get_locates' or 'get_locate' siblings. Usage context is clear but not differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_locatesB

Returns locate requests for the account, filtered by status, symbol, or date range. Results are sorted by creation date descending.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoFilter locates with locate trading date before this date (exclusive). Format: YYYY-MM-DD. The locate trading date uses America/New_York and rolls at 8pm ET.
limitNoMaximum number of results to return.
startNoFilter locates with locate trading date on or after this date. Format: YYYY-MM-DD. The locate trading date uses America/New_York and rolls at 8pm ET.
statusNoLocate status.
symbolNoFilter by stock symbol.
page_tokenNoUsed for pagination, this token retrieves the next page of results. It is obtained from the response of the preceding page when additional pages are available.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden for behavioral disclosure. It mentions the sort order (creation date descending) but omits pagination behavior, result limits, and any details about the date timezone semantics that are only in the schema. For a read tool, this is a minimal but present disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core purpose, and contains 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values are covered. However, given the absence of annotations and the large set of sibling tools, the description does not hint at when to use this list endpoint versus the singular get_locate, nor does it mention pagination for large result sets. The rich schema partially compensates, but the description itself is minimal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with detailed descriptions for all six parameters, including formats, enums, and pagination token mechanics. The description adds no extra meaning beyond summarizing that filtering is by status, symbol, or date range, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns locate requests for the account and lists the filter dimensions (status, symbol, date range). It uses a specific verb and resource. While it does not explicitly differentiate from the sibling get_locate, the plural 'requests' strongly implies a list operation, so it mostly distinguishes itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like get_locate (singular) or create_locate. The description only explains what the tool does, not when it should be chosen. There are no exclusions or alternative tool mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_moversA

Returns the top market movers (gainers and losers) based on real-time SIP data.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoNumber of top market movers to fetch (gainers and losers). Will return this number of results for each. By default, 10 gainers and 10 losers.
market_typeYesMarket type (stocks or crypto).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that results are based on real-time SIP data and that both gainers and losers are returned, which is useful behavioral context. However, it does not specify the calculation period, sorting, or any potential rate limits, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded and free of unnecessary words. It conveys the purpose and data source economically, every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and provides an output schema, so the description doesn't need to explain return structure. It covers the essential purpose and data source. The description is complete enough for this level of complexity, though additional caveats (e.g., market hours) could be added.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already fully explains both parameters (market_type and top). The tool description adds no parameter-specific information beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: returning top market movers (gainers and losers) using real-time SIP data. It is specific about the resource and differentiates from sibling tools like get_most_active_stocks by focusing on movers rather than activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It only states what the tool returns, leaving the agent to infer usage context. No exclusions or sibling comparisons are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_most_active_stocksB

Screens the market for most active stocks by volume or trade count.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoThe metric used for ranking the most active stocks.volume
topNoThe number of top most active stocks to fetch per day.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior but provides only a general screening action and the ranking metric. It does not mention output structure, time frame (per day), or limitations, placing the burden on the schema instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that front-loads the purpose and includes the key differentiating detail (volume or trade count). No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple structure with output schema and complete parameter descriptions, the description is minimally viable. However, it lacks usage differentiation from get_market_movers and does not explicitly clarify 'per day' semantics, leaving some context gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and documents both 'by' and 'top' clearly. The description adds no new parameter detail beyond restating the 'by' metric, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses the verb 'screens' and clearly identifies the resource (most active stocks) and the ranking criteria (by volume or trade count). It distinguishes from quote/bar retrieval siblings, but does not explicitly contrast with the similar get_market_movers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or exclusions, and the overlap with get_market_movers is unaddressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newsA

Retrieves news articles for stocks and crypto. Filter by symbols, date range, and sort order. Returns headlines, summaries, URLs, and associated ticker symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe inclusive end of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the current time if the user has a real-time access for the feed, otherwise 15 minutes before the current time.
sortNoSort articles by updated date.desc
limitNoLimit of news items to be returned for a result page.
startNoThe inclusive start of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the beginning of the current day, but at least 15 minutes ago if the user doesn't have real-time access for the feed.
symbolsNoA comma-separated list of symbols for which to query news.
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.
include_contentNoBoolean indicator to include content for news articles (if available).
exclude_contentlessNoBoolean indicator to exclude news articles that do not contain content.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return type (headlines, summaries, URLs, ticker symbols) but does not mention pagination behavior, result limits, or content inclusion flags—these are left to the schema. The behavior is not misleading, but the description adds only modest transparency beyond the schema's parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence immediately states the core function, and the second covers filtering and output. Every word adds value, making it highly efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 optional parameters and an output schema, the description is reasonably complete. It covers the main use case (filtering and retrieving news) without explaining return values in detail, which is appropriate since the output schema exists. It could mention pagination or limits, but those are well-defined in the schema, so the description suffices for initial selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a description. The tool description summarizes key filtering dimensions (symbols, date range, sort order) but does not add detail beyond the schema. This aligns with the baseline of 3 when schema covers parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Retrieves news articles for stocks and crypto,' which is a specific verb+resource combination. It clearly differentiates from sibling tools like quotes, bars, and trades, which retrieve market data rather than news. The mention of 'headlines, summaries, URLs, and associated ticker symbols' further clarifies the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Filter by symbols, date range, and sort order,' which establishes the tool's typical usage context. While it doesn't explicitly exclude alternatives or name when-not-to-use, the sibling list shows no other news retrieval tool, so the usage context is clear without needing exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_open_positionB

Retrieves and formats details for a specific open position.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_or_asset_idYessymbol or assetId

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the burden. It indicates a read operation via 'Retrieves' and implies no mutation, but it does not disclose behavior on missing positions, authentication requirements, or any formatting details. This is a minimal but not misleading description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that earns its place without fluff. It is appropriately sized for a simple retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool, one parameter, and an output schema that covers return structure, the description is mostly complete. However, it lacks any contextual guidance on when to prefer this over get_all_positions, leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the parameter with 100% coverage ('symbol or assetId'). The description adds no additional parameter semantics beyond the generic reference to a 'specific open position'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Retrieves' and specifies 'details for a specific open position', clearly distinguishing it from sibling tools like get_all_positions. The term 'formats' adds a hint about output structure, though it's slightly vague. Overall, it states a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not mention when to use this tool instead of getting all positions or closing a position, nor does it specify prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_barsB

Retrieves historical bar (OHLCV) data for one or more option contracts.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe inclusive end of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the current time if the user has a real-time access for the feed, otherwise 15 minutes before the current time.
sortNoSort data in ascending or descending order.asc
limitNoThe maximum number of data points to return in the response page. The API may return less, even if there are more available data points in the requested interval. Always check the `next_page_token` for more pages. The limit applies to the total number of data points, not per symbol!
startNoThe inclusive start of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the beginning of the current day, but at least 15 minutes ago if the user doesn't have real-time access for the feed.
symbolsYesA comma-separated list of contract symbols with a limit of 100.
timeframeYesThe timeframe represented by each bar in aggregation. You can use any of the following values: - `[1-59]Min` or `[1-59]T`, e.g. `5Min` or `5T` creates 5-minute aggregations - `[1-23]Hour` or `[1-23]H`, e.g. `12Hour` or `12H` creates 12-hour aggregations - `1Day` or `1D` creates 1-day aggregations - `1Week` or `1W` creates 1-week aggregations - `[1,2,3,4,6,12]Month` or `[1,2,3,4,6,12]M`, e.g. `3Month` or `3M` creates 3-month aggregations
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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, but it only states the core purpose. It does not mention pagination, default time ranges, real-time access implications, or the fact that the limit applies to the total number of data points, though some of this is available in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is front-loaded with the key purpose and reads efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema and presence of an output schema, the description is minimally acceptable. However, it does not provide behavioral context such as how to handle pagination or the availability of real-time data, which might be important for a tool with 7 parameters. The description is sufficient for a basic understanding but not fully complete for decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already thoroughly documents all parameters. The description adds no additional parameter-level information. Baseline of 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieves') and clearly identifies the resource ('historical bar (OHLCV) data for one or more option contracts'). This unambiguously distinguishes it from sibling tools like get_stock_bars and get_crypto_bars, which focus on different asset classes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, not when to choose it or exclude other options. There is no mention of alternatives, prerequisites, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_chainA

Retrieves option chain data for an underlying symbol, including latest trade, quote, implied volatility, and greeks for each contract. The response can be very large. Use the type (call/put), strike_price_gte/lte, expiration_date, and limit parameters to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. `opra` is the official OPRA feed, `indicative` is a free indicative feed where trades are delayed and quotes are modified. Default: `opra` if the user has a subscription, otherwise `indicative`. opra
typeNoFilter contracts by the type (call or put).
limitNoNumber of maximum snapshots to return in a response. The limit applies to the total number of data points, not the number per symbol! Use `next_page_token` to fetch the next set of responses.
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.
root_symbolNoFilter contracts by the root symbol.
updated_sinceNoFilter to snapshots that were updated since this timestamp, meaning that the timestamp of the trade or the quote is greater than or equal to this value. Format: RFC-3339 or YYYY-MM-DD. If missing, all values are returned.
expiration_dateNoFilter contracts by the exact expiration date (format: YYYY-MM-DD).
strike_price_gteNoFilter contracts with strike price greater than or equal to the specified value.
strike_price_lteNoFilter contracts with strike price less than or equal to the specified value.
underlying_symbolYesThe financial instrument on which an option contract is based or derived.
expiration_date_gteNoFilter contracts with expiration date greater than or equal to the specified date.
expiration_date_lteNoFilter contracts with expiration date less than or equal to the specified date.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It adds a key behavioral trait: 'The response can be very large,' which warns about payload size. However, it doesn't disclose pagination behavior or data source (e.g., real-time vs delayed), which could affect invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. First sentence states the purpose, the second provides usage guidance. Immediately front-loaded with the action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters and a rich output schema, the description covers the essential purpose and filtering guidance. It doesn't explain pagination, but the schema includes page_token descriptions. It lacks explicit comparison to sibling tools, but the content (trade, quote, IV, greeks) helps differentiate. Overall adequate for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by highlighting the most relevant filter parameters (type, strike_price_gte/lte, expiration_date, limit) and their purpose in narrowing results. This gives the agent actionable guidance beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieves option chain data for an underlying symbol' with a specific verb and resource, listing included data (trade, quote, IV, greeks). This distinguishes it from sibling tools like get_option_contract or get_option_snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It does not explicitly name alternative tools, but it provides clear context for when filtering is needed ('The response can be very large. Use the type... parameters to narrow results'). This implies usage for broad chain queries but lacks explicit exclusion or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_contractA

Retrieves a single option contract by symbol or contract ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_or_idYessymbol or contract ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Retrieves' implies a read-only operation, but the description does not disclose any behavioral traits such as potential error responses, required permissions, or differences from similar snapshot/quote tools. It adds minimal 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the verb and resource. It contains no redundant words and is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple single-parameter retrieval tool, especially given the presence of an output schema. However, it lacks guidance on how to format symbols or distinguish this tool from the many similar option-related siblings (e.g., 'get_option_snapshot', 'get_option_latest_quote'). The completeness is sufficient but not enriched.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers 100% of the single parameter ('symbol_or_id' with 'symbol or contract ID'). The tool description merely repeats this information and adds no extra semantic detail, such as the expected format of a symbol or how to use a contract ID. Baseline 3 applies because schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieves'), the resource ('option contract'), and the method ('by symbol or contract ID'). It explicitly says 'single', which distinguishes it from the plural sibling 'get_option_contracts' and other option-related tools like 'get_option_chain'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for retrieving a single option contract when you have a symbol or contract ID. However, it does not explicitly mention alternatives or when not to use it (e.g., for batch lookups use 'get_option_contracts'). It provides clear context but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_contractsC

Retrieves option contracts for underlying symbol(s).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoThe type of the option contract.
limitNoThe number of contracts to limit per page (default=100, max=10000).
ppindNoThe ppind(Penny Program Indicator) field indicates whether an option contract is eligible for penny price increments, with `true` meaning it is part of the Penny Program and `false` meaning it is not.
styleNoThe style of the option contract.
statusNoFilter contracts by status (active/inactive). By default only active contracts are returned.
page_tokenNoUsed for pagination, this token retrieves the next page of results. It is obtained from the response of the preceding page when additional pages are available.
root_symbolNoFilter contracts by the root symbol.
expiration_dateNoFilter contracts by the exact expiration date (format: YYYY-MM-DD).
strike_price_gteNoFilter contracts with strike price greater than or equal to the specified value.
strike_price_lteNoFilter contracts with strike price less than or equal to the specified value.
show_deliverablesNoInclude deliverables array in the response.
underlying_symbolsNoFilter contracts by one or more underlying symbols.
expiration_date_gteNoFilter contracts with expiration date greater than or equal to the specified date.
expiration_date_lteNoFilter contracts with expiration date less than or equal to the specified date. By default this is set to the next weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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 only implies a read-only operation via 'Retrieves' but omits important behaviors like pagination, default filters (e.g., active contracts only), or any side effects. This is insufficient for a tool with such a broad filter set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no extraneous content, making it concise and front-loaded. However, its brevity leaves out valuable context, so it loses a point for being too sparse relative to the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a rich schema and output schema, the description is minimal and does not address the tool's complexity, such as whether it supports pagination, how it relates to get_option_contract, or what kind of data is returned. This makes the description incomplete for an agent to confidently select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% parameter description coverage, so the schema itself documents all parameters. The description adds no additional meaning beyond the resource type, earning the baseline score of 3 as per the rubric.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves option contracts for underlying symbols, using a specific verb and resource. However, it does not distinguish itself from sibling tools like get_option_contract (singular) or get_option_chain, which could be confused for similar functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description merely states what it does, without mentioning suitable scenarios or exclusions, leaving the agent to infer usage from the tool name and parameters alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_exchange_codesA

Retrieves the mapping of exchange codes to exchange names for option market data. Useful for interpreting exchange fields returned by other option data tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does indicate a read-only operation via 'Retrieves', but it doesn't disclose any additional behavioral traits like idempotency, safety, or whether it's a static map vs. dynamic query. For a simple lookup tool, this is adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action and purpose. Every word earns its place. It's efficient and clear without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, output schema present), the description is complete. It explains what the tool does and why it's useful, and the output schema covers return values. The context signals confirm no hidden complexity, so nothing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema confirms no required inputs. With 0 params, the baseline is 4. The description doesn't need to explain parameters, and the mapping functionality is self-explanatory. The baseline for 0 parameters is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Retrieves the mapping of exchange codes to exchange names for option market data.' This is a specific verb and resource, and the 'useful for interpreting exchange fields' distinguishes it from sibling option data tools. It's a reference lookup, not a data retrieval tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Useful for interpreting exchange fields returned by other option data tools.' This implies when to use it, but it doesn't explicitly state when not to use it or mention alternatives. It gives a strong contextual clue without formal exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_latest_quoteA

Retrieves and formats the latest quote for one or more option contracts including bid/ask prices, sizes, and exchange information.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. `opra` is the official OPRA feed, `indicative` is a free indicative feed where trades are delayed and quotes are modified. Default: `opra` if the user has a subscription, otherwise `indicative`. opra
symbolsYesA comma-separated list of contract symbols with a limit of 100.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden for behavioral disclosure. It states the action and output content but doesn't delve into nuances like latency, indicative feed modifications, or formatting specifics. The schema's feed description covers some of this, but the description itself adds limited behavioral context beyond the basic retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately states the purpose and key output attributes. It is front-loaded with the action and resource, with no filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, output schema provided), the description offers a clear overview. It doesn't explicitly mention multi-symbol support or the feed parameter, but those are fully covered in the schema. The combination of the description and structured data is sufficient for a basic read tool, though a bit more context about output format could be added.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, so the baseline is 3. The description doesn't add any parameter-level detail beyond what the schema already provides, so it neither elevates nor reduces the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb phrase 'Retrieves and formats' and clearly identifies the resource as 'latest quote for one or more option contracts.' It also lists concrete content (bid/ask prices, sizes, exchange information), which distinguishes it from sibling tools like get_option_latest_trade or get_stock_latest_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the feed selection trade-offs or suggest scenarios where this tool is preferred. Although the schema's feed description gives some context, the main description lacks any usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_latest_tradeB

Retrieves the latest trade for one or more option contracts.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. `opra` is the official OPRA feed, `indicative` is a free indicative feed where trades are delayed and quotes are modified. Default: `opra` if the user has a subscription, otherwise `indicative`. opra
symbolsYesA comma-separated list of contract symbols with a limit of 100.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the obvious action and does not mention potential delays, feed differences, data source implications, or any limitations. Without this, the agent cannot anticipate the behavior beyond the basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence communicates the core functionality without any unnecessary words. The structure is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the presence of a complete output schema, and full schema descriptions for parameters, the description is adequate. It could be enhanced with usage guidance, but the essential information for invoking the tool is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (feed, symbols) have descriptive schema text. The tool description itself adds no additional parameter meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (retrieves), the resource (latest trade), and the scope (one or more option contracts). It distinguishes itself from sibling tools like get_option_latest_quote (quotes vs. trades) and get_option_trades (historical vs. latest).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as get_option_latest_quote or get_option_trades. It does not mention scenarios, prerequisites, or exclusions. The usage context is implied by the name but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_snapshotA

Retrieves comprehensive snapshots of option contracts including latest trade, quote, implied volatility, and Greeks.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. `opra` is the official OPRA feed, `indicative` is a free indicative feed where trades are delayed and quotes are modified. Default: `opra` if the user has a subscription, otherwise `indicative`. opra
limitNoNumber of maximum snapshots to return in a response. The limit applies to the total number of data points, not the number per symbol! Use `next_page_token` to fetch the next set of responses.
symbolsYesA comma-separated list of contract symbols with a limit of 100.
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.
updated_sinceNoFilter to snapshots that were updated since this timestamp, meaning that the timestamp of the trade or the quote is greater than or equal to this value. Format: RFC-3339 or YYYY-MM-DD. If missing, all values are returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavior. It only lists content fields and says 'comprehensive', but fails to disclose important behaviors such as pagination (limit/page_token), feed distinctions (opra vs indicative), or that snapshots may reflect trade/quote timestamps. This is a significant gap for a tool with such parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the primary action ('Retrieves comprehensive snapshots') and ends with the key inclusions. No wasted words; every component adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and output schema are rich, so not explaining return format is acceptable. However, the description lacks behavioral context (pagination, feed selection) and usage guidance, which are critical for an agent to select and invoke this tool correctly among many option-related siblings. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for all five parameters, including meanings, defaults, and constraints. The tool description adds no parameter-specific semantics beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieves') and resource ('comprehensive snapshots of option contracts'), and explicitly lists the included data fields (latest trade, quote, implied volatility, Greeks). This clearly distinguishes it from sibling tools like get_option_latest_quote or get_option_chain, which target narrower or different data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'comprehensive snapshots' implies this is for broad option data rather than a single latest quote or trade, but no explicit alternatives are mentioned. There is no direct 'when to use vs. when not to use' guidance, leaving the agent to infer from the word 'comprehensive'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_option_tradesA

Retrieves historical trade data for one or more option contracts.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe inclusive end of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the current time if the user has a real-time access for the feed, otherwise 15 minutes before the current time.
sortNoSort data in ascending or descending order.asc
limitNoThe maximum number of data points to return in the response page. The API may return less, even if there are more available data points in the requested interval. Always check the `next_page_token` for more pages. The limit applies to the total number of data points, not per symbol!
startNoThe inclusive start of the interval. Format: RFC-3339 or YYYY-MM-DD. Default: the beginning of the current day, but at least 15 minutes ago if the user doesn't have real-time access for the feed.
symbolsYesA comma-separated list of contract symbols with a limit of 100.
page_tokenNoThe pagination token from which to continue. The value to pass here is returned in specific requests when more data is available, usually because of a response result limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. It does not disclose pagination behavior, limits, real-time access requirements, or any side effects. The single-sentence description adds no behavioral context beyond the tool's name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise, front-loaded sentence with zero waste. It efficiently communicates the core purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has six parameters and an output schema, but no annotations. The description is too sparse to cover important behavioral nuances like pagination and symbol limits, though the schema fills many gaps. It is adequate but leaves room for improvement in guiding an agent's interaction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any detail beyond what the schema already provides for each parameter, such as 'limit' applying across symbols or pagination via 'page_token'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'retrieves', the resource 'historical trade data', and the target 'one or more option contracts', clearly distinguishing it from sibling tools like get_option_latest_trade (latest single trade) and get_option_bars (bars data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'historical' gives clear context for when to use this tool (for past trade data), as opposed to real-time or latest-trade tools. No explicit exclusions are stated, but the scope is evident from the description and sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_order_by_client_idA

Retrieves a single order specified by the client order ID. Note: if the order was replaced, this returns the original order (status "replaced") with a replaced_by field pointing to the new order ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
client_order_idYesThe client-assigned order ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses a crucial non-obvious behavior: replaced orders return the original order with a replaced_by field. This adds significant transparency beyond the basic retrieval statement, though it does not cover error handling or authentication.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose and followed by a relevant caveat. There is no fluff or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema present), the description covers the essential purpose and a key edge case. Output schema handles return format details, so the description is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the client_order_id parameter. The description adds no additional parameter details beyond what's in the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (retrieves) and resource (a single order) with a specific lookup criterion (client order ID). It distinguishes from sibling tools like get_order_by_id by emphasizing the client-assigned ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool by specifying 'client order ID', which contrasts with get_order_by_id for internal IDs. However, it does not explicitly state alternatives or exclusion conditions, though the context makes the usage reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_order_by_idA

Retrieves a single order by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nestedNoIf true, the result will roll up multi-leg orders under the legs field of primary order.
order_idYesorder id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations provided, so the description carries the full burden. The verb 'retrieves' indicates a read-only operation, which is a clear behavioral signal. While it doesn't mention potential error conditions or response details, those are adequately covered by the output schema, and for a simple retrieval this is satisfactory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, front-loading the core purpose of retrieving an order by ID. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-order retrieval, the description combined with the input schema (which covers parameters fully) and the output schema (which defines return values) is complete enough. No critical information is missing for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents both parameters with 100% coverage, including a clear description for the nested parameter. The description adds no new meaning beyond confirming the lookup is by order_id, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'retrieves' and identifies the resource as 'a single order', with the scope 'by its ID'. This clearly distinguishes it from sibling tools like get_orders (plural) and get_order_by_client_id, which use a different lookup key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when the caller has an order ID, but it does not explicitly state when to use it instead of alternatives like get_order_by_client_id or get_orders. No exclusions or alternative suggestions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ordersC

Retrieves and formats orders with the specified filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoFilters down to orders that have a matching side field set.
afterNoThe response will include only ones submitted after this timestamp (exclusive.)
limitNoThe maximum number of orders in response. Defaults to 50 and max is 500.
untilNoThe response will include only ones submitted until this timestamp (exclusive.)
nestedNoIf true, the result will roll up multi-leg orders under the legs field of primary order.
statusNoOrder status to be queried. open, closed or all. Defaults to open.
symbolsNoA comma-separated list of symbols to filter by (ex. "AAPL,TSLA,MSFT"). A currency pair is required for crypto orders (ex. "BTCUSD,BCHUSD,LTCUSD,ETCUSD").
directionNoThe chronological order of response based on the submission time. asc or desc. Defaults to desc.
asset_classNoA comma-separated list of asset classes, the response will include only orders in the specified asset classes. By specifying `us_option` as the class, you can query option orders by underlying symbol using the symbols parameter.
after_order_idNoReturn orders submitted after the order with this ID (exclusive). Mutually exclusive with `before_order_id`. Do not combine with `after`/`until`.
before_order_idNoReturn orders submitted before the order with this ID (exclusive). Mutually exclusive with `after_order_id`. Do not combine with `after`/`until`.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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 that it retrieves and formats orders, leaving out important behaviors such as default status (open), default limit (50), pagination, ordering (desc), and the effect of the 'nested' parameter. The schema captures these details, but the description adds no extra behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. It efficiently communicates the core action and resource, earning top marks for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the tool is complex with 11 parameters, but the description is too sparse. It does not mention that this is a list endpoint returning an array of orders, nor any high-level behaviors like default filtering or the distinction from single-order tools. The description leaves significant context unstated, making it incomplete for agent guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all 11 parameters. The description merely mentions 'specified filters' without elaborating on any parameter meanings, adding no value beyond the schema. Per the calibration, a baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieves') and resource ('orders'), indicating a listing operation. The phrase 'with the specified filters' clarifies that it supports filtering, but it does not explicitly distinguish it from sibling order-related tools like get_order_by_id or get_order_by_client_id. The plural 'orders' and the presence of filter parameters make the purpose clear enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention that get_order_by_id or get_order_by_client_id should be used for fetching individual orders, nor any exclusions for combining filters. The description implies a filtering use case but offers no explicit usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolio_historyC

Retrieves account portfolio history (equity and P/L) over a requested time window.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoThe timestamp the data is returned up to in RFC3339 format (including timezone specification). Defaults to the current time. If provided, the `end` value is always normalized to the `America/New_York` timezone and adjusted to the nearest `timeframe` interval, e.g. seconds are always truncated and the time is rounded backwards to the nearest interval of `1Min`, `5Min`, `15Min`, or `1H`. When `intraday_reporting` is either `market_hours` or `extended_hours`, the `end` value is adjusted to not occur after session close on the specified day. For example if the `intraday_reporting` is `extended_hours`, and the timestamp specified is `2023-10-19T21:33:00-04:00`, `end` is adjusted to `2023-10-19T20:00:00-04:00`. `end` may be combined with `start` or `period`. Providing all of `start`, `end`, and `period` is invalid.
startNoThe timestamp the data is returned starting from in RFC3339 format (including timezone specification). Defaults to `end` minus `period` If provided, the `start` value is always normalized to the `America/New_York` timezone and adjusted to the nearest `timeframe` interval, e.g. seconds are always truncated and the time is rounded backwards to the nearest interval of `1Min`, `5Min`, `15Min`, or `1H`. If `timeframe=1D` and `start` is not a valid trading date, find the next available trading date. For example, if `start` occurs on Saturday or Sunday after converting to the America/New_York timezone, `start` is adjusted to the first weekday that is not a market holiday (e.g. Monday). If `timeframe` is less than `1D` and `intraday_reporting` is not `continuous`, `start` always reflects the beginning of a market session. If `start` is between midnight and the end (inclusive) of an active trading day, `start` is set to the beginning of the session on the specified day. Otherwise, if `start` occurs outside of the market session, the next available market date is used. For example, when `intraday_reporting=market_hours` and `start=2023-10-19T23:59:59-04:00`, the provided `start` date occurs outside of the regular market session. The effective `start` timestamp is adjusted to the beginning of the next session: `2023-10-20T09:30:00-04:00` `start` may be be combined with one of `end` or `period`. Providing all of `start`, `end`, and `period` is invalid.
periodNoThe duration of the data in `number` + `unit` format, such as 1D, where `unit` can be D for day, W for week, M for month and A for year. Defaults to 1M. Only two of `start`, `end` and `period` can be specified at the same time. For intraday timeframes (\<1D) only 30 days or less can be queried, for 1D resolutions there is no such limit, data is available since the creation of the account.
pnl_resetNo`pnl_reset` defines how we are calculating the baseline values for Profit And Loss (pnl) for queries with `timeframe` less than 1D (intraday queries). The default behavior for intraday queries is that we reset the pnl value to the previous day's closing equity for each **trading** day. In case of crypto (given its continuous nature), this might not be desired: specifying "no_reset" disables this behavior and all pnl values returned will be relative to the closing equity of the previous trading day. For 1D resolution all PnL values are calculated relative to the `base_value`, we are not resetting the base value. per_day
timeframeNoThe resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. For queries with longer than 30 days of `period`, the system only accepts 1D as `timeframe`.
cashflow_typesNoThe cashflow activities to include in the report. One of 'ALL', 'NONE', or a comma-separated list of activity types.
extended_hoursNo**deprecated**: Users are strongly advised to **rely on the `intraday_reporting` query parameter** for better control of the reporting range. If true, include extended hours in the result. This is effective only for timeframe less than 1D.
intraday_reportingNoFor intraday resolutions (<1D) this specifies which timestamps to return data points for: Allowed values are: - **market_hours** Only timestamps for the core equity trading hours are returned (usually 9:30am to 4:00pm, trading days only) - **extended_hours** Returns timestamps for the whole session including extended hours (usually 4:00am to 8:00pm, trading days only) - **continuous** Returns price data points 24/7 (for off-session times too). To calculate the equity values we are using the following prices: Between 4:00am and 10:00pm on trading days the valuation will be calculated based on the last trade (extended hours and normal hours respectively). After 10:00pm, until the next session open the equities will be valued at their official closing price on the primary exchange. market_hours

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for disclosing behavioral traits. It only mentions 'requested time window' which is already implicit in the schema. It omits critical behaviors like timezone normalization, default timeframe selection, PnL reset logic, and intraday reporting modes, all of which are described in the schema but not in the description itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is clear and front-loaded with the key action and resource. However, it is under-specified, which slightly reduces the score from a perfect 5, but conciseness itself is strong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, output schema, detailed behavioral rules), the description is too brief to be considered complete. It doesn't mention the customizable timeframe, the intraday reporting choices, or the PnL reset behavior, which are central to using the tool effectively. The schema compensates, but the description itself is inadequate for a high-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level semantics beyond the generic 'time window', while the schema thoroughly documents all eight parameters. The description provides no additional value for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('account portfolio history') and the action ('Retrieves'), with specific details about equity and P/L over a time window. It is distinct from sibling tools like get_account_info or get_account_activities because it focuses on historical time-series data, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It only states the basic function, leaving the agent to infer appropriate usage from the schema and context. No exclusions or alternative tool mentions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_barsGet Stock BarsA
Read-only

Retrieve historical price bars (OHLCV) for one or more stocks.

When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback.

Args: symbols: Comma-separated tickers (e.g. "AAPL" or "AAPL,MSFT,GOOG"). timeframe: Bar aggregation period — "1Min", "5Min", "15Min", "30Min", "1Hour", "1Day", "1Week", or "1Month". start: Inclusive start time (RFC 3339). Omit to use relative lookback. end: Inclusive end time (RFC 3339). Omit for current time. days: Days to look back when start is omitted (default 5). hours: Additional hours in the lookback (default 0). minutes: Additional minutes in the lookback (default 0). limit: Max total data points returned across all symbols, 1–10000 (default 1000). adjustment: Price adjustment — "raw", "split", "dividend", "spin-off", or "all". Comma-separated combos allowed (e.g. "split,dividend"). Default "raw". feed: Data feed — "sip" (all US exchanges, default, paid), "iex" (IEX only, free tier), "otc", or "boats". currency: Price currency (ISO 4217, e.g. "USD"). Default USD. sort: Timestamp sort order — "asc" (default) or "desc". asof: As-of date (YYYY-MM-DD) for point-in-time symbol mapping. Useful for backtesting with historical ticker changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
asofNo
daysNo
feedNo
sortNoasc
hoursNo
limitNo
startNo
minutesNo
symbolsYes
currencyNo
timeframeNo1Day
adjustmentNoraw

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds valuable behavioral context beyond that: automatic lookback computation, feed options with paid/free distinctions (sip vs iex), limit semantics across symbols, and asof for point-in-time mapping. This is substantive, though it doesn't cover error cases or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a single-sentence purpose, then a well-structured Args block where each parameter gets one concise, informative line. Despite covering 13 parameters, it remains readable and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 13 parameters, an output schema, and annotations, the description covers all parameter behaviors, defaults, and special cases (asof for backtesting, feed tiers, adjustment options). No significant gaps are apparent; return values are already documented by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, and it delivers thoroughly. Every one of the 13 parameters is listed with a clear definition, default value, and often explicit examples (e.g., 'AAPL,MSFT,GOOG' for symbols, allowed adjustment combos, feed options). This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb 'Retrieve' plus a clear resource ('historical price bars (OHLCV) for one or more stocks'), making the tool's core function immediately obvious. It also distinguishes this tool from siblings like get_crypto_bars and get_option_bars by explicitly limiting it to stocks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful usage context, such as how start is automatically computed when omitted and how limit caps data across all symbols. However, it doesn't explicitly name alternatives or state when not to use this tool relative to siblings like get_stock_quotes or get_crypto_bars, so it stops 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.

get_stock_latest_barB

Get the latest minute bar for one or more stocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. - `sip`: all US exchanges - `iex`: Investors EXchange - `delayed_sip`: SIP with a 15 minute delay - `boats`: Blue Ocean, overnight US trading data - `overnight`: derived overnight US trading data - `otc`: over-the-counter exchanges Default: `sip` if the user has the unlimited subscription, otherwise `iex`.
symbolsYesA comma-separated list of stock symbols.
currencyNoThe currency of all prices in ISO 4217 format. Default: USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavior. However, the description only restates the tool's basic function and adds no behavioral context such as data delay, feed selection, default behavior, or limitations. It does not even mention that multiple symbols are supported beyond the input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is clear and front-loaded. Every word adds meaning, and there is no wasted text or unnecessary detail. It is appropriately concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the existence of an output schema, the description is partially complete. It clearly identifies the resource and action, but it lacks guidance on usage context versus sibling tools and does not disclose behavioral details like feed defaults, despite those being in the schema. The presence of the output schema reduces the need to explain return values, so a score of 3 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage with descriptions for feed, symbols, and currency, so the description adds little value here. It does reinforce that multiple symbols can be supplied ('one or more stocks'), which is marginally helpful, but this is already conveyed by the schema's 'comma-separated list' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get the latest minute bar for one or more stocks.' It clearly distinguishes from sibling tools like get_stock_bars, get_stock_quotes, and get_stock_trades by focusing on the latest minute bar rather than historical bars or other data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It does not mention, for example, that get_stock_bars should be used for historical bar data, or that get_stock_latest_quote/trade are for quotes/trades. The usage context is only implied by the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_latest_quoteC

Retrieves and formats the latest quote for one or more stocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. - `sip`: all US exchanges - `iex`: Investors EXchange - `delayed_sip`: SIP with a 15 minute delay - `boats`: Blue Ocean, overnight US trading data - `overnight`: derived overnight US trading data - `otc`: over-the-counter exchanges Default: `sip` if the user has the unlimited subscription, otherwise `iex`.
symbolsYesA comma-separated list of stock symbols.
currencyNoThe currency of all prices in ISO 4217 format. Default: USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It only states retrieval and formatting, without disclosing data source behavior, default feeds, delay implications, or output formatting specifics. Minor credit is given for the word 'formats' hinting at output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundancy. It is concise and to the point, though it could include additional contextual guidance without becoming overly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and rich parameter descriptions cover return values and parameter details, reducing the need for the description to explain them. However, the description lacks usage guidance and behavioral context relative to sibling tools, making it merely adequate with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptive text, including enum values, defaults, and ISO currency details. The description adds no additional parameter semantics, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('retrieves and formats') and clearly identifies the resource ('latest quote for one or more stocks'). It distinguishes from historical or trade-focused siblings by focusing on 'latest quote', though it does not explicitly call out the alternative get_stock_quotes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus siblings like get_stock_quotes, get_stock_latest_trade, or get_option_latest_quote. There are no examples, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_latest_tradeB

Get the latest trade for one or more stocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. - `sip`: all US exchanges - `iex`: Investors EXchange - `delayed_sip`: SIP with a 15 minute delay - `boats`: Blue Ocean, overnight US trading data - `overnight`: derived overnight US trading data - `otc`: over-the-counter exchanges Default: `sip` if the user has the unlimited subscription, otherwise `iex`.
symbolsYesA comma-separated list of stock symbols.
currencyNoThe currency of all prices in ISO 4217 format. Default: USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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 states the action without any context. It does not mention feed options, response format, or latency, though some of these are captured in the input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words. It is front-loaded with the verb and resource, making it immediately clear what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool and the presence of an output schema and rich input schema, the description is minimally adequate. However, it lacks any mention of nuances like feed defaults or the fact that multiple symbols are supported, which could leave users to infer these from the schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage of all three parameters, including descriptions for each. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('latest trade'), and the scope ('one or more stocks'), making it easily distinguishable from historical trade tools. However, it does not explicitly differentiate itself from siblings like get_stock_trades or get_crypto_latest_trade, relying primarily on its name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_stock_quotes or get_stock_trades. The only hint is the word 'latest' in the name, which implies the tool is for current trades, but this is not explicitly stated in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_quotesGet Stock QuotesA
Read-only

Retrieve historical bid/ask quotes (level 1) for one or more stocks.

When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback.

Args: symbols: Comma-separated tickers (e.g. "AAPL" or "AAPL,MSFT"). start: Inclusive start time (RFC 3339). Omit to use relative lookback. end: Inclusive end time (RFC 3339). Omit for current time. days: Days to look back when start is omitted (default 0). hours: Additional hours in the lookback (default 0). minutes: Additional minutes in the lookback (default 20). limit: Max total data points returned across all symbols, 1–10000 (default 1000). feed: Data feed — "sip" (all US exchanges, default, paid), "iex" (free tier), "otc", or "boats". Paper/free accounts must set feed="iex" to avoid 403 errors. currency: Price currency (ISO 4217). Default USD. sort: Timestamp sort order — "asc" (default) or "desc". asof: As-of date (YYYY-MM-DD) for point-in-time symbol mapping.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
asofNo
daysNo
feedNo
sortNoasc
hoursNo
limitNo
startNo
minutesNo
symbolsYes
currencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds substantial behavioral context beyond that: automatic start computation from days/hours/minutes, inclusive time ranges, feed-specific constraints (including the 403 error warning), limit bounds, sort behavior, and asof point-in-time symbol mapping. This is rich and helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a precise purpose statement, followed by a concise explanation of the default time behavior, then a well-structured Args list. Every sentence adds value, and the length is justified by the 11 parameters it documents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 params, output schema present), the description is complete: it covers all parameters, default behaviors, error-prone feed selections, and point-in-time semantics. The output schema handles return-value documentation, so no further return detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description fully compensates by explaining every parameter in detail: symbols format, start/end semantics, lookback defaults, limit range, feed options, currency, sort order, and asof. This far exceeds what the schema alone provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence clearly states the tool retrieves historical bid/ask quotes (level 1) for one or more stocks, using a specific verb and resource. It distinguishes itself from sibling tools like get_stock_bars, get_stock_trades, and get_stock_latest_quote by specifying quote data and historical scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use this tool (historical level 1 quotes) and includes important usage guidance, such as automatic lookback when start is omitted and the requirement for paper/free accounts to set feed='iex' to avoid 403 errors. However, it does not explicitly name alternative sibling tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_snapshotA

Retrieves comprehensive snapshots of stock symbols including latest trade, quote, minute bar, daily bar, and previous daily bar.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoThe source feed of the data. - `sip`: all US exchanges - `iex`: Investors EXchange - `delayed_sip`: SIP with a 15 minute delay - `boats`: Blue Ocean, overnight US trading data - `overnight`: derived overnight US trading data - `otc`: over-the-counter exchanges Default: `sip` if the user has the unlimited subscription, otherwise `iex`.
symbolsYesA comma-separated list of stock symbols.
currencyNoThe currency of all prices in ISO 4217 format. Default: USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. It discloses the data contents but does not mention operational behaviors such as rate limits, authentication, or feed selection behavior (which is left to the schema). The description does provide a clear picture of what data is returned, but lacks behavioral depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose and lists the data components without any filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 params, one enum) and the presence of an output schema, the description adequately covers what the tool returns. It could further explain that it consolidates multiple data types in one call, positioning it against individual sibling endpoints, but it is still reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (feed, symbols, currency) already having detailed descriptions including enum values and defaults. The tool description adds no extra parameter-level meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieves'), the resource ('snapshots of stock symbols'), and enumerates the included data components (latest trade, quote, minute bar, daily bar, previous daily bar). This distinguishes it from sibling tools like get_stock_bars, get_stock_quotes, and get_stock_trades.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the comprehensive snapshot option, suggesting it consolidates data that individual sibling tools provide. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_tradesGet Stock TradesA
Read-only

Retrieve historical trade data for one or more stocks.

When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback.

Args: symbols: Comma-separated tickers (e.g. "AAPL" or "AAPL,MSFT"). start: Inclusive start time (RFC 3339). Omit to use relative lookback. end: Inclusive end time (RFC 3339). Omit for current time. days: Days to look back when start is omitted (default 0). hours: Additional hours in the lookback (default 0). minutes: Additional minutes in the lookback (default 20). limit: Max total data points returned across all symbols, 1–10000 (default 1000). feed: Data feed — "sip" (all US exchanges, default, paid), "iex" (free tier), "otc", or "boats". Paper/free accounts must set feed="iex" to avoid 403 errors. currency: Price currency (ISO 4217). Default USD. sort: Timestamp sort order — "asc" (default) or "desc". asof: As-of date (YYYY-MM-DD) for point-in-time symbol mapping.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
asofNo
daysNo
feedNo
sortNoasc
hoursNo
limitNo
startNo
minutesNo
symbolsYes
currencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by explaining the automatic start-time computation from days/hours/minutes, the feed-specific behavior (e.g., paper/free accounts requiring 'iex' to avoid 403 errors), and the asof parameter for point-in-time symbol mapping. This adds substantial 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized for 11 parameters, clearly structured with an intro sentence and an Args list. Each parameter line is concise and informative, with no irrelevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high parameter count and absent schema descriptions, the description provides complete context for all inputs, including default behavior and edge cases. The presence of an output schema means return values need not be described, making this description sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% parameter descriptions, so the description carries the full burden. It explains every parameter comprehensively, including defaults, formats, and special constraints for feed and asof. This fully compensates for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve historical trade data for one or more stocks' with a specific verb and resource. It distinguishes itself from siblings like get_stock_bars, get_stock_quotes, and get_stock_latest_trade by specifying 'trade data' and 'historical'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (for historical trade data) but does not explicitly name alternatives or state when not to use it. It provides context about optional parameters and feed restrictions, but lacks direct comparison with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watchlist_by_idA

Get a specific watchlist by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
watchlist_idYeswatchlist id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the action without disclosing error behavior, authentication needs, or what happens if the ID is not found. This is a minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that front-loads the action and resource. Every word earns its place with no redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter retrieval with an output schema present, the description is sufficient. It lacks explicit error-case information, but the output schema covers the return structure, making the overall context adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter watchlist_id. The description adds no additional meaning beyond restating 'by its ID', so it does not exceed the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'watchlist', and the scope 'specific by ID'. This distinguishes it from get_watchlists, which lists all watchlists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives are given. However, the name and description imply it is for retrieving a single watchlist when its ID is known, so usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watchlistsA

Get all watchlists for the account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden for behavioral disclosure. It indicates a read operation with 'Get', but does not describe any potential side effects, permissions, or return details beyond the action. The simple getter nature is clear, but additional context is sparse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence of seven words, front-loading the action and resource. Every word adds value and there is no unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema present, the description is nearly complete for a simple list operation. It clearly identifies what is returned (all watchlists for the account), though it omits potential nuances like ordering or filters, which are mostly moot given the absence of parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is complete and there is nothing for the description to clarify. Baseline score of 4 applies because no parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Get all watchlists for the account.' It distinguishes from sibling tools like get_watchlist_by_id by explicitly saying 'all', making its scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when all watchlists are needed, but it does not explicitly compare with alternatives like get_watchlist_by_id or mention any exclusions. The guidance is minimal, relying on the tool name and general context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_crypto_orderPlace Crypto OrderA
Destructive

Place a cryptocurrency order.

Args: symbol: Crypto pair (e.g., "BTC/USD", "ETH/USD"). side: "buy" or "sell". qty: Number of coins/tokens. Mutually exclusive with notional. notional: Dollar amount to trade. Mutually exclusive with qty. Only valid for market orders. type: "market", "limit", or "stop_limit". time_in_force: "gtc" (default) or "ioc". Crypto does not support "day" or "fok". limit_price: Required for limit and stop_limit orders. stop_price: Required for stop_limit orders. client_order_id: Unique idempotency key. If the request times out, you can safely retry with the same value — the API will reject duplicates. Recommended for every order.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNo
sideYes
typeNomarket
symbolYes
notionalNo
stop_priceNo
limit_priceNo
time_in_forceNogtc
client_order_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations (destructiveHint, openWorldHint) by explaining idempotency via client_order_id, mutual exclusivity of qty and notional, validation rules for order types, and time-in-force restrictions. These are critical behavioral nuances not disclosed elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear purpose sentence, followed by a structured list of parameter explanations. Every line adds needed detail; there is no fluff. Despite its length, it is appropriately sized for 9 parameters and reads efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (order types, TIF rules, exclusivity constraints), the description is fully complete. It covers all parameters, their interrelationships, and idempotency behavior. An output schema exists, so return value documentation is not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry full weight for parameters. It comprehensively explains every parameter: symbol format, side values, qty/notional mutual exclusivity, type-specific requirements (e.g., limit_price for limit/stop_limit), time-in-force options, and the role of client_order_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Place a cryptocurrency order,' which clearly states the verb and resource. The specificity to cryptocurrency distinguishes it from sibling order tools like place_stock_order and place_option_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly indicates it is for cryptocurrency orders, implying use for crypto-only order placement, but it does not explicitly state when not to use it or name alternatives such as the stock/option order tools. The context is clear enough, but lacks explicit exclusions or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_option_orderPlace Option OrderA
Destructive

Place an options order (single-leg or multi-leg).

For single-leg orders, provide symbol, side, and qty. For multi-leg orders, provide qty, legs, and optionally order_class="mleg" (auto-inferred). Symbol and side on the parent are not needed for multi-leg.

Args: qty: Number of contracts. Required for both single-leg and multi-leg orders. For multi-leg, this is the strategy multiplier — each leg's ratio_qty is scaled by this value (e.g., qty="10" with ratio_qty="2" = 20 contracts for that leg). type: "market" or "limit". time_in_force: "day" only. Options do not support other values. symbol: OCC option symbol (e.g., "AAPL250321C00150000"). Required for single-leg. side: "buy" or "sell". Required for single-leg. position_intent: "buy_to_open", "buy_to_close", "sell_to_open", or "sell_to_close". Clarifies whether the trade opens or closes a position. Optional but recommended. limit_price: Required for limit orders. For multi-leg, this is the net debit/credit (positive = debit/cost, negative = credit/proceeds). client_order_id: Unique idempotency key. If the request times out, you can safely retry with the same value — the API will reject duplicates. Recommended for every order. order_class: Set to "mleg" for multi-leg orders. Automatically inferred when legs are provided. legs: List of leg dicts for multi-leg orders (max 4). Each leg requires "symbol" and "ratio_qty" (string). Optional per-leg fields: "side" ("buy" or "sell") and "position_intent".

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyYes
legsNo
sideNo
typeNomarket
symbolNo
limit_priceNo
order_classNo
time_in_forceNoday
client_order_idNo
position_intentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant behavioral context beyond annotations: client_order_id as idempotency key with retry safety, time_in_force restricted to 'day', multiplier logic for multi-leg, limit_price as net debit/credit, and max 4 legs. These details are not available in the annotations and are crucial for safe execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a purpose statement followed by an organized Args list. It is thorough but efficient, with no redundant sentences. Front-loads the main purpose and then systematically covers each parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex options order tool with 10 parameters and no parameter descriptions in the schema, the description provides complete information: required fields, optional fields, constraints, and examples. It covers both single-leg and multi-leg scenarios, making it fully actionable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description explains every parameter in detail, including formats (e.g., OCC symbol example, string values), required vs optional status, and specific behavior (e.g., qty as strategy multiplier). This fully compensates for the sparse schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Place an options order (single-leg or multi-leg)', clearly stating the verb and resource. It distinguishes from sibling order tools (stock/crypto) by specifying options, and further differentiates between single-leg and multi-leg orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage guidance for single-leg vs multi-leg orders, specifying required parameters for each. However, it does not explicitly mention alternative tools (e.g., place_stock_order, place_crypto_order) or state 'use this tool for options only', so it lacks explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_stock_orderPlace Stock OrderA
Destructive

Place a stock or ETF order.

Args: symbol: Stock ticker (e.g., "AAPL", "SPY"). side: "buy" or "sell". qty: Number of shares. Mutually exclusive with notional. notional: Dollar amount to trade. Mutually exclusive with qty. Only valid for market orders with time_in_force="day". type: Order type — "market", "limit", "stop", "stop_limit", "trailing_stop". time_in_force: "day", "gtc", "opg", "cls", "ioc", or "fok". limit_price: Required for limit and stop_limit orders. stop_price: Required for stop and stop_limit orders. trail_price: Dollar trail amount for trailing_stop orders. trail_percent: Percent trail for trailing_stop orders. extended_hours: Allow execution in pre-market, after-hours, and overnight sessions. Only works with type="limit" and time_in_force="day" or "gtc". client_order_id: Unique idempotency key. If the request times out, you can safely retry with the same value — the API will reject duplicates. Recommended for every order. order_class: "simple", "bracket", "oco", or "oto". Automatically set to "bracket" when take_profit or stop_loss params are provided. take_profit_limit_price: Limit price for bracket take-profit leg. stop_loss_stop_price: Stop price for bracket stop-loss leg. stop_loss_limit_price: Limit price for bracket stop-loss leg. advanced_instructions: Alpaca Elite Smart Router routing/algo payload. Stocks-only (the Elite docs explicitly note options and crypto reject the payload). Requires the account to be on Elite Smart Router routing; non-Elite accounts will see the field ignored or rejected by Alpaca's API. Shapes: DMA Gateway (direct routing): {"algorithm": "DMA", "destination": "NYSE"|"NASDAQ"|"ARCA", "display_qty": "<round lot, optional>"} Only with type="limit"|"market" and time_in_force="day"; not compatible with opg/cls/gtc or stop orders. VWAP (Volume-Weighted Average Price): {"algorithm": "VWAP", "start_time": "<RFC3339, optional>", "end_time": "<RFC3339, optional>", "max_percentage": "<0<x<1, optional>"} Does NOT participate in open/close auctions. TWAP (Time-Weighted Average Price): {"algorithm": "TWAP", "start_time": "<RFC3339, optional>", "end_time": "<RFC3339, optional>", "max_percentage": "<0<x<1, optional>"} Does NOT participate in open/close auctions. NOTE: PATCH /v2/orders/{id} already documents advanced_instructions in the OpenAPI spec (PatchOrderRequest), and replace_order_by_id exposes it through auto-generation — this patch only addresses the POST-side asymmetry.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNo
sideYes
typeNomarket
symbolYes
notionalNo
stop_priceNo
limit_priceNo
order_classNo
trail_priceNo
time_in_forceNoday
trail_percentNo
extended_hoursNo
client_order_idNo
stop_loss_stop_priceNo
advanced_instructionsNo
stop_loss_limit_priceNo
take_profit_limit_priceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by disclosing idempotency behavior (client_order_id allows safe retry), account prerequisites (Elite routing requirement for advanced_instructions), and execution constraints (VWAP/TWAP not participating in auctions). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-structured with an 'Args' block. Every sentence contains specific constraints. The advanced_instructions section is verbose but useful, so this is conciseness earned through complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter order tool with no schema descriptions, the description covers all parameters, constraints, and behavioral caveats. The presence of an output schema means return values don't need explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates fully by explaining all 17 parameters, mutual exclusions (qty vs notional), and conditional requirements (limit_price for limit orders). This is exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Place a stock or ETF order,' using a specific verb and resource. This clearly distinguishes it from sibling tools like place_crypto_order and place_option_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The title and description explicitly scope this tool to stock/ETF orders, providing clear usage context. It doesn't name alternatives explicitly, but the scope itself separates it from crypto/option order tools, so the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_asset_from_watchlist_by_idA

Remove an asset by symbol from a specific watchlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYessymbol name to remove from the watchlist content
watchlist_idYesWatchlist ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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 of behavioral disclosure. It only states the removal action without revealing side effects such as whether the removal is permanent or what happens if the asset is not found. This lack of behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence with no wasted words. It front-loads the action and object while omitting unnecessary details, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with 2 well-documented parameters and an output schema, so the description does not need to explain return values. However, it lacks context about the effect of removal (e.g., permanence) and does not distinguish itself from deleting an entire watchlist. The description is minimally adequate but not fully complete for a mutation operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions for symbol and watchlist_id. The description adds no extra meaning beyond 'by symbol' and 'specific watchlist', which aligns with the schema but does not enhance understanding. Baseline 3 is appropriate when the schema fully documents parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Remove an asset by symbol from a specific watchlist' clearly identifies the action (remove), the resource (asset from watchlist), and the required identifiers (symbol, watchlist). This distinguishes it from sibling tools like add_asset_to_watchlist_by_id and delete_watchlist_by_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through its clear action, but it does not explicitly state when to prefer this tool over alternatives or provide exclusions. No mention is made of when not to use it (e.g., for removing an entire watchlist) or any prerequisites like requiring an existing watchlist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace_order_by_idB

Replaces an existing open order with updated parameters. At least one optional field must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNonumber of shares to trade. You can only patch full shares for now. Qty of equity fractional orders are not allowed to change. Non-IPO notional orders cannot be replaced at all - no fields (qty, limit_price, stop_price, etc.) can be modified; cancel and resubmit instead.
trailNothe new value of the trail_price or trail_percent value (works only for type="trailing_stop")
notionalNoNew notional (dollar amount) for the order. Only valid for IPO indications of interest (`asset_class: "ipo"`); will be rejected for any other asset class. Mutually exclusive with `qty` on the same replace request.
order_idYesorder id
stop_priceNorequired if original order type is limit or stop_limit
limit_priceNoRequired if original order's `type` field was `limit` or `stop_limit`. In case of `mleg`, the limit_price parameter is expressed with the following notation: - A positive value indicates a debit, representing a cost or payment to be made. - A negative value signifies a credit, reflecting an amount to be received.
time_in_forceNoThe Time-In-Force values supported by Alpaca vary based on the order's security type. Here is a breakdown of the supported TIFs for each specific security type: - Equity trading: day, gtc, opg, cls, ioc, fok. - Options trading: day. - Crypto trading: gtc, ioc. Below are the descriptions of each TIF: - day: A day order is eligible for execution only on the day it is live. By default, the order is only valid during Regular Trading Hours (9:30am - 4:00pm ET). If unfilled after the closing auction, it is automatically canceled. If submitted after the close, it is queued and submitted the following trading day. However, if marked as eligible for extended hours, the order can also execute during supported extended hours. - gtc: The order is good until canceled. Non-marketable GTC limit orders are subject to price adjustments to offset corporate actions affecting the issue. We do not currently support Do Not Reduce (DNR) orders to opt out of such price adjustments. - opg: Use this TIF with a market/limit order type to submit "market on open" (MOO) and "limit on open" (LOO) orders. This order is eligible to execute only in the market opening auction. Any unfilled orders after the open will be cancelled. OPG orders submitted after 9:28am but before 7:00pm ET will be rejected. OPG orders submitted after 7:00pm will be queued and routed to the following day's opening auction. On open/on close orders are routed to the primary exchange. Such orders do not necessarily execute exactly at 9:30am / 4:00pm ET but execute per the exchange's auction rules. - cls: Use this TIF with a market/limit order type to submit "market on close" (MOC) and "limit on close" (LOC) orders. This order is eligible to execute only in the market closing auction. Any unfilled orders after the close will be cancelled. CLS orders submitted after 3:50pm but before 7:00pm ET will be rejected. CLS orders submitted after 7:00pm will be queued and routed to the following day's closing auction. Only available with API v2. - ioc: An Immediate Or Cancel (IOC) order requires all or part of the order to be executed immediately. Any unfilled portion of the order is canceled. Only available with API v2. Most market makers who receive IOC orders will attempt to fill the order on a principal basis only, and cancel any unfilled balance. On occasion, this can result in the entire order being cancelled if the market maker does not have any existing inventory of the security in question. - fok: A Fill or Kill (FOK) order is only executed if the entire order quantity can be filled, otherwise the order is canceled. Only available with API v2.
client_order_idNoA unique identifier for the new order. Automatically generated if not sent. (<= 128 characters)
advanced_instructionsNoAdvanced instructions for Elite Smart Router: https://docs.alpaca.markets/docs/alpaca-elite-smart-router

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It states the action ('Replaces') and a constraint, but does not disclose side effects (e.g., whether the original order is canceled, permissions required, or error conditions). The rich parameter descriptions in the schema carry behavioral details, but the tool description itself is insufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is two short sentences, no filler, and front-loads the core action. This is efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, nested objects, and a complex domain, the description is minimal. It identifies the core purpose and a validation rule, but doesn't contextualize the tool's place among order management operations or surface high-level restrictions (like the non-IPO notional exception) that are only buried in parameter descriptions. With such a rich schema, this is passable but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for all 9 parameters, including detailed constraints for qty, notional, and limit_price. The description adds only the general rule that at least one optional field must be provided, which is useful but not parameter-specific. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Replaces') with a clear resource ('existing open order') and scope ('with updated parameters'). It distinguishes from sibling tools like place_stock_order (create) and cancel_order_by_id (cancel), though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (existing open order) and a validation rule (at least one optional field), but it does not explicitly contrast with alternatives such as cancel-and-resubmit or mention when replacement is not allowed (e.g., non-IPO notional orders). This is minimal guidance, not comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_account_configA

Updates one or more account configuration settings. Only the fields you provide will be changed; all others retain their current values.

ParametersJSON Schema
NameRequiredDescriptionDefault
no_shortingNoIf true, account becomes long-only mode.
suspend_tradeNoIf true, new orders are blocked.
fractional_tradingNoIf true, account is able to participate in fractional trading
trade_confirm_emailNoall or none. If none, emails for order fills are not sent.
max_margin_multiplierNoCan be "1", "2", or "4"
ptp_no_exception_entryNoIf set to true then Alpaca will accept orders for PTP symbols with no exception. Default is false.
disable_overnight_tradingNoIf true, overnight trading is disabled.
max_options_trading_levelNoThe desired maximum options trading level. 0=disabled, 1=Covered Call/Cash-Secured Put, 2=Long Call/Put, 3=Spreads/Straddles.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It communicates that updates are partial (only provided fields change), which is a critical behavior. It does not detail side effects, permissions, or error handling, but the partial update disclosure adds meaningful transparency beyond the basic 'updates' verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary action and immediately followed by the key partial-update clarification. Every word earns its place with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool benefits from a rich schema and output schema, so return values do not need elaboration. The description covers the essential update semantics and partial-update behavior. It does not mention prerequisites or postconditions, but for a config update tool this is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well-documented. The description adds little beyond stating the partial-update semantics, which is a general behavior rather than per-parameter detail. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates account configuration settings, using the specific verb 'updates' and naming the resource. This distinguishes it from the sibling 'get_account_config' and other config-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on how to use the tool, emphasizing that only provided fields are changed and others are retained. It does not explicitly name alternatives or when-not-to-use conditions, but the partial-update behavior serves as a key usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_watchlist_by_idA

Update an existing watchlist. IMPORTANT: this replaces the entire watchlist. You must include the symbols parameter with the full list of desired symbols, otherwise all assets will be removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe watchlist name.
symbolsNoList of asset symbols to include in the watchlist.
watchlist_idYeswatchlist id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well by explicitly disclosing the destructive behavior: replacing the entire watchlist and removing all assets if symbols are omitted. It does not cover reversibility or permissions, but the critical behavioral risk is clearly communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: one sentence states the purpose and a second delivers the critical warning. There is no redundant information, and the formatting with 'IMPORTANT' effectively highlights the key behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple nature and the existence of an output schema, the description is complete. It covers the main risk (data loss via replacement) and provides all necessary operational context, making it sufficient for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds crucial meaning beyond the schema by explaining that symbols, though not required in the schema, are effectively mandatory for a meaningful update and must include the full desired list. This clarifies the parameter's role and consequence, exceeding the schema's baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing watchlist with a specific verb and resource. It distinguishes itself from sibling tools like create, delete, add, and remove, especially by highlighting the replace-all semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong usage guidance by warning that the entire watchlist is replaced and that the symbols parameter must contain the full list. However, it does not explicitly mention when to prefer this over add/remove alternatives, but the replacement semantics imply the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.3/5.0
Disambiguation3/5

Most tools have distinct purposes, but there are notable overlaps: get_corporate_actions and get_corporate_action_announcements appear to be duplicates, and snapshot tools (get_stock_snapshot, get_crypto_snapshot, get_option_snapshot) overlap with the individual latest data tools. With 69 tools, the boundaries can blur, though descriptions generally clarify the differences.

Naming Consistency4/5

The naming largely follows a consistent verb_noun pattern: get_*, place_*, cancel_*, replace_*, create_*, update_*, delete_*. Minor deviations exist, such as do_not_exercise_options_position and exercise_options_position, but these are still readable and understandable in context.

Tool Count1/5

69 tools is extremely high for any MCP server, even a comprehensive trading API. The sheer number makes the tool surface unwieldy and difficult for an agent to navigate efficiently, exceeding the range where each tool clearly earns its place.

Completeness4/5

The server covers a broad domain: orders, positions, account config, watchlists, market data (stocks, crypto, options, indices, fixed income), corporate actions, and short-locate management. Minor gaps exist (e.g., no historical option quotes, no locate cancellation), but the core user workflows are well-supported with CRUD-like operations.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server enabling LLMs like Claude to interact with the Alpaca trading API through natural language for stock trading, checking positions, fetching market data, and managing your account.
    27
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs like Claude to interact with the Alpaca trading API, allowing for trading stocks, checking positions, fetching market data, and managing accounts through natural language.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that interfaces with Alpaca trading API, allowing users to manage portfolios, place trades, and access market data through natural language interactions.
    8
    36
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language trading operations through AI assistants using Alpaca's Trading API. Supports stocks, options, crypto trading, portfolio management, and real-time market data access.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bartest5/alpacahq_alpaca-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server