Skip to main content
Glama
signal8ai

Signal8 MCP Server

Official
by signal8ai

@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/mcp

Related 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/mcp

Available 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

Search companies by name or ticker

1

get_company_profile

Full company profile (description, market cap, sector)

1

get_company_bundle

Consolidated data bundle in one call

25

Company Data (13 tools)

Tool

Description

Credits

get_quote

Real-time stock quote (price, change, volume)

1

get_market_metrics

Volume averages, volatility, SMAs, trend direction

3

get_short_interest

Short interest data and days-to-cover

3

get_float

Float composition, shares outstanding, ownership %

3

get_financials

Income statement, balance sheet, cash flow

5

get_earnings

Earnings history with EPS surprises

3

get_executives

Executive team roster and compensation

1

get_peers

Peer/comparable companies

1

get_transcripts

Earnings call transcripts

3

get_news

Latest company news headlines

1

get_analyst_consensus

Analyst ratings and price targets

3

get_material_events

Material corporate events (8-K filings)

3

get_clinical_trials

Clinical trial pipeline (biotech/pharma)

3

Market — Cross-Ticker (6 tools)

Tool

Description

Credits

get_quotes_batch

Batch real-time quotes for up to 200 tickers (POST)

max(1, ceil(N/10))

get_quotes_universe

Quotes for an entire index universe (sp500/ndx/dji)

5

get_index_snapshot

Bulk ticker snapshots (price, day change, % change)

1

get_sector_etf_snapshot

Snapshot of the 11 SPDR sector ETFs with sector labels

2

get_top_movers

Top gainers / losers / most-active by volume (with optional session window)

2

get_market_breadth

Advance/decline, % above SMA50/200, 52-week high/low counts

2

Calendar (5 tools)

Tool

Description

Credits

get_earnings_calendar

Upcoming/recent earnings releases between two dates

3

get_economic_calendar

Macro/economic events (CPI, FOMC, jobs, GDP) by date and country

3

get_filing_calendar

10-K / 10-Q SEC filing-deadline calendar by universe

5

get_lockup_expirations

Upcoming IPO/secondary lockup expirations

5

get_recent_material_filings

Recent material 8-K filings by index universe and item codes

5

Extractions (4 tools)

Tool

Description

Credits

get_extractions

AI-extracted SEC filing data (13 types)

5

get_filing_extractions

Extractions for a specific SEC filing

5

get_extraction_dashboard

Cross-company extraction analytics

50

get_extraction_by_type

Filter extractions by type (warrants, convertibles, etc.)

5

Dilution (5 tools)

Tool

Description

Credits

get_dilution_risk

Dilution Pressure Score (0-100) with 5-dimension assessment

5

get_dilution_performance

Post-dilution stock performance at +1d/+7d/+30d/+90d

10

get_instruments

Active warrants, convertibles, ATMs, shelf registrations

5

get_instrument_detail

Deep dive on a single instrument

5

get_baby_shelf

IB6 baby shelf remaining capacity

10

Intelligence — Per-Company (12 tools)

Tool

Description

Credits

get_counterparties

Entity-resolved counterparty relationships

10

get_counsel

Legal counsel engagements with role taxonomy

10

get_insiders

Insider trading discovery and patterns

10

get_ownership

Unified ownership (Form 4 + 13F + 13D/G)

10

get_rofr_triggers

ROFR exercise trigger detection

10

get_institutions

Institutional holders from 13F filings

10

get_institution_detail

Detailed info for a specific institution (by CIK)

10

get_institution_holdings

Full portfolio holdings for an institution

10

get_banks

Investment bank relationships from SEC filings

10

get_legal_counsels

Legal counsel relationships with partner names

10

get_insider_transactions

Detailed Form 4 transaction history

5

get_insider_cluster_buys

Cluster buying pattern detection (3+ insiders in 14 days)

10

Intelligence — Cross-Company (3 tools)

Tool

Description

Credits

get_institution_top_aum

Top institutional holders by AUM across all companies

25

get_counsel_cross_company

Law firm engagements across multiple companies

25

get_insider_cross_company

Insider trading patterns across multiple companies

25

Compliance (4 tools)

Tool

Description

Credits

get_compliance

Full compliance evaluation

25

get_deficiencies

