Signal8 MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Signal8 MCP Serverget dilution risk for AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@signal8ai/mcp
MCP (Model Context Protocol) server for Signal8 -- AI-extracted SEC filing intelligence data.
Gives AI agents like Claude, Cursor, and other MCP-compatible tools direct access to:
Company fundamentals (quotes, financials, earnings, float, executives, peers, news)
Dilution risk scoring (0-100 Dilution Pressure Score with 5-dimension assessment)
SEC filing extractions (warrants, convertibles, shelf registrations, and 10 more types)
Instrument lifecycle tracking (warrants, convertibles, ATMs with XBRL reconciliation)
Intelligence (counterparties, counsel, insiders, institutions, ROFR triggers, cluster buys)
Cross-company intelligence (top AUM institutions, cross-company counsel & insider patterns)
Compliance monitoring (Nasdaq/NYSE deficiency detection, listing classification)
Company screening (dilution-aware filters with 30+ fields)
ETF analysis (holdings, sectors, countries, performance, comparables)
Installation
npm install -g @signal8ai/mcp
# or use npx (no install needed)
npx @signal8ai/mcpRelated MCP server: secapi-mcp
Setup
1. Get your API key
Sign up at signal8.ai/mcp and create a key at signal8.ai/settings/api-keys to get your API key.
2. Configure your MCP client
Claude Desktop
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"signal8": {
"command": "npx",
"args": ["-y", "@signal8ai/mcp"],
"env": {
"SIGNAL8_API_KEY": "sk_live_your_key_here"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"signal8": {
"command": "npx",
"args": ["-y", "@signal8ai/mcp"],
"env": {
"SIGNAL8_API_KEY": "sk_live_your_key_here"
}
}
}
}Other MCP Clients
Set the SIGNAL8_API_KEY environment variable and run:
SIGNAL8_API_KEY=sk_live_your_key_here npx @signal8ai/mcpAvailable Tools (86)
The server exposes 86 live tools at runtime. The reference tables below are a representative catalog grouped by domain; several documented tools and whole categories (e.g. Extractions and Dilution) are currently disabled and are not registered live, so individual section counts below may exceed what is actually exposed.
Companies (3 tools)
Tool | Description | Credits |
| Search companies by name or ticker | 1 |
| Full company profile (description, market cap, sector) | 1 |
| Consolidated data bundle in one call | 25 |
Company Data (13 tools)
Tool | Description | Credits |
| Real-time stock quote (price, change, volume) | 1 |
| Volume averages, volatility, SMAs, trend direction | 3 |
| Short interest data and days-to-cover | 3 |
| Float composition, shares outstanding, ownership % | 3 |
| Income statement, balance sheet, cash flow | 5 |
| Earnings history with EPS surprises | 3 |
| Executive team roster and compensation | 1 |
| Peer/comparable companies | 1 |
| Earnings call transcripts | 3 |
| Latest company news headlines | 1 |
| Analyst ratings and price targets | 3 |
| Material corporate events (8-K filings) | 3 |
| Clinical trial pipeline (biotech/pharma) | 3 |
Market — Cross-Ticker (6 tools)
Tool | Description | Credits |
| Batch real-time quotes for up to 200 tickers (POST) | max(1, ceil(N/10)) |
| Quotes for an entire index universe (sp500/ndx/dji) | 5 |
| Bulk ticker snapshots (price, day change, % change) | 1 |
| Snapshot of the 11 SPDR sector ETFs with sector labels | 2 |
| Top gainers / losers / most-active by volume (with optional | 2 |
| Advance/decline, % above SMA50/200, 52-week high/low counts | 2 |
Calendar (5 tools)
Tool | Description | Credits |
| Upcoming/recent earnings releases between two dates | 3 |
| Macro/economic events (CPI, FOMC, jobs, GDP) by date and country | 3 |
| 10-K / 10-Q SEC filing-deadline calendar by universe | 5 |
| Upcoming IPO/secondary lockup expirations | 5 |
| Recent material 8-K filings by index universe and item codes | 5 |
Extractions (4 tools)
Tool | Description | Credits |
| AI-extracted SEC filing data (13 types) | 5 |
| Extractions for a specific SEC filing | 5 |
| Cross-company extraction analytics | 50 |
| Filter extractions by type (warrants, convertibles, etc.) | 5 |
Dilution (5 tools)
Tool | Description | Credits |
| Dilution Pressure Score (0-100) with 5-dimension assessment | 5 |
| Post-dilution stock performance at +1d/+7d/+30d/+90d | 10 |
| Active warrants, convertibles, ATMs, shelf registrations | 5 |
| Deep dive on a single instrument | 5 |
| IB6 baby shelf remaining capacity | 10 |
Intelligence — Per-Company (12 tools)
Tool | Description | Credits |
| Entity-resolved counterparty relationships | 10 |
| Legal counsel engagements with role taxonomy | 10 |
| Insider trading discovery and patterns | 10 |
| Unified ownership (Form 4 + 13F + 13D/G) | 10 |
| ROFR exercise trigger detection | 10 |
| Institutional holders from 13F filings | 10 |
| Detailed info for a specific institution (by CIK) | 10 |
| Full portfolio holdings for an institution | 10 |
| Investment bank relationships from SEC filings | 10 |
| Legal counsel relationships with partner names | 10 |
| Detailed Form 4 transaction history | 5 |
| Cluster buying pattern detection (3+ insiders in 14 days) | 10 |
Intelligence — Cross-Company (3 tools)
Tool | Description | Credits |
| Top institutional holders by AUM across all companies | 25 |
| Law firm engagements across multiple companies | 25 |
| Insider trading patterns across multiple companies | 25 |
Compliance (4 tools)
Tool | Description | Credits |
| Full compliance evaluation | 25 |
| Listing deficiency detection | 10 |
| Active compliance alerts | 5 |
| Exchange listing classification | 10 |
Screener (2 tools)
Tool | Description | Credits |
| Discover available screening filters | 1 |
| Dilution-aware company screener | 25 |
Events & ATM (2 tools)
Tool | Description | Credits |
| Unified corporate events | 5 |
| ATM program monitoring | 5 |
ETF (1 tool)
Tool | Description | Credits |
| Aggregated ETF data (profile, holdings, sectors, performance) | 25 |
Market Intelligence — Tool Reference
Cross-ticker market and calendar tools that operate over the entire universe rather than a single company. The single-ticker get_quote tool is included here for completeness; the rest were added in the Market Intelligence rollout.
get_quote
Real-time quote for a single ticker (price, change, volume, day range).
Inputs:
Name | Type | Required | Description |
ticker | string | yes | Ticker symbol (e.g. |
Sample output (regular trading hours, 9:30am–4:00pm ET):
{
"data": {
"ticker": "AAPL",
"currentPrice": 178.42,
"change": 2.15,
"changePercent": 1.22,
"high": 179.10,
"low": 176.80,
"open": 177.05,
"previousClose": 176.27,
"preMarketPrice": null,
"preMarketChangePercent": null,
"afterHoursPrice": null,
"afterHoursChangePercent": null,
"timestamp": 1714492800
}
}Sample output (extended hours — pre-market or after-hours):
{
"data": {
"ticker": "AAPL",
"currentPrice": 178.42,
"change": 2.15,
"changePercent": 1.22,
"high": 179.10,
"low": 176.80,
"open": 177.05,
"previousClose": 176.27,
"preMarketPrice": 179.05,
"preMarketChangePercent": 0.35,
"afterHoursPrice": 178.90,
"afterHoursChangePercent": 0.27,
"timestamp": 1714492800
}
}Extended-hours windows (US equities, ET): pre-market 4:00am–9:30am, after-hours 4:00pm–8:00pm. Outside those windows
preMarketPrice,preMarketChangePercent,afterHoursPrice, andafterHoursChangePercentarenull. In practice only one pair is populated at a time depending on the current window — the second example shows both populated for illustration.
Use case: "What is AAPL trading at right now?"
get_quotes_batch
Fetch real-time quotes for up to 200 tickers in one call. Backed by POST /api/v1/public/market/quotes. Tickers absent from the upstream feed map to null.
Inputs:
Name | Type | Required | Description |
tickers | string[] | yes | 1–200 ticker symbols |
Sample output:
{
"data": {
"count": 3,
"quotes": {
"AAPL": { "ticker": "AAPL", "currentPrice": 178.42, "changePercent": 1.22 },
"MSFT": { "ticker": "MSFT", "currentPrice": 412.10, "changePercent": 0.41 },
"NVDA": null
}
}
}Use case: "Pull live quotes for my entire 50-ticker watchlist in one call."
get_quotes_universe
Quotes for all constituents of a known index universe (S&P 500, Nasdaq 100, or Dow 30).
Inputs:
Name | Type | Required | Description |
universe | enum | yes | One of |
Sample output:
{
"data": {
"universe": "dji",
"count": 30,
"quotes": {
"AAPL": { "currentPrice": 178.42, "changePercent": 1.22 },
"MSFT": { "currentPrice": 412.10, "changePercent": 0.41 }
}
}
}Use case: "Give me a live snapshot of every Dow 30 component."
get_index_snapshot
Bulk daily snapshot (OHLC, volume, % change) for an explicit ticker list (max 50) or the full tracked universe when omitted.
Inputs: none required (optional tickers query when called via REST)
Sample output:
{
"data": {
"count": 2,
"snapshots": [
{ "ticker": "SPY", "close": 512.34, "changePercent": 0.42, "volume": 78321000 },
{ "ticker": "QQQ", "close": 438.21, "changePercent": 0.55, "volume": 41902000 }
]
}
}Use case: "Show me a one-shot snapshot of where the index ETFs closed."
get_sector_etf_snapshot
Snapshot of the 11 SPDR sector ETFs (XLK, XLF, XLV, XLY, XLP, XLE, XLI, XLB, XLRE, XLU, XLC) with a sector label per row. Useful for sector-rotation views.
Inputs: none
Sample output:
{
"data": {
"count": 11,
"sectors": [
{ "ticker": "XLK", "sector": "Technology", "close": 218.40, "changePercent": 0.85 },
{ "ticker": "XLF", "sector": "Financials", "close": 41.23, "changePercent": -0.12 }
]
}
}Use case: "Which sectors are leading and lagging today?"
get_top_movers
Top market movers by direction (gainers, losers, or most-active by volume), computed from ticker_snapshots. Excludes warrants/units/ETFs/funds.
Inputs:
Name | Type | Required | Description |
direction | enum | yes |
|
limit | integer | no | 1–100 (backend default applied when omitted) |
session | enum | no |
|
Sample output:
{
"data": {
"direction": "gainers",
"session": "regular",
"count": 2,
"movers": [
{ "rank": 1, "ticker": "XYZ", "name": "Acme Corp", "price": 12.34, "changePercent": 42.1, "volume": 12000000, "marketCap": 350000000, "isETF": false },
{ "rank": 2, "ticker": "ABC", "name": "ABC Inc", "price": 5.62, "changePercent": 31.8, "volume": 8400000, "marketCap": 120000000, "isETF": false }
]
}
}Use case: "What are today's top 10 gainers?"
get_market_breadth
Market breadth aggregates (advance/decline counts and ratio, % of constituents trading above their 50DMA / 200DMA, and counts of new 52-week highs/lows) for a chosen universe. Point-in-time only — no historical breadth.
Inputs:
Name | Type | Required | Description |
universe | enum | no |
|
Sample output:
{
"data": {
"universe": "sp500",
"asOf": "2026-04-30T20:00:00.000Z",
"advancers": 312,
"decliners": 175,
"unchanged": 16,
"advanceDeclineRatio": 1.7828571428571428,
"pctAbove50DMA": 0.642,
"pctAbove200DMA": 0.561,
"new52wHighs": 18,
"new52wLows": 4
}
}Use case: "How many S&P 500 names are above their 200DMA right now?" or "Add a one-line market-state header to today's commentary tweet."
get_earnings_calendar
Forward-looking and recent earnings releases between two dates. Optionally filter to a list of tickers.
Inputs:
Name | Type | Required | Description |
from | string (YYYY-MM-DD) | yes | Window start |
to | string (YYYY-MM-DD) | yes | Window end |
tickers | string[] | no | Optional ticker filter |
Sample output:
{
"data": {
"events": [
{ "ticker": "AAPL", "date": "2026-05-02", "time": "AMC", "epsEstimate": 1.50, "revenueEstimate": 90100000000 }
],
"total": 1,
"limit": 50,
"offset": 0
}
}Use case: "Which mega-caps report earnings next week?"
get_economic_calendar
Macroeconomic events (CPI, FOMC, NFP, GDP, etc.) between two dates, filtered by country and impact level.
Inputs:
Name | Type | Required | Description |
from | string (YYYY-MM-DD) | yes | Window start |
to | string (YYYY-MM-DD) | yes | Window end |
country | string (ISO-2) | no | Defaults to |
Sample output:
{
"data": {
"events": [
{ "date": "2026-05-07", "country": "US", "event": "FOMC Rate Decision", "impact": "High", "actual": null, "forecast": "5.25%", "previous": "5.25%" }
],
"total": 1
}
}Use case: "What high-impact US events land this week?"
get_filing_calendar
Forward-looking 10-K / 10-Q SEC filing-deadline calendar by index universe. Deadlines computed from each company's last-reported period end + filer-status offset.
Inputs:
Name | Type | Required | Description |
from | string (YYYY-MM-DD) | no | Default today |
to | string (YYYY-MM-DD) | no | Default today + 45d |
universe | enum | no |
|
formTypes | string[] | no | Subset of |
Sample output:
{
"data": {
"rows": [
{
"ticker": "AAPL", "companyName": "Apple Inc.",
"formType": "10-Q", "periodEnd": "2026-03-29",
"deadline": "2026-05-13", "daysUntilDeadline": 13,
"filerStatus": "large_accelerated"
}
],
"count": 1,
"window": { "from": "2026-04-30", "to": "2026-06-14" },
"universe": "sp500",
"formTypes": ["10-K", "10-Q"]
}
}Use case: "Which S&P 500 names have a 10-Q deadline in the next two weeks?"
get_lockup_expirations
Upcoming IPO/secondary lockup expirations within a date window. Derived from underwriting-terms extractions (S-1 / F-1 / 424B*) — coverage is partial; check meta.coveragePercent.
Inputs:
Name | Type | Required | Description |
from | string (YYYY-MM-DD) | no | Default today |
to | string (YYYY-MM-DD) | no | Default today + 90d |
universe | enum | no |
|
Sample output:
{
"data": {
"rows": [
{
"ticker": "NEWCO", "companyName": "NewCo Inc.",
"lockupEndDate": "2026-05-21", "daysUntilExpiry": 21,
"originalFilingType": "S-1", "sharesUnlocking": 24500000,
"sourceFilingUrl": "https://sec.gov/..."
}
],
"meta": {
"coveragePercent": 38.4,
"totalCandidates": 412,
"parsedCount": 158,
"windowStart": "2026-04-30",
"windowEnd": "2026-07-29",
"universe": "all"
}
}
}Use case: "Any IPO lockup expirations coming up in the next 30 days?"
get_recent_material_filings
Recent 8-K filings flagged as materially significant within a named index universe, optionally filtered by item codes (e.g. 1.01 material agreement, 5.02 leadership change). Lookback fixed at 7 days.
Inputs:
Name | Type | Required | Description |
universe | enum | yes |
|
items | string[] | no | 8-K item codes (e.g. |
limit | integer | no | 1–200 (default 50) |
Sample output:
{
"data": {
"universe": "sp500",
"items": ["1.01", "5.02"],
"count": 1,
"filings": [
{
"ticker": "AAPL", "companyName": "Apple Inc.",
"filingDate": "2026-04-29T20:15:00Z", "formType": "8-K",
"items": ["1.01"], "filingUrl": "https://sec.gov/...",
"summary": "Material definitive agreement entered into..."
}
]
}
}Use case: "Any S&P 500 leadership-change 8-Ks filed this week?"
Resources
Resource | URI | Description |
Company Profile |
| Enriched company profile by ticker |
Extraction Types |
| List of all 13 SEC filing extraction types |
Prompts (4)
Prompt | Arguments | Description |
|
| 6-step dilution risk analysis workflow |
|
| 10-step comprehensive due diligence research |
|
| 5-step discover-screen-analyze workflow |
|
| 6-step institutional ownership & smart money analysis |
Hosted Endpoint
For web-based MCP clients, use the hosted Streamable HTTP endpoint:
POST https://mcp.signal8.ai/mcp
Authorization: Bearer sk_live_your_key_here
Content-Type: application/jsonThis Streamable HTTP endpoint works today with MCP clients that support custom
bearer-token headers (e.g. Claude Code CLI's --transport http connector,
Cursor, and VS Code's MCP support). OAuth-based discovery for the Claude.ai
Desktop/web custom connector is coming soon — until then, use the local
stdio config (npx) shown above, or pass the Authorization header directly
where your client allows it.
Environment Variables
Variable | Required | Description |
| Yes | Your Signal8 API key (starts with |
| No | API base URL (default: |
Pricing
Each tool call consumes credits based on the endpoint it accesses. See credit costs in the tools table above. Get your free tier (100 credits/day) at signal8.ai.
Programmatic Usage
import { createMcpServer, Signal8ApiClient } from '@signal8ai/mcp';
const client = new Signal8ApiClient({
baseUrl: 'https://api.signal8.ai/api/v1/public',
apiKey: 'sk_live_xxx',
});
const server = createMcpServer(client);
// Connect to any MCP transport...License
MIT -- see the LICENSE file. Copyright (c) 2025-2026 Signal8 AI, Inc.
Use of the hosted Signal8 API and data is additionally governed by the Signal8 Terms of Service.
Available Tools
87 toolsget_accumulation_snapshotGet Accumulation SnapshotARead-onlyInspect
Get intraday accumulation/distribution metrics for the current or most recent trading session. Returns session VWAP, volume above/below VWAP, estimated buy vs sell volume (tick rule), volume by time period (morning/midday/afternoon), and comparison to average volume. Use for assessing real-time buying/selling pressure.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds behavioral context by specifying the time scope (current/most recent session) and the metrics returned, which enhances transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (two sentences), front-loaded with purpose, and includes all necessary information without extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and the presence of an output schema, the description sufficiently explains the return metrics. It is complete for a simple data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'ticker' well-described. Description does not add additional semantics beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves intraday accumulation/distribution metrics for the current or most recent trading session, listing specific metrics like VWAP, volume above/below VWAP, etc. It is distinct from sibling tools which focus on 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a usage context ('Use for assessing real-time buying/selling pressure') but lacks explicit when-not-to-use or alternative tools. Implied usage is reasonable but no exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_consensusGet Analyst ConsensusARead-onlyInspect
Get analyst ratings consensus for a company including average target price, number of analysts, buy/hold/sell breakdown, and consensus recommendation. Use when evaluating Wall Street sentiment or price targets.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description matches readOnlyHint annotation (no contradiction). It adds value by specifying the data fields returned, beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and data, second gives usage guidance. No waste, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, has output schema), the description covers purpose, returned data, and usage guidance completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description does not need to add parameter details. The schema already describes 'ticker' well. Description does not provide extra parameter-level information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets analyst consensus for a company, listing specific data points (average target price, number of analysts, buy/hold/sell breakdown, consensus recommendation). It distinguishes itself from sibling tools like get_price_target and get_analyst_estimates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use when evaluating Wall Street sentiment or price targets.' Provides clear context, though no explicit exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_coverageGet Analyst CoverageARead-onlyInspect
Get aggregated analyst coverage for a ticker — consolidated view of grades, targets, and coverage breadth across covering firms.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's role is limited. It adds that the tool provides grades, targets, and coverage breadth, but lacks details on data recency, pagination, or number of firms. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action ('Get aggregated analyst coverage') and concisely explains the output. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one required parameter, annotations provided, output schema exists), the description sufficiently explains the tool's purpose and output. It does not need to detail return values since the output schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (ticker) with schema description coverage at 100% (it describes the ticker symbol format). The description does not add additional semantic meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get aggregated analyst coverage for a ticker — consolidated view of grades, targets, and coverage breadth across covering firms.' It uses a specific verb and resource, and distinguishes itself from siblings like get_analyst_consensus, get_analyst_estimates, and get_analyst_grades by highlighting aggregation and breadth.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies an aggregated view but does not specify situations where this is preferred over individual analyst tools. No 'when not to use' or mention of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_estimatesGet Analyst EstimatesARead-onlyInspect
Get forward analyst estimates for a company including EPS, revenue, EBITDA, and net income (low/high/avg) with analyst counts. Supports annual and quarterly periods. Use when analyzing forward earnings expectations or revenue forecasts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of estimate periods to return (1-40). Defaults to 8. | |
| period | No | Estimate period: "annual" (default) or "quarter". | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to cover safety. It adds the behavioral context of returning forward estimates with specific metrics. No contradictory or missing behavioral details, but doesn't discuss rate limits or performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and key details, immediately followed by usage guidance. No wasted words or redundant information. Perfectly concise for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not shown but implied), the description adequately covers the return content and period options. It doesn't mention pagination or error handling, but for a straightforward financial data tool, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining that estimates include low/high/avg and analyst counts. Schema coverage is 100%, so baseline is 3; the description enriches it further with context about the returned data fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get forward analyst estimates for a company' and lists specific metrics (EPS, revenue, EBITDA, net income) with low/high/avg and analyst counts. It distinguishes from sibling tools like get_analyst_consensus by implying it provides detailed estimates rather than a single consensus figure, though not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a direct usage suggestion: 'Use when analyzing forward earnings expectations or revenue forecasts.' This gives clear context. However, it does not mention when not to use it or provide alternatives, which would be helpful given many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_gradesGet Analyst GradesARead-onlyInspect
Get recent analyst grade actions (upgrades, downgrades, initiations) for a ticker, including the grading firm and previous/new grade.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 10, max: 50) | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read. The description adds that it returns 'recent' actions, providing temporal context. No contradictions, and the added context is valuable but could specify ordering or depth of recency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 14 words that efficiently conveys purpose and output scope with no unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with an output schema (context indicates present), the description covers the key aspects: what actions, for which ticker, and what fields are returned. It is sufficiently complete without needing to explain return values in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are adequately described in the schema. The description adds minimal parameter-specific meaning beyond mentioning 'for a ticker' and the types of grades in the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets recent analyst grade actions (upgrades, downgrades, initiations) for a ticker and lists included fields (firm, previous/new grade). It distinguishes from siblings like get_analyst_consensus and get_analyst_estimates by specifying actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving ticker-specific analyst grade changes but does not explicitly state when to use this tool vs alternatives (e.g., get_price_target, get_analyst_consensus) or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cash_historyGet 10-Year Cash HistoryARead-onlyInspect
Get up to 10 years of quarterly cash position history from SEC XBRL filings (data.sec.gov company-facts). Returns an array of {periodEnd, usd, formType, isAnnual} sorted chronologically. Deduped by period with annual filings preferred over quarterly. Not feature-gated — works for any company with SEC filings.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses deduplication logic (annual preferred over quarterly) and chronological sorting. It also mentions the return structure, providing rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences deliver core functionality, return format, dedup logic, and feature-gating. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description appropriately provides a high-level overview of the output structure. It covers source, range, dedup, and access constraints, making it complete for a simple one-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by stating the ticker must correspond to a company with SEC filings, which conditions the parameter's validity. This goes beyond the schema's generic ticker description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves up to 10 years of quarterly cash position history from SEC XBRL filings, specifying data source, time range, frequency, and output format. It uniquely identifies the tool's purpose among siblings like get_cash_position and get_cash_runway_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states it's not feature-gated and works for any company with SEC filings, providing clear context for when to use it. While it doesn't name exclusions or alternatives, the unique purpose differentiates it from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cash_positionGet AI Cash PositionARead-onlyInspect
Get the Signal8 AI cash position model for a company. Returns the cash anchor (from latest 10-K/10-Q), prorated burn rate, post-anchor capital raises, material cash events, and three runway scenarios (closed, pending, announced). Use when analyzing a company's current cash situation, runway, or capital raise activity. Returns 404 when no cash-position model is available for the requested ticker.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds value by listing specific output fields (cash anchor, burn rate, capital raises, runway scenarios) and the error condition (404), providing clear behavioral expectations beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four focused sentences. It is front-loaded with the purpose. No content is wasted, but it could be slightly more compact. A score of 4 reflects good efficiency without being the absolute minimum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, existing output schema, annotations present), the description covers the purpose, usage, return values, and error condition comprehensively. There are no missing critical details for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter 'ticker', with a clear description. The tool description does not add any additional parameter semantics beyond what the schema already provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'Signal8 AI cash position model', and enumerates return data. However, it does not explicitly distinguish itself from sibling tools like get_cash_history or get_cash_runway_calendar, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use when analyzing a company's current cash situation, runway, or capital raise activity.' It also notes the 404 condition. However, it does not mention when not to use the tool or suggest alternative tools, so it does not achieve a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cash_runway_calendarGet Cash Runway Depletion CalendarARead-onlyInspect
Find companies projected to run out of cash within a date window. Similar to lockup expiration calendars but for cash depletion events. Returns companies sorted by urgency (lowest runway first). Runway is an estimate based on current burn rate — actual depletion depends on future capital raises and operational changes. Default window is today to 90 days out.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date (YYYY-MM-DD, default: today + 90 days) | |
| from | No | Start date (YYYY-MM-DD, default: today) | |
| limit | No | Maximum results to return (default: 25, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| industry | No | Filter by company industry (exact match, e.g. "Biotechnology") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds valuable context that the runway is an estimate based on current burn rate and depends on future events, going beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no wasted words. Core function is front-loaded, followed by defaults and caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity, full schema coverage, and the existence of an output schema, the description provides sufficient context about purpose, sorting, defaults, and the estimate nature of the runway.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add per-parameter details beyond the schema. Baseline score of 3 is appropriate as the schema already documents parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds companies projected to run out of cash within a date window. It distinguishes itself from sibling tools by comparing to lockup expiration calendars and specifying it's for cash depletion events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use (finding companies running out of cash) and mentions default window, but lacks explicit when-not-to-use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clinical_trialsGet Clinical TrialsARead-onlyInspect
Get clinical trial data for a biotech/pharma company including trial phase, status, conditions, and interventions. Use when analyzing a biotech company's pipeline or upcoming catalyst events.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of clinical trials to return (1-50). Defaults to 10. | |
| ticker | Yes | Stock ticker symbol (e.g., "MRNA", "PFE") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the safety profile is clear. The description adds no further behavioral details such as pagination, data freshness, or limitations. Since annotations already cover the key behavior, the description provides minimal added value beyond the structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the key purpose, and contains no redundant or extraneous words. Every part contributes to understanding the tool's role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated) and a simple parameter set, the description provides sufficient context for using the tool. It could mention that it returns a list of trials with specific fields, but overall it is adequate for a straightforward retrieval tool. The sibling search_clinical_trials might require more differentiation, but the current description still offers good completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (ticker, limit) documented. The tool description mentions output fields (trial phase, status) but not parameters. It adds little additional meaning beyond what the schema already provides for the parameters, justifying the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Get), resource (clinical trial data), and context (for a biotech/pharma company), listing included data fields like trial phase and conditions. However, it does not explicitly differentiate from the sibling tool search_clinical_trials, which likely performs a similar but search-oriented function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a use context ('when analyzing a biotech company's pipeline or upcoming catalyst events'), but does not give when-not-to-use guidance or contrast with the sibling search_clinical_trials. The usage scenario is implied but not explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_profileGet Company ProfileARead-onlyInspect
Get an enriched company profile by ticker symbol. Returns CIK, exchange, sector, industry, market cap, employee count, description, and other fundamental data. This is a lightweight lookup (1 credit) -- use this when you only need basic company info rather than the full bundle. Always includes halted/haltCode/haltedAt trading-halt status (false/null when trading normally); a halted-but-listed ticker reports delisted:false.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the readOnlyHint annotation: it explains the tool returns trading-halt status fields (halted/haltCode/haltedAt) and clarifies the behavior when trading normally (false/null). It also states this is a 1-credit operation, providing cost context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, efficient and front-loaded. Every sentence adds value: first sentence states purpose and outputs, second sentence provides usage guidance and behavioral note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple lookup with one parameter and an output schema exists, the description covers all essential aspects: what it does, when to use, what it includes, and a special behavioral note about trading halt status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter ticker with a clear example. The description does not add deeper semantic meaning to the parameter but reinforces its purpose. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves an enriched company profile using a ticker symbol and lists specific returned fields (CIK, exchange, sector, etc.). It also distinguishes from a 'full bundle' tool, helping the agent understand its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this for basic company info rather than the full bundle, and notes it is a lightweight lookup (1 credit). It does not explicitly name a sibling tool for the full bundle but provides clear guidance on when 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_complianceGet Compliance EvaluationARead-onlyInspect
Get full compliance rules evaluation for a company. Runs Nasdaq/NYSE deficiency detection, bid price tracking, and delinquent filing detection. Returns a comprehensive compliance picture combining SEC filing data, market data, and exchange rules. This is the most thorough compliance check available (25 credits).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it discloses the 25-credit cost, the comprehensive nature (combining SEC, market, and exchange data), and the fact it runs multiple compliance checks. This enriches the readOnlyHint annotation without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences front-loaded with the core purpose, followed by details on what it covers and a cost note. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values are documented elsewhere) and 100% schema coverage for the single parameter, the description is complete. It explains what the tool does, its scope, and cost, providing sufficient context for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with one parameter 'ticker' described as 'Stock ticker symbol.' The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get full compliance rules evaluation for a company.' It specifies what it runs (Nasdaq/NYSE deficiency detection, bid price tracking, delinquent filing detection) and what it combines (SEC filing data, market data, exchange rules), making it distinct from siblings like get_insider_transactions or get_filing_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as the most thorough compliance check, with a cost of 25 credits. It provides context about the scope but does not explicitly state when to use vs. alternatives or when not to use it. A brief mention of when to prefer this over lighter tools would improve it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_donor_aggregatesGet Donor AggregatesARead-onlyInspect
Get market-wide campaign-finance rollups across ALL tracked politicians for a cycle: total raised, top 10 individual donors, top 10 PACs, party/chamber/cycle splits, and a most-funded politician leaderboard. Use for "who are the biggest donors in 2024?" or "which party raised more?" type questions. For a single politician, use get_politician_donor_summary.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | Election cycle as 4-digit year (e.g. "2024"). Defaults to most recent cycle. | |
| party | No | Filter by party: 'D', 'R', or 'I' | |
| chamber | No | Filter by chamber: 'senate' or 'house' |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true. Description adds context about aggregate nature and included breakdowns. No contradictions, but could mention data recency or scope ('ALL tracked politicians') more precisely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first specifies purpose and outputs, second provides usage guidance and sibling differentiation. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given read-only nature, optional parameters with defaults, and clear output description, the definition fully equips an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds minimal extra semantic value beyond what schema already provides (e.g., default cycle behavior). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves market-wide campaign-finance rollups across all tracked politicians for a cycle, listing specific outputs (total raised, top donors, splits, leaderboard). It explicitly distinguishes from sibling tool get_politician_donor_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases ('who are the biggest donors in 2024?') and contrasts with alternative for single politician ('For a single politician, use get_politician_donor_summary').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earningsGet Earnings HistoryARead-onlyInspect
Get historical earnings data for a company including EPS actual vs estimate, revenue actual vs estimate, and surprise percentages. Use when analyzing earnings beats/misses or upcoming earnings expectations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of earnings periods to return (1-40). Defaults to 8. | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so description need not reiterate. Description adds output specifics but no additional behavioral traits like pagination or rate limits. Adequate for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with 2 parameters and an output schema. Description adequately covers purpose and output content. Could mention data range or default limit, but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented. Description does not add parameter-level meaning beyond what schema provides. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets historical earnings data with specific fields (EPS, revenue, surprise percentages). However, it does not explicitly differentiate from sibling tools like get_analyst_estimates or get_earnings_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: analyzing earnings beats/misses or upcoming expectations. Lacks when-not-to-use or alternative suggestions, but the provided context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_calendarGet Earnings CalendarARead-onlyInspect
Get upcoming and recent earnings releases between two dates. Optionally restrict to a list of tickers. Returns ticker, date, time (BMO/AMC), EPS estimate, and revenue estimate when available. Supports market cap filtering to focus on large-cap or small-cap earnings only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End date inclusive (YYYY-MM-DD) | |
| from | Yes | Start date inclusive (YYYY-MM-DD) | |
| tickers | No | Optional ticker filter, e.g. ["AAPL","NVDA"] | |
| maxMarketCap | No | Maximum market cap in USD (e.g., 2000000000 for under $2B) | |
| minMarketCap | No | Minimum market cap in USD (e.g., 10000000000 for $10B+) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description adds behavioral context by listing the returned fields and filter capabilities. It does not conflict with annotations, and the added detail (market cap filtering, specific data fields) is valuable for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action, and every sentence adds value. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently covers the tool's capabilities: date range, ticker filter, market cap filter, and returned fields. No critical information is missing for a read-only data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description adds meaning beyond the schema by explaining the purpose of date range parameters and how market cap filtering works (e.g., 'focus on large-cap or small-cap earnings only'). This enhances understanding of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves upcoming and recent earnings releases between two dates, with optional ticker and market cap filters. It specifies the returned fields (ticker, date, time, EPS estimate, revenue estimate), making the purpose distinct from sibling tools like get_earnings or get_economic_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use (earnings calendar between dates, with optional filters) but does not explicitly mention when not to use or suggest alternatives. It lacks exclusionary guidance compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_economic_calendarGet Economic CalendarARead-onlyInspect
Get scheduled macro/economic events (CPI, FOMC, jobs reports, GDP, etc.) between two dates. Optionally filter to a single country (ISO-3166 alpha-2, e.g. "US"). Defaults to US when omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End date inclusive (YYYY-MM-DD) | |
| from | Yes | Start date inclusive (YYYY-MM-DD) | |
| country | No | Optional ISO-3166 alpha-2 country code (e.g. "US", "GB", "JP") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds that events are scheduled and date ranges are inclusive, but does not disclose additional behavioral traits such as rate limits or pagination. Given the annotation coverage, the description adds minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no redundant words. The first sentence captures the core purpose and the second adds optional filter and default. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to explain return values. It covers the essential aspects: date range, country filter with default, and examples of event types. For a tool with 3 parameters (2 required) and an output schema, the description provides complete contextual guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed parameter descriptions. The tool description adds the default country behavior ('Defaults to US when omitted'), which is extra semantic information beyond the schema. This aids the agent in correctly invoking the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving scheduled macro/economic events with a specific verb 'Get' and a resource clearly defined. It lists example events (CPI, FOMC, etc.) and specifies date range and optional country filter, making it easy to distinguish from sibling tools that handle different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: when to use it (to get economic events between dates) and includes a default behavior (countries default to US). However, it does not explicitly exclude alternatives or contrast with similar tools like get_earnings_calendar, leaving some ambiguity for edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_etf_bundleGet ETF BundleARead-onlyInspect
Get aggregated ETF data in a single call. Combines multiple data sources (profile, holdings, sector weightings, country exposure, performance, news, analyst coverage, and comparables) into one response. Each data type is cached independently. Specify which types to include or omit to get above-the-fold defaults (profile, stock-summary, holdings, sectors).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ETF ticker symbol (e.g., SPY, QQQ, IWM) | |
| include | No | Comma-separated list of data types to include. Available: profile,holdings,sectors,countries,stock-summary,performance,news,analyst,comparables. Default (when omitted): profile,stock-summary,holdings,sectors |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. Description adds independent caching per data type and the bundling behavior, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each with a purpose: purpose, data sources, caching, usage guidance. No redundancy, well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are documented. Description covers data types, caching, and usage. Lacks mention of prerequisites or rate limits, but sufficient for a read-only bundle tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (100% coverage). The description adds context about include defaults and comma-separated format, but doesn't add entirely new meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it aggregates multiple ETF data sources into one call, explicitly listing the types (profile, holdings, etc.) and distinguishing it from individual siblings like get_company_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use (for aggregated data) and how to customize with include/omit, but does not explicitly state when not to use or mention alternatives like individual getters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_executivesGet Company ExecutivesARead-onlyInspect
Get key executives and officers of a company including name, title, compensation, and tenure. Use when researching company leadership or management quality.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark readOnlyHint=true, so the description's statement is consistent. However, no additional behavioral traits (e.g., pagination, permission needs) are disclosed beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and usage; every word is necessary and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and presence of an output schema, the description is sufficient. It hints at output fields (name, title, compensation, tenure) which compensates for not detailing the return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'ticker', with a clear description. The tool description adds no extra meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'key executives and officers'; it clearly identifies the data fields (name, title, compensation, tenure) and distinguishes from siblings like get_insiders by focusing on top executives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (researching company leadership or management quality) but does not mention alternatives or when not to use, leaving the agent to infer from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exhibit_contentGet Exhibit ContentARead-onlyInspect
Get the full text/HTML content of a single exhibit from an SEC filing. Returns the exhibit text along with exhibit_type, description, company_name, accession_number, and form_type. Use the maxLength parameter to truncate large exhibits. Find exhibit IDs using get_filing_exhibits first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Exhibit ID (numeric). Find via get_filing_exhibits. | |
| maxLength | No | Truncate content to this many characters. Response includes a "truncated" boolean. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by explaining truncation behavior and the truncated boolean in the response. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, return fields, usage hint. No filler, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description covers input, usage, and behavior fully. No missing information for an AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description adds context about maxLength truncation and the truncated response field, going beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets the full text/HTML content of a single exhibit from an SEC filing, with a specific verb and resource. It distinguishes from siblings by referencing get_filing_exhibits for finding IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to use get_filing_exhibits first to find exhibit IDs and mentions the maxLength parameter for truncation. While it doesn't list when not to use, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filing_calendarGet SEC Filing CalendarARead-onlyInspect
Get the forward-looking 10-K / 10-Q SEC filing-deadline calendar within a date window. Optionally restrict to a universe (sp500/ndx/dji/all) and/or a list of form types (default both 10-K and 10-Q).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date inclusive (YYYY-MM-DD, default today + 45d) | |
| from | No | Start date inclusive (YYYY-MM-DD, default today) | |
| universe | No | Optional index-universe filter (default "all") | |
| formTypes | No | Optional SEC form types subset, e.g. ["10-Q"] |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, consistent with the read nature. The description adds behavioral context: it returns a forward-looking calendar, default date ranges, and default form types. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are direct and contain no extraneous information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, full parameter coverage, and read-only nature, the description is complete. It covers purpose, optional filters, and default behavior, leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds meaning beyond schema by clarifying it is forward-looking and specifying default behavior (both 10-K and 10-Q). This helps the agent understand default values without inspecting schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a forward-looking SEC filing deadline calendar specifically for 10-K and 10-Q forms. It uses a specific verb ('get') and resource ('filing calendar'), distinguishing it from sibling tools like get_earnings_calendar or get_economic_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains optional filters (universe and formTypes) and default behavior (both 10-K and 10-Q). It implicitly guides when to use this tool (when needing 10-K/10-Q deadlines) but does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filing_documentGet Filing DocumentARead-onlyInspect
Get the full raw text/HTML content of an SEC filing by its internal filing ID. Returns the complete filing document which can be very large (10-K filings can be 1MB+). Use the maxLength parameter to truncate content for previews. The response includes company_name, form_type, filing_date, cik, and accession_number alongside the content. Find filing IDs using search_sec_filings first.
| Name | Required | Description | Default |
|---|---|---|---|
| filingId | Yes | Internal filing ID (numeric). Find via search_sec_filings. | |
| maxLength | No | Truncate content to this many characters. Useful for previewing large filings. Response includes a "truncated" boolean when truncation is applied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that filings can be very large (10-K up to 1MB+) and explains truncation behavior via maxLength, including the truncated boolean in the response. This provides behavioral benefits beyond the readOnlyHint annotation, which already indicates no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no redundancy. The first sentence states the core purpose, followed by size warning, preview guidance, and response fields. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description sufficiently covers return fields and behavior. With only 2 parameters and clear annotations, the description is complete for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters (filingId, maxLength) with basic descriptions. The tool description adds value by clarifying filingId is numeric and must come from search_sec_filings, and that maxLength triggers a truncated boolean in the response. It enriches the schema but could be more explicit about expected formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves raw text/HTML content of an SEC filing by its internal filing ID, specifying the verb (Get), resource (filing document), and key context (returns company_name, form_type, etc.). This distinguishes it from sibling tools like search_sec_filings or get_exhibit_content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to find filing IDs using search_sec_filings first and mentions maxLength for previews. While not listing alternatives or when-not-to-use, this guidance is clear and contextually sufficient given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filing_exhibitsGet Filing ExhibitsARead-onlyInspect
List all exhibits (individual documents) within an SEC filing. Returns exhibit metadata including exhibit type, description, and content size. Use this to identify which exhibits to read with get_exhibit_content. Excludes XML/XBRL exhibits.
| Name | Required | Description | Default |
|---|---|---|---|
| filingId | Yes | Internal filing ID (numeric). Find via search_sec_filings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only. The description adds behavioral context by stating it excludes XML/XBRL exhibits and returns metadata (not full content), which clarifies the tool's scope beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action, and every sentence adds value: listing purpose, return content, and usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple listing operation with read-only annotations, an output schema (not detailed but present), and clear parameter description in schema, the tool description provides all necessary context: what it does, what it returns, how to use it next, and what it excludes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter (filingId), referencing sibling tool search_sec_filings. The tool description does not add new meaning beyond the schema; it mentions 'within an SEC filing' but does not elaborate on the parameter itself. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists exhibits within an SEC filing, returns metadata (type, description, size), and explicitly excludes XML/XBRL exhibits. It distinguishes itself from get_exhibit_content by positioning this tool as a discovery step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use this tool to identify which exhibits to read with get_exhibit_content, providing clear usage context. It also notes that XML/XBRL exhibits are excluded, hinting at alternatives. However, it does not address when not to use this in favor of other sibling tools like get_filing_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financialsGet Financial StatementsARead-onlyInspect
Get income statement, balance sheet, and cash flow data for a company. Supports annual, quarterly, and trailing-twelve-month views. Use when analyzing revenue, profitability, debt, or cash position.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Financial period type: "annual", "quarter", or "ttm" (trailing twelve months). Defaults to annual. | |
| limit | No | Maximum number of periods to return (1-40). Defaults to 8. | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description does not contradict. However, beyond stating the data types and periods, it offers no additional behavioral context (e.g., data source, update frequency, pagination), so it adds minimal value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no wasted words. The first sentence states the action and resource, the second specifies use cases, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (mentioned in context signals) and the clear description of the financial statements and period types, the description is complete for an agent to understand what the tool returns and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description echoes the type parameter's enum values but adds no new meaning for 'ticker' or 'limit' beyond what is in the schema. It does not explain default behavior or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves income statement, balance sheet, and cash flow data, with explicit period options (annual, quarterly, TTM). This distinguishes it from sibling tools like get_earnings or get_cash_history, providing a specific verb-resource pair.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use when analyzing revenue, profitability, debt, or cash position,' giving clear context for when to invoke the tool. However, it does not mention when not to use it or suggest alternative tools for related but distinct data (e.g., cash history), missing an opportunity for explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_floatGet Float DataARead-onlyInspect
Get float and share structure data for a company including shares outstanding, public float, insider ownership percentage, and institutional ownership. Use when analyzing share supply and ownership concentration.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the readOnlyHint annotation by specifying the exact data fields returned. No destructive behavior is implied, and no contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads purpose and includes usage guidance efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 param, no nested objects, output schema exists), the description fully covers what the tool does and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the ticker parameter. The description does not add additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Get), resource (float and share structure data), and lists specific data points (shares outstanding, public float, insider ownership %, institutional ownership). It distinguishes from siblings like get_ownership and get_insider_transactions by focusing on float-specific data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when analyzing share supply and ownership concentration,' providing clear context. It doesn't mention when not to use or suggest alternatives among siblings, but given the specific purpose, it's adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_pricesGet Historical Stock PricesARead-onlyInspect
Get historical OHLCV price candles for a stock. Supports daily, weekly, and monthly resolutions. Use period shorthand (1M, 3M, 6M, 1Y, 5Y, ALL) or explicit from/to UNIX timestamps. Default is 1 year of daily candles. Use this to compute price returns, chart price history, or analyze volume trends over time.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date as UNIX timestamp (overrides period) | |
| from | No | Start date as UNIX timestamp (overrides period) | |
| period | No | Lookback period shorthand (default: "1Y"). Ignored if from/to are provided. | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") | |
| resolution | No | Candle resolution: "D" (daily, default), "W" (weekly), "M" (monthly) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds behavioral context: returns candle format, supports multiple resolutions, default period of 1 year. Adds value beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences. First sentence states main purpose and resolution options. Second sentence covers period flexibility and use cases. No wasted words. Front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, no need to explain returns. Description covers purpose, usage, parameter behavior, and example use cases. Complete for a data retrieval tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% parameter descriptions. Description adds significant extra meaning: explains period shorthand values, default behavior (1Y daily), that from/to override period, resolution default. This goes well beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get' and resource 'historical OHLCV price candles for a stock'. Lists supported resolutions and specific use cases (compute returns, chart, analyze volume). Distinguishes from siblings like get_intraday_bars and get_quote by specifying resolution and period options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use: computing returns, charting, volume analysis. Explains period vs from/to timestamp usage. Doesn't explicitly exclude alternatives but given sibling count, context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_cluster_buysGet Insider Cluster BuysARead-onlyInspect
Detect cluster buying patterns for a company. Identifies periods where 3+ distinct insiders purchased shares within a 14-day window -- a strong bullish signal that often precedes positive corporate announcements or price appreciation.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description elaborates on the analysis performed: identifies clusters with specific criteria (3+ insiders, 14-day window) and interprets the signal as bullish. No contradictions; adds valuable behavioral detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the core function, second details the criteria and implication. Every sentence adds value; no wasted words. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single parameter and existence of an output schema, the description fully covers the tool's purpose, criteria, and significance. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'ticker' is fully described in the schema with an example. The description does not add any additional semantic meaning or constraints beyond what the schema provides. Baseline 3 due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool detects cluster buying patterns for a company, specifying the trigger condition (3+ distinct insiders within 14 days) and its significance as a bullish signal. This distinctively separates it from sibling tools like get_insider_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use (to identify bullish insider clusters) but does not explicitly state when not to use or suggest alternatives. It implies use for predictive signals, which is clear enough among many insider tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_cross_companyGet Cross-Company Insider TradingARead-onlyInspect
Discover insider trading patterns across multiple companies. Unlike get_insiders which shows insider activity for a single ticker, this tool searches the entire universe to find insiders active across multiple companies, cluster buying patterns, and large transactions. Filter by insider name, transaction type, or date range. Useful for detecting coordinated insider activity, cross-company insider networks, and market-wide buying/selling trends.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 10, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| endDate | No | End date for transaction range in ISO format (e.g., "2025-12-31") | |
| startDate | No | Start date for transaction range in ISO format (e.g., "2025-01-01") | |
| insiderName | No | Filter by insider name (partial match, e.g., "Musk" or "Cohen") | |
| transactionType | No | Filter by transaction type: "P" (purchase), "S" (sale), "A" (grant/award), "M" (conversion) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond readOnlyHint: describes searching entire universe, detecting networks and clusters. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose and differentiation, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and all parameters described, the description adequately explains the tool's unique value, use cases, and scope. No need to elaborate on return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% so baseline is 3. Description mentions filtering by name, type, date range which aligns with schema but does not add new meaning beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'discover' and resource 'insider trading patterns across multiple companies'. Distinctly differentiates from sibling get_insiders which focuses on a single ticker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts with sibling get_insiders, guiding when to use this tool (cross-company) vs single-ticker. Mentions filtering options but lacks explicit 'when not to use' scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_positionsGet Insider PositionsARead-onlyInspect
Get current open insider positions for a CIK (either an insider or an issuer). If an issuer (company) CIK is supplied, returns all insiders' positions for that company. If an insider (reporting-person) CIK is supplied, returns that insider's open positions across all issuers they have filed Form 4 for. The response includes a lookupMode field ("issuer" or "insider") indicating which interpretation matched. Derived from Form 4 filings.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the insider OR the issuer (company). Tried as issuer first, then falls back to insider. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description adds that data is derived from Form 4 filings, includes a lookupMode field, and explains the fallback logic (issuer first, then insider). This adds meaningful context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences. The first sentence is the main purpose, followed by two sentences that add necessary nuance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's dual behavior and the presence of an output schema (not detailed), the description adequately explains both use cases, the lookupMode field, and the data source. It is complete for an agent to understand the tool's functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the cik parameter with a description, but the tool description adds the dual interpretation logic (issuer vs. insider) and the fallback behavior, providing significant additional semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves current open insider positions for a CIK, distinguishing between issuer and insider interpretations. It uses a specific verb 'Get' and identifies the resource as 'insider positions', differentiating it from siblings like get_insider_positions_by_ticker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each CIK type (issuer vs. insider) and implies that for ticker-based lookups, other tools like get_insider_positions_by_ticker should be used. While not explicit about alternatives, it provides clear context for the two primary use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_positions_by_tickerGet Insider Positions by TickerARead-onlyInspect
Get per-insider lifetime position aggregates for a given ticker — which insiders hold positions in the stock and their aggregate cost/value. Derived from Form 4 filings.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond readOnlyHint: explains it returns lifetime aggregates of cost/value and source (Form 4). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose, second sentence adds source. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and the tool has only one parameter, the description sufficiently explains purpose, source, and output nature. No missing critical info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for 'ticker'. Description repeats 'given ticker' but adds no extra meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets 'per-insider lifetime position aggregates' for a given ticker, differentiating from sibling tools like get_insider_positions and get_insider_transactions. Verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for aggregate insider positions per ticker, but no explicit when-not-to-use or alternative tools mentioned. Context from 'Derived from Form 4' helps, but guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insidersGet Insider Trading IntelligenceARead-onlyInspect
Get insider trading discovery data for a company. Includes cluster buying detection, entity-centric insider model, and Form 4 cross-referencing. Shows insider transactions with buying/selling patterns that may signal upcoming corporate actions. Each insider includes a transactionBreakdown by SEC code (P=Purchase, S=Sale, F=Tax withholding, M=Exercise, G=Gift, A=Award), netSharesSold12m (code S only, excludes tax withholding), and isPrimarilyTaxWithholding flag to distinguish routine RSU vesting from discretionary selling. Supports pagination with limit/offset.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 20, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds valuable behavioral context: explains transaction breakdown by SEC code, fields like netSharesSold12m and isPrimarilyTaxWithholding, and pagination support. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph that front-loads the purpose and efficiently conveys all necessary details without unnecessary repetition. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of insider data, the description covers key aspects (cluster buying, transaction breakdown, flags, pagination) and leverages the output schema. It feels complete for an AI agent to understand what data to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description merely reiterates the parameters (ticker, limit, offset) without adding significant new information beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get insider trading discovery data for a company' and lists specific features like cluster buying detection, entity-centric insider model, and Form 4 cross-referencing, distinguishing it from sibling tools such as get_insider_transactions which focus on raw transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comprehensive insider analysis but does not explicitly state when to use this tool versus alternatives like get_insider_transactions or get_insider_positions. There is no direct guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_transactionsGet Insider TransactionsARead-onlyInspect
Get detailed insider transaction history for a company from Form 4 filings. Returns individual buy/sell transactions with insider name, title, shares, price, and transaction codes. Supports pagination for companies with extensive insider activity. Filter by year/month to narrow results, or use transactionCode to find only purchases (P), sales (S), etc. Useful for identifying "first insider buy since X" patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Filter by transaction year (e.g., 2025) | |
| limit | No | Maximum results to return (default: 20, max: 100) | |
| month | No | Filter by transaction month (1-12, requires year) | |
| offset | No | Offset for pagination (default: 0) | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) | |
| transactionCode | No | Filter by SEC transaction code: P=Purchase, S=Sale, A=Grant/Award, M=Exercise/Conversion, F=Tax withholding, G=Gift, C=Conversion, W=Will, D=Disposition to issuer, etc. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, and description aligns with read-only behavior by stating 'Returns individual buy/sell transactions.' Discloses pagination and filtering behavior beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with key information front-loaded. Every sentence adds value, no wasted words. Structure is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, output schema present, and no nested objects, the description fully covers the tool's capabilities: pagination, filtering by year/month/transactionCode, and the use case. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but description adds value by explaining transactionCode with examples (P=Purchase, S=Sale, etc.) and clarifying that month requires year. This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get detailed insider transaction history for a company from Form 4 filings' with specific verb and resource. It also lists what is returned (insider name, title, shares, price, transaction codes), distinguishing it from sibling tools like get_insider_positions or get_insider_cluster_buys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: 'Supports pagination for companies with extensive insider activity' and 'Filter by year/month... use transactionCode to find only purchases...' Includes a use case: 'Useful for identifying first insider buy since X patterns.' Does not explicitly state when not to use, but context from sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_activityGet Institution ActivityARead-onlyInspect
Get an institution's position changes over recent 13F periods by CIK. Reads the number of trailing periods to include.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution | |
| periods | No | Number of trailing quarters to include (default: 4, max: 12) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds 'Reads the number of trailing periods to include,' which clarifies parameter behavior but does not disclose additional traits like data source frequency or response format. With annotations present, the description provides adequate but minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the core purpose with specific verbs and resources, and the second adds a brief parameter note. No unnecessary words, front-loaded with key info. This is an exemplary efficient description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, output schema exists), the description covers the essential purpose and parameter roles. It mentions '13F periods' for context. It could note the required CIK, but the schema already does that. For a read-only tool with rich schema, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes both parameters (cik as SEC CIK, periods with min/max). The description adds only that periods 'include' trailing periods, which is a slight restatement. It does not add significant meaning beyond the schema, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets an institution's position changes over recent 13F periods by CIK, specifying the resource (position changes) and the constraint (13F periods). This distinguishes it from siblings like get_institution_holdings (snapshot) and get_institution_position_changes (likely without period specificity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when historical position changes over multiple quarters are needed, but it does not explicitly state when to use this tool over alternatives (e.g., get_institution_holdings for current holdings) or provide exclusions. Usage context is inferred but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_derivativesGet Institution DerivativesARead-onlyInspect
Get an institution's reported PUT/CALL derivative positions by CIK (13F options), with pagination and sorting.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution | |
| limit | No | Maximum results to return (default: 20) | |
| offset | No | Offset for pagination (default: 0) | |
| period | No | Filing period to filter (e.g., "2025-Q1") | |
| sortBy | No | Column to sort by | |
| sortOrder | No | Sort direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, which matches. Description adds pagination/sorting behavior but no additional safety notes, recency, or other constraints. Fair 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no extra words. All key elements present: verb, resource, identifier, features. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, output schema, and annotations, the description adequately covers core purpose. Lacks error handling or edge cases, but sufficient for a retrieval tool with rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully defined. Description mentions 'pagination' (implied by limit/offset) and 'sorting' but adds no semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'PUT/CALL derivative positions', identifier 'by CIK (13F options)', and features 'pagination and sorting'. Distinguishes from siblings like get_institution_holdings by focusing on derivatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use. Lacks comparisons to sibling tools or exclusions. Agent must infer that this is for options data from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_detailGet Institution DetailARead-onlyInspect
Get detailed information about a specific institutional investor by their SEC CIK number. Returns the institution name, total AUM, number of holdings, and filing history. Use get_institutions first to find the CIK for an institution.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution (e.g., "0001067983" for Berkshire Hathaway) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns by stating it 'gets' information. The description adds value by detailing the output content (name, AUM, holdings, filing history), which goes beyond the annotation. No behavioral contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The purpose is front-loaded, and each sentence serves a distinct function: stating the action and providing usage guidance. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown but flagged by context signals), the description need not enumerate return fields in detail. It still lists key output fields and explains the prerequisite. For a one-parameter lookup tool, this is mostly complete, though it could mention error handling for invalid CIKs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the 'cik' parameter with a format example, and schema coverage is 100%. The description adds extra context ('Use get_institutions first to find the CIK'), which helps the agent understand how to obtain the parameter value. This adds meaning beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information about a specific institutional investor by their SEC CIK number.' It specifies the verb ('get'), the resource ('detailed information about a specific institutional investor'), and the method ('by their SEC CIK number'). It also lists the returned fields (name, AUM, holdings, filing history), distinguishing it from siblings like get_institutions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use get_institutions first to find the CIK for an institution.' This helps the agent understand the prerequisite. However, it does not contrast with other institutional detail tools like get_institution_activity, but the context is sufficient for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_filingsGet Institution FilingsARead-onlyInspect
Get the list of 13F filings for an institution by CIK, with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution | |
| limit | No | Maximum results to return (default: 20, max: 50) | |
| offset | No | Offset for pagination (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the agent knows it is a safe read operation. The description adds that it returns a list of filings with pagination. No contradictions or missing behavioral context that is not already covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence front-loading the core purpose and key features. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of annotations, input schema with 100% coverage, and an output schema, the description is sufficiently complete. It does not mention that 13F filings are quarterly, but that is not critical for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate descriptions for all parameters. The description adds minimal value beyond that by mentioning pagination. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'list of 13F filings', the key parameter 'by CIK', and the feature 'with pagination'. It distinguishes itself from siblings like get_institution_holdings or get_institution_activity by specifying it is for filings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its many siblings (e.g., get_institution_holdings, get_institution_activity). The agent would have no context to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_holdingsGet Institution HoldingsARead-onlyInspect
Get the full portfolio holdings for a specific institution by CIK. Returns all positions from their latest 13F filing with shares, value, and portfolio weight. Supports pagination for institutions with large portfolios.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution | |
| limit | No | Maximum results to return (default: 20, max: 100) | |
| offset | No | Offset for pagination (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description aligns with that by stating it returns holdings details. It adds behavioral context beyond annotations by noting pagination support and the specific data returned (shares, value, weight).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no wasted words, and front-loaded with the key action and inputs. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return structures. It covers the core functionality, pagination, and what data is returned, making it sufficient for the 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to re-explain parameters. It adds context about pagination and the nature of the returned data (latest 13F filing), but does not significantly enhance understanding beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full portfolio holdings for a specific institution by CIK, returning positions from the latest 13F filing with shares, value, and portfolio weight. It differentiates from sibling tools like get_institution_activity or get_institution_detail by focusing on portfolio holdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (e.g., when needing complete portfolio data for an institution by CIK). It does not explicitly state when not to use it or mention alternatives, but the use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_portfolio_analyticsGet Institution Portfolio AnalyticsARead-onlyInspect
Get sector allocation and top holdings analytics for an institution's portfolio by CIK.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds context about the output (sector allocation, top holdings) but does not elaborate on other behavioral traits like data freshness, pagination, or limits. It is consistent with annotations, but no additional behavioral details are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key action and resource. No extraneous words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (as indicated by context signals), the description adequately covers the tool's purpose. It is a simple lookup with one parameter, so the description is sufficient. However, a slightly more detailed description of the analytics (e.g., typical fields returned) would be helpful but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description mentions 'by CIK', but the schema already defines the 'cik' parameter with a description. The description adds no meaningful semantic value beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves sector allocation and top holdings analytics for an institution's portfolio, identified by CIK. It uses a specific verb ('Get') and resource ('sector allocation and top holdings analytics'), distinguishing it from similar sibling tools like get_institution_holdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are many sibling tools related to institutions (e.g., get_institution_holdings, get_institution_position_changes), but no scenarios, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_position_changesGet Institution Position ChangesARead-onlyInspect
Diff two quarterly 13F snapshots for an institution. Compares the latest filing against the prior quarter and returns per-position changes: new positions, increased, decreased, and exited. Sorted by |changePercent| descending so the biggest moves surface first. Much more efficient than calling get_institution_holdings twice and diffing client-side — the server computes everything in a single SQL query.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK number of the institution (e.g., "0001067983" for Berkshire Hathaway) | |
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Offset for pagination (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so description adds value by explaining the server-side computation and sorting behavior (by |changePercent| descending). No contradictions. Minor omission: no mention of what happens if no prior filing exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second explains efficiency and sorting. Every sentence adds value; no fluff. Front-loaded with action verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description sufficiently covers purpose, efficiency, and sorting. However, it could mention handling of missing prior filings or date boundaries. Still strong for a read-only tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context but does not elaborate on parameters beyond the example in cik description. It mentions sorting but not parameter constraints (limit/offset). Adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Diff') and clearly identifies the resource (two quarterly 13F snapshots for an institution) and the output (per-position changes: new, increased, decreased, exited). It distinguishes this tool from siblings like get_institution_holdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: for comparing latest filing to prior quarter. It also provides an alternative ('get_institution_holdings twice and diffing client-side') and explains why this tool is better (efficiency). Lacks explicit 'when not to use' but still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institutionsGet Institutional HoldersARead-onlyInspect
Get institutional holders (13F filers) for a company. Returns institutions that hold positions in this stock based on SEC 13F filings, including shares held, portfolio weight, and filing dates. Useful for understanding institutional ownership concentration.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 20, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description correctly adds context about the data source (SEC 13F filings) and returned fields (shares held, portfolio weight, filing dates). No contradictions noted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous text. Purpose, data source, and output fields are front-loaded, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, data source, and key output fields. Given the presence of an output schema (not shown but referenced in context), it does not need to detail return values. Ample context for a read-only data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with full descriptions for each parameter. The description adds value by listing the output fields (shares held, etc.) but does not elaborate on parameter semantics beyond what the schema provides. Baseline 3 maintained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get', the resource 'institutional holders (13F filers)', and the scope 'for a company'. It distinguishes from sibling tools that focus on specific institutions (e.g., get_institution_detail) by specifying company-level query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for understanding institutional ownership concentration but does not explicitly state when to use this tool vs alternatives, nor does it mention when not to use it. No alternative tool names are referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institutions_leaderboardsGet Institution LeaderboardsARead-onlyInspect
Two market-wide institution leaderboards in one call: topByAum (largest holders by assets under management, name-deduped) and mostActive (highest 13F position-change volume). No CIK required. For the full paginated AUM list use get_institution_top_aum.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results per section (default: 10, max: 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the readOnlyHint annotation by specifying that the tool returns two leaderboards with deduplication and volume metrics. It does not contradict the annotation and discloses the scope of the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first defines the tool's purpose and output, the second provides an alternative. It is front-loaded and concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no nested objects, output schema exists), the description fully covers the necessary context: what the tool returns, that it's market-wide, and the alternative for paginated results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage on the single 'limit' parameter, describing it fully. The description does not mention the parameter, but the schema already provides the necessary semantics. Hence, baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns two specific leaderboards: 'topByAum' (largest holders by AUM, name-deduped) and 'mostActive' (highest 13F position-change volume). The verb 'get' and resource 'institution leaderboards' are clear, and the distinction from the sibling 'get_institution_top_aum' is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that no CIK is required, simplifying use, and directs to 'get_institution_top_aum' for a full paginated AUM list, offering clear guidance on when to use an alternative. It lacks explicit 'when not to use' but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution_top_aumGet Top Institutions by AUMARead-onlyInspect
Discover top institutional holders across the entire company universe ranked by assets under management (AUM). Unlike get_ownership which shows institutions for a single company, this tool searches across all companies to find the largest institutional players. Optionally set a minimum AUM. Useful for identifying smart money flows and major institutional positioning trends.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 25, max: 100) | |
| minAum | No | Minimum AUM in USD to filter institutions (e.g., 1000000000 for $1B+) | |
| offset | No | Offset for pagination (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no additional safety disclosure needed. Description adds behavioral context: searches across all companies, ranks by AUM, optionally filters by minimum AUM. Does not mention pagination or return format, but output schema exists (not shown) to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, well-structured. The first sentence fronts the core purpose and scope. The second sentence adds differentiation and optional feature. Very little redundancy, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with 3 optional parameters, readOnlyHint annotations, and output schema present, the description adequately covers key aspects (purpose, scope, differentiation, optional filter). Satisfies completeness for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all three parameters documented). The description adds a brief mention of minimum AUM but no additional semantic value beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Discover top institutional holders across the entire company universe ranked by assets under management (AUM)' with a specific verb and resource. Explicitly distinguishes from sibling tool get_ownership by noting the scope difference (across all companies vs. single company).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context for when to use this tool compared to get_ownership (single company vs. all companies). Mentions optional parameter (minimum AUM) and practical use case ('identifying smart money flows'). Lacks explicit when-not-to-use statements but sufficiently guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intraday_barsGet Intraday Price BarsARead-onlyInspect
Get intraday OHLCV candles at 1, 5, 15, 30, or 60-minute resolution. Use for intraday price action analysis, volume patterns, and short-term technical analysis. Returns open, high, low, close, and volume for each bar. Set extended=true (1-minute resolution only) to include premarket (04:00–09:30 ET) and after-hours (16:00–20:00 ET) bars.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time as UNIX timestamp | |
| from | Yes | Start time as UNIX timestamp | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") | |
| extended | No | Include extended-hours bars (premarket 04:00–09:30 ET and after-hours 16:00–20:00 ET). Only supported with resolution "1". | |
| resolution | Yes | Bar resolution in minutes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds behavioral details: extended-hours inclusion with resolution constraints, which is valuable beyond the schema. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences with no fluff. Key information is front-loaded: what it returns, resolutions, usage, and extended-hours details. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety (readOnly) and output schema presumably detailing return fields, the description covers usage context, resolution options, and extended-hours behavior fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described). The description adds nuance: 'Set extended=true (1-minute resolution only) to include premarket...'—this clarifies a constraint not fully captured in schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches intraday OHLCV candles at specific resolutions (1, 5, 15, 30, 60 min). This distinguishes it from sibling tools like 'get_historical_prices' which likely provide daily or longer-term data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends using this tool for 'intraday price action analysis, volume patterns, and short-term technical analysis'. It does not explicitly mention when not to use or alternatives, but the context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_legislative_calendarGet Legislative CalendarARead-onlyInspect
Forward-looking legislative catalyst calendar: upcoming House/Senate floor votes (bills and Senate cloture motions) filtered to items that can move tickers. Each item includes the predicted vote window (start/end/granularity/confidence/provenance), marketRelevance (low/medium/high), significance (1-5), affected sectors with direction + mechanism, verified affected tickers with evidence quotes, pass outlook, considerationProcedure (suspension-calendar bills pass ~98% of the time), a conflictBadge when the sponsor traded a verified affected ticker, and tweet/plain summaries. An EMPTY calendar is a normal state — it means nothing market-relevant is scheduled in the window, not an error. Defaults: from=today, to=+14 days, minRelevance=low. IMPORTANT: affectedTickers contains VERIFIED rows only — every ticker carries a verbatim evidenceQuote substring-verified against the actual bill text (no hallucinated tickers). sponsorTradeFacts are restatements of public STOCK Act disclosures with verbatim amount brackets and BOTH transactionDate AND disclosureDate — always cite both dates together (disclosures lag trades by up to 45 days), and never present a fact as evidence of wrongdoing. Vote windows are predictions: check window.provenance for trust level ('uc_explicit' is exact; 'rule_xxii_computed' is a medium-confidence estimate) and window.granularity for how precise the window is (exact time vs day vs week).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest vote-window date inclusive (YYYY-MM-DD, default: today + 14 days) | |
| from | No | Earliest vote-window date inclusive (YYYY-MM-DD, default: today) | |
| limit | No | Maximum results to return (default: 25, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| minRelevance | No | Minimum market relevance: 'low' (default), 'medium', 'high', or 'none' (explicit opt-in to the full audit trail incl. non-market items — rarely useful) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds significant behavioral context: empty calendar is normal, vote windows are predictions with provenance/granularity, affectedTickers are verified verbatim, and sponsorTradeFacts require citing both dates with no suggestion of wrongdoing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with front-loaded core purpose and subsequent details. Every sentence provides useful information, though it could be slightly more concise without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, output schema exists), the description covers behavior, edge cases, warnings, and interpretation thoroughly. It is complete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds value by stating defaults for from/to and minRelevance, and explains the 'none' option for minRelevance as 'explicit opt-in to the full audit trail'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'Forward-looking legislative catalyst calendar' of upcoming House/Senate floor votes filtered to market-relevant items. This specific verb-resource combination distinguishes it from sibling tools like get_economic_calendar or get_earnings_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains defaults (from=today, to=+14 days, minRelevance=low) and how to interpret an empty result (normal state, not error). It does not explicitly state when to use this vs. alternatives like get_policy_events, but the context is clear enough for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_breadthGet Market BreadthARead-onlyInspect
Get market breadth aggregates (advance/decline counts and ratio, percent of constituents above their 50DMA and 200DMA, and counts of new 52-week highs/lows) for a chosen universe (sp500, ndx, or all). Use to add market-state context to commentary, tweets, or daily summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| universe | No | Universe to aggregate over: sp500, ndx, or all (default sp500) | sp500 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so read-only nature is known. The description adds detail on output metrics but no additional behavioral traits beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences front-load the purpose and use case with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple (one optional parameter with enum) and the description fully explains output and usage. Output schema exists, so return value details are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description merely reiterates the universe parameter without adding new meaning beyond the schema's enum values and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'Get' and resource 'market breadth aggregates', listing specific metrics. However, it does not explicitly differentiate from sibling tools like get_market_metrics, so it lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'add market-state context to commentary, tweets, or daily summaries.' It does not, however, state when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_metricsGet Market MetricsARead-onlyInspect
Get computed market metrics for a company including volume averages, volatility, SMAs, and trend direction. Use when analyzing trading patterns or technical indicators beyond the basic quote.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's burden is lower. The description adds behavioral context by listing the computed metrics returned (volume averages, volatility, SMAs, trend direction), which is consistent with the read-only nature. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the tool's action and output, and every sentence adds value. No redundant or missing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a single required parameter (with clear schema), an output schema (not shown but flagged true), and clear sibling differentiation, the description is complete. It covers purpose, usage context, and expected outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the ticker parameter has a description). The tool description does not add additional meaning beyond what the schema provides for the parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Get[s] computed market metrics for a company' and lists specific metrics (volume averages, volatility, SMAs, trend direction). It distinguishes itself from the sibling tool get_quote by noting it goes 'beyond the basic quote', making its specific purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use: 'Use when analyzing trading patterns or technical indicators beyond the basic quote.' This implies alternatives (like get_quote for basic quotes) and sets clear context, though it does not explicitly list alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_newsGet Company NewsARead-onlyInspect
Get recent news articles and press releases for a company. Use when researching recent developments, catalysts, or sentiment drivers. Set pressReleasesOnly to return only official company press releases.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of articles to return (1-20). Defaults to 10. | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") | |
| pressReleasesOnly | No | When true, return only official company press releases (exclude third-party news). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds context on the scope of returned data (news articles and press releases). No contradictions, and the behavior is clear for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each serving a distinct purpose: stating the tool's function and providing usage guidance. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (3 parameters, 1 required, output schema present), the description adequately covers when and how to use it, making it complete for effective agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description merely reiterates the pressReleasesOnly parameter's effect without adding new information. Baseline score of 3 is appropriate as no additional semantic value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves recent news articles and press releases for a company, using a specific verb and resource. With no other news-related sibling tools, it is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use case: 'Use when researching recent developments, catalysts, or sentiment drivers.' Provides guidance on the pressReleasesOnly parameter but does not include when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ownershipGet Comprehensive OwnershipARead-onlyInspect
Get unified ownership breakdown for a company combining Form 4 insider holdings, 13F institutional holdings, and 13D/13G activist positions. All entities are resolved across the three SEC form types into a single view with counterparty resolution. The allHolders array is paginated via limit/offset (default 100). Aggregate stats (institutional/insider/beneficial/retail totals and percentages) are always included in full.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum holders to return in allHolders (default: 100, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating no side effects. The description adds behavioral details: pagination via limit/offset (default 100), and that aggregate stats are always included. This goes beyond the annotation to inform the agent about output structure and pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. The first sentence establishes the core purpose, and the second provides essential pagination and output details. Every sentence adds value, making it both efficient and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and the complexity of aggregating multiple SEC form types, the description covers key aspects: data sources, counterparty resolution, pagination behavior, and aggregate stats. It is complete enough for an agent to use correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context: it explains that limit and offset control pagination for the allHolders array, with default 100 and max 100 for limit. This clarifies the parameters' purpose beyond the schema's type and constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a unified ownership breakdown combining Form 4, 13F, and 13D/13G holdings. It specifies the resource ('ownership breakdown for a company') and scope ('comprehensive'), effectively differentiating it from siblings that focus on individual form types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for a consolidated view of ownership data but does not explicitly state when to use this tool versus alternative siblings like get_institution_holdings. It provides clear context for its role as an aggregator, but 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.
get_policy_eventsGet Policy EventsARead-onlyInspect
List mirrored executive orders (policy events) from the Federal Register feed. Filter by signing-date range, affected sector, or free-text title query. Each event includes its Federal Register document number (externalId), title, signing date (eventDate), normalized affected sectors, full-text URL, and flaggedTradeCount — the number of official trades that occurred in an affected sector near the signing date. IMPORTANT: matches are sector-level co-occurrence — the official traded a stock in a sector the executive order affects, within a window of its signing date. Sector matches are broad and many trades will coincide with policy activity by chance; a match is a starting point for research, not evidence of foreknowledge. The matchBasis field describes match strength only ('sector' = broad sector match), never culpability, and matchCount shows how many EOs matched in the window (a noise indicator).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search over event titles | |
| to | No | Latest signing date inclusive (YYYY-MM-DD) | |
| from | No | Earliest signing date inclusive (YYYY-MM-DD) | |
| limit | No | Maximum results to return (default: 25, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| sector | No | Filter by canonical affected sector (one of the 11 canonical sector strings, e.g. "Healthcare", "Financial Services", "Energy") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds crucial behavioral context: matches are sector-level co-occurrence, not evidence of foreknowledge, and the matchBasis field only indicates match strength. This transparency helps the agent interpret results correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and filters, then provides important caveats. It is slightly lengthy but every sentence is meaningful. Could be streamlined but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count (6), full schema description, and presence of output schema, the description covers all necessary context including result interpretation. It is complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, but the description adds meaning by explaining the purpose of filters and detailing output fields (externalId, title, eventDate, flaggedTradeCount, matchBasis, etc.) and their interpretation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists mirrored executive orders from the Federal Register feed with specific filters (signing-date range, sector, title query). It distinguishes itself from sibling tools by focusing on policy events, which are unique among the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to list and filter policy events) and explains the meaning of match results. It does not explicitly state when not to use or offer alternatives, but the tool's purpose is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policy_trade_leaderboardGet Policy-Trade LeaderboardARead-onlyInspect
Rank politicians (Congress + executive branch) by trades that occurred near executive-order signings in sectors the orders affect. Each row includes the politician, flaggedTradeCount, totalEstimatedUsd, topSector, and an exampleEvent. Use for "who trades most around policy activity" style questions. Defaults to the same "traded 1-14 days before signing" lens as get_policy_trade_overlap; same-day trades are always excluded. IMPORTANT: matches are sector-level co-occurrence — the official traded a stock in a sector the executive order affects, within a window of its signing date. Sector matches are broad and many trades will coincide with policy activity by chance; a match is a starting point for research, not evidence of foreknowledge. The matchBasis field describes match strength only ('sector' = broad sector match), never culpability, and matchCount shows how many EOs matched in the window (a noise indicator).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Ranking order: 'usd' (default — estimated USD value) or 'count' (flagged-trade count) | |
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| window | No | Match window in days around the EO signing date (default: 14, max: 30) | |
| direction | No | Which side of the signing date to include: 'before' (default), 'after', or 'both' |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description goes beyond by detailing sector-level matching, window defaults, direction options, and crucial caveats about matches being co-occurrence, not evidence. This adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat verbose (over 100 words) and includes detailed caveats. While front-loaded with the main purpose, it could be more concise without losing essential warnings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 optional parameters and an existing output schema, the description covers return fields (flaggedTradeCount, totalEstimatedUsd, etc.), match logic, and important limitations. It is complete for an AI agent to understand tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minor context (defaults, exclusion of same-day trades) but does not significantly enhance parameter understanding beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool ranks politicians by trades near executive-order signings, using a specific verb ('rank') and resource ('politicians'). It distinguishes from the sibling get_policy_trade_overlap by noting the default lens and same-day exclusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for <U+2018>who trades most around policy activity<U+2019> style questions.' It references a sibling tool but does not provide explicit when-not-to-use or alternatives. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policy_trade_overlapGet Policy-Trade OverlapARead-onlyInspect
For a single politician, list trades that occurred within a window of days before or after the signing of an executive order affecting the traded sector. Each row contains the trade, the nearestEvent, daysDelta (negative = traded N days before EO signing, positive = traded N days after), matchBasis, and matchCount, plus a summary (totalFlags, totalEstimatedUsd, topSector). Defaults to trades 1-14 days BEFORE signing; same-day trades are always excluded (intraday ordering is unknowable). Unlike get_donor_trade_overlap, executive-branch (exec-) slugs return REAL data here: both congressional and executive trade sources feed the overlap computation. IMPORTANT: matches are sector-level co-occurrence — the official traded a stock in a sector the executive order affects, within a window of its signing date. Sector matches are broad and many trades will coincide with policy activity by chance; a match is a starting point for research, not evidence of foreknowledge. The matchBasis field describes match strength only ('sector' = broad sector match), never culpability, and matchCount shows how many EOs matched in the window (a noise indicator).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug — congressional ("sen-nancy-pelosi", "rep-...") or executive branch ("exec-...") | |
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| window | No | Match window in days around the EO signing date (default: 14, max: 30) | |
| direction | No | Which side of the signing date to include: 'before' (default), 'after', or 'both' |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description consistently describes a read-only operation. It exceeds annotation value by detailing exclusions (same-day trades), default direction, and match interpretation (sector-level, not culpability). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-organized with a clear lead sentence followed by details on output, defaults, caveats, and comparison. It is slightly long but each sentence adds value given the tool's complexity. Could be tightened slightly without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, sector-level matching nuance), the description covers defaults, exclusions, match interpretation, and distinction from a sibling. Output schema exists, so return value details are offloaded. The warning about false positives completes the picture for appropriate use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds significant meaning: explains slug formats (congressional vs exec), defaults for window and direction, and clarifies that same-day trades are excluded. It also elaborates on output fields like matchBasis and matchCount beyond schema hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists trades for a single politician within a window around executive order signing, with specific verb 'list' and resource 'trades'. It distinctly separates from sibling get_donor_trade_overlap by noting executive-branch slug behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it's for a single politician, defaults to 1-14 days before, and warns that matches are sector-level and not evidence. It could be improved by explicitly stating when not to use or listing alternatives, but the sibling context and differentiation from get_donor_trade_overlap offer adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_political_sector_rotationGet Political Sector RotationARead-onlyInspect
Which market SECTORS politicians have been trading in over a trailing window. Aggregates congressional + executive trades by sector and returns, per sector: trade count, total dollar volume, number of distinct politicians, and the top tickers. Use it to see where political trading activity is concentrating (e.g. "politicians piled into Energy this month"). Sort by count or dollar volume.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Top-N sectors to return (default: 15, max: 30) | |
| sortBy | No | Rank sectors by trade count or summed dollar volume (default: count) | |
| chamber | No | Optional chamber filter (default: all chambers merged) | |
| windowDays | No | Lookback window in days (default: 30, max: 90) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the read-only nature (consistent with annotations) and explains the aggregation behavior and output fields. It adds value beyond the readOnlyHint by detailing what data is returned and how it is grouped, ensuring transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus an illustrative example, all front-loaded and directly relevant. Every sentence adds value, with no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and thorough parameter descriptions in the schema, the description provides sufficient context about the tool's purpose and output. It covers all necessary aspects for an agent to select and use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by mentioning sorting by count/volume and the lookback window, and it implies the aggregation scope, which aids parameter understanding. It goes slightly beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool aggregates trades by sector, listing specific return fields (trade count, dollar volume, distinct politicians, top tickers). It uses a specific verb 'get' and resource 'political sector rotation', distinguishing it from sibling tools that focus on individual politicians or trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an example usage ('politicians piled into Energy this month') and suggests sorting by count or volume, giving clear context. However, it does not explicitly state when not to use it or compare with alternatives like get_politician_transactions or get_policy_trade_leaderboard, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_activityGet Politician ActivityARead-onlyInspect
Get activity metrics for a politician broken down by period (30d, 90d, 1y, all-time). Includes buy/sell counts and values per period, most traded tickers (top 10), and transaction type breakdown. Useful for analyzing trading patterns over time.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating safe read operations. The description adds value by detailing the output structure (periods, counts, values, top tickers, type breakdown) without contradicting annotations. No behavioral quirks or auth needs are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently communicate the tool's purpose, data content, and usage context. No extraneous information, and the most critical details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to detail return values. It covers all necessary aspects for a read tool: what data is returned and its purpose. The presence of annotations and schema makes this complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter (slug) adequately described. The description does not add new information about the parameter itself; it explains output features (periods) which are not parameters. Baseline 3 is appropriate as the schema already handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves activity metrics for a politician with specific breakdowns by time period, mentioning key data points like buy/sell counts, top tickers, and transaction types. It effectively distinguishes from siblings by emphasizing aggregated periodic data over individual transactions or profit/loss.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes the tool is useful for analyzing trading patterns over time, implying usage for aggregated periodic data, but it does not explicitly state when to avoid it or suggest alternatives. With many sibling tools, direct guidance would improve selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_committeesGet Politician CommitteesARead-onlyInspect
Get committee assignments for a politician including committee name, chamber, role (Chair, Ranking Member, etc.), and subcommittee memberships. Use to correlate trading activity with committee oversight areas. Requires a politician slug (e.g. "sen-nancy-pelosi") -- use get_politicians first to find the slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi", "rep-nancy-pelosi") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description's burden is lower. It adds the type of data returned but does not discuss potential limits, data freshness, or authorization details. Acceptable but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines output, second gives usage guidance and prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, output schema exists) and sibling tools, the description provides enough context to use the tool effectively. Could mention if assignments are current or historical, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds concrete examples (e.g., 'sen-nancy-pelosi') and links the slug to the prerequisite tool. This exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves committee assignments for a politician, listing explicit fields (committee name, chamber, role, subcommittees). This distinguishes it from sibling tools like get_politician_detail or get_politician_roles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description advises to use for correlating trading activity with oversight, and clearly states the prerequisite: use get_politicians first to obtain the slug. It does not explicitly mention when not to use, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_detailGet Politician DetailARead-onlyInspect
Get the full profile for a politician including party, state, chamber, trade statistics, filing delay metrics, most traded sector, and their 10 most recent transactions. Use get_politicians first to find the slug (e.g. "sen-nancy-pelosi").
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi", "sen-tommy-tuberville") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description's 'get' verb confirms a safe read operation. The description adds value by detailing the specific data fields returned, giving the agent a clear picture of what to expect beyond the annotation's binary safety signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each earning its place: the first defines purpose and output, the second provides usage guidance. There is no redundant repetition of schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, 100% schema coverage, and presence of an output schema, the description adequately covers all necessary context. It tells the agent what the tool does, what data it returns, and how to obtain the required input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the schema already documents the slug parameter well. The description adds value by explaining that the slug should be obtained from get_politicians and provides an example ('sen-nancy-pelosi'), which is helpful for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly lists the return fields (party, state, chamber, trade statistics, filing delay metrics, most traded sector, and 10 most recent transactions), clearly distinguishing it from many sibling politician tools that focus on narrower aspects like activity, donors, or transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: 'Use get_politicians first to find the slug.' This guides the agent on parameter acquisition. However, it does not explicitly state when not to use this tool or suggest alternatives for different needs, which would elevate it to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_donorsGet Politician DonorsARead-onlyInspect
Get the paginated list of campaign donors (individuals and PACs) for a single politician across one election cycle. Returns donor name, amount, type, employer/occupation (individuals), and committee details (PACs). Use this when a user asks "who donated to " or wants the full donor list. For a quick top-10 + cycle totals overview, use get_politician_donor_summary instead.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi") | |
| type | No | Filter by donor type: 'individual', 'pac', or 'all' (default: 'all') | |
| cycle | No | Election cycle as 4-digit year (e.g. "2024"). Defaults to most recent cycle. | |
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| sortBy | No | Sort field: 'amount' (default), 'date', or 'name' | |
| minAmount | No | Minimum contribution amount in USD (filters out small donors) | |
| sortOrder | No | Sort direction (default: 'desc') |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and description aligns (no write actions). The description adds context about pagination and the specific data fields returned (donor name, amount, type, etc.), which is helpful but not excessive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: first defines the tool's core action and output, second provides clear usage guidance with sibling comparison. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema existence and 8 parameters, the description captures the primary use case and differentiates from a sibling. It doesn't cover all edge cases or defaults, but those are addressed in the schema. Reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by summarizing output fields (e.g., employer/occupation for individuals, committee details for PACs) that are not in the schema, and implies filtering capabilities. This enriches understanding beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves paginated campaign donors for a single politician, specifying the resource and verb. It distinguishes from get_politician_donor_summary by noting that this tool provides a full list rather than a summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool (when user asks for full donor list) and when to use the alternative (quick top-10 summary). Names the sibling tool get_politician_donor_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_donor_summaryGet Politician Donor SummaryARead-onlyInspect
Get a bundled donor summary for a single politician: cycle totals (raised, spent, cash-on-hand, debts), donor count, top 10 individual donors, and top 10 PAC donors — all in one response. This is the right tool for "who funds " or "biggest donors to " style questions. For the full paginated list, use get_politician_donors.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi") | |
| cycle | No | Election cycle as 4-digit year (e.g. "2024"). Defaults to most recent cycle. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and description adds detail on the summary contents (cycle totals, donor count, top donors). No contradictions. It does not discuss rate limits or data freshness, but adequately covers behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then usage guidelines. Every sentence adds value. No wordiness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently explains the summary's content and use case. It could add more on aggregation logic, but not necessary for agent selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so the schema already documents both parameters. The description implies slug use but adds minimal extra beyond schema. It hints at cycle defaulting to most recent, but that's already in schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a bundled donor summary for a single politician, listing specific data points (cycle totals, donor count, top donors). It distinguishes from the sibling tool get_politician_donors for a full paginated list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this tool for 'who funds <politician>' or 'biggest donors to <politician>' questions, and directs to get_politician_donors for a full paginated list. Provides when-not and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_late_filersGet Politician Late FilersARead-onlyInspect
Get STOCK Act late filing violations -- trades where the disclosure was filed more than 45 days after the transaction (a legal violation). Sorted by filing delay descending. Useful for identifying politicians with poor disclosure compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback period in days (default: 180, max: 730) | |
| limit | No | Maximum results to return (default: 10, max: 50) | |
| offset | No | Pagination offset (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and description adds that results are sorted by filing delay descending. No contradictions; description complements annotations with sorting and legal violation context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with key information: subject, criteria, sorting, and use case. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description provides sufficient context: purpose, filtering criterion, sorting, and practical use. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-described. The description does not add additional meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the tool as retrieving STOCK Act late filing violations, with specific criteria (disclosure >45 days after transaction) and sorting by filing delay. Distinguishes from siblings like get_politician_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the tool is useful for identifying politicians with poor disclosure compliance. While not explicitly excluding alternatives, the specific focus on late filings provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_pnlGet Politician P&LARead-onlyInspect
Get estimated realized + unrealized profit & loss for a politician. Methodology: each disclosed trade amount range is converted to an estimated share count using the stock's historical market price on the transaction date, then FIFO-matched on SHARES (realized = (sellPrice − buyPrice) × matched shares); open positions are marked to the current price for unrealized P&L. Works for Congress (sen-/rep-) AND executive branch (exec-) officials. Response includes a totals object (estimatedRealizedPnl, estimatedUnrealizedPnl, winRate, realizedTrades, tickersTraded) and a byTicker[] breakdown (estimatedShares, avgCostBasis, currentPrice, realizedPnl, unrealizedPnl, unrealizedPnlPercent) — byTicker open positions double as the estimated holdings. All figures are ESTIMATES (±25-40% from disclosure bracket width). Use get_politicians first to find the slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug — congressional ("sen-nancy-pelosi", "rep-...") or executive ("exec-trump-donald-j") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true; description adds detailed methodology (FIFO, share count estimation), accuracy caveat (±25-40%), response structure (totals, byTicker), and notes that byTicker doubles as holdings. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five information-dense sentences, front-loaded with purpose, no redundant or empty phrases. Every sentence serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, existing output schema (not shown), and rich context about methodology, accuracy, and prerequisite, the description fully covers what an agent needs to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a good description. The tool description restates the slug format and adds examples, but does not significantly expand on the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves estimated realized and unrealized P&L for a politician, distinguishing it from sibling tools like get_politician_transactions or get_politician_activity by focusing on profit/loss calculation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite 'Use get_politicians first to find the slug' and specifies it works for Congress and executive branch officials. Does not explicitly exclude alternatives, but context makes sibling purposes clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_recent_tradesGet Recent Politician TradesARead-onlyInspect
Get recent STOCK Act trades across all politicians. Each trade includes the senator info, ticker, transaction type, amount, and filing delay. Filter by direction (buy/sell) and lookback period. Useful for monitoring current congressional trading activity.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback period in days (default: 30, max: 365) | |
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| direction | No | Filter by direction: 'buy' or 'sell' |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds that results include filing delay, which is useful context, but it doesn't disclose any additional behavioral traits beyond what annotations provide. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, well front-loaded with the core purpose, and lists key output fields without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to detail return values. It already lists the important fields. The tool has 4 parameters, all documented in schema, and the description provides sufficient context for a simple filtered-list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description mentions filtering by direction and lookback period, which adds some context but does not provide significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get', the resource 'recent STOCK Act trades', and the scope 'across all politicians'. It also lists key output fields (senator info, ticker, transaction type, amount, filing delay), distinguishing it from other politician tools like get_politician_activity or get_politician_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Useful for monitoring current congressional trading activity', which provides clear context for when to use. However, it does not explicitly mention when not to use it or point to alternatives, though the sibling list includes many other politician tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_rolesGet Politician RolesARead-onlyInspect
Get committee leadership roles (Chair, Ranking Member, etc.) for a politician. Use get_politicians first to find the slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark as readOnlyHint=true, so agent knows it's safe. Description adds detail about output (leadership roles) and prerequisite workflow, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose with examples, second gives prerequisite. No extraneous information. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one parameter and output schema exists. Description covers what the tool does, what it returns (implicitly via purpose), and how to use it. Complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add additional meaning beyond the schema's parameter description (slug format/example already in schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves committee leadership roles (Chair, Ranking Member) for a politician. Provides specific examples of roles and distinguishes from siblings by specifying the output type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use get_politicians first to find the slug, giving clear prerequisite context. Does not include explicit when-not-to-use or alternatives, but the guidance is sufficient for a simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politiciansGet PoliticiansARead-onlyInspect
List and search congressional politicians who have STOCK Act trading disclosures. Filter by party (D/R/I), state, or search by name. Returns paginated results with trade counts, last trade date, and net buy/sell direction over the trailing 12 months.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 10, max: 100) | |
| party | No | Filter by party: 'D' (Democrat), 'R' (Republican), 'I' (Independent) | |
| state | No | Filter by US state (2-letter code, e.g. "CA", "TX") | |
| offset | No | Pagination offset (default: 0) | |
| search | No | Search by politician name (partial match) | |
| sortBy | No | Sort field (default: 'last_trade') | |
| sortOrder | No | Sort direction (default: 'desc') |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, indicating a safe read operation. The description adds behavioral context: pagination ('returns paginated results'), the specific data returned (trade counts, last trade date, net direction), and the 12-month trailing period. This goes beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the purpose and scope, the second describes available filters and outputs. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 optional parameters, no required parameters, an output schema (so return values are documented), and a clear description covering filters and output fields, the description is complete enough for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the output fields (trade counts, last trade date, net direction) which clarify the purpose of sortBy options like 'last_trade' and 'total_trades'. It also mentions the trailing 12-month period, providing context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List and search congressional politicians who have STOCK Act trading disclosures.' It specifies available filters (party, state, name) and what the results contain (pagination, trade counts, last trade date, net direction). This is specific and distinguishes it from sibling tools like get_politician_detail or get_politician_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing/searching politicians with trading disclosures, but does not explicitly state when to use this tool versus alternatives like get_politician_detail (for a single politician) or get_politician_transactions (for trades). It provides clear context but 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.
get_politicians_most_activeGet Most Active PoliticiansARead-onlyInspect
Discover the most active congressional traders ranked by trade count within a lookback period. Returns each politician with trade count, tickers traded, buy/sell values, and top tickers. Useful for identifying the most prolific political traders.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 10, max: 50) | |
| period | No | Lookback period (default: '90d') |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds the returned fields (trade count, tickers, values, top tickers) but no additional behavioral traits like speed or aggregation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently convey purpose, return data, and use case. No wasted words and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, ranking metric, and returned fields. With an output schema present, it is mostly complete, though it could explicitly mention that results are ranked and limited.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description does not add extra meaning beyond what the schema provides, so baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers most active congressional traders ranked by trade count, specifying the resource and action. However, it does not explicitly differentiate from sibling tools like get_politician_activity or get_politician_recent_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for identifying the most prolific political traders' implies usage context but does not provide when-not-to-use or mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politicians_pnl_leaderboardGet Politicians P&L LeaderboardARead-onlyInspect
Rank politicians (Congress + executive branch) by estimated trading P&L across the universe. Sort by total P&L, win rate, or traded volume. P&L uses price-adjusted share estimation: disclosed amount ranges → estimated shares via historical price → FIFO on shares → open positions marked to current price. Figures are ESTIMATES (±25-40% from disclosure bracket width).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 25, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| sortBy | No | Sort field (default: 'pnl') |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds valuable behavioral context: details on the estimation methodology (price-adjusted shares, FIFO, mark-to-market) and the uncertainty range (±25-40%). This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a list of methodology details. It is concise and front-loaded with the main purpose. No unnecessary words, but some may find the methodology details slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (return values are covered), the description adequately explains the tool's purpose, sorting, and estimation method. It could benefit from usage guidance, but overall it is complete for a leaderboard tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. The description reinforces the meaning of sortBy (pnl, winRate, volume) and explains how limit/offset work in context. This adds value beyond the schema for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it ranks politicians by estimated trading P&L, specifies sorting options, and explains the estimation methodology. It distinguishes from sibling tools like get_politician_pnl by focusing on a leaderboard view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like get_politician_pnl or get_politician_activity. Usage is implied (for ranking), but no guidance on context or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_transactionsGet Politician TransactionsARead-onlyInspect
Get paginated trade history for a specific politician. Returns individual STOCK Act disclosures with ticker, transaction type, amount range, filing delay, and late filing flag. Includes a summary with total buys/sells and net value.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi") | |
| type | No | Filter by transaction type: 'Purchase' or 'Sale' | |
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| sortBy | No | Sort field (default: 'date') | |
| sortOrder | No | Sort direction (default: 'desc') |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds behavioral context: paginated returns, STOCK Act disclosures, summary with buys/sells. No contradictions. Could mention rate limits or data freshness, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second details output. No unnecessary words, front-loaded, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has output schema, so return values are documented. Description covers key output fields and pagination. Could mention error handling or data freshness, but overall sufficient for a straightforward read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description hints at pagination (offset/limit) but does not add significant meaning beyond the schema. However, it mentions the output fields which indirectly relate to parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets paginated trade history for a specific politician, with details on returned fields and a summary. It distinguishes itself from siblings like get_politician_recent_trades by focusing on full paginated history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for detailed trade history but does not explicitly state when to use this vs. alternatives or provide exclusions. Given many sibling politician tools, more guidance would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_votesGet Politician VotesARead-onlyInspect
Get voting records for a politician by slug. Returns congressional votes with bill info, position (Yea/Nay/Not Voting), and result. Useful for assessing alignment between a politician's votes and their trading positions. Requires Bioguide ID resolution.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Politician URL slug (e.g., "sen-nancy-pelosi") | |
| limit | No | Maximum results to return (default: 10, max: 100) | |
| offset | No | Pagination offset (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and description adds value by noting 'Requires Bioguide ID resolution,' a behavioral prerequisite not captured in structured fields. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and output, second adds context and prerequisite. No redundancy, front-loaded, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema existing, description does not need to detail return values. It covers purpose, use case, prerequisite, and parameter hinting (slug). Fully sufficient for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so parameters are already documented. Description only adds 'by slug' for the required parameter, which is already clear from schema. No additional meaning for limit/offset beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves voting records for a politician by slug, specifying the returned data includes congressional votes, bill info, position, and result. This distinguishes it from sibling tools like get_politician_detail or get_politician_recent_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use case: assessing alignment between votes and trading positions. Does not explicitly mention when not to use or alternatives, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_post_earnings_moversGet Post-Earnings MoversARead-onlyInspect
Get stocks that moved significantly after earnings reports on a given date. Returns pre-computed price changes with earnings surprise data in a single call — no need to chain get_earnings_calendar + get_historical_prices + get_quote per ticker. Includes preEarningsClose, currentPrice, changePct, EPS/revenue actuals vs estimates, and surprise percentages. Filter by minimum absolute % change threshold.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Earnings date to check (YYYY-MM-DD) | |
| limit | No | Maximum results to return (default 25, max 100) | |
| minChangePct | No | Minimum absolute % price change to include (default 5). Set to 0 for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds significant behavioral context: returns pre-computed price changes with earnings surprise data, lists fields, and emphasizes it's a single call. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is 4 sentences with no unnecessary words. It is front-loaded with the core purpose and efficiently adds details about data fields and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameters are well-defined in the schema, annotations indicate read-only, and an output schema exists, the description is complete. It covers purpose, usage, and data returned without gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context like 'Filter by minimum absolute % change threshold' for minChangePct, but does not add new meaning beyond what the schema already provides. Adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and resource 'stocks that moved significantly after earnings reports on a given date'. It distinguishes from sibling tools like get_earnings_calendar and get_historical_prices by noting it's a pre-computed composite, making the purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'no need to chain...', guiding the agent to use this tool instead of multiple calls. It also explains filtering by minChangePct. However, it does not specify when not to use it (e.g., if raw data is needed), but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_targetGet Price TargetARead-onlyInspect
Get analyst price target data for a ticker. By default returns the consensus / split-adjusted average price target. Set list=true to return the full per-analyst list of individual price targets instead.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | false/omitted = consensus price target; true = per-analyst price-target list | |
| limit | No | Maximum results when list=true (default: 50, max: 100). Ignored for consensus. | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description complements the readOnlyHint annotation by detailing the output: consensus or per-analyst list, split-adjusted data, and behavior of the 'list' and 'limit' parameters. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and immediately explain the key behavioral toggle. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters and an output schema, the description covers all necessary aspects: purpose, default vs alternative mode, parameter roles, and edge cases (limit ignored for consensus). Fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions, and the description adds meaningful context: explains 'list' mode distinction, default limit for list, and that 'limit' is ignored for consensus. Goes beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves analyst price target data for a given ticker, specifying it returns consensus or a per-analyst list. This distinguishes it from sibling tools that handle other analyst data (e.g., earnings, estimates, grades).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default behavior (consensus) and how to get individual targets via 'list=true'. It provides clear parameter guidance but does not explicitly mention when not to use this tool or suggest alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteGet Stock QuoteARead-onlyInspect
Get the current stock quote for a company including price, volume, change, market cap, and other real-time market data. Use this when a user asks about a stock's current price or trading activity. Always includes halted/haltCode/haltReason/haltedAt/resumptionAt trading-halt fields (false/null when trading normally); a halted ticker returns the last-known quote instead of an error, or currentPrice:null + halted:true when nothing is recoverable.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond annotations, such as the inclusion of trading-halt fields and the fallback behavior for halted tickers (returning last-known quote or currentPrice:null + halted:true). This exceeds the readOnlyHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with the main purpose front-loaded. It efficiently covers key behaviors without unnecessary repetition. Could be slightly more streamlined but is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single required parameter and the presence of an output schema, the description fully covers what the tool does, including edge cases (halted tickers). No additional behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add significant meaning beyond the schema's description of the 'ticker' parameter. The baseline of 3 is appropriate as the parameter is well-defined in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a current stock quote with specific data fields (price, volume, change, market cap). The verb 'Get' and resource 'stock quote' are specific, and the inclusion of trading-halt fields distinguishes it from other financial tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage guidance: 'Use this when a user asks about a stock's current price or trading activity.' It does not explicitly say when not to use it, but the sibling context provides differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_congressional_votesGet Recent Congressional VotesARead-onlyInspect
Get recent congressional roll-call votes across all members, sourced from GovTrack (both chambers as available — currently Senate-heavy). Each vote includes member, bill info, position, and result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds valuable behavioral context: data source (GovTrack), current Senate-heavy bias, and what each vote includes. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, efficient and front-loaded with key info. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has simple parameters, output schema exists, annotations present. Description covers purpose, data source, content, and current limitations, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for limit and offset. The description does not add new parameter meaning beyond schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent congressional roll-call votes, specifying data source (GovTrack), chambers, and content. It distinguishes from siblings like get_politician_votes and get_legislative_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_politician_votes or get_legislative_calendar. The description does not provide usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recently_sponsored_billsGet Recently Sponsored Bills (Cross-Politician)ARead-onlyInspect
Get the most recently introduced bills across all congressional sponsors. Each bill includes the sponsor block (bioguideId, fullName, party, state, politicianSlug) so persona agents can link directly to the sponsor detail page. politicianSlug is null when the sponsor is no longer in the active roster (typically ex-members). Requires CONGRESS_API_KEY on the backend.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum bills to return (default: 10, max: 50) | |
| offset | No | Pagination offset (default: 0) | |
| congress | No | Congress number to filter (default: 119 for current session) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that politicianSlug is null for ex-members and that an API key is required, adding behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise but the first sentence is somewhat dense, mixing purpose and data structure. Could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the description covers prerequisites, null behavior, and basic purpose, it is sufficiently complete for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond the schema. It repeats default values, which is acceptable but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the most recently introduced bills across all congressional sponsors, which is specific and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions the prerequisite of CONGRESS_API_KEY, providing some guidance, but does not explicitly compare to alternatives or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_material_filingsGet Recent Material FilingsARead-onlyInspect
Recent material 8-K filings (last 7 days) for the constituents of an index universe. By default returns the high-signal 8-K item codes (material agreements, M&A, executive changes, restructurings, etc.); pass items to filter to specific 8-K item codes. Choose the universe with universe.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | Optional 8-K item codes (e.g. ["1.01","2.01"]) | |
| limit | No | Optional max rows (1–100, default 50) | |
| universe | No | Index universe to scan (sp500, ndx, or dji). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds behavioral details: time window (7 days), default high-signal item codes, and filtering options. It could mention default universe behavior but overall adds value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then parameter usage. Every sentence earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers time window, content type, default filtering, and parameter options. Output schema exists so return format is covered. Minor gap: default universe if not specified is not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds minimal context beyond schema: 'pass items to filter' and 'choose the universe'. It doesn't provide additional constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves recent material 8-K filings (last 7 days) for index universe constituents, distinguishing it from sibling filing tools like get_filing_calendar which cover broader filing types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (to get high-signal 8-K filings for an index) and how to customize via items and universe. It lacks explicit when-not-to-use guidance, but the context is clear among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_senate_trades_by_tickerGet Senate Trades by TickerARead-onlyInspect
Reverse lookup — find which politicians recently traded a given TICKER. Returns recent STOCK Act disclosures for that symbol with politician info, transaction type, and amount.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 50, max: 100) | |
| offset | No | Pagination offset (default: 0) | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "NVDA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true. The description adds behavioral context by stating it returns 'recent STOCK Act disclosures' with specific fields, which is helpful beyond the annotation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. First sentence is the core action, second explains output. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and annotations covering read-only, the description is complete. It explains the purpose, what it returns, and the key parameter. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description mentions 'given TICKER' matching the ticker parameter, but adds no additional semantics beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Reverse lookup — find which politicians recently traded a given TICKER' with a specific verb and resource. It distinguishes from siblings like get_politician_recent_trades by being parameterized by ticker rather than politician.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context ('Reverse lookup') implying use when you have a ticker and want politicians, but does not explicitly mention alternatives or when not to use. It is sufficient for an agent to infer the typical use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_short_interestGet Short InterestARead-onlyInspect
Get short interest data for a company including short volume, short ratio, days to cover, and short percent of float. Use when analyzing bearish sentiment or potential short squeeze setups.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description's job is to add behavioral context. It lists the returned data fields but does not disclose potential limitations like rate limits, data recency, or pagination. For a simple read tool, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences that are concise and front-loaded. It immediately states the core action and then provides usage context, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (though not shown), the description adequately explains what data is returned. For a single-parameter tool with clear annotations, the description is sufficiently complete to guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter (ticker) with 100% coverage. The description does not add any additional meaning or constraints beyond what is in the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves short interest data and lists specific data points (short volume, short ratio, days to cover, short percent of float). This distinguishes it from sibling tools like get_float or get_analyst_consensus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises use when analyzing bearish sentiment or short squeeze setups, providing clear context. It does not specify when not to use it or mention alternative tools, but the guidance is sufficient for a focused tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_split_historyGet Stock Split HistoryARead-onlyInspect
Get stock split history for a company including forward and reverse splits with dates, ratios, type classification, and cumulative 2-year reverse split ratio. Relevant for NASDAQ/NYSE minimum bid-price compliance (1:250 cumulative reverse-split cap).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, TSLA) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=true, and the description adds behavioral details (inclusion of forward/reverse splits, dates, ratios, cumulative ratio) without contradicting annotations. It enhances understanding beyond the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the purpose and provide relevant compliance context without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description covers key return fields and use case. Minor gaps remain (e.g., time range scope), but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the 'ticker' parameter with example values. The description adds no additional semantics for the parameter, meeting the baseline for 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves stock split history, specifying forward/reverse splits, dates, ratios, type classification, and cumulative ratio. The verb 'Get' and resource 'stock split history' are explicit, and it distinguishes from siblings by its unique focus on splits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for use in NASDAQ/NYSE compliance, but does not explicitly state when to avoid using it or suggest alternatives among siblings like 'get_compliance'. The guidance is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_price_changeGet Stock Price ChangeARead-onlyInspect
Get percentage price changes for a stock across multiple timeframes: 1D, 5D, 1M, 3M, 6M, YTD, 1Y, 3Y, 5Y, 10Y, and MAX. Use this for quick "how much is it up/down" answers without fetching full candle data.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description details the behavior: returns percentage changes for 11 timeframes. Annotations provide readOnlyHint=true, which is consistent. The description adds specific timeframe info beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Front-loaded with primary purpose, then usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, output schema exists, annotations are provided, and the description covers purpose, usage, and behavior completely. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'ticker'. The description does not add additional semantic information beyond the schema, but the schema is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb+resource: 'Get percentage price changes for a stock across multiple timeframes.' It lists specific timeframes, distinguishing it from similar tools like get_historical_prices or get_quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Use this for quick "how much is it up/down" answers without fetching full candle data.' This tells when to use and implies alternatives (fetching full candle data via other tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_moversGet Top Market MoversARead-onlyInspect
Top stock movers — gainers (largest % up), losers (largest % down), or active (highest volume). Optional session window (premarket / regular / afterhours; regular default; not supported for active). Penny-stock artifacts are filtered by default — set includePennyStocks to include sub-$1 movers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional max rows (1–100). Backend default applied when omitted. | |
| session | No | Session window: premarket (4:00–9:30 AM ET), regular (RTH close-to-close, default), afterhours (4:00–8:00 PM ET). | regular |
| direction | Yes | Mover direction: gainers, losers, or active (volume) | |
| includePennyStocks | No | Loosen penny-stock artifact guards. Default false enforces prev_close >= $1 and a $1M dollar-volume floor. Set true to allow sub-$1 movers (prev_close >= $0.10, no dollar-volume floor). The ABS(change_pct) <= 500 cap applies in both modes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds behavioral context beyond that: default penny-stock filtering with specific thresholds, session window constraints, and the optional includePennyStocks parameter behavior. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core purpose, and covers all necessary details without redundancy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (implied true), the description is complete: it explains all parameters, default behaviors, and constraints (session not supported for active, penny-stock filtering). No gaps for a read-only data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds valuable context: for 'session' it provides ET time ranges, for 'includePennyStocks' it explains the default filter and what true/false mean, and for 'direction' it clarifies the types. This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides top stock movers by gainers, losers, or active (volume), with specific session support. It distinctly differentiates from sibling tools like get_market_breadth or get_accumulation_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each direction and session, and explicitly states that 'active' does not support session windows, and that penny-stock filtering is applied by default. It provides clear context for usage, though it does not explicitly list alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trading_haltsGet Active Trading HaltsARead-onlyInspect
List currently-active trading halts across NASDAQ/NYSE/AMEX (from the consolidated Nasdaq Trader halt feed). Each halt includes ticker, market, haltCode (T1/T2/T12/LUDP/H10/...), human-readable reason, haltedAt, and the scheduled resumptionAt when one is set. An EMPTY list is a normal state (no active halts right now), not an error. Halts are tradeable catalysts — use this to discover halted names, then get_quote for the frozen last price.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavior beyond the readOnlyHint annotation: it lists what fields are returned (ticker, market, haltCode, human-readable reason, haltedAt, scheduled resumptionAt), and clarifies that an empty list is a normal state, not an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose and scope, field details, and usage hint. Every sentence provides value without redundancy. Front-loaded with the core action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the presence of an output schema (implied), the description covers all needed info: what is returned, the normal state, and a usage tip integrating with a sibling tool. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds implicit meaning: it returns all active halts with no filtering, which is clear from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action 'List', resource 'currently-active trading halts', and the exchanges 'NASDAQ/NYSE/AMEX', directly from the 'consolidated Nasdaq Trader halt feed'. It distinguishes from siblings by mentioning 'use this to discover halted names, then get_quote for the frozen last price'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool: 'Halts are tradeable catalysts — use this to discover halted names, then get_quote for the frozen last price.' It provides a follow-up action but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_volume_profileGet Volume ProfileARead-onlyInspect
Get volume distribution across price levels for a single trading day. Returns price buckets with volume, Point of Control (highest volume level), and Value Area (price range containing 70% of volume). Use for identifying support/resistance and high-volume price nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Trading day (YYYY-MM-DD) | |
| ticker | Yes | Stock ticker symbol (e.g., "AAPL", "TSLA") | |
| bucketSize | No | Price bucket width in dollars (default $1.00) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description correctly adds context about what data is returned (price buckets, PoC, Value Area). It does not disclose any rate limits or constraints, but the read-only nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each essential. The first sentence states the core function, the second lists key outputs, and the third gives a use case. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite not showing the output schema, the description sufficiently covers the tool's purpose and returns. For a read-only data retrieval tool with full parameter documentation, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented in the input schema. The description reinforces the bucketSize parameter by mentioning 'Price bucket width in dollars' but does not add significant new semantic meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb (Get), resource (volume distribution across price levels), and scope (single trading day). It mentions key computed values (Point of Control, Value Area), which helps distinguish it from sibling tools like get_historical_prices or get_intraday_bars that provide raw price data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context ('Use for identifying support/resistance and high-volume price nodes'). However, it does not explicitly state when not to use it or mention alternative tools for different timeframes or aggregation levels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_accession_numberLookup Accession NumberARead-onlyInspect
Look up a filing or exhibit by its SEC accession number. Supports both dashed format (e.g., "0001193125-22-010026") and compact 18-digit format. Returns filing metadata including company name, form type, filing date, and exhibit count. If the filing is in the local database, returns full metadata; if only found on SEC EDGAR, returns basic metadata with an isInDatabase: false flag.
| Name | Required | Description | Default |
|---|---|---|---|
| accessionNumber | Yes | SEC accession number in dashed (e.g., "0001193125-22-010026") or compact 18-digit format |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation, detailing that the tool may return metadata from the local database or SEC EDGAR, including an isInDatabase flag. This aligns with and enhances the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three focused sentences. Key information (purpose, format, expected outputs) is front-loaded, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. It thoroughly covers the tool's behavior, including how results differ based on data source, and provides clear metadata fields. Perfectly adequate for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the parameter description fully (100% coverage). The description adds meaningful context about the parameter, specifying both supported formats and the purpose of the accession number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up filings or exhibits by SEC accession number, using specific verbs and resource identification. It distinguishes itself from sibling search tools by focusing on direct lookup via a unique identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use the tool (to look up a filing by accession number) and implies when not to use it (e.g., for general searching, use sibling tools). It provides format support details but does not name alternatives directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_companiesScreen CompaniesARead-onlyInspect
Screen companies by price range, volume, cash runway, float, shares outstanding, market cap, industry, and float data source. Sort results by any sortable column. Returns matching companies with key metrics and pagination. Each row carries live trading-halt status (halted/haltCode/haltedAt; false/null when trading normally); pass excludeHalted=true to drop currently-halted tickers from the results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results per page (default: 25, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| sortBy | No | Column to sort results by (default: volume) | |
| country | No | Company universe by issuer domicile: "US" (default), "CA" (Canadian companies via their US-OTC/US cross-listings), or "all" | |
| industry | No | Filter by company industry (exact match, e.g. "Biotechnology", "Software") | |
| maxFloat | No | Maximum computed public float (shares) | |
| maxPrice | No | Maximum latest price in USD | |
| minFloat | No | Minimum computed public float (shares) | |
| minPrice | No | Minimum latest price in USD | |
| maxVolume | No | Maximum daily trading volume | |
| minVolume | No | Minimum daily trading volume | |
| sortOrder | No | Sort direction (default: desc) | |
| floatSource | No | Filter by float data source | |
| excludeHalted | No | When true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false — halted rows are included and carry halted/haltCode/haltedAt fields. | |
| maxCashRunway | No | Maximum estimated months of cash remaining | |
| minCashRunway | No | Minimum estimated months of cash remaining | |
| maxMarketCapComputed | No | Maximum market cap in USD (price * shares outstanding) | |
| maxSharesOutstanding | No | Maximum shares outstanding from SEC EDGAR | |
| minMarketCapComputed | No | Minimum market cap in USD (price * shares outstanding) | |
| minSharesOutstanding | No | Minimum shares outstanding from SEC EDGAR |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only (readOnlyHint=true). The description adds valuable behavioral context about the trading-halt status field and the excludeHalted feature, which goes beyond the annotation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the purpose and key features. The second sentence is somewhat long but still clear. Could be split for readability, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 20 optional parameters and existing output schema, the description covers the screening purpose and highlights the halt status feature. It does not detail pagination or return structure beyond key metrics, but the output schema fills that gap. Reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds minimal extra semantics, primarily highlighting the excludeHalted parameter behavior and sorting capability. For most parameters, the schema already provides sufficient meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool screens companies by multiple financial and industry criteria, listing specific filters (price, volume, cash runway, etc.) and noting sortability and pagination. It distinguishes itself from sibling tools like get_quote or screen_sec_filings by its focus on broad company screening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for filtering companies with numeric/industry criteria and mentions the optional excludeHalted parameter, providing context for when to use it. However, it does not explicitly state when not to use it or name alternative tools for simple lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_must_raiseScreen Companies That Must Raise CapitalARead-onlyInspect
Find companies with imminent capital raise needs based on estimated cash runway. Defaults to companies with less than 6 months of cash remaining, sorted by urgency (lowest runway first). Useful for identifying distressed companies, imminent dilution situations, or potential financing catalysts. Runway is estimated from current burn rate.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 25, max: 100) | |
| offset | No | Offset for pagination (default: 0) | |
| industry | No | Filter by company industry (exact match, e.g. "Biotechnology", "Software") | |
| maxMonths | No | Maximum months of cash runway to filter by (default: 6) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description is consistent, describing a read-only screening operation. It adds details about default runway threshold (6 months), sorting by urgency, and estimation from burn rate, which go beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with front-loaded purpose, then usage, then estimation method. No fluff, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers screening criteria, defaults, use cases, and estimation method. Pagination (limit/offset) is standard and not explained, but output schema exists, reducing need for return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so parameters are already documented. The description adds minor context (default maxMonths=6, sorting behavior) but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds companies with imminent capital raise needs based on estimated cash runway, with specific defaults and sorting. It distinguishes from sibling 'get_' tools that retrieve specific data points rather than screening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides use cases (distressed companies, dilution, catalysts) but does not explicitly state when not to use this tool or mention alternative tools. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_sec_filingsScreen SEC FilingsARead-onlyInspect
Screen SEC filings across all companies with company-level filters (sector, industry, market cap, exchange) combined with filing-level filters (form type, date range). Returns filings enriched with company metadata: ticker, sector, industry, exchange, market cap, and price. Use this to answer questions like "find all S-1 filings from biotech companies under $500M market cap" or "show me recent 8-K filings from Technology sector companies". This is the most powerful filing discovery tool — use search_sec_filings only when you already know the specific CIK.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-indexed, default: 1) | |
| dateTo | No | End date filter (YYYY-MM-DD) | |
| sector | No | Filter by sector (e.g., "Healthcare", "Technology", "Financial Services", "Energy") | |
| sortBy | No | Sort results by field (default: filing_date) | |
| dateFrom | No | Start date filter (YYYY-MM-DD) | |
| exchange | No | Filter by exchange (e.g., "NASDAQ", "NYSE", "AMEX") | |
| industry | No | Filter by industry (e.g., "Biotechnology", "Software - Application", "Oil & Gas E&P") | |
| pageSize | No | Results per page (default: 25, max: 100) | |
| formTypes | No | Comma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5") | |
| sortOrder | No | Sort direction (default: desc) | |
| maxMarketCap | No | Maximum market cap in USD (e.g., 500000000 for $500M) | |
| minMarketCap | No | Minimum market cap in USD (e.g., 1000000000 for $1B) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. Description adds context about enriched output (ticker, sector, etc.) and mentions combining filters, but doesn't detail pagination or rate limits, which are acceptable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with high information density: first defines functionality, second gives examples, third provides sibling guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 well-described parameters, output schema, and annotations, the description covers high-level purpose, use cases, and differentiation. Nothing significant is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra detail beyond what the schema provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool screens SEC filings with combined company and filing filters, and provides concrete examples of questions it answers. It also distinguishes from search_sec_filings by specifying when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to use this for broad screening and search_sec_filings when CIK is known. Includes example queries to clarify use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_sec_filings_performanceScreen SEC Filings PerformanceARead-onlyInspect
Analyze stock price performance after SEC filings. Returns individual filing records with pre-computed price returns at +1 day, +3 days, +7 days, and +30 days after the filing date, plus aggregate statistics (average, median, % negative, best, worst) across all matching filings. Combine company-level filters (sector, industry, market cap, exchange) with filing filters (form type, date range). Use this to answer questions like "how do biotech stocks perform after S-1 filings?" or "what is the average 7-day return after 8-K filings from companies under $500M market cap?".
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-indexed, default: 1) | |
| dateTo | No | End date filter (YYYY-MM-DD) | |
| sector | No | Filter by sector (e.g., "Healthcare", "Technology", "Financial Services") | |
| sortBy | No | Sort results by field (default: filing_date) | |
| dateFrom | No | Start date filter (YYYY-MM-DD) | |
| exchange | No | Filter by exchange (e.g., "NASDAQ", "NYSE", "AMEX") | |
| industry | No | Filter by industry (e.g., "Biotechnology", "Software - Application") | |
| pageSize | No | Results per page (default: 25, max: 100) | |
| formTypes | No | Comma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5") | |
| sortOrder | No | Sort direction (default: desc) | |
| maxMarketCap | No | Maximum market cap in USD | |
| minMarketCap | No | Minimum market cap in USD |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so no safety concern. Description adds that returns individual records with computed returns and aggregate stats. No contradictions. It could mention pagination behavior, but overall adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single paragraph but well-structured: purpose, outputs, filters, examples. Efficient, though could be slightly more concise. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description covers purpose, returns, filters, and use cases comprehensively. For a complex tool with 12 parameters, this is complete and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 12 parameters. Description adds context on filter combination and example values but does not significantly deepen understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool analyzes stock price performance after SEC filings, returning pre-computed returns and aggregate statistics. It distinguishes from sibling tools like get_filing_calendar or screen_sec_filings by focusing on performance analysis rather than just listing filings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit example questions ('how do biotech stocks perform after S-1 filings?') and describes how to combine company and filing filters. However, it does not explicitly state when not to use this tool or point to alternatives like screen_sec_filings for pure filing listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_clinical_trialsSearch Clinical TrialsARead-onlyInspect
Search clinical trials market-wide (cross-company). Distinct from get_clinical_trials, which is scoped to a single ticker. Filter by phase, indication, sponsor, status, and date window; sort and paginate the results.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date (YYYY-MM-DD) | |
| from | No | Start date (YYYY-MM-DD) | |
| sort | No | Sort field | |
| limit | No | Maximum results to return (1-100, default: 50) | |
| order | No | Sort direction | |
| phase | No | Trial phase filter (e.g., "Phase 3") | |
| offset | No | Offset for pagination (default: 0) | |
| status | No | Trial status filter | |
| sponsor | No | Sponsor name filter | |
| dateField | No | Date field to filter/sort on | |
| indication | No | Condition / indication filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds useful behavioral details: filtering capabilities (phase, indication, sponsor, status, date window), sorting, pagination, and cross-company scope. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with front-loaded key differentiator. Every sentence adds value: purpose and sibling distinction, then capabilities. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and output schema exists, description adequately covers key capabilities (filters, sort, pagination, scope). Return values are handled by output schema. Completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 11 parameters. Description reiterates filter categories and mentions sort/pagination but adds minimal new meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (Search), resource (clinical trials), and scope (market-wide cross-company). Explicitly distinguishes from sibling tool get_clinical_trials which is ticker-scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context for when to use (market-wide search) and when not (use get_clinical_trials for single ticker). Lists filter options but lacks explicit when-not-to-use beyond sibling distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesSearch CompaniesARead-onlyInspect
Search for companies by name or ticker symbol in the Signal8 database. Returns matching companies with their ticker, name, CIK, and exchange. Use this as the first step to find a company before calling other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default: 10, max: 50) | |
| query | Yes | Search query - company name or ticker symbol (e.g., "Tesla", "TSLA") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description does not need to reassert safety. The description adds minor behavioral context by noting the return fields, but does not disclose pagination behavior or error handling. Given the presence of annotations, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every word adds value. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 2 parameters and an output schema, the description is complete. It covers the purpose, input, output, and usage context. The output schema handles return value documentation, so no additional explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions. The description mentions 'name or ticker symbol' which aligns with the schema's query description, but adds no additional meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'companies', and the input methods (name or ticker symbol). It also specifies the return fields (ticker, name, CIK, exchange) and positions the tool as a first step, distinguishing it from the many get_* sibling tools that require a company identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this as the first step to find a company before calling other tools,' providing clear when-to-use guidance. While it does not list explicit exclusions, the context of siblings implies that when a company identifier is already known, this tool may be skipped. This is sufficient for a simple lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filing_textSearch Filing TextARead-onlyInspect
Full-text substring search across all SEC filing exhibit content. Returns matching snippets with context around each match. Powerful for finding specific clauses like "change of control", "anti-dilution", "right of first refusal", or any specific language across filings. Optionally filter by company (CIK), filing, accession number, or form type.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Filter to a specific company by CIK number | |
| limit | No | Max results (default: 20, max: 100) | |
| pattern | Yes | Search pattern (minimum 2 characters). Substring match, case-insensitive. | |
| filingId | No | Filter to a specific filing by internal ID | |
| formType | No | Filter by form type (e.g., "10-K", "S-1") | |
| snippetLength | No | Characters of context around each match (default: 200) | |
| accessionNumber | No | Filter to a specific filing by SEC accession number |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes it's a substring, case-insensitive search returning snippets with context. The readOnlyHint annotation is consistent, and no contradictions exist. It could mention performance characteristics (e.g., large result sets) but is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences), front-loaded with the main function, and includes practical examples and optional filter summary. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. It covers the search scope, filters, and basic behavior. Missing details about pattern length limits (min 2 chars) but schema covers that. Overall sufficient for a read-only search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description repeats schema info for parameters (e.g., pattern is case-insensitive, optional filters) but does not add significant new semantics. Examples of search clauses provide context but don't go beyond what the schema defines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs full-text substring search across SEC filing exhibit content and returns matching snippets. It distinguishes from siblings like search_sec_filings (metadata search) and get_exhibit_content (retrieve specific content) by focusing on text search within exhibits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete examples of use cases (e.g., finding 'change of control' clauses) and lists optional filters. While it doesn't explicitly say when not to use alternatives, the context and examples make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_institutionsSearch Institutions by NameARead-onlyInspect
Search institutional investors (13F filers) by name. Returns matching institutions with CIK, name, AUM, holdings count, and latest filing period. Use this to find a specific fund or investment manager when you know part of their name (e.g., "Vanguard", "BlackRock", "Citadel"). Results are ranked by AUM descending.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search term (min 2 characters, e.g., "Vanguard", "BlackRock") | |
| limit | No | Maximum results to return (default: 25, max: 100) | |
| offset | No | Offset for pagination (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes ranking by AUM descending and return content. Annotations already declare readOnlyHint=true, so description adds useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences; first defines action and returns, second provides usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description appropriately focuses on key fields and usage. Parameters fully described in schema. Could mention pagination, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 3 parameters with descriptions. Description adds example values but no new constraints. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Search' and the resource 'institutional investors (13F filers)'. Lists returned fields and distinguishes from sibling tools like 'get_institutions' by focusing on name-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use ('to find a specific fund or investment manager when you know part of their name') and provides examples. Could be improved by noting when not to use, but alternatives are implied by sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sec_filingsSearch SEC FilingsARead-onlyInspect
Search and list SEC filings with filtering by company (CIK), form type, and date range. Returns paginated results with filing metadata including form type, filing date, company name, and accession number. Use this to find filings before reading their content with get_filing_document or get_filing_exhibits.
| Name | Required | Description | Default |
|---|---|---|---|
| ciks | No | Comma-separated CIK numbers to filter by (e.g., "0000320193,0001018724") | |
| page | No | Page number (1-indexed, default: 1) | |
| dateTo | No | End date filter (YYYY-MM-DD) | |
| dateFrom | No | Start date filter (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 25, max: 100) | |
| formTypes | No | Comma-separated form types (e.g., "10-K,10-Q,8-K,S-1,S-3,424B5") |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds behavioral details beyond annotations: it returns paginated results with metadata (form type, filing date, etc.). It does not disclose potential rate limits or quotas, but for a read-only search tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences: purpose, return format, usage guidance. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (documenting return values), the description sufficiently covers purpose, filtering, pagination, and relationship to sibling tools. No gaps for a straightforward search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents each parameter. The description only summarizes filters ('CIK, form type, date range') without adding meaning beyond what's in the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource ('SEC filings') and actions ('Search and list', 'filtering by company, form type, date range'). It distinguishes from siblings by explicitly guiding usage before get_filing_document or get_filing_exhibits, making its purpose unique among related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('Use this to find filings before reading their content') and names two alternative tools (get_filing_document, get_filing_exhibits). This clearly differentiates when to invoke this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.1- Changed
get_filing_calendar3 fields changed- removed
Input schema / properties / to / $refRemoved value: -"#/properties/from" - added
Input schema / properties / to / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / to / typeAdded value: +"string"
- Changed
get_intraday_bars1 field changed- added
Input schema / properties / extendedAdded value: +{ + "description": "Include extended-hours bars (premarket 04:00–09:30 ET and after-hours 16:00–20:00 ET). Only supported with resolution \"1\".", + "type": "boolean" +}
- Changed
get_legislative_calendar3 fields changed- removed
Input schema / properties / to / $refRemoved value: -"#/properties/from" - added
Input schema / properties / to / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / to / typeAdded value: +"string"
- Changed
get_policy_events3 fields changed- removed
Input schema / properties / to / $refRemoved value: -"#/properties/from" - added
Input schema / properties / to / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / to / typeAdded value: +"string"
- Added
get_trading_halts - Changed
screen_companies2 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "Company universe by issuer domicile: \"US\" (default), \"CA\" (Canadian companies via their US-OTC/US cross-listings), or \"all\"", + "enum": [ + "US", + "CA", + "all" + ], + "type": "string" +} - added
Input schema / properties / excludeHaltedAdded value: +{ + "description": "When true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false — halted rows are included and carry halted/haltCode/haltedAt fields.", + "type": "boolean" +}
86 tool updates
v0.1.0- First observed
get_accumulation_snapshot - First observed
get_analyst_consensus - First observed
get_analyst_coverage - First observed
get_analyst_estimates - First observed
get_analyst_grades - First observed
get_cash_history - First observed
get_cash_position - First observed
get_cash_runway_calendar - First observed
get_clinical_trials - First observed
get_company_profile - First observed
get_compliance - First observed
get_donor_aggregates - First observed
get_earnings - First observed
get_earnings_calendar - First observed
get_economic_calendar - First observed
get_etf_bundle - First observed
get_executives - First observed
get_exhibit_content - First observed
get_filing_calendar - First observed
get_filing_document - First observed
get_filing_exhibits - First observed
get_financials - First observed
get_float - First observed
get_historical_prices - First observed
get_insider_cluster_buys - First observed
get_insider_cross_company - First observed
get_insider_positions - First observed
get_insider_positions_by_ticker - First observed
get_insider_transactions - First observed
get_insiders - First observed
get_institution_activity - First observed
get_institution_derivatives - First observed
get_institution_detail - First observed
get_institution_filings - First observed
get_institution_holdings - First observed
get_institution_portfolio_analytics - First observed
get_institution_position_changes - First observed
get_institution_top_aum - First observed
get_institutions - First observed
get_institutions_leaderboards - First observed
get_intraday_bars - First observed
get_legislative_calendar - First observed
get_market_breadth - First observed
get_market_metrics - First observed
get_news - First observed
get_ownership - First observed
get_policy_events - First observed
get_policy_trade_leaderboard - First observed
get_policy_trade_overlap - First observed
get_political_sector_rotation - First observed
get_politician_activity - First observed
get_politician_committees - First observed
get_politician_detail - First observed
get_politician_donor_summary - First observed
get_politician_donors - First observed
get_politician_late_filers - First observed
get_politician_pnl - First observed
get_politician_recent_trades - First observed
get_politician_roles - First observed
get_politician_transactions - First observed
get_politician_votes - First observed
get_politicians - First observed
get_politicians_most_active - First observed
get_politicians_pnl_leaderboard - First observed
get_post_earnings_movers - First observed
get_price_target - First observed
get_quote - First observed
get_recent_congressional_votes - First observed
get_recent_material_filings - First observed
get_recently_sponsored_bills - First observed
get_senate_trades_by_ticker - First observed
get_short_interest - First observed
get_split_history - First observed
get_stock_price_change - First observed
get_top_movers - First observed
get_volume_profile - First observed
lookup_accession_number - First observed
screen_companies - First observed
screen_must_raise - First observed
screen_sec_filings - First observed
screen_sec_filings_performance - First observed
search_clinical_trials - First observed
search_companies - First observed
search_filing_text - First observed
search_institutions - First observed
search_sec_filings
TDQS
Scored across 87 tools
Multiple tool clusters have unclear boundaries: five analyst tools overlap (get_analyst_coverage explicitly consolidates grades and targets that have their own tools; get_analyst_consensus and get_price_target both return consensus targets), and pairs like get_insider_positions vs get_insider_positions_by_ticker and get_institution_activity vs get_institution_position_changes serve nearly identical needs. Even with verbose cross-referenced descriptions, 87 tools across overlapping families make reliable selection difficult.
The dominant get_<domain>_<qualifier> snake_case pattern is consistent and predictable, with search_/screen_/lookup_ reserved for discovery operations (search_companies, screen_sec_filings, lookup_accession_number). Minor deviations exist — get_institutions_leaderboards and get_politicians_most_active break the singular-noun convention, and screen vs search is not an intuitive distinction — but the overall convention is readable and coherent.
87 tools is an extreme count, more than triple the 25-tool threshold that already warrants a low score. While the server spans multiple legitimate domains (company data, filings, institutions, insiders, politicians, policy), no agent can reliably navigate a surface this large, and it imposes a massive context-window and selection burden.
The covered domains are exhaustively served: a full end-to-end SEC filing pipeline (search, screen, document, exhibits, text search, accession lookup, post-filing performance), deep institution lifecycle coverage, insider pattern detection, and an unusually thorough politician/policy toolkit. Minor gaps exist — no direct CIK-to-company lookup and no options-chain data for a financial server — but there are no dead ends within the stated scope.
Maintenance
Related MCP Connectors
Primary-source SEC filing intelligence and financial/disclosure reconciliation for AI agents.
SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
Evidence-backed capital-change intelligence and sourced financial data for AI agents
Agent-native SEC filing data: statements assembled, filings read and synthesized. No API key.
Related MCP Servers
- FlicenseAqualityDmaintenanceProvides AI assistants with real-time stock prices, financial statements, SEC filings, and analytical tools like DCF valuation and ratio analysis.14-

secapi-mcpofficial
AlicenseAqualityCmaintenanceEnables AI clients to search and analyze SEC filings, financial statements, insider trades, and institutional holdings through natural language tools.97 npm1MIT- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to SEC EDGAR filings for retrieving company data, financial statements, and insider transactions with exact precision.MIT
- AlicenseAqualityAmaintenanceConnects AI agents to over 4 million certified SEC EDGAR financial facts with cryptographic provenance and zero hallucination.7Apache 2.0