Listing deficiency detection

10

get_compliance_alerts

Active compliance alerts

5

get_listing_classification

Exchange listing classification

10

Screener (2 tools)

Tool

Description

Credits

get_screener_fields

Discover available screening filters

1

screen_companies

Dilution-aware company screener

25

Events & ATM (2 tools)

Tool

Description

Credits

get_events

Unified corporate events

5

get_atm_activity

ATM program monitoring

5

ETF (1 tool)

Tool

Description

Credits

get_etf_bundle

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. AAPL)

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, and afterHoursChangePercent are null. 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 sp500, ndx, dji

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

gainers, losers, or active

limit

integer

no

1–100 (backend default applied when omitted)

session

enum

no

premarket (4:00–9:30 AM ET), regular (default; close-to-close), or afterhours (4:00–8:00 PM ET). Use premarket/afterhours when posting outside RTH so rankings reflect the live window.

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

sp500 (default), ndx, or all

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 US

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

sp500, ndx, dji, or all (default)

formTypes

string[]

no

Subset of ["10-K", "10-Q"]

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

sp500, ndx, dji, or all (default)

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

sp500, ndx, or dji

items

string[]

no

8-K item codes (e.g. ["1.01", "2.01"])

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

signal8://companies/{ticker}/profile

Enriched company profile by ticker

Extraction Types

signal8://extraction-types

List of all 13 SEC filing extraction types

Prompts (4)

Prompt

Arguments

Description

analyze_dilution_risk

ticker (string)

6-step dilution risk analysis workflow

company_due_diligence

ticker (string)

10-step comprehensive due diligence research

screening_workflow

sector?, marketCapMax? (string)

5-step discover-screen-analyze workflow

institutional_analysis

ticker (string)

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/json

This 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

SIGNAL8_API_KEY

Yes

Your Signal8 API key (starts with sk_live_ or sk_test_)

SIGNAL8_API_URL

No

API base URL (default: https://api.signal8.ai/api/v1/public)

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 tools
get_accumulation_snapshotGet Accumulation SnapshotA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 ConsensusA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the tool's simplicity (one 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CoverageA
Read-only
Inspect

Get aggregated analyst coverage for a ticker — consolidated view of grades, targets, and coverage breadth across covering firms.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action ('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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's function: '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.

Usage Guidelines2/5

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 EstimatesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of estimate periods to return (1-40). Defaults to 8.
periodNoEstimate period: "annual" (default) or "quarter".
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 GradesA
Read-only
Inspect

Get recent analyst grade actions (upgrades, downgrades, initiations) for a ticker, including the grading firm and previous/new grade.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 10, max: 50)
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 HistoryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the output schema exists, the description 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.

Parameters4/5

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

Schema coverage is 100%, but the description adds value by 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.

Purpose5/5

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.

Usage Guidelines4/5

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 PositionA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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

Given the tool's simplicity (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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 CalendarA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD, default: today + 90 days)
fromNoStart date (YYYY-MM-DD, default: today)
limitNoMaximum results to return (default: 25, max: 100)
offsetNoOffset for pagination (default: 0)
industryNoFilter by company industry (exact match, e.g. "Biotechnology")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TrialsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of clinical trials to return (1-50). Defaults to 10.
tickerYesStock ticker symbol (e.g., "MRNA", "PFE")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the presence of an output schema (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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ProfileA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EvaluationA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema (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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines4/5

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 AggregatesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoElection cycle as 4-digit year (e.g. "2024"). Defaults to most recent cycle.
partyNoFilter by party: 'D', 'R', or 'I'
chamberNoFilter by chamber: 'senate' or 'house'

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. 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.

Purpose5/5

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.

Usage Guidelines5/5

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 HistoryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of earnings periods to return (1-40). Defaults to 8.
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 CalendarA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date inclusive (YYYY-MM-DD)
fromYesStart date inclusive (YYYY-MM-DD)
tickersNoOptional ticker filter, e.g. ["AAPL","NVDA"]
maxMarketCapNoMaximum market cap in USD (e.g., 2000000000 for under $2B)
minMarketCapNoMinimum market cap in USD (e.g., 10000000000 for $10B+)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema, 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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines3/5

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

The description provides clear context on when to use (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 CalendarA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date inclusive (YYYY-MM-DD)
fromYesStart date inclusive (YYYY-MM-DD)
countryNoOptional ISO-3166 alpha-2 country code (e.g. "US", "GB", "JP")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 BundleA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesETF ticker symbol (e.g., SPY, QQQ, IWM)
includeNoComma-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

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ExecutivesA
Read-only
Inspect

Get key executives and officers of a company including name, title, compensation, and tenure. Use when researching company leadership or management quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ContentA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExhibit ID (numeric). Find via get_filing_exhibits.
maxLengthNoTruncate content to this many characters. Response includes a "truncated" boolean.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CalendarA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date inclusive (YYYY-MM-DD, default today + 45d)
fromNoStart date inclusive (YYYY-MM-DD, default today)
universeNoOptional index-universe filter (default "all")
formTypesNoOptional SEC form types subset, e.g. ["10-Q"]

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema, 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 DocumentA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filingIdYesInternal filing ID (numeric). Find via search_sec_filings.
maxLengthNoTruncate content to this many characters. Useful for previewing large filings. Response includes a "truncated" boolean when truncation is applied.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the output schema exists, the description 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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines4/5

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 ExhibitsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filingIdYesInternal filing ID (numeric). Find via search_sec_filings.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StatementsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFinancial period type: "annual", "quarter", or "ttm" (trailing twelve months). Defaults to annual.
limitNoMaximum number of periods to return (1-40). Defaults to 8.
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema (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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description 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.

Purpose5/5

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.

Usage Guidelines4/5

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 DataA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb (Get), 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.

Usage Guidelines4/5

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 PricesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date as UNIX timestamp (overrides period)
fromNoStart date as UNIX timestamp (overrides period)
periodNoLookback period shorthand (default: "1Y"). Ignored if from/to are provided.
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")
resolutionNoCandle resolution: "D" (daily, default), "W" (weekly), "M" (monthly)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 BuysA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TradingA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 10, max: 100)
offsetNoOffset for pagination (default: 0)
endDateNoEnd date for transaction range in ISO format (e.g., "2025-12-31")
startDateNoStart date for transaction range in ISO format (e.g., "2025-01-01")
insiderNameNoFilter by insider name (partial match, e.g., "Musk" or "Cohen")
transactionTypeNoFilter by transaction type: "P" (purchase), "S" (sale), "A" (grant/award), "M" (conversion)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PositionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the insider OR the issuer (company). Tried as issuer first, then falls back to insider.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines4/5

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 TickerA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 IntelligenceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 20, max: 100)
offsetNoOffset for pagination (default: 0)
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 TransactionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by transaction year (e.g., 2025)
limitNoMaximum results to return (default: 20, max: 100)
monthNoFilter by transaction month (1-12, requires year)
offsetNoOffset for pagination (default: 0)
tickerYesStock ticker symbol (e.g., AAPL, TSLA)
transactionCodeNoFilter 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

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ActivityA
Read-only
Inspect

Get an institution's position changes over recent 13F periods by CIK. Reads the number of trailing periods to include.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution
periodsNoNumber of trailing quarters to include (default: 4, max: 12)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the tool's simplicity (2 parameters, output schema 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 DerivativesA
Read-only
Inspect

Get an institution's reported PUT/CALL derivative positions by CIK (13F options), with pagination and sorting.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution
limitNoMaximum results to return (default: 20)
offsetNoOffset for pagination (default: 0)
periodNoFiling period to filter (e.g., "2025-Q1")
sortByNoColumn to sort by
sortOrderNoSort direction

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 DetailA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution (e.g., "0001067983" for Berkshire Hathaway)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance: '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 FilingsA
Read-only
Inspect

Get the list of 13F filings for an institution by CIK, with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution
limitNoMaximum results to return (default: 20, max: 50)
offsetNoOffset for pagination (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the tool's simplicity and the 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb 'Get', the resource '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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus 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 HoldingsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution
limitNoMaximum results to return (default: 20, max: 100)
offsetNoOffset for pagination (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines4/5

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 AnalyticsA
Read-only
Inspect

Get sector allocation and top holdings analytics for an institution's portfolio by CIK.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the presence of an output schema (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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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 ChangesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesSEC CIK number of the institution (e.g., "0001067983" for Berkshire Hathaway)
limitNoMaximum results to return (default: 50, max: 100)
offsetNoOffset for pagination (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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 HoldersA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 20, max: 100)
offsetNoOffset for pagination (default: 0)
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

The description covers the tool's 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb 'get', the resource '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.

Usage Guidelines3/5

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 LeaderboardsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results per section (default: 10, max: 50)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the tool's simplicity (one 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 AUMA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 25, max: 100)
minAumNoMinimum AUM in USD to filter institutions (e.g., 1000000000 for $1B+)
offsetNoOffset for pagination (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 BarsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd time as UNIX timestamp
fromYesStart time as UNIX timestamp
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")
extendedNoInclude extended-hours bars (premarket 04:00–09:30 ET and after-hours 16:00–20:00 ET). Only supported with resolution "1".
resolutionYesBar resolution in minutes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CalendarA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoLatest vote-window date inclusive (YYYY-MM-DD, default: today + 14 days)
fromNoEarliest vote-window date inclusive (YYYY-MM-DD, default: today)
limitNoMaximum results to return (default: 25, max: 100)
offsetNoPagination offset (default: 0)
minRelevanceNoMinimum market relevance: 'low' (default), 'medium', 'high', or 'none' (explicit opt-in to the full audit trail incl. non-market items — rarely useful)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool returns a '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.

Usage Guidelines4/5

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 BreadthA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
universeNoUniverse to aggregate over: sp500, ndx, or all (default sp500)sp500

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

The description provides clear usage context: '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 MetricsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 NewsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of articles to return (1-20). Defaults to 10.
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")
pressReleasesOnlyNoWhen true, return only official company press releases (exclude third-party news).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the simple nature of the tool (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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 OwnershipA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum holders to return in allHolders (default: 100, max: 100)
offsetNoOffset for pagination (default: 0)
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, but the description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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 EventsA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text search over event titles
toNoLatest signing date inclusive (YYYY-MM-DD)
fromNoEarliest signing date inclusive (YYYY-MM-DD)
limitNoMaximum results to return (default: 25, max: 100)
offsetNoPagination offset (default: 0)
sectorNoFilter by canonical affected sector (one of the 11 canonical sector strings, e.g. "Healthcare", "Financial Services", "Energy")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description provides clear context on when to use 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 LeaderboardA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoRanking order: 'usd' (default — estimated USD value) or 'count' (flagged-trade count)
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)
windowNoMatch window in days around the EO signing date (default: 14, max: 30)
directionNoWhich side of the signing date to include: 'before' (default), 'after', or 'both'

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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 OverlapA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug — congressional ("sen-nancy-pelosi", "rep-...") or executive branch ("exec-...")
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)
windowNoMatch window in days around the EO signing date (default: 14, max: 30)
directionNoWhich side of the signing date to include: 'before' (default), 'after', or 'both'

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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

Given the tool's complexity (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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 RotationA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoTop-N sectors to return (default: 15, max: 30)
sortByNoRank sectors by trade count or summed dollar volume (default: count)
chamberNoOptional chamber filter (default: all chambers merged)
windowDaysNoLookback window in days (default: 30, max: 90)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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 ActivityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 CommitteesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi", "rep-nancy-pelosi")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 DetailA
Read-only
Inspect

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").

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi", "sen-tommy-tuberville")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 DonorsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi")
typeNoFilter by donor type: 'individual', 'pac', or 'all' (default: 'all')
cycleNoElection cycle as 4-digit year (e.g. "2024"). Defaults to most recent cycle.
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)
sortByNoSort field: 'amount' (default), 'date', or 'name'
minAmountNoMinimum contribution amount in USD (filters out small donors)
sortOrderNoSort direction (default: 'desc')

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by 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.

Purpose5/5

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.

Usage Guidelines5/5

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 SummaryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi")
cycleNoElection cycle as 4-digit year (e.g. "2024"). Defaults to most recent cycle.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the presence of an output schema, 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 FilersA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback period in days (default: 180, max: 730)
limitNoMaximum results to return (default: 10, max: 50)
offsetNoPagination offset (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the tool's simplicity 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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&LA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug — congressional ("sen-nancy-pelosi", "rep-...") or executive ("exec-trump-donald-j")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TradesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback period in days (default: 30, max: 365)
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)
directionNoFilter by direction: 'buy' or 'sell'

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the output schema exists, the description 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb 'get', the resource '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.

Usage Guidelines4/5

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 RolesA
Read-only
Inspect

Get committee leadership roles (Chair, Ranking Member, etc.) for a politician. Use get_politicians first to find the slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PoliticiansA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 10, max: 100)
partyNoFilter by party: 'D' (Democrat), 'R' (Republican), 'I' (Independent)
stateNoFilter by US state (2-letter code, e.g. "CA", "TX")
offsetNoPagination offset (default: 0)
searchNoSearch by politician name (partial match)
sortByNoSort field (default: 'last_trade')
sortOrderNoSort direction (default: 'desc')

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds 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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines4/5

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 PoliticiansA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 10, max: 50)
periodNoLookback period (default: '90d')

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 LeaderboardA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 25, max: 100)
offsetNoPagination offset (default: 0)
sortByNoSort field (default: 'pnl')

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

Given the presence of an output schema (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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 TransactionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi")
typeNoFilter by transaction type: 'Purchase' or 'Sale'
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)
sortByNoSort field (default: 'date')
sortOrderNoSort direction (default: 'desc')

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 VotesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPolitician URL slug (e.g., "sen-nancy-pelosi")
limitNoMaximum results to return (default: 10, max: 100)
offsetNoPagination offset (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines4/5

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 MoversA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesEarnings date to check (YYYY-MM-DD)
limitNoMaximum results to return (default 25, max 100)
minChangePctNoMinimum absolute % price change to include (default 5). Set to 0 for all.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TargetA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
listNofalse/omitted = consensus price target; true = per-analyst price-target list
limitNoMaximum results when list=true (default: 50, max: 100). Ignored for consensus.
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines4/5

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 QuoteA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 VotesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives 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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum bills to return (default: 10, max: 50)
offsetNoPagination offset (default: 0)
congressNoCongress number to filter (default: 119 for current session)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 FilingsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoOptional 8-K item codes (e.g. ["1.01","2.01"])
limitNoOptional max rows (1–100, default 50)
universeNoIndex universe to scan (sp500, ndx, or dji).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TickerA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 50, max: 100)
offsetNoPagination offset (default: 0)
tickerYesStock ticker symbol (e.g., "AAPL", "NVDA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 InterestA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the output schema exists (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.

Parameters3/5

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

The input schema already fully describes the only parameter (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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines4/5

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 HistoryA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., AAPL, TSLA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple tool with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ChangeA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema description coverage is 100% for the single parameter '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.

Purpose5/5

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.

Usage Guidelines5/5

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 MoversA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional max rows (1–100). Backend default applied when omitted.
sessionNoSession window: premarket (4:00–9:30 AM ET), regular (RTH close-to-close, default), afterhours (4:00–8:00 PM ET).regular
directionYesMover direction: gainers, losers, or active (volume)
includePennyStocksNoLoosen 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

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 HaltsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ProfileA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesTrading day (YYYY-MM-DD)
tickerYesStock ticker symbol (e.g., "AAPL", "TSLA")
bucketSizeNoPrice bucket width in dollars (default $1.00)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description provides clear usage context ('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 NumberA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
accessionNumberYesSEC accession number in dashed (e.g., "0001193125-22-010026") or compact 18-digit format

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema, 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CompaniesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results per page (default: 25, max: 100)
offsetNoOffset for pagination (default: 0)
sortByNoColumn to sort results by (default: volume)
countryNoCompany universe by issuer domicile: "US" (default), "CA" (Canadian companies via their US-OTC/US cross-listings), or "all"
industryNoFilter by company industry (exact match, e.g. "Biotechnology", "Software")
maxFloatNoMaximum computed public float (shares)
maxPriceNoMaximum latest price in USD
minFloatNoMinimum computed public float (shares)
minPriceNoMinimum latest price in USD
maxVolumeNoMaximum daily trading volume
minVolumeNoMinimum daily trading volume
sortOrderNoSort direction (default: desc)
floatSourceNoFilter by float data source
excludeHaltedNoWhen 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.
maxCashRunwayNoMaximum estimated months of cash remaining
minCashRunwayNoMinimum estimated months of cash remaining
maxMarketCapComputedNoMaximum market cap in USD (price * shares outstanding)
maxSharesOutstandingNoMaximum shares outstanding from SEC EDGAR
minMarketCapComputedNoMinimum market cap in USD (price * shares outstanding)
minSharesOutstandingNoMinimum shares outstanding from SEC EDGAR

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CapitalA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 25, max: 100)
offsetNoOffset for pagination (default: 0)
industryNoFilter by company industry (exact match, e.g. "Biotechnology", "Software")
maxMonthsNoMaximum months of cash runway to filter by (default: 6)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 FilingsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-indexed, default: 1)
dateToNoEnd date filter (YYYY-MM-DD)
sectorNoFilter by sector (e.g., "Healthcare", "Technology", "Financial Services", "Energy")
sortByNoSort results by field (default: filing_date)
dateFromNoStart date filter (YYYY-MM-DD)
exchangeNoFilter by exchange (e.g., "NASDAQ", "NYSE", "AMEX")
industryNoFilter by industry (e.g., "Biotechnology", "Software - Application", "Oil & Gas E&P")
pageSizeNoResults per page (default: 25, max: 100)
formTypesNoComma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5")
sortOrderNoSort direction (default: desc)
maxMarketCapNoMaximum market cap in USD (e.g., 500000000 for $500M)
minMarketCapNoMinimum market cap in USD (e.g., 1000000000 for $1B)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 PerformanceA
Read-only
Inspect

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?".

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-indexed, default: 1)
dateToNoEnd date filter (YYYY-MM-DD)
sectorNoFilter by sector (e.g., "Healthcare", "Technology", "Financial Services")
sortByNoSort results by field (default: filing_date)
dateFromNoStart date filter (YYYY-MM-DD)
exchangeNoFilter by exchange (e.g., "NASDAQ", "NYSE", "AMEX")
industryNoFilter by industry (e.g., "Biotechnology", "Software - Application")
pageSizeNoResults per page (default: 25, max: 100)
formTypesNoComma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5")
sortOrderNoSort direction (default: desc)
maxMarketCapNoMaximum market cap in USD
minMarketCapNoMinimum market cap in USD

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TrialsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD)
fromNoStart date (YYYY-MM-DD)
sortNoSort field
limitNoMaximum results to return (1-100, default: 50)
orderNoSort direction
phaseNoTrial phase filter (e.g., "Phase 3")
offsetNoOffset for pagination (default: 0)
statusNoTrial status filter
sponsorNoSponsor name filter
dateFieldNoDate field to filter/sort on
indicationNoCondition / indication filter

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CompaniesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 10, max: 50)
queryYesSearch query - company name or ticker symbol (e.g., "Tesla", "TSLA")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, and 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.

Completeness5/5

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.

Parameters3/5

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

The input schema covers 100% of parameters with 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.

Purpose5/5

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.

Usage Guidelines4/5

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 TextA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikNoFilter to a specific company by CIK number
limitNoMax results (default: 20, max: 100)
patternYesSearch pattern (minimum 2 characters). Substring match, case-insensitive.
filingIdNoFilter to a specific filing by internal ID
formTypeNoFilter by form type (e.g., "10-K", "S-1")
snippetLengthNoCharacters of context around each match (default: 200)
accessionNumberNoFilter to a specific filing by SEC accession number

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the presence of an output schema, 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.

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description 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.

Purpose5/5

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.

Usage Guidelines4/5

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 NameA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch term (min 2 characters, e.g., "Vanguard", "BlackRock")
limitNoMaximum results to return (default: 25, max: 100)
offsetNoOffset for pagination (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 FilingsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ciksNoComma-separated CIK numbers to filter by (e.g., "0000320193,0001018724")
pageNoPage number (1-indexed, default: 1)
dateToNoEnd date filter (YYYY-MM-DD)
dateFromNoStart date filter (YYYY-MM-DD)
pageSizeNoResults per page (default: 25, max: 100)
formTypesNoComma-separated form types (e.g., "10-K,10-Q,8-K,S-1,S-3,424B5")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the presence of an output schema (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.

Parameters3/5

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

Schema description coverage is 100%, so the input schema already fully 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.

Purpose5/5

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.

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance ('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.

  1. 6 tool updatesv0.1.1
    • Changedget_filing_calendar3 fields changed
      • removedInput schema / properties / to / $ref
        Removed value: -"#/properties/from"
      • addedInput schema / properties / to / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • addedInput schema / properties / to / type
        Added value: +"string"
    • Changedget_intraday_bars1 field changed
      • addedInput schema / properties / extended
        Added 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"
        +}
    • Changedget_legislative_calendar3 fields changed
      • removedInput schema / properties / to / $ref
        Removed value: -"#/properties/from"
      • addedInput schema / properties / to / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • addedInput schema / properties / to / type
        Added value: +"string"
    • Changedget_policy_events3 fields changed
      • removedInput schema / properties / to / $ref
        Removed value: -"#/properties/from"
      • addedInput schema / properties / to / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • addedInput schema / properties / to / type
        Added value: +"string"
    • Addedget_trading_halts
    • Changedscreen_companies2 fields changed
      • addedInput schema / properties / country
        Added 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"
        +}
      • addedInput schema / properties / excludeHalted
        Added 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"
        +}
  2. 86 tool updatesv0.1.0
    • First observedget_accumulation_snapshot
    • First observedget_analyst_consensus
    • First observedget_analyst_coverage
    • First observedget_analyst_estimates
    • First observedget_analyst_grades
    • First observedget_cash_history
    • First observedget_cash_position
    • First observedget_cash_runway_calendar
    • First observedget_clinical_trials
    • First observedget_company_profile
    • First observedget_compliance
    • First observedget_donor_aggregates
    • First observedget_earnings
    • First observedget_earnings_calendar
    • First observedget_economic_calendar
    • First observedget_etf_bundle
    • First observedget_executives
    • First observedget_exhibit_content
    • First observedget_filing_calendar
    • First observedget_filing_document
    • First observedget_filing_exhibits
    • First observedget_financials
    • First observedget_float
    • First observedget_historical_prices
    • First observedget_insider_cluster_buys
    • First observedget_insider_cross_company
    • First observedget_insider_positions
    • First observedget_insider_positions_by_ticker
    • First observedget_insider_transactions
    • First observedget_insiders
    • First observedget_institution_activity
    • First observedget_institution_derivatives
    • First observedget_institution_detail
    • First observedget_institution_filings
    • First observedget_institution_holdings
    • First observedget_institution_portfolio_analytics
    • First observedget_institution_position_changes
    • First observedget_institution_top_aum
    • First observedget_institutions
    • First observedget_institutions_leaderboards
    • First observedget_intraday_bars
    • First observedget_legislative_calendar
    • First observedget_market_breadth
    • First observedget_market_metrics
    • First observedget_news
    • First observedget_ownership
    • First observedget_policy_events
    • First observedget_policy_trade_leaderboard
    • First observedget_policy_trade_overlap
    • First observedget_political_sector_rotation
    • First observedget_politician_activity
    • First observedget_politician_committees
    • First observedget_politician_detail
    • First observedget_politician_donor_summary
    • First observedget_politician_donors
    • First observedget_politician_late_filers
    • First observedget_politician_pnl
    • First observedget_politician_recent_trades
    • First observedget_politician_roles
    • First observedget_politician_transactions
    • First observedget_politician_votes
    • First observedget_politicians
    • First observedget_politicians_most_active
    • First observedget_politicians_pnl_leaderboard
    • First observedget_post_earnings_movers
    • First observedget_price_target
    • First observedget_quote
    • First observedget_recent_congressional_votes
    • First observedget_recent_material_filings
    • First observedget_recently_sponsored_bills
    • First observedget_senate_trades_by_ticker
    • First observedget_short_interest
    • First observedget_split_history
    • First observedget_stock_price_change
    • First observedget_top_movers
    • First observedget_volume_profile
    • First observedlookup_accession_number
    • First observedscreen_companies
    • First observedscreen_must_raise
    • First observedscreen_sec_filings
    • First observedscreen_sec_filings_performance
    • First observedsearch_clinical_trials
    • First observedsearch_companies
    • First observedsearch_filing_text
    • First observedsearch_institutions
    • First observedsearch_sec_filings

TDQS

A3.6/5.0

Scored across 87 tools

Disambiguation2/5

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.

Naming Consistency4/5

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.

Tool Count1/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers