Skip to main content
Glama
thesma-dev

Thesma MCP Server

Official
by thesma-dev

Thesma MCP Server

Give your AI assistant access to SEC, Census, BLS, and SBA data.

PyPI version Python License: MIT

What it does

An MCP server that wraps the Thesma API, giving AI assistants (Claude, Cursor, ChatGPT) native access to SEC EDGAR filings — US-GAAP 10-K and IFRS 20-F, covering every US-listed public company on NYSE and NASDAQ (~6,000 companies) — plus Bureau of Labor Statistics employment data, US Census Bureau demographics, and SBA 7(a) small business lending. Ask questions in plain English, get structured data back.

Related MCP server: publicfinance

Quick example

"What was Apple's revenue last year?"

The AI calls get_financials and returns Apple's income statement with formatted line items.

"What was Spotify's revenue last year?"

The AI calls get_financials for SPOT and returns Spotify's income statement in EUR with taxonomy: ifrs-full and by_nature presentation metadata.

"Find high-margin S&P 500 companies where insiders are buying"

The AI calls screen_companies with margin filters and insider buying signals.

"Which funds increased their position in NVDA last quarter?"

The AI calls get_holding_changes and shows quarter-over-quarter position changes.

"What's the average wage for software developers in Texas?"

The AI calls get_occupation_wages with SOC code 15-1252 and state filter, returning median and percentile wage data.

"What does Apple's labor market look like — hiring trends, local wages, compensation benchmarks?"

The AI calls get_company for AAPL, which automatically includes BLS labor market context alongside SEC company details.

"Give me a full picture of Apple — profile, financials, ratios, insider trades, top holders, executive compensation, and board."

The AI calls get_company('AAPL', include='financials,ratios,insider_trades,holders,compensation,board,labor_context,lending_context') and returns a composed view in one call instead of eight tool invocations.

Installation

pip install thesma-mcp

Claude Desktop

Add to your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "thesma": {
      "command": "uvx",
      "args": ["thesma-mcp"],
      "env": {
        "THESMA_API_KEY": "your-api-key"
      }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "thesma": {
      "command": "uvx",
      "args": ["thesma-mcp"],
      "env": {
        "THESMA_API_KEY": "your-api-key"
      }
    }
  }
}

Using pip install instead of uvx? If you've already installed thesma-mcp with pip, you can use "command": "thesma-mcp" directly (no args needed) instead of uvx.

Get your API key at portal.thesma.dev (free tier: 250 requests/day).

Available tools

Company Discovery

Tool

Description

search_companies

Find US public companies by name, ticker, index tier, exchange, domicile, taxonomy, or currency

get_company

Get company details — CIK, SIC code, fiscal year end, index membership, exchange, domicile

Financial Statements

Tool

Description

get_financials

Get income statement, balance sheet, or cash flow from SEC filings — US-GAAP 10-K and IFRS 20-F, returned in native currency

get_financial_metric

Get a single financial metric over time for trend analysis; per-point currency honors presentation-currency transitions

Financial Ratios

Tool

Description

get_ratios

Get computed financial ratios — margins, returns, leverage, growth

get_ratio_history

Get a single ratio over time for trend analysis

Screening

Tool

Description

screen_companies

Find companies matching financial criteria — profitability, growth, leverage, index tier, SIC, exchange, domicile, taxonomy, currency, insider/institutional signals, labor market, SBA lending (county + industry)

Corporate Events

Tool

Description

get_events

Get 8-K corporate events — earnings, M&A, leadership changes, material agreements

Insider Trading

Tool

Description

get_insider_trades

Get Form 4 insider transactions — purchases, sales, grants, option exercises

Institutional Holdings

Tool

Description

search_funds

Find institutional investment managers (hedge funds, mutual funds) by name

get_institutional_holders

Get which funds hold a company's stock with shares and market values

get_fund_holdings

Get a fund's portfolio — what stocks it owns

get_holding_changes

Get quarter-over-quarter changes in institutional positions

Compensation & Governance

Tool

Description

get_executive_compensation

Get executive pay — salary, bonus, stock awards, total, CEO pay ratio

get_board_members

Get board of directors — age, tenure, independence, committee memberships

Filings

Tool

Description

search_filings

Search SEC filings by company, type (10-K, 10-Q, 8-K, etc.), and date range

Tool

Description

search_filing_sections

Semantic search of SEC filing section content (Risk Factors, MD&A, etc.) by natural-language query — optionally scoped by ticker, filing type, section type, year, or similarity threshold

Webhooks

Tool

Description

list_webhook_event_types

List the 5 event types you can subscribe to

list_webhooks

List your webhook subscriptions

create_webhook

Create a new subscription (returns one-time HMAC secret)

get_webhook

Get details for one subscription

update_webhook

Modify url / events / filing_types / is_active / description

delete_webhook

Delete a subscription

list_webhook_deliveries

Recent delivery attempts (debugging)

rotate_webhook_secret

Generate a new HMAC secret (invalidates old)

send_webhook_test

Enqueue a synthetic test delivery

replay_webhook_delivery

Re-queue a past delivery (within 7-day window)

Industry Lookup

Tool

Description

search_industries

Find BLS industries by name or NAICS level

get_industry_detail

Get industry details — child industries, data availability across CES/QCEW/OEWS

Industry Employment (CES)

Tool

Description

get_industry_employment

Get employment, earnings, and hours data for an industry by NAICS code

County Employment & Wages (QCEW)

Tool

Description

get_county_employment

Get quarterly employment data for a US county by FIPS code

get_county_wages

Get county wage snapshot with location quotients vs. national average

Occupation Wages (OEWS)

Tool

Description

search_occupations

Find BLS occupations by name or SOC group

get_occupation_wages

Get occupation wage data — mean, median, and percentile distribution

Labor Market Turnover (JOLTS)

Tool

Description

get_industry_turnover

Get job openings, hires, quits, and layoffs for an industry

get_state_turnover

Get state-level labor market turnover (total nonfarm)

get_regional_turnover

Get turnover data for a Census region (Northeast, South, Midwest, West)

Local Area Unemployment (LAUS)

Tool

Description

get_county_unemployment

Get monthly unemployment rate, labor force, and employment for a US county (never seasonally adjusted)

compare_county_unemployment

Compare unemployment metrics across up to 10 counties in a single period

get_state_unemployment

Get monthly state unemployment with labor force participation rate and employment-population ratio (SA or NSA)

compare_state_unemployment

Compare unemployment metrics across up to 10 states in a single period

SBA 7(a) Lending

Tool

Description

get_county_lending

Get quarterly SBA 7(a) loan aggregates for a US county (loan count, total amount, charge-off rate)

get_state_lending

Get quarterly SBA 7(a) loan aggregates for a US state

get_industry_lending

Get quarterly SBA 7(a) loan aggregates for a NAICS industry, optionally scoped to state or county

get_lenders

List SBA 7(a) lenders ranked by loan count, total amount, or average loan size

get_lender

Get details and quarterly history for a single SBA lender by lender_id

get_lending_characteristics

Get loan size, term length, interest rate, sub-programme, and business-type distributions for a quarter

get_lending_outcomes

Get vintage cohort charge-off rates and maturity status

explore_sba_metrics

Browse available SBA metrics by category or keyword

get_sba_metric_detail

Get full definition, unit, cadence, and data availability for a single SBA metric

BLS Discovery

Tool

Description

explore_bls_metrics

Browse available BLS metrics by category, source, or keyword

Configuration

Variable

Required

Description

THESMA_API_KEY

Yes

API key from portal.thesma.dev

THESMA_API_URL

No

Override API base URL (default: https://api.thesma.dev)

Data coverage

  • ~6,000 US-listed public companies on NYSE and NASDAQ — US-GAAP filers plus IFRS 20-F filers (Spotify, Nu Holdings, ASML, and other US-listed IFRS reporters). Native-currency reporting; no USD normalization.

  • SEC EDGAR: financial statements (2009-present), insider trades, institutional holdings, executive compensation, board data, corporate events, filings

  • Bureau of Labor Statistics: industry employment (CES), county wages (QCEW), occupation wages (OEWS), job openings and turnover (JOLTS), local unemployment (LAUS)

  • Small Business Administration: 7(a) loan program data — quarterly lending aggregates by county/state/industry, lender rankings, loan characteristics (size, term, rate, sub-programme), vintage cohort charge-off outcomes

  • Labor & lending market enrichment: get_company automatically includes BLS labor context and SBA 7(a) lending context; screen_companies supports labor market and SBA lending filters

  • Known gaps: IFRS bank filings (Nu Holdings, HSBC, Deutsche Bank, etc.) — the core banking-statement extensions (net_interest_income, etc.) are US-GAAP-specific today; IFRS banking fields land in a future release.

  • All data sourced from US federal public-domain sources: SEC EDGAR, US Census Bureau, Bureau of Labor Statistics, Small Business Administration

License

MIT

Available Tools

60 tools
compare_census_metricA

Compare a single US Census metric across 2 to 25 places at the same geography level. Params: metric is the canonical_name; fips is a list of 2-25 FIPS codes; dataset is optional ('acs1' or 'acs5'); year is optional. Passing FIPS at mixed geography levels will likely produce an API error. Returns each place's value with margin of error. Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
metricYes
datasetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It discloses that mixed geography levels will likely cause an API error, and that each place's value returns with margin of error. This adds meaningful behavioral context beyond the schema, though it does not mention authentication, rate limits, or explicit read-only status (which is inferred from 'Returns').

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 four sentences, each serving a distinct purpose: core functionality, parameter explanation, error warning, and return value/source. No filler or redundancy. Information is front-loaded with the primary action in the first sentence.

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

Completeness5/5

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

Given the tool's simple scope and the presence of an output schema, the description covers all essential aspects: parameter constraints, error conditions, return format, and data source. The presence of an output schema handles detailed return structure, and the description adds value with the MOE note and source attribution.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does thoroughly. It explains that 'metric' is the canonical_name, 'fips' is a list of 2-25 FIPS codes, and clarifies optional 'dataset' values ('acs1' or 'acs5') and 'year'. This adds critical meaning to every parameter, going beyond what the bare schema provides.

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

Purpose5/5

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

The description clearly states a specific action ('Compare'), a specific resource ('a single US Census metric'), and the scope ('across 2 to 25 places at the same geography level'). This distinguishes it from siblings like get_census_place_metrics or explore_census_metrics, which focus on single places or exploration.

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 (2-25 places, same geography level) and explicitly warns against mixed geography levels. It does not name alternatives or explicitly state when not to use it, but the constraints and purpose imply appropriate usage. A sibling tool like explore_census_geographies is naturally understood as complementary, though not named.

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

compare_county_unemploymentA

Compare LAUS unemployment metrics across up to 10 US counties for a single period (never seasonally adjusted). Params: fips is a comma-separated list of 5-digit county FIPS codes (e.g. '06085,48201,17031' for Santa Clara CA, Harris TX, Cook IL). Maximum 10 counties per call. year and month are both optional, but if one is provided the other must be too (omit both to get the latest period the API can resolve). Use month=13 for the annual-average row. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
monthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses critical behavior: 'never seasonally adjusted', 'single period', the year/month coupling rule, the 'month=13' annual-average row, and the data source. This goes well beyond the schema and provides the agent with essential constraints.

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 core purpose, followed by precise parameter details. Every sentence adds value, with no repetition 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 tool's complexity (3 params, one required), the description fully covers all inputs and usage constraints. An output schema exists, so return-value details are not required. The description is complete enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

The schema has zero description coverage, but the description compensates fully: it explains fips format with a concrete example, the 10-county limit, the optionality and coupling of year/month, and the special month=13 value. This is exemplar parameter documentation.

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

Purpose5/5

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

The description opens with 'Compare LAUS unemployment metrics across up to 10 US counties for a single period', which clearly states the verb (compare), resource (LAUS unemployment metrics), and scope (counties, up to 10, single period). It also distinguishes from sibling tools like compare_state_unemployment by specifying county-level comparison.

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: it specifies 'Never seasonally adjusted', 'Maximum 10 counties per call', and the coupling requirement for year/month. However, it does not explicitly name alternatives or when-not-to-use, stopping short of a 5.

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

compare_state_unemploymentA

Compare LAUS unemployment metrics across up to 10 US states for a single period. Defaults to seasonally adjusted (adjustment='sa'); pass adjustment='nsa' for the NSA series. Params: fips is a comma-separated list of 2-digit state FIPS codes (e.g. '06,48,36' for CA, TX, NY). Maximum 10 states per call. year and month are both optional, but if one is provided the other must be too (omit both to get the latest period the API can resolve). Use month=13 for the annual-average row. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
monthNo
adjustmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explains defaults, constraints (max 10 states, year/month pairing), and special values (month=13), which is strong. It does not discuss error handling or output specifics, but the output schema covers that. It's thorough but not exhaustive.

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 information-dense but well-structured. It leads with the core purpose, then parameter rules, then source. Every sentence adds value; no fluff or repetition.

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 explain return values. It covers all parameters, their constraints, defaults, and the data source. This is a complete guide for invoking the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It fully does: explains fips format with examples, maximum states, adjustment options, year/month dependency, and the special annual-average month. This far exceeds the bare schema and gives the agent everything needed to correctly populate 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 the tool compares LAUS unemployment metrics across up to 10 US states for a single period. The verb 'compare' and resource 'LAUS unemployment metrics' are specific, and the scope distinguishes it from siblings like get_state_unemployment or compare_county_unemployment.

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 provides clear usage context: when to use (multi-state comparison), how to specify parameters (fips format, adjustment, year/month pairing, month=13), and defaults (seasonally adjusted). However, it does not explicitly mention alternatives or when not to use this tool, so it stops short of a 5.

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

create_webhookA

Create a webhook subscription. Required: url (HTTPS) and events (e.g. ['filing.created']). Optional: filing_types to narrow events to specific form types ('10-K', '8-K'); description for your own notes. Returns the new subscription details PLUS a one-time HMAC signing secret you MUST save — the api will not show it again. Free-tier callers receive a 402 error; webhooks require Starter+ plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
eventsYes
descriptionNo
filing_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so excellently. It discloses the one-time HMAC signing secret that must be saved and won't be shown again, plus the 402 error on free-tier. This is critical behavioral context beyond the schema and enriches the agent's understanding of side effects and prerequisites.

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 moderately long, but every sentence carries unique value: purpose, required params, optional params, return details, and error/plan restriction. It is well-structured and information-dense without being verbose.

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 having an output schema, the description adds extra context the schema wouldn't provide: the one-time secret caveat, the HTTPS requirement, and the paid-plan error condition. It covers the full lifecycle of the call—inputs, outputs, and failure modes—making it highly complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain all parameters. It does this thoroughly: url must be HTTPS, events uses examples like 'filing.created', filing_types narrows to form types like '10-K'/'8-K', and description is for user notes. This fully compensates for the empty schema.

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

Purpose5/5

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

The description opens with a clear verb-resource pair: 'Create a webhook subscription.' It explicitly lists required and optional parameters, and the sibling tools (update_webhook, delete_webhook, list_webhooks) make it unambiguous that this is a creation tool. No ambiguity.

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

Usage Guidelines4/5

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

The description gives clear context: required HTTPS URL and events, optional filing_types and description, and a note that webhooks require a paid plan. It doesn't explicitly call out when not to use it or reference alternatives, but the sibling tool names imply the distinctions. This is clear enough for an agent to select this tool for creation.

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

delete_webhookA

Delete a webhook subscription. Delivery history is retained server-side; the subscription itself stops receiving new events. Irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: irreversibility and the fact that delivery history is retained server-side while the subscription stops receiving events. This goes beyond the bare operation name and gives the agent important safety information.

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: the first states the action, and the second covers key consequences. There is no extraneous information, and the structure is front-loaded with the 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?

For a simple delete operation with one parameter and an output schema, the description sufficiently covers the essential behavior (irreversibility, retention of history). It does not need to explain return values since an output schema exists, though it could optionally mention preconditions like the subscription needing to exist.

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

Parameters2/5

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

Schema coverage is 0% and the description does not mention the subscription_id parameter at all. While the parameter name is self-explanatory, the description fails to add any meaning beyond the schema, such as specifying that this ID identifies the webhook to delete.

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

Purpose5/5

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

The description opens with 'Delete a webhook subscription,' which is a specific verb+resource that clearly states the tool's action. It distinguishes itself from sibling tools like create_webhook, get_webhook, and update_webhook by using the explicit 'delete' verb.

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 the outcome: delivery history is retained, the subscription stops receiving new events, and the action is irreversible. However, it does not explicitly mention when to choose this over alternatives (e.g., update_webhook to disable), so it lacks explicit exclusions.

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

explore_bls_metricsA

Discover available BLS metrics and what data the API offers. Use this to understand what labor market data is available before making specific queries. Filter by category ('employment', 'wages', 'derived'), source ('ces', 'qcew', 'oews'), or search by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
sourceNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It implies a read-only discovery behavior and provides filter categories and source enumerations, adding useful context. However, it does not disclose whether results are paginated, limited, or how search semantics work (e.g., exact vs partial match).

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 focused sentences, front-loaded with the main purpose and immediately followed by usage guidance and parameter details. Every sentence earns its place; 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?

The tool is a simple exploration interface with three optional parameters and an output schema to cover return values. The description explains purpose, when to use, and parameter values, making it sufficiently complete for onboarding. Minor gap: no mention of list size or examples, but not essential.

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 0%, but the description compensates by explaining the query parameter as 'search by name' and enumerating valid values for category ('employment', 'wages', 'derived') and source ('ces', 'qcew', 'oews'). This adds meaning beyond the bare property names.

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 'Discover' and names the resource 'available BLS metrics and what data the API offers.' It clearly distinguishes this exploration tool from sibling tools like 'explore_census_metrics' and 'explore_sba_metrics' by naming BLS and labor market 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?

Explicitly states to use it 'before making specific queries' to understand available data, providing clear usage context. It does not explicitly list alternatives or when not to use it, but the guidance is strong enough for an exploration tool.

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

explore_census_geographiesA

List available US Census geography levels (state, county, place, metro, etc.) and the number of places at each level. Use this first to discover what levels exist before calling search_census_places. Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full transparency burden. It discloses the data source (public-domain US Census Bureau data) and describes the output (geography levels and counts), implying a read-only operation. It does not explicitly state side-effect safety or return format, but the simplicity and list semantics make this 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 exactly two sentences: the first states the core purpose, the second adds usage guidance and source. Every sentence earns its place, with no redundancy or filler.

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

Completeness5/5

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

For a simple, parameterless discovery tool that outputs a list of levels and counts, the description is complete. It tells the agent what the tool returns, when to use it relative to a sibling tool, and provides source context. An output schema exists, so detailed return value documentation is unnecessary.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty, so parameter-level documentation is unnecessary. With schema coverage at 100% and no parameters to describe, the baseline of 4 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 lists available US Census geography levels and the number of places at each level. It uses a specific verb (List) and resource (US Census geography levels), and distinguishes from sibling search_census_places by framing itself 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 Guidelines5/5

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

The description explicitly says 'Use this first to discover what levels exist before calling search_census_places', providing direct when-to-use guidance and naming an alternative to avoid.

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

explore_census_metricsA

Discover available US Census Bureau metrics. Use this to find the canonical_name of a metric before calling the place or breakdown tools. Params: query filters by substring match on display_name or canonical_name; category filters by metric category (e.g. 'demographics', 'economy', 'housing'). Filters are case-insensitive. Returns up to 50 results. Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It reveals a 50-result cap, case-insensitive filters, and substring match behavior on query. It does not mention pagination or error handling, but for a read-only discovery tool this is reasonable. The description adds value beyond the schema by specifying match semantics and result limits.

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

Conciseness5/5

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

The description is compact and organized: purpose, usage guidance, parameter details, result limit, and source. Each sentence delivers distinct information without redundancy, and the most critical usage guidance is 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?

For a simple two-parameter tool with an output schema, the description covers what the schema does not: workflow placement, search behavior, and result cap. It is sufficient 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?

Schema coverage is 0%, so the description fully compensates. Query is defined as 'substring match on display_name or canonical_name', and category is illustrated with concrete examples ('demographics', 'economy', 'housing'). Case-insensitivity is also documented, which is not present 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 identifies the tool as a discovery endpoint for US Census Bureau metrics, with the specific verb 'Discover'. It explicitly differentiates from sibling tools by stating its role: 'Use this to find the canonical_name of a metric before calling the place or breakdown 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?

It explicitly states when to use this tool versus alternatives: 'Use this to find the canonical_name of a metric before calling the place or breakdown tools.' It also distinguishes from BLS tools by mentioning 'US Census Bureau data', giving implicit selection criteria.

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

explore_sba_metricsA

Browse the SBA 7(a) metric catalog — discover available metrics by category or keyword. category accepts 'volume', 'outcomes', or 'characteristics'. query is a free-text search (minimum 2 characters). Returns metric canonical names with display name, category, unit, and update cadence. Use get_sba_metric_detail to fetch the full definition for a single metric. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden of behavioral disclosure. It does describe the output shape (canonical names with display name, category, unit, update cadence) and mentions the public-domain source, which adds useful context. However, it does not explicitly state read-only semantics, how the limit parameter behaves, or potential pagination/rate-limit behaviors, leaving some behavioral aspects opaque.

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 four sentences, front-loaded with the primary purpose, then param details, then output summary, sibling pointer, and source attribution. Every sentence provides distinct, useful information with no filler or redundancy. It is exemplary in both length and organization.

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 complexity (3 params, output schema present, no annotations), the description covers the core purpose, parameter constraints (except limit), output contents, and the sibling relationship. The output schema supplies structured return details, so the description need not do that. The main gap is the undocumented limit parameter and lack of explicit pagination notes, but overall it is highly usable.

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 0%, so the description must compensate. It explains category (valid values 'volume', 'outcomes', 'characteristics') and query (free text, minimum 2 characters), which adds meaning beyond the schema's bare type definitions. But it completely omits any explanation of the `limit` parameter, which is one of the three parameters, so the compensation is incomplete.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Browse the SBA 7(a) metric catalog' and explains what it lets you do ('discover available metrics by category or keyword'). It distinguishes itself from siblings like get_sba_metric_detail and explore_bls_metrics by scoping to the SBA 7(a) metric catalog, making the tool's niche clear.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool versus the alternative: 'Use get_sba_metric_detail to fetch the full definition for a single metric.' It also provides concrete search constraints (category values, query minimum length), giving clear guidance for invocation. The sibling differentiation is strong and actionable.

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

get_board_membersA

Get board of directors (name, age, tenure, independence, committee memberships) from proxy statements. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the data source ('from proxy statements') and a notable behavior: historical tickers resolve to the current entity ('FB' resolves to META). This adds useful behavioral context beyond a generic read operation. However, it does not mention any limitations or side effects, though none are apparent for a 'get' operation.

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 the first sentence stating the purpose and the second detailing the primary parameter. Every word adds value, no fluff, and critical information is front-loaded. This is an ideal structure.

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 is complete for the tool's core function and leverages the output schema to avoid restating return structures. It provides source, purpose, and key input variants. However, the absence of a description for the 'year' parameter is a notable gap, especially given its presence in the schema. Overall, the description is adequate but could be more complete with a brief mention of 'year'.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must compensate. It does an excellent job explaining the 'ticker' parameter with examples and accepted formats, but the 'year' parameter is not described at all. Since there are only two parameters and one is fully covered while the other is ignored, the description partially compensates but leaves a gap.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Get'), the resource ('board of directors'), and the specific data fields returned (name, age, tenure, independence, committee memberships). This distinguishes it from sibling tools like get_executive_compensation, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool—when you need board of directors information from proxy statements. It also gives detailed input formats for the ticker parameter, which helps in practical usage. However, it does not explicitly mention alternatives or when not to use the tool, unlike the top-tier examples, but the context is still strong enough to guide an agent.

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

get_census_metric_detailA

Get metadata for a single US Census metric, including the underlying source variables and margin-of-error formula type. Use this after explore_census_metrics to understand exactly what a metric measures. Params: metric is the canonical_name (e.g. 'median_household_income'). Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It clearly indicates this is a read-only metadata lookup and adds context about public-domain data. It doesn't fully disclose possible failure modes or rate limits, but for a metadata retrieval tool this 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?

Three compact sentences: purpose, usage context, and parameter/source info. No filler, front-loaded with the most important information, and each sentence earns its place.

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

Completeness5/5

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

Despite minimal schema and no annotations, the description covers the tool's purpose, input semantics, output contents, and data source. With a single parameter and an output schema available, this 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 schema gives no description for the 'metric' parameter, but the description explains it is the canonical_name and gives an example ('median_household_income'). This fully compensates for the 0% schema coverage and clarifies the expected value format.

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

Purpose5/5

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

The description clearly states the tool gets metadata for a single US Census metric, including source variables and margin-of-error formula type. It uses a specific verb and resource, and the phrase 'single metric' differentiates it from comparison tools like compare_census_metric.

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 says 'Use this after explore_census_metrics to understand exactly what a metric measures,' providing a clear workflow placement. This tells the agent when to invoke this tool relative to siblings.

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

get_census_placeA

Get detailed geographic information for a single US Census place. Returns name, parent place, population, area, coordinates, and available child levels. Params: level is the geography level, fips is the place's FIPS code. FIPS length varies by level: state=2 digits, county=5 digits, place=7 digits, tract=11 digits. Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
levelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses return fields, FIPS length rules, and public-domain source, which conveys a read-only nature. It does not cover invalid-input behavior or rate limits, but for a simple lookup the transparency 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?

Three sentences: purpose, param explanation, and source. Every sentence provides necessary information, front-loaded with the tool's core function, and 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 the output schema exists and the tool is a simple single-place lookup, the description covers purpose, return contents, parameter semantics, and data source. No significant missing context for this scope.

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 0%, but the description fully compensates by explaining that 'level' is the geography level and 'fips' is the FIPS code, with specific length mappings (state=2, county=5, place=7, tract=11). This adds critical meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool gets detailed geographic information for a single US Census place, enumerating specific return fields (name, parent place, population, area, coordinates, child levels). This distinguishes it from siblings like search_census_places and get_census_place_metrics.

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 a known single place by FIPS code, and the focus on 'geographic information' separates it from metric-focused siblings. However, it does not explicitly call out alternatives such as explore_census_geographies or search_census_places.

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

get_census_place_breakdownA

Break a US Census metric down across the child geographies of a parent place. For example, pass a state FIPS to get the metric for every county inside that state. Params: fips is the parent place's FIPS; metric is the canonical_name; dataset is optional ('acs1' or 'acs5'); year is optional. Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
metricYes
datasetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description describes parent/child geography behavior, source of data, and optional parameters, but it does not disclose potential failure modes, pagination, or explicit read-only status. It is adequate but lacks deeper behavioral context.

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

Conciseness5/5

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

The description is three sentences: the main purpose, a concrete example, and parameter definitions. It is front-loaded, free of filler, and 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?

The output schema covers return values, and the description provides purpose, example, source, and parameter semantics. It is fairly complete for an agent to select and invoke the tool, though it lacks explicit guidance on alternatives or limitations.

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 0%, yet the description compensates by explaining every parameter: fips as parent FIPS, metric as canonical_name, dataset with allowed values ('acs1' or 'acs5'), and year as optional. It adds meaning beyond bare property names, though format details for fips/metric are light.

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 ('break down') and clearly identifies the resource: a US Census metric across child geographies of a parent place. The state-FIPS-to-counties example makes the scope concrete and differentiates it from sibling tools like get_census_place_metrics or explore_census_geographies.

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 provides a clear example of when to use the tool (state FIPS to get county-level metrics) but does not explicitly name alternatives or state when not to use it. The context is sufficient to infer the intended use case, but exclusions are absent.

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

get_census_place_metricsA

Get the full set of US Census metrics for one place, grouped by category. Returns the latest available year by default (server-chosen). Use this as a 'Census profile' for a single place. Params: fips is the place's FIPS code (length varies by level: state=2, county=5, place=7, tract=11). Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the default behavior (latest year, server-chosen) and clarifies that data is public-domain. It does not mention potential side effects, but as a read-only getter 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?

The description is three concise sentences: function, behavior, and parameter explanation. It is front-loaded with the primary purpose and avoids any 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?

Given the tool's single parameter and the existence of an output schema, the description is complete. It covers the tool's role, the default year behavior, and parameter specifics without redundant return-value details.

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 schema only defines 'fips' as a string with no description (0% coverage). The description fully compensates by explaining what fips is and the length variations by geographic level. This is essential for correct use.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get the full set of US Census metrics for one place, grouped by category.' This clearly states what the tool does. It distinguishes itself from siblings by positioning it as a 'Census profile' for a single place.

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 when you want a broad Census profile: 'Use this as a "Census profile" for a single place.' This implies when to choose it over metric-specific tools, though it does not explicitly name alternatives or exclusions.

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

get_census_place_metric_seriesA

Get a time series for one US Census metric in one place. Omit year for the full series; provide year for a single observation. Params: fips is the place's FIPS code; metric is the canonical_name; dataset is optional ('acs1' or 'acs5'). Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
metricYes
datasetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the series behavior, optional dataset, and source, but does not detail response format or error conditions. That said, the presence of an output schema means return values are already documented, so the description adds adequate value for a simple read operation.

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

Conciseness5/5

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

The description is concise and well-structured: first sentence states the purpose, second explains the key behavioral variation, third defines parameters and source. No wasted words; information is front-loaded and easy to scan.

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 all essential aspects for correct invocation: what the tool does, how to control the series length, what each parameter means, and the data source. It does not mention how to discover valid metric names, but this is implicitly handled by sibling tools such as explore_census_metrics, and the output schema defines the return structure.

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 schema has 0% parameter descriptions, so the description must compensate. It does so effectively: 'fips is the place's FIPS code; metric is the canonical_name; dataset is optional ('acs1' or 'acs5')' and the year behavior is explained. Every parameter is given meaning beyond the raw 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 specific function: 'Get a time series for one US Census metric in one place.' This includes a specific verb (Get), resource (time series for a metric), and scope (one place). It distinguishes from sibling tools like compare_census_metric or get_census_place_metrics by focusing on a single metric and single place.

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

Usage Guidelines4/5

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

The description provides clear context on how to use the tool: 'Omit year for the full series; provide year for a single observation.' It also explains parameter roles and optional dataset values. However, it does not explicitly mention when to use alternative tools or when not to use this one, though the purpose statement implies differentiation from siblings.

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

get_companyA

Get company profile plus any combination of sub-resources in one call: financials, ratios, insider trades, institutional holders, 8-K corporate events, executive compensation, board, labor market context, or SBA lending context. Pass include='financials,ratios,events' (comma-separated) to compose exactly what you need. Default includes labor_context + lending_context for the company profile view. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
includeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral weight. It discloses default behavior ('Default includes labor_context + lending_context') and ticker resolution rules ('FB resolves to META'), but does not explicitly state read-only operation or behavior when data is missing.

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

Conciseness4/5

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

The description is detailed but every sentence serves a purpose: purpose, usage, defaults, and parameter semantics. It's organized with a clear 'Args:' marker, and is not bloated despite its length.

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 doesn't need to explain returns. It covers purpose, usage, parameters, and defaults thoroughly enough for an agent to invoke correctly, though it omits potential error cases or data availability caveats.

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 schema descriptions are empty (0% coverage), so the description's detailed ticker formats ('10-digit CIK ("0000320193"), stripped CIK ("320193"), or historical ticker') and include composition are essential and well-documented.

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 fetches a company profile with optional sub-resources ('Get company profile plus any combination of sub-resources in one call'). It lists specific sub-resources, differentiating it from sibling single-resource tools like get_financials or get_ratios.

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 explains when to use (to compose multiple sub-resources) and gives an example ('Pass include=... to compose exactly what you need'), but does not explicitly contrast with calling individual endpoints or state when not to use it.

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

get_county_employmentA

Get quarterly employment data for a US county from the BLS QCEW program. FIPS is a 5-digit county code (e.g. '12086' for Miami-Dade County, FL). Industry defaults to '10' (all industries). Ownership defaults to 'private'. Omit year/quarter for all available data.

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
quarterNo
industryNo
ownershipNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds useful behaviors like default industry ('10'), default ownership ('private'), and omitting year/quarter for all data. However, it does not mention any potential side effects, error conditions, data lag, or authorization requirements, leaving notable gaps for a non-annotated 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, front-loaded with the core purpose, followed by the most important parameter guidance. No filler or 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 5-parameter schema and output schema availability, the description covers the essential invocation context: data source, FIPS format, defaults, and optional time filtering. Minor omissions such as valid quarter range or ownership/industry codes are not required for basic use, but keep it just shy of fully complete.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates strongly: FIPS format and example, industry default meaning 'all industries', ownership default, and explicit instruction to omit year/quarter for all available data. This transforms bare parameter names into usable invocation details, especially for the required fips.

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-resource pair ('Get quarterly employment data for a US county') and names the data source (BLS QCEW), clearly distinguishing it from siblings like get_county_wages and get_county_unemployment. The FIPS example further clarifies the exact 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 gives clear context: it is for county-level quarterly employment from QCEW, with defaults and optional year/quarter behavior. It does not explicitly name alternatives or state when not to use the tool, so it misses the top tier for explicit when/when-not guidance.

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

get_county_lendingA

Get quarterly SBA 7(a) loan aggregates for a single US county — loan count, total amount, charge-off rate, average loan size, and jobs supported. Without period filters, returns the latest available quarterly observation. Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series. Params: fips is a 5-digit county FIPS code (e.g. '06037' for Los Angeles County, CA). Optional industry filter accepts a NAICS code to restrict aggregates to one industry. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
quarterNo
industryNo
to_periodNo
from_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, description carries full burden. It discloses the default behavior (latest quarter if no period filters) and required period format. It notes the public domain source, but doesn't discuss error handling or rate limits, which are not critical for this data retrieval.

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

Conciseness5/5

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

Three sentences, front-loaded with the core purpose and metrics, then usage, then parameter details. No fluff, every sentence provides 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, description doesn't need to explain return values. It covers purpose, default behavior, time series usage, parameter formats, and data source. Comprehensive for a 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?

Description explains fips format with example, from_period/to_period format, and industry NAICS filter. It omits the year and quarter parameters present in the schema, meaning some parameters are not described, but key ones are covered with concrete 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?

Description clearly states it returns quarterly SBA 7(a) loan aggregates for a single US county, listing specific metrics. This distinguishes it from sibling tools like get_state_lending or get_county_employment by its scope and data 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?

Provides usage context: without period filters returns latest observation, and instructs to supply both from_period and to_period for series. However, it doesn't explicitly contrast with alternative lending tools or exclude other parameters.

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

get_county_unemploymentA

Get monthly LAUS unemployment data for a single US county (never seasonally adjusted — county LAUS has no SA/NSA option). Without dates, returns the latest available observation. Provide both from_date and to_date (YYYY-MM) for a time series. Set annual_only=True to return only annual averages (M13 rows). Params: fips is a 5-digit county FIPS code (e.g. '06085' for Santa Clara County, CA). For comparing multiple counties in a single period, use compare_county_unemployment instead. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
to_dateNo
from_dateNo
annual_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses critical behavioral traits: never seasonally adjusted, no SA/NSA option, default latest-observation behavior, and the meaning of annual_only (M13 rows). This is strong transparency beyond what the schema offers.

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 slightly long but every sentence adds value—purpose, behavioral traits, parameter details, alternative tool, and source. It is front-loaded with the main purpose. The inclusion of source is extra but not wasteful.

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 moderate complexity and presence of an output schema, the description covers usage, parameters, behavior, and alternatives. Edge cases like default dates and annual_only are addressed, making it complete for an agent to invoke correctly.

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

Parameters5/5

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

Schema has no descriptions (coverage 0%), so the description compensates fully: explains fips with a concrete example, specifies YYYY-MM format for from_date/to_date, and clarifies annual_only behavior. This is essential semantic info not present 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 'Get monthly LAUS unemployment data for a single US county', which specifies the verb, resource, and scope. It distinguishes from sibling tools by explicitly noting 'single county' and pointing to compare_county_unemployment for multi-county comparisons.

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 usage guidance: without dates returns latest, with both dates returns time series, annual_only option for annual averages, and explicitly mentions an alternative tool for comparing multiple counties. This helps the agent choose the correct tool.

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

get_county_wagesA

Get a wage snapshot for a US county including location quotients. FIPS is a 5-digit county code (e.g. '06037' for Los Angeles County, CA). A location quotient above 1.0 means the county has a higher concentration of that industry than the national average. Industry defaults to '10' (all industries).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
quarterNo
industryNo
ownershipNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explains the meaning of location quotients and the industry default, which is useful context. However, it doesn't disclose limitations like data coverage or response format, leaving some ambiguity.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the primary action, and contains no filler. Every sentence adds meaningful detail about the tool's output or parameters.

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

Completeness3/5

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

The description covers the core purpose and provides an interpretation of location quotients, but it leaves several optional parameters semantically unexplained. The presence of an output schema covers return structure, but the underdefinition of year, quarter, and ownership reduces completeness.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains fips with a concrete example and clarifies the industry default, but year, quarter, and ownership are left undefined. This is a significant gap for a five-parameter 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 states the tool's function: 'Get a wage snapshot for a US county including location quotients.' It uses a specific verb and resource, and the mention of location quotients distinguishes it from sibling tools like get_county_employment and get_county_unemployment.

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 contextual guidance by explaining what a location quotient above 1.0 means and noting the industry default. This helps an agent understand when to use this tool for county-level wage analysis, though it doesn't explicitly compare to alternatives.

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

get_eventsA

Get 8-K corporate events (earnings, M&A, leadership changes, material agreements). Use ticker to scope to one company, or omit to search across all companies. Filter by category and date range. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tickerNo
to_dateNo
categoryNo
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explains ticker flexibility (CIK, stripped CIK, historical ticker resolution) and the all-companies default, but omits details like date formatting, category values, sorting, or 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 compact and front-loaded. The first sentence captures purpose, the second explains scoping, and the Args block provides detailed parameter guidance without unnecessary 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?

For a five-parameter read tool with an output schema present, the description is largely complete: it covers purpose, scoping modes, and ticker variants. Minor gaps around date/category formats are acceptable because the output schema exists and the core invocation is well explained.

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 0%, so the description must compensate. It adds thorough semantics for ticker, but only vaguely mentions 'category and date range' without explaining valid date formats or category options. Limit is left entirely to 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 the tool gets 8-K corporate events and enumerates specific event types (earnings, M&A, leadership changes, material agreements). It distinguishes itself from sibling tools by naming the exact SEC filing type and scope 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?

Guidance is clear: use ticker to scope to one company, omit to search all, and filter by category/date range. It does not explicitly name alternatives or when-not-to-use, but the context is sufficient for selecting this tool among many siblings.

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

get_executive_compensationA

Get executive compensation (salary, bonus, stock awards, total) from proxy statements. Includes CEO-to-median pay ratio when available. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It adds meaningful behavioral details: data source (proxy statements), included fields, conditional availability of CEO-to-median pay ratio, and historical ticker resolution ('FB' resolves to META). It omits error behavior or rate limits, but the core read-only behavior is well disclosed.

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

Conciseness5/5

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

The description is concise and front-loaded with the purpose, followed by precise argument details. Every sentence adds value; there is no redundant or vague phrasing.

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?

An output schema exists, so return values are covered. The description explains source, fields, identifier formats, and special cases, but the missing year parameter semantics and lack of usage context prevent a perfect score. It remains reasonably complete for a simple lookup 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 0%, so the description must explain parameters. It thoroughly documents ticker, including examples and accepted formats, but completely omits the year parameter. This leaves ambiguity about fiscal year selection and default behavior—a clear gap.

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 executive compensation (salary, bonus, stock awards, total) from proxy statements, naming specific data fields. This distinguishes it from sibling tools like get_financials or get_company, which cover broader or different financial data.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention exclusions or compare to related finance tools, though it does provide accepted identifier formats. The dimension requires explicit when/when-not/alternative guidance, which is absent.

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

get_financial_metricA

Get a single financial metric over time. Returns a time series for trend analysis. Series points carry per-point currency and taxonomy metadata, authoritative over the envelope currency when a filer changes presentation currency mid-series. Income metrics: revenue, cost_of_revenue, gross_profit, operating_expenses, research_and_development, selling_general_admin, operating_income, interest_expense, interest_income, pre_tax_income, income_tax_expense, net_income, eps_basic, eps_diluted, shares_basic, shares_diluted. Balance sheet: total_assets, current_assets, cash_and_equivalents, accounts_receivable, inventory, non_current_assets, property_plant_equipment, goodwill, intangible_assets, total_liabilities, current_liabilities, accounts_payable, short_term_debt, non_current_liabilities, long_term_debt, total_equity, common_shares_outstanding. Cash flow: operating_cash_flow, investing_cash_flow, financing_cash_flow, net_change_in_cash, capital_expenditures, dividends_paid, share_repurchases. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYes
periodNoannual
tickerYes
to_yearNo
from_yearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full weight. It discloses a nuanced behavior about per-point currency and taxonomy metadata being authoritative when a filer changes presentation currency mid-series. For a read-only data retrieval tool, this is meaningful context, though it does not mention rate limits, error handling, or pagination.

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 core purpose, followed by a brief metadata note and then organized metric lists by category. The metric lists are long but justified since they define the metric parameter. The 'Args' section is terse. Overall, it is dense but each sentence contributes 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?

The description covers the tool's core behavior, metric vocabulary, and ticker formats, and an output schema exists to document return values. It lacks explicit guidance on period values (e.g., 'annual' vs. 'quarterly') and date range semantics, but those are inferable from the parameter names and defaults. Overall, it is sufficiently complete for a 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?

The schema has 0% coverage for parameters in the description, but the description compensates significantly by enumerating all valid metric names and detailing accepted ticker formats (including CIK and historical ticker resolution). However, period, from_year, and to_year are not explained beyond their schema defaults, leaving minor ambiguity around period values.

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

Purpose5/5

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

The description opens with a clear, specific verb and resource: 'Get a single financial metric over time.' It explicitly states the tool returns a time series for trend analysis, distinguishing it from sibling tools like get_financials (which presumably returns multiple metrics). The extensive list of supported metrics further clarifies 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 implies when to use the tool through 'single financial metric' and 'time series for trend analysis,' suggesting it's for one metric over a time range. It provides ticker format guidance including CIK and historical tickers, but does not explicitly name alternative tools or state when not to use it, so it falls short of a full 5.

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

get_financialsA

Get financial statements (income statement, balance sheet, cash flow, or all three) for a US public company from SEC filings. Pass statement='all' to get all three in one call or years=N (1-10) to get the last N annual periods for trend analysis. Responses carry taxonomy ('us-gaap' or 'ifrs-full'), native-reported currency, and presentation-format metadata. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
yearsNo
periodNoannual
tickerYes
quarterNo
statementNoincome

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

It discloses useful behavioral details such as output metadata (taxonomy, currency, presentation format) and historical ticker resolution ('FB' → META). Since no annotations are provided, the description carries the full burden, but it omits potential edge cases like invalid ticker behavior, rate limits, or how the 'period' and 'quarter' parameters affect the response.

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 compact at three sentences plus an Args line, with the primary purpose front-loaded. However, the Args section only details ticker, which is slightly misleading because other parameters exist, and the structure could be improved by listing all parameters or explaining the period/year/quarter semantics more clearly.

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

Completeness3/5

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

Given the tool's complexity (6 parameters, 0% schema coverage, no annotations, but an output schema exists), the description covers the main entry points (statement type, years, ticker) and output metadata. However, it omits parameter semantics for year/quarter/period and lacks sibling differentiation, leaving noticeable gaps for an agent to invoke it correctly.

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

Parameters2/5

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

The description explains the ticker parameter in detail and mentions statement and years, but the input schema has 6 parameters with 0% description coverage. The 'year', 'quarter', and 'period' parameters are not explained at all, leaving the agent uncertain about how to request specific fiscal years or quarterly data. This is a significant gap for a tool with no schema-level 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 financial statements (income statement, balance sheet, cash flow) from SEC filings for US public companies, with a specific verb and resource. It distinguishes itself from sibling tools like get_financial_metric, which likely focus on individual metrics, by emphasizing full financial statements.

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 usage hints for statement='all' and years=N for trend analysis, which implies when to use different parameter configurations. However, it doesn't explicitly mention when to choose this tool over alternative sibling tools or when not to use it, leaving the guidance partly implied rather than explicit.

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

get_fund_holdingsB

Get a fund's portfolio holdings. Shows what stocks a fund owns, with share counts and market values. Accepts fund name or CIK. Response rows carry the 13F report_quarter and filed_at timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
quarterNo
fund_nameYes
position_typeNoequity

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds value by revealing response fields (share counts, market values, 13F report_quarter, filed_at) and the input method, but the claim of accepting CIK contradicts the schema, creating confusion. It does not discuss permissions, rate limits, or side effects, though as a read operation the safety profile is implied.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the purpose and includes useful details efficiently. The minor CIK inconsistency does not detract from conciseness.

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

Completeness3/5

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

The presence of an output schema covers return value structure. However, with four parameters and zero schema descriptions, the tool description leaves limit, quarter, and position_type undefined. The CIK discrepancy further reduces completeness, making the description adequate but not fully informative.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain parameters. It clarifies fund_name (and mentions CIK, though not a schema parameter) but does not explain limit, quarter, or position_type. The quarter parameter is only indirectly hinted by the response field report_quarter, but no explicit semantics are provided.

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

Purpose4/5

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

The description clearly states the tool retrieves a fund's portfolio holdings, with specific details about share counts and market values. It distinguishes from siblings like get_institutional_holders, which likely returns holders of a security, but a minor inconsistency ('Accepts fund name or CIK') is noted since the schema only includes fund_name.

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives or mention any exclusions. It implies use for fund holdings but offers no comparison to related tools such as get_holding_changes or get_institutional_holders.

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

get_holding_changesA

Get quarter-over-quarter changes in institutional holdings. Use 'ticker' to see which funds are buying/selling a company, or 'fund_name' to see what a fund is buying/selling. Provide exactly one. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
changeNo
tickerNo
quarterNo
fund_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the two usage modes and ticker format details (CIK, historical ticker), which is useful. However, it does not explain behavior around the 'limit', 'quarter', or 'change' parameters, nor what happens when both or neither of the key parameters are provided. Adds some value but is not comprehensive.

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

Conciseness4/5

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

The description is concise, with two sentences plus a focused note on ticker formats. It is front-loaded with the main purpose and provides the most critical usage detail without unnecessary filler. Slightly unstructured due to the inline 'Args' listing, but still efficient.

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

Completeness2/5

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

For a tool with 5 parameters and no annotations, the description is incomplete. It omits semantics for 'change' and 'quarter', which are essential for using the tool correctly. The output schema exists but does not offset the missing parameter guidance. It is adequate only for basic ticker/fund_name queries.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. Only 'ticker' is explained in detail (with formats), and 'fund_name' is briefly described. The 'limit', 'change', and 'quarter' parameters are completely unexplored, leaving significant ambiguity for 3 of 5 parameters. This is a major gap.

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: getting quarter-over-quarter changes in institutional holdings. It distinguishes itself from sibling tools like get_fund_holdings or get_institutional_holders by focusing on changes (buying/selling) and explicitly explaining the two query modes (ticker vs fund_name).

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

Usage Guidelines4/5

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

The description gives concrete usage direction: use 'ticker' to see which funds are buying/selling a company, or 'fund_name' to see what a fund is buying/selling, and explicitly requires providing exactly one of these. It does not mention alternative tools or exclusions, but the primary use cases are clear.

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

get_industry_detailA

Get detailed information for a single BLS industry including child industries and data availability. Use this after search_industries to drill into a specific industry. Params: naics is the NAICS code (e.g. '5112' for Software Publishers).

ParametersJSON Schema
NameRequiredDescriptionDefault
naicsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states what data is returned ('child industries and data availability') but does not disclose rate limits, authentication, or explicitly confirm read-only behavior. The 'Get' verb implies a read operation, but behavioral context beyond the output content is limited.

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 segments: purpose and parameter note, with no filler. It front-loads the primary action and resource, then gives the essential parameter detail.

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 one-parameter tool with an output schema, the description covers purpose, usage context, and parameter semantics. The output schema presumably documents the return structure, so the description is complete without over-explaining.

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 0%, and the description fully compensates: 'naics is the NAICS code (e.g. '5112' for Software Publishers)' adds type, format, and a concrete example, making the parameter meaningful beyond the bare schema entry.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('detailed information for a single BLS industry') with scope ('including child industries and data availability'). It clearly distinguishes from search_industries by emphasizing 'single' and 'drill into,' but does not explicitly differentiate from industry-specific siblings like get_industry_employment.

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

Usage Guidelines4/5

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

Provides clear usage context: 'Use this after search_industries to drill into a specific industry.' This establishes a workflow and implies when to use the tool, but does not mention exclusions or alternatives beyond search_industries.

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

get_industry_employmentA

Get employment data for a BLS industry. Shows the latest observation with year-over-year changes by default. Provide from_date and to_date (YYYY-MM format) for a time series. Params: naics is the NAICS code, adjustment is 'sa' (seasonally adjusted, default) or 'nsa', geo/state/metro narrow geography.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
metroNo
naicsYes
stateNo
to_dateNo
from_dateNo
adjustmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the burden of behavioral disclosure. It does a good job by explaining the default latest-observation behavior, that providing from_date/to_date yields a time series, that adjustment defaults to 'sa', and that geo/state/metro narrow the geography. It stops short of stating data freshness, missing-data behavior, or explicitly calling out read-only semantics, but the output schema covers return format.

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

Conciseness5/5

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

The description is compact and efficient: two sentences plus a short param list. Each sentence adds value—first states the purpose, second explains default vs. time-series behavior, and the param list clarifies key inputs. There is no fluff or repetition.

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

Completeness3/5

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

Given the tool has 7 parameters, no annotations, and an output schema, the description covers the primary use case and main parameters but leaves gaps around geography parameter interactions (e.g., can state and metro be combined? what formats are accepted?). It is adequate for a simple call but not fully comprehensive for a 7-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 input schema has no parameter descriptions (0% coverage), so the description must compensate. It does: it defines naics as the NAICS code, adjustment as 'sa' or 'nsa', dates as YYYY-MM, and explains geo/state/metro as geography narrowers. However, it does not specify the required value formats for state/metro/geo or whether they are mutually exclusive, leaving some ambiguity.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Get employment data for a BLS industry.' This clearly distinguishes the tool from siblings like get_county_employment or get_county_wages by focusing on industry-level employment. It also states the default behavior ('latest observation with year-over-year changes'), adding useful scope.

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

Usage Guidelines3/5

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

The description implies usage context by referencing 'BLS industry' and explains when to provide date ranges and how to set adjustment, but it never explicitly states when to use this tool versus alternatives such as get_county_employment or get_occupation_wages. There are no exclusions or alternative recommendations, so usage guidance remains implied rather than explicit.

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

get_industry_lendingA

Get quarterly SBA 7(a) loan aggregates for a NAICS industry. Default scope is national; pass geo='state' with state=<2-digit FIPS> or geo='county' with county=<5-digit FIPS> to scope the aggregate. Without period filters, returns the latest available quarterly observation. Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series. Params: naics is a NAICS code (2–6 digits, e.g. '541211' for Offices of Accountants). Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
yearNo
naicsYes
stateNo
countyNo
quarterNo
to_periodNo
from_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the default scope, the latest-observation default when no period filters are given, the requirement for both from_period and to_period for a time series, and the data source. It does not explain how the year and quarter params interact with period filters, which is a notable omission.

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 four sentences long, front-loaded with the core purpose, and every sentence adds useful detail about scoping, behavior, parameter format, or source. There is no filler or repetition.

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

Completeness3/5

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

The description covers the main use cases (national, state, county, time series) and the output schema exists to document return values. However, the year/quarter parameters are left unexplained, and the description does not explicitly differentiate from sibling lending tools, leaving the overall context incomplete.

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

Parameters3/5

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

The schema description coverage is 0%, so the description must compensate. It does explain naics, geo, state/county, from_period, and to_period, including format examples. However, the year and quarter parameters are completely undocumented and their relationship to the period filters is unclear, leaving a significant gap.

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 names the exact resource: 'quarterly SBA 7(a) loan aggregates for a NAICS industry.' It also immediately states the national default, which differentiates it from geography-specific sibling tools like get_county_lending and get_state_lending.

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

Usage Guidelines4/5

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

The description gives clear context on when to use national scope vs. state/county scoping via geo/state/county parameters, and explains that period filters are needed for time series. It stops short of explicitly naming alternatives or saying when not to use this tool, so it earns a 4 rather than a 5.

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

get_industry_turnoverA

Get labor market turnover data (job openings, hires, quits, layoffs) for an industry by NAICS code. Shows the latest observation by default. Provide from_date and to_date (YYYY-MM) for a time series. Use search_industries first to find NAICS codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
naicsYes
to_dateNo
measuresNo
from_dateNo
adjustmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses default behavior (latest observation) and that providing date range yields a time series. However, it does not explain the 'measures' or 'adjustment' parameters, nor the NAICS format expected, leaving gaps in behavioral expectations.

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 the core purpose, followed by essential usage detail and a prerequisite. No redundant wording; every sentence earns its place.

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

Completeness3/5

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

The tool has 5 parameters and an output schema, but the description omits guidance on 'measures' and 'adjustment,' which are important for customizing queries. While the output schema may cover return format, the description is not fully complete for a tool of this complexity, though it does cover the main use case and default 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 description coverage is 0%, so the description must compensate. It adds meaning to from_date/to_date by specifying 'YYYY-MM' format and implying time series behavior, and it implies naics is an industry code. But it leaves measures and adjustment completely unexplained, so it only partially compensates for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states the tool gets labor market turnover data (job openings, hires, quits, layoffs) for an industry by NAICS code. This specific verb+resource+scope distinguishes it from siblings like get_state_turnover and get_regional_turnover, which are geography-based.

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: 'Shows the latest observation by default. Provide from_date and to_date (YYYY-MM) for a time series.' It also instructs to 'Use search_industries first to find NAICS codes,' which is a useful prerequisite. However, it does not explicitly exclude alternatives or state when-not-to-use, so it falls short of a 5.

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

get_insider_tradesA

Get insider trading transactions (Form 4) — purchases, sales, grants, and option exercises. Use ticker to scope to one company, or omit to search across all companies. Filter by transaction type, minimum value, and date range. By default, rows are aggregated transaction events (same-day 10b5-1 tranches collapsed on person/date/type/security/ownership). Pass flat=True for the per-slice Form 4 rows. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
flatNo
typeNo
limitNo
tickerNo
to_dateNo
from_dateNo
min_valueNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description discloses key behavioral traits: default aggregation ('rows are aggregated transaction events... same-day 10b5-1 tranches collapsed'), the flat=True option for per-slice rows, and ticker resolution ('historical ticker resolves to META'). This adds value beyond the schema, though it does not mention rate limits, auth, or other 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.

Conciseness4/5

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

The description is reasonably concise and front-loaded with the core purpose. The 'Args:' block is slightly redundant because it duplicates ticker details already covered in the prose, but the overall structure is clear and not overly 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?

Considering 7 parameters, no annotations, and the presence of an output schema, the description covers the essential use cases: ticker scoping, filtering options, and default aggregation behavior. The lack of detail on 'limit' and transaction type values is a minor gap, but the description remains sufficiently complete for effective tool selection and invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It thoroughly explains ticker (including CIK, stripped CIK, historical ticker), explains flat=True, and mentions filtering by type, min_value, and date range. However, it omits the 'limit' parameter and does not specify allowed values or formats for 'type', 'min_value', or date range, leaving important gaps.

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

Purpose5/5

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

The description opens with 'Get insider trading transactions (Form 4)' and lists transaction types (purchases, sales, grants, option exercises), clearly defining the tool's scope. This distinguishes it from sibling tools like get_executive_compensation or search_filings by focusing specifically on Form 4 insider 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 advises 'Use ticker to scope to one company, or omit to search across all companies' and mentions filtering by transaction type, minimum value, and date range, providing clear contextual guidance. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of a full 5.

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

get_institutional_holdersA

Get which institutional funds hold a company's stock. Shows shares held, market value, and discretion type. Response rows carry the 13F report_quarter and filed_at timestamp; when quarter is omitted the API returns the latest available quarter. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tickerYes
quarterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds useful context beyond the name: response rows include report_quarter and filed_at, omitting quarter returns the latest available data, and historical tickers are resolved. It does not mention limit behavior or pagination, but for a read-only lookup this is sufficient.

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

Conciseness5/5

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

The description is tightly written in four sentences, leading with the core purpose and output, then efficiently covering parameter details with concrete examples in an 'Args:' section. No wasted 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?

An output schema is present, so return values are covered there. The description sufficiently covers input formats, quarter default, and output row fields. Minor omissions like limit behavior and explicit differentiation from fund-holding tools prevent a perfect score, but overall it is complete for a focused lookup 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 0%, so the description needs to compensate. It thoroughly explains the required ticker parameter (accepting CIK, stripped CIK, and historical ticker) and quarter semantics, but it does not mention the limit parameter at all, leaving it to the schema default of 20. This is a noticeable gap in an otherwise useful parameter explanation.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'Get which institutional funds hold a company's stock.' It distinguishes itself from sibling tools like get_fund_holdings by focusing on company stockholders rather than fund holdings, and lists output fields (shares held, market value, discretion 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?

The description provides clear context on how to specify the company, including accepted formats like ticker, CIK, and historical ticker, and explains the quarter parameter's behavior when omitted. However, it does not explicitly mention alternative tools or when not to use this tool, so it stops short of 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_lenderA

Get details and quarterly history for a single SBA 7(a) lender by lender_id. Optional from_period/to_period filters the quarterly history range (YYYY-Qq). Both are required together for a range; omit both for full history. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
lender_idYes
to_periodNo
from_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses the data source (US SBA, public domain), the quarterly history behavior, and the dependency between the two optional filters. This adds meaningful behavioral context beyond the schema, though it doesn't specify behavior for invalid IDs or period formats.

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 purpose, and every clause adds value. The second sentence efficiently covers parameters, constraints, and source attribution without redundant detail.

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

Completeness5/5

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

Given the tool's simple get-by-id nature with optional filters, and the presence of an output schema, the description is complete. It covers what the tool does, the data source, filter semantics, and required dependencies, leaving no critical gaps for an agent to invoke it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully explains all parameters: lender_id identifies the single lender, and from_period/to_period define the quarterly range with format 'YYYY-Qq' and the constraint that they must be used together or omitted. This goes well beyond the schema's basic type and title 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 the tool's purpose: 'Get details and quarterly history for a single SBA 7(a) lender by lender_id.' This is a specific verb+resource+identifier, and it naturally distinguishes from siblings like get_lenders (plural) or get_county_lending.

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 parameter usage context: 'Optional from_period/to_period filters the quarterly history range... Both are required together for a range; omit both for full history.' It explains when to use the filters, but does not explicitly mention when to use this tool versus alternatives such as get_lenders.

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

get_lendersA

List SBA 7(a) lenders ranked by loan count, total amount, or average loan size. Optional filters: state (2-digit FIPS), county (5-digit FIPS), industry (NAICS), year/quarter, and a from_period/to_period range (YYYY-Qq). sort accepts 'loan_count' (default), 'total_amount', or 'avg_amount'. limit is capped at 50. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoloan_count
yearNo
limitNo
stateNo
countyNo
quarterNo
industryNo
to_periodNo
from_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description discloses important behavioral constraints: the limit is capped at 50, sort accepts specific values with a default, and filter formats (FIPS, NAICS, YYYY-Qq) are specified. It does not describe pagination, but the output schema covers return structure, making this adequate for a read-only list tool.

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

Conciseness5/5

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

The description is four concise sentences, front-loading the core action of listing ranked lenders. Each sentence adds necessary information (filters, sort, limit, source) without any fluff or repetition.

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 9-parameter schema and the existence of an output schema, the description covers all essential aspects: purpose, filters, sorting, limit, and data source. It is fully self-contained 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 schema has 0% description coverage, but the description compensates thoroughly by documenting every parameter: state uses 2-digit FIPS, county uses 5-digit FIPS, industry uses NAICS, period ranges use YYYY-Qq, sort has three allowed values, and limit has a 50 cap. This exceeds the bare schema and adds essential 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 clearly states the tool lists SBA 7(a) lenders ranked by loan count, total amount, or average loan size, using a specific verb and resource. This distinguishes it from the singular sibling tool get_lender and other lending aggregation tools like get_county_lending or get_state_lending.

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—when needing ranked lender lists with optional filters—but does not explicitly mention alternative tools or exclusions. It conveys the appropriate use case without naming siblings.

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

get_lending_characteristicsA

Get SBA 7(a) loan distributions for a single quarter — loan size buckets, term length buckets, interest rate histogram, sub-programme mix, business-type mix, and revolving-vs-term split. year and quarter are required by the API (pass them together). Optional state (2-digit FIPS), county (5-digit FIPS), or industry (NAICS) filters scope the distributions. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
stateNo
countyNo
quarterNo
industryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that year and quarter are required by the API despite the schema listing them as optional, and it specifies the format for filters (2-digit FIPS, 5-digit FIPS, NAICS). It doesn't mention error handling, pagination, or exact output format, but the output schema likely covers return structure, making this a solid disclosure.

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

Conciseness5/5

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

The description is three sentences: first states purpose and contents, second covers required and optional parameters with formats, third provides source attribution. Every sentence is necessary and information-dense, with the most important details front-loaded.

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

Completeness4/5

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

The description is quite complete for a data retrieval tool: it names all key output dimensions, specifies required vs optional parameters, and adds source context. Gaps include not stating valid quarter values or aggregator behavior, and not explicitly distinguishing when to use this over sibling lending tools. An output schema exists, so return fields are covered.

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 0%, so the description must compensate. It does so by explaining that year and quarter are required and must be passed together, and by giving formats for state, county, and industry (2-digit FIPS, 5-digit FIPS, NAICS). It doesn't specify valid quarter values (e.g., 1-4) or year range, but overall adds significant semantic meaning beyond the bare schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get SBA 7(a) loan distributions for a single quarter', followed by an explicit list of distribution types (loan size buckets, term length buckets, interest rate histogram, etc.). This clearly distinguishes it from sibling lending tools that likely provide aggregates or outcomes, not characteristic distributions.

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

Usage Guidelines4/5

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

The description gives clear context on when to use this tool: for a single quarter's distributions, with year and quarter required together, and optional state/county/industry filters. It doesn't explicitly name alternatives or exclusions, but the emphasis on 'distributions' versus other lending tools implies the use case. It lacks an explicit 'use this instead of X' statement.

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

get_lending_outcomesA

Get SBA 7(a) vintage cohort charge-off outcomes — loans originated in a given year and their charge-off rates, maturity status, and gross charge-off amounts. vintage_from is required by the API; vintage_to defaults to vintage_from (single vintage) and the API enforces vintage_to - vintage_from <= 10. Optional state (2-digit FIPS), county (5-digit FIPS), or industry (NAICS) filters. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
countyNo
industryNo
vintage_toNo
vintage_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. It reveals API-level requirements (vintage_from required, range limit), default behavior for vintage_to, and the nature of optional filters (2-digit FIPS, 5-digit FIPS, NAICS). This goes beyond a simple 'get data' statement, though it does not describe output layout (covered by output schema) or potential error conditions.

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, and every clause adds value: what the tool returns, key API constraints, and filter details. No filler or redundant repetition of schema fields.

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 need not explain return values. It covers purpose, API constraints, and filter dimensions, making it fairly complete. Minor gaps include lack of explicit data availability range and potential error handling, but overall it is sufficient for an agent to invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantics of vintage_from/vintage_to, including the default and range constraint, and specifies exact formats for state (2-digit FIPS), county (5-digit FIPS), and industry (NAICS). This is valuable added meaning beyond the bare schema, though it could be slightly more explicit about the data type expectations for filters.

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: retrieving SBA 7(a) vintage cohort charge-off outcomes, including charge-off rates, maturity status, and gross charge-off amounts. This specific verb+resource+scope clearly distinguishes it from sibling lending tools like get_county_lending or get_state_lending, which focus on broader lending metrics.

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 key usage constraints: vintage_from is required, vintage_to defaults to vintage_from, and the API enforces a max range of 10 years. It also lists optional filters for state, county, and industry, providing enough context for an agent to decide when to use this tool, though it does not explicitly name alternative tools or exclusion scenarios.

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

get_occupation_wagesA

Get wage data for a BLS occupation including percentile distribution. SOC code format is XX-XXXX (e.g. '15-1252' for Software Developers). Optionally filter by NAICS industry, geography, or year. Returns median wage plus 10th/25th/75th/90th percentiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
socYes
yearNo
metroNo
stateNo
industryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description discloses key behavioral details: it returns median plus 10th/25th/75th/90th percentiles and notes SOC format requirements. It does not mention side effects or error handling, but for a read-style data retrieval tool, this is sufficient.

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

Conciseness5/5

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

Four concise sentences each add unique value: purpose, SOC format, filters, and output details. No redundant or filler content.

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

Completeness4/5

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

Given the tool has an output schema and moderate parameter count, the description covers the essential usage: SOC requirement, optional filters, and return content. It lacks explicit guidance on default behavior or parameter relationships, but is adequate for a 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 0%, so the description must compensate. It explains the SOC format with an example and lists optional filters (industry, geography, year) but does not differentiate between geo, metro, and state parameters, leaving some ambiguity.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Get') and resource ('wage data for a BLS occupation'). It distinguishes from sibling tools like get_county_wages by focusing on occupation-level percentiles, and the SOC format example adds clarity.

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 that this tool is for occupation wage data with optional industry/geography/year filters. However, it does not explicitly mention alternatives or exclusionary conditions, so it stops short of full usage guidance.

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

get_ratio_historyB

Get a single financial ratio over time. Returns a time series for trend analysis. Valid ratios: gross_margin, operating_margin, net_margin, return_on_equity, return_on_assets, debt_to_equity, current_ratio, interest_coverage, revenue_growth_yoy, net_income_growth_yoy, eps_growth_yoy. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
ratioYes
periodNoannual
tickerYes
to_yearNo
from_yearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry the burden of behavioral disclosure. It reveals accepted ticker formats (CIK, stripped CIK, historical ticker resolution) and enumerates valid ratios, which is helpful. However, it omits behavior around invalid inputs, data coverage, or return structure beyond stating 'time series'.

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

Conciseness4/5

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

The description is a single focused sentence followed by a list of valid ratios and a brief argument note for ticker. It is efficient and front-loaded, though the ratio list could be more compact as a bulleted list.

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

Completeness2/5

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

Despite having an output schema, the description leaves significant gaps: it does not explain the 'period' parameter (annual default) or year-range parameters, nor does it clarify how the time series is keyed or what data span is available. Given 5 parameters and only 1 fully explained, the description is incomplete for an agent to invoke the tool with confidence.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains the 'ticker' parameter in detail. The 'ratio' parameter is implicitly constrained by the valid ratio list, but 'period', 'to_year', and 'from_year' are completely unmentioned, leaving their meaning and defaults ambiguous.

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 a single financial ratio over time' with a specific verb, resource, and scope. It distinguishes itself from sibling tools like get_ratios by emphasizing 'single' and 'over time' (time series), and provides an explicit list of valid ratios.

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

Usage Guidelines3/5

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

It implies usage for trend analysis ('Returns a time series for trend analysis') but does not explicitly state when to prefer this over alternatives like get_ratios or get_financial_metric. No exclusions or alternative tool names are mentioned.

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

get_ratiosA

Get computed financial ratios (margins, returns, leverage, growth) for a US public company. Derived from SEC filings. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
periodNoannual
tickerYes
quarterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does add useful context: the tool computes ratios from SEC filings, and it clarifies that historical tickers like 'FB' resolve to the current entity (META). However, it does not mention data freshness, how missing or invalid data is handled, rate limits, or any authentication requirements. The read-only nature is implied but not explicitly stated.

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 exceptionally concise: one sentence states the purpose, the next identifies the data source, and then a simple args list explains the ticker formats. Every sentence earns its place. The structure front-loads the main action and then provides specific input guidance without fluff.

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

Completeness3/5

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

Given that an output schema exists, return values do not need to be described. The description is clear enough for selecting the tool, and the ticker parameter is well documented for initial invocation. However, the optional parameters (year, period, quarter) lack any semantic guidance, and there is no comparison to sibling tools to prevent mis-selection. The description is adequate for basic use but not fully complete for a robust agent.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It excels for the required 'ticker' parameter, explaining accepted formats (ticker, CIK, stripped CIK, historical ticker) with examples. However, the optional year, quarter, and period parameters are completely unexplained. The schema only provides types and defaults (e.g., period defaults to 'annual'), leaving ambiguity about valid values and their effect on the result. The description covers one key parameter thoroughly but neglects the others.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Get computed financial ratios (margins, returns, leverage, growth) for a US public company.' It clearly enumerates the ratio categories, which distinguishes it from the many sibling tools that retrieve raw financials or single metrics. The scope ('US public company') and data source ('Derived from SEC filings') add further 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 this tool is for retrieving financial ratios, but it does not explicitly state when to use it instead of nearby alternatives like get_ratio_history, get_financials, or get_financial_metric. There is no mention of exclusions, such as non-US companies or point-in-time vs. historical data. This leaves the agent to infer usage from the tool's name and description alone.

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

get_regional_turnoverA

Get regional labor market turnover data for one of the 4 Census regions. Params: region is 'northeast', 'south', 'midwest', or 'west'.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYes
to_dateNo
from_dateNo
adjustmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

The description indicates a read-only getter and provides a parameter constraint, but offers no additional behavioral context such as data frequency, source, update cadence, or required permissions. Since there are no annotations, the description carries the full burden and falls short of disclosing potential quirks or limitations.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose and immediately followed by the most critical parameter constraint. No wasted words or redundant information.

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

Completeness3/5

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

For a simple regional data fetch, the description covers the required parameter but omits details about optional date parameters and the meaning of 'adjustment'. The presence of an output schema mitigates return-format concerns, but the optional parameters remain under-specified, leaving moderate gaps in overall 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?

The description adds explicit valid values for the 'region' parameter, which the schema does not provide. However, it leaves 'to_date', 'from_date', and 'adjustment' without any explanation, only partially compensating for the schema's lack of descriptions. The provided enum-like info is valuable but not comprehensive.

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

Purpose5/5

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

The description clearly states the action ('Get') and the resource ('regional labor market turnover data'), and specifies the scope ('one of the 4 Census regions'). This distinguishes it from sibling tools like get_state_turnover and get_industry_turnover which target different geographic or industry granularities.

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

Usage Guidelines3/5

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

The description implies the tool is for Census-region-level data but does not explicitly contrast it with state-level or industry-level alternatives. There is no 'use when' or 'instead of' guidance, leaving the agent to infer the appropriate context from the region parameter.

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

get_sba_metric_detailA

Get the full definition for a single SBA 7(a) metric by canonical name. Returns display name, description, category, unit, update cadence, typical lag, data availability year range, and related endpoints. Use explore_sba_metrics to discover canonical names. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses exactly what the tool returns (display name, category, unit, update cadence, typical lag, etc.), and the 'Get' verb implies a read-only side effect. It also mentions the data source and public domain status. However, it does not explicitly state that no mutation occurs, but that is reasonable for a 'Get' tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the purpose and return fields, followed by usage guidance and source attribution. 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?

The tool is simple (one parameter) and the description covers the input, output fields, usage flow, and data source. An output schema exists, but the description already provides the return details, making it complete for an agent to select and invoke correctly.

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

Parameters4/5

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

The schema has no description coverage (0%), but the description compensates by explaining that the metric parameter is a 'canonical name' and directs the user to explore_sba_metrics for discovery. It does not provide format examples or a list of valid names, but for a single parameter this is sufficient guidance.

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 ('full definition for a single SBA 7(a) metric by canonical name'), clearly distinguishing it from sibling explore_sba_metrics which discovers metrics. It also lists concrete return fields (display name, category, unit, etc.) making the purpose unmistakable.

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

Usage Guidelines5/5

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

The description explicitly provides usage context: 'Use explore_sba_metrics to discover canonical names.' This tells the agent how to obtain the required parameter and implies this tool is for fetching details after discovery. It clearly differentiates from the discovery workflow.

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

get_state_lendingA

Get quarterly SBA 7(a) loan aggregates for a single US state — loan count, total amount, charge-off rate, average loan size, and jobs supported. Without period filters, returns the latest available quarterly observation. Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series. Params: fips is a 2-digit state FIPS code (e.g. '06' for California, '48' for Texas). Optional industry filter accepts a NAICS code to restrict aggregates to one industry. Source: US Small Business Administration, 7(a) Loan Program (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
yearNo
quarterNo
industryNo
to_periodNo
from_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a good job: it discloses the default behavior (latest quarter when no period filters), the requirement to supply both from_period and to_period for a series, the FIPS format, and the optional NAICS industry filter. It does not mention auth, rate limits, or error cases, but as a read-only public-data query tool it provides substantial meaningful 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 dense but efficient, packed with useful information across three sentences. It front-loads the purpose and metric list, then gives usage guidance and parameter details. The final source attribution is slightly extra but acceptable for context. It is not overly verbose and avoids repetition.

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

Completeness4/5

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

Given the tool has an output schema and moderate complexity, the description covers most essential context: default behavior, time-series usage, parameter formats, and the public-domain source. The main gap is the unexplained year/quarter parameters and lack of explicit alternative-tool comparisons, but overall it gives enough for an agent to invoke correctly in common scenarios.

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 description adds value by explaining fips (with examples), from_period/to_period format ('YYYY-Qq'), and the NAICS industry filter, which is crucial since schema descriptions are absent for all 6 parameters. However, it completely omits the 'year' and 'quarter' parameters present in the schema, leaving the agent uncertain whether those are alternatives or redundant. This partial coverage lowers the score.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Get quarterly SBA 7(a) loan aggregates for a single US state' and enumerates the exact metrics returned (loan count, total amount, charge-off rate, average loan size, jobs supported). This distinguishes it from sibling tools like get_county_lending or get_industry_lending by explicitly narrowing scope to state-level SBA loans.

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 provides clear usage context: without period filters it returns the latest available quarterly observation, and it instructs to 'Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series.' While it doesn't explicitly name sibling alternatives or conditions to avoid, the state-specific and SBA-specific framing makes it clear when to select this tool over related ones.

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

get_state_turnoverA

Get state-level labor market turnover data. Total nonfarm only — no industry breakdown at state level. Data available from October 2021 onward. Params: fips is the 2-digit state FIPS code (e.g. '06' for California).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
to_dateNo
from_dateNo
adjustmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It discloses key constraints: 'Total nonfarm only', 'no industry breakdown', and data availability 'from October 2021 onward'. This goes beyond the tool name and helps set expectations, though it does not describe output format or edge cases.

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

Conciseness5/5

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

The description is compact and front-loaded: a clear one-line purpose, followed by key constraints and a helpful parameter hint. Every sentence adds value and there is no redundant filler, making it highly efficient for an agent to parse.

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

Completeness2/5

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

The description covers the tool's unique scope and one parameter, but with no annotations and no schema descriptions, it leaves critical gaps around date range usage and adjustment options. This makes the description incomplete for a tool with 4 parameters and no structured guidance.

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

Parameters2/5

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

The description explains only the 'fips' parameter with a concrete example, but the other three parameters (to_date, from_date, adjustment) are left undefined. Since schema description coverage is 0%, the description must compensate, and it fails to do so for 3 of 4 parameters, which is a significant gap for 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 states the tool's function: 'Get state-level labor market turnover data' with a specific verb (get), resource (labor market turnover), and geographic scope (state-level). It distinguishes from siblings by explicitly noting 'Total nonfarm only — no industry breakdown at state level', which separates it from industry-level tools like get_industry_turnover.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool (for state-level turnover, nonfarm total) and an implicit exclusion ('no industry breakdown at state level'), suggesting industry breakdown is handled elsewhere. However, it does not explicitly name alternative tools or state when-not-to-use, so it misses the top tier.

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

get_state_unemploymentA

Get monthly LAUS unemployment data for a single US state. Defaults to seasonally adjusted (adjustment='sa'); pass adjustment='nsa' for the not-seasonally-adjusted series. Without dates, returns the latest available observation. Provide both from_date and to_date (YYYY-MM) for a time series. Set annual_only=True to return only annual averages (M13 rows). Params: fips is a 2-digit state FIPS code (e.g. '06' for California, '48' for Texas). State observations include labor force participation rate and employment-population ratio. For comparing multiple states in a single period, use compare_state_unemployment instead. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fipsYes
to_dateNo
from_dateNo
adjustmentNo
annual_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses key behavior: default seasonal adjustment, the 'nsa' option, handling of missing dates (latest observation), annual-only mode (M13 rows), and the included metrics (labor force participation rate, employment-population ratio). This is comprehensive for a data retrieval tool.

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

Conciseness5/5

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

The description is well-structured, front-loaded with the core purpose, then details, then source/alternative. Each sentence adds value without redundancy. It is dense but not bloated.

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 moderate complexity (5 params, output schema present), the description covers all necessary context: defaults, date handling, annual averages, param formats, data source, and sibling distinction. No significant gap exists.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description compensates fully: fips with examples, adjustment values ('sa'/'nsa'), date format (YYYY-MM), and annual_only semantics (M13 rows). Every parameter is explained in the 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 a specific verb ('Get'), a specific resource ('monthly LAUS unemployment data for a single US state'), and distinguishes from siblings by explicitly noting single-state scope. It also mentions the alternative tool for multi-state comparison.

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 when-to-use guidance, including the alternative tool 'compare_state_unemployment' for comparing multiple states. Also explains parameter usage (adjustment, dates, annual_only) with concrete examples, making the intended use cases clear.

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

get_webhookA

Get details for one webhook subscription by id (e.g. 'sub_abc123').

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does clearly indicate a read operation ('Get details'), but it provides no information on error behavior, authentication needs, rate limits, or any other side effects. The example id format adds a small amount of context, but overall it's minimal.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It immediately states the action and resource, and the parenthetical example is useful without bloating the 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?

For a simple get-by-id operation with an output schema available, the description is largely complete. It identifies the resource and how to specify it. It could mention error cases or that it returns full subscription details, but given the simplicity, the current level is adequate.

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

Parameters4/5

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

The schema has no description for subscription_id and 0% coverage, so the description must compensate. It does so by giving a concrete example id ('sub_abc123'), which clarifies the expected format. This is helpful, though it doesn't explain where to find the id or any 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 action ('Get details'), the resource ('webhook subscription'), and the scope ('one ... by id'), with an example id format. This distinguishes it from list_webhooks (which lists all) and other 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?

The 'by id' phrasing clearly implies this tool is for retrieving a specific subscription when you already have its identifier. While it doesn't explicitly mention alternatives like list_webhooks, the context is clear enough for the intended use case.

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

list_webhook_deliveriesA

Show delivery attempts for a webhook subscription. Useful for debugging — each row shows event type, status, attempt count, and queued/completed timestamps. Pagination is offset-based: pass page=2 for the next batch. limit (per page) is capped at 50 server-side.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses offset-based pagination ('pass page=2 for the next batch'), the server-side cap on limit (50), and what each row contains (event type, status, attempt count, timestamps). This goes beyond a simple listing and gives useful behavioral details.

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, each earning its place: purpose + use case, output row fields, and pagination behavior. 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?

The description fully covers the tool's purpose, return contents, and pagination mechanics. With an output schema available for exact return format, the description is sufficient for an agent to select and invoke the tool correctly. It also addresses the key nuance of limit capping.

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 0%, so the description must compensate. It explains 'page' semantics explicitly ('pass page=2 for the next batch') and clarifies that 'limit' is capped at 50. 'subscription_id' is self-evident from the tool name and the phrase 'for a webhook subscription'. This is adequate compensation for the missing schema descriptions.

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

Purpose5/5

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

The description clearly states 'Show delivery attempts for a webhook subscription' with a specific verb and resource. It distinguishes itself from sibling tools like list_webhooks (which lists subscriptions) and replay_webhook_delivery (which replays deliveries).

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 debugging' which provides clear context on when to use this tool. It does not mention explicit alternatives or exclusions, but the use case is well implied by the debugging note and the row content described.

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

list_webhook_event_typesA

List the event types you can subscribe a webhook to (filing.created, corporate_event.created, compensation.filed, board.changed, amendment.filed). Returns the catalog with descriptions and links to payload schemas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses that the tool returns a catalog with descriptions and links to payload schemas, which is valuable behavioral context beyond the name. It does not discuss auth or side effects, but for a list operation this is minimal and the verb 'List' implies read-only.

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: one states the action and examples, the second states the return value. Front-loaded with the verb and resource, zero wasted words, 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?

For a zero-parameter, simple list tool with an output schema, the description fully covers purpose, use case, and return content (catalog with descriptions and schema links). No gaps are apparent.

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 context about the output (catalog of event types), which is more than enough given no parameters to document.

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 webhook event types, with specific examples (filing.created, etc.), and distinguishes it from sibling tools like list_webhooks or get_webhook which manage actual webhook subscriptions. The verb 'list' plus the resource 'event types' makes the purpose unambiguous.

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

Usage Guidelines4/5

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

The description implies usage when setting up a webhook by showing what event types can be subscribed to. It provides clear context (before subscribing) but doesn't explicitly exclude alternatives or mention when not to use it. However, given the specificity, this is sufficient.

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

list_webhooksA

List your webhook subscriptions — each row shows id, url, events, active/inactive status, and last-delivery timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must convey behavioral traits. It discloses the scope ('your' subscriptions) and output columns (including active/inactive status), which adds context. However, it does not mention pagination, authentication requirements, rate limits, or side effects. The 'List' verb implies read-only, but fuller disclosure is lacking.

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

Conciseness5/5

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

The description is a single sentence that front-loads the verb and resource, then efficiently enumerates the output fields. Every word contributes 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 zero parameters, an existing output schema, and the simple read-only nature of the operation, the description is complete. It clearly states what is returned, and no additional context is needed for safe and correct usage.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is trivially 100%. No parameter explanation is needed, and the baseline for 0 parameters is 4. The description adds no parameter information, which is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('List') and clearly identifies the resource ('webhook subscriptions'). It distinguishes from siblings like get_webhook (single) and list_webhook_deliveries by focusing on subscriptions and specifying the row contents (id, url, events, status, timestamp).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_webhook or list_webhook_deliveries. It simply states what the tool does without mentioning exclusions, prerequisites, or alternative tools for related tasks.

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

replay_webhook_deliveryA

Re-queue a past webhook delivery for redelivery. Useful if your endpoint was temporarily down. Deliveries older than the 7-day retention window return a 410 error and cannot be replayed.

ParametersJSON Schema
NameRequiredDescriptionDefault
delivery_idYes
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full burden. It discloses the redelivery behavior and the 410 error for expired deliveries. However, it omits other behavioral aspects like idempotency, side effects, or permission requirements, which are important for a mutation tool.

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

Conciseness5/5

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

The description is two sentences long and immediately front-loads the purpose. Every sentence adds value: the first states the action, the second provides usage context and a critical limitation. 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?

The tool is low complexity (2 params, output schema present), and the description covers the core purpose, when to use, and a key error condition. It does not elaborate on parameter meaning or additional failure modes, but the output schema covers return values, so this is reasonably complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate by explaining the parameters. Although the parameter names (subscription_id, delivery_id) are somewhat self-explanatory, the description does not clarify their relationship or requirements, leaving the agent without additional semantic value.

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

Purpose5/5

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

The description clearly states the tool's action: 'Re-queue a past webhook delivery for redelivery.' It uses a specific verb ('re-queue') with a specific resource ('past webhook delivery'), and differentiates from sibling tools like list_webhook_deliveries and send_webhook_test by focusing on redelivery.

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 context: 'Useful if your endpoint was temporarily down.' It also implies when not to use by mentioning the 7-day retention window and the resulting 410 error. It does not explicitly name alternative tools, but the context is sufficient for basic guidance.

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

rotate_webhook_secretA

Generate a new HMAC signing secret for a webhook subscription. The PREVIOUS secret is invalidated immediately — there is no grace period. Update your HMAC verifier before, or atomically with, calling this tool, or incoming deliveries will start failing verification. The new secret is shown ONCE — save it immediately. If this call returns an error after the api has already processed the rotation (e.g. network timeout), the previous secret may already be invalidated server-side — call this tool again to get a fresh secret rather than retrying with the old one.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it excels: it discloses immediate invalidation, no grace period, one-time display of the new secret, and the failure mode where the previous secret may already be invalidated after a network error. These are critical behavioral traits beyond a simple 'rotate' action.

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

Conciseness5/5

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

The description is compact yet information-dense. Every sentence delivers essential operational warnings or retry guidance. It is front-loaded with the primary purpose and then logically presents consequences, action items, and edge-case handling.

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 mutating nature and the presence of an output schema (which can define return values), the description covers all necessary context: purpose, side effects, timing, error semantics, and recovery steps. It is complete for an agent to safely invoke the tool.

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

Parameters3/5

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

The schema has one required parameter (subscription_id) with 0% description coverage. The description mentions 'webhook subscription' but does not explicitly define what subscription_id is or its format. The parameter name is self-explanatory, but the description does not add significant 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 starts with a specific verb and resource: 'Generate a new HMAC signing secret for a webhook subscription.' This clearly distinguishes it from sibling tools like update_webhook or delete_webhook. The action and target are unambiguous.

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 timing instructions: update verifier before/atomically with calling, and warns about immediate invalidation. It also tells the agent what to do on error (call again for a fresh secret) rather than retrying with the old one. This is strong usage guidance.

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

screen_companiesA

Find US public companies matching financial criteria. Combine filters: profitability (margins), growth rates, leverage ratios, index membership, SIC code, stock exchange (nyse/nasdaq, comma-separated for multiple), domicile (us/adr), and insider/institutional signals. Supports labor market filters: industry hiring trend, employment growth, wage growth, comp-to-market ratio, and HQ-county LAUS local unemployment (min/max local unemployment rate, local unemployment trend, min local labor force). Supports SBA 7(a) lending filters: local loan count (trailing 4Q in HQ county), local lending growth (YoY %), industry lending growth (NAICS national YoY %), and industry charge-off rate (%). Set include='lending_context' or include='labor_context,lending_context' to surface an SBA lending context summary on each row. Note: include='labor_context' and include='lending_context' require a Pro+ plan. Free/Starter callers receive a tier upgrade message instead of enriched results. Sort by any ratio: gross_margin, operating_margin, net_margin, return_on_equity, return_on_assets, debt_to_equity, current_ratio, interest_coverage, revenue_growth_yoy, net_income_growth_yoy, eps_growth_yoy. Margin/ratio/growth filters use integer percent (20 for 20%, not 0.20). Values 0<x<1 are rejected as ambiguous. Pass 0 for no minimum. Use search='' to filter by name substring or ticker prefix (case-insensitive; server trims/escapes/skips nulls; does not normalise 'BRK.B' vs 'BRK-B' and does not consult ticker aliases; omit search rather than passing an empty string, which the server treats as a no-op; any match lacking a qualifying annual CompanyRatio row is silently excluded by the screener inner-join). Filter by taxonomy='us-gaap' or 'ifrs-full' and/or by presentation currency via currency='' (case-insensitive, e.g. 'USD', 'EUR', 'JPY'); both are server-validated — unknown values return 400. Filter by Russell-index membership: in_index=True returns only companies in any tracked index (sp500, russell1000, or russell2000); in_index=False returns only unindexed companies. Note: combining in_index=False with a query that matches an indexed ticker (e.g. 'AAPL') returns no results because the ticker is filtered out.

ParametersJSON Schema
NameRequiredDescriptionDefault
sicNo
sortNo
tierNo
limitNo
orderNo
searchNo
includeNo
currencyNo
domicileNo
exchangeNo
in_indexNo
taxonomyNo
min_revenueNo
min_eps_growthNo
min_net_incomeNo
min_net_marginNo
max_gross_marginNo
min_gross_marginNo
min_current_ratioNo
has_insider_buyingNo
max_debt_to_equityNo
min_revenue_growthNo
min_operating_marginNo
min_return_on_assetsNo
min_return_on_equityNo
industry_hiring_trendNo
min_interest_coverageNo
min_local_labor_forceNo
max_industry_quits_rateNo
min_industry_quits_rateNo
local_unemployment_trendNo
max_local_sba_loan_countNo
min_comp_to_market_ratioNo
min_industry_wage_growthNo
min_local_sba_loan_countNo
min_hq_county_wage_growthNo
has_institutional_increaseNo
max_industry_openings_rateNo
min_industry_openings_rateNo
max_local_unemployment_rateNo
min_local_unemployment_rateNo
max_local_sba_lending_growthNo
min_local_sba_lending_growthNo
max_industry_employment_growthNo
min_industry_employment_growthNo
min_industry_sba_lending_growthNo
max_industry_sba_charge_off_rateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and delivers richly: it discloses server-side handling (trims/escapes/skips nulls, treats empty search as no-op, silently excludes matches lacking an annual CompanyRatio row), value-format rejections (0<x<1 ambiguous), validation outcomes (unknown taxonomy/currency return 400), and membership logic (in_index=False excludes indexed tickers). This level of behavioral detail is exceptional.

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 dense—every clause adds operational detail relevant to correct invocation. It leads with the primary purpose and sequentially covers filter domains, enrichment includes, plan constraints, formatting rules, and search behavior. While it could be better structured with bullet lists, the density-for-complexity trade-off is justified.

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 47 parameters, no annotations, and no schema descriptions, this description is remarkably complete. It covers all major filter categories, special include options, parameter formats, error cases, search semantics, and membership rules. The existence of an output schema relieves the need to explain return fields, and the description addresses the most complex behavioral edge cases comprehensively.

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 0%, so the description must compensate. It does so by explaining core parameter semantics: sort keys (list of ratio names), value formats (integer percent), search behavior (name substring/ticker prefix, case-insensitive, no normalization), taxonomy/currency validation, and index membership behavior. It does not individually document all 47 parameters, but it groups them clearly and highlights non-obvious quirks. This is well above baseline.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Find US public companies matching financial criteria.' It clearly differentiates this tool from sibling tools through its screening/filtering purpose and enumerates the diverse filter types (profitability, growth, leverage, index, SIC, exchange, labor, SBA lending) that distinguish it from single-entity or metric-specific tools.

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

Usage Guidelines4/5

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

The description provides extensive guidance on how to apply filters (e.g., 'Margin/ratio/growth filters use integer percent', 'Pass 0 for no minimum'), how to request enrichment contexts ('Set include='lending_context'...'), and notes plan limitations. It clearly implies when to use this screening tool, though it does not explicitly name sibling alternatives or exclusion cases (e.g., when to prefer 'get_company' for a single ticker).

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

search_census_placesA

List US Census places at a given geography level, optionally filtered by name (case-insensitive). IMPORTANT: the SDK returns a single page of places per call and does not expose pagination controls, so the name filter only sees that page. For large levels like 'tract' (73k+ places), if you already know the FIPS code use get_census_place directly instead. Params: level is the geography level from explore_census_geographies (e.g. 'state', 'county', 'place'); query is an optional substring filter on place name. Returns up to 50 results. Source: public-domain US Census Bureau data.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYes
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It discloses a crucial behavioral limitation: 'the SDK returns a single page of places per call and does not expose pagination controls, so the name filter only sees that page.' It also states the result cap ('Returns up to 50 results') and data source, providing comprehensive behavioral context.

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

Conciseness5/5

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

The description is well structured: purpose, important limitation, alternative, parameter explanation, return info, and source. Every sentence adds value, and the critical caveat is highlighted with 'IMPORTANT' for visibility.

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 no annotations and a minimal schema, the description covers all essential aspects: what it does, its parameters, its limitations, when to use an alternative, and result size. The presence of an output schema obviates the need to detail return fields, making this complete.

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 0%, and the description fully compensates by explaining both parameters: 'level is the geography level from explore_census_geographies (e.g. state, county, place)' and 'query is an optional substring filter on place name.' This adds meaning beyond the bare type declarations.

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 US Census places at a given geography level, optionally filtered by name (case-insensitive).' This is a specific verb+resource+scope, and it distinguishes itself from the sibling get_census_place by framing this as a list/search operation.

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 provides when and when-not to use the tool: 'For large levels like tract (73k+ places), if you already know the FIPS code use get_census_place directly instead.' This names a concrete alternative and gives clear context for selection.

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

search_companiesA

Find US public companies by name substring or ticker prefix (case-insensitive). Use this to look up a company before querying its financials, ratios, or filings. Optional filters: taxonomy='us-gaap' or 'ifrs-full' to narrow to US-GAAP 10-K vs IFRS 20-F filers; currency='' (e.g. 'USD', 'EUR') to narrow by presentation currency. Filter by Russell-index membership: in_index=True returns only companies in any tracked index (sp500, russell1000, or russell2000); in_index=False returns only unindexed companies. Note: combining in_index=False with a query that matches an indexed ticker (e.g. 'AAPL') returns no results because the ticker is filtered out.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo
limitNo
queryYes
currencyNo
domicileNo
exchangeNo
in_indexNo
taxonomyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses case-insensitive matching, taxonomy and currency filter semantics, and the in_index=False edge case with tickers like 'AAPL', which is valuable behavioral detail beyond the schema.

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

Conciseness5/5

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

The description is compact and well-structured, front-loading the primary action and then explaining filters. Every sentence earns its place, including the important edge-case note, with 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 8 parameters, no annotations, and an output schema that handles return values, the description covers the search behavior, key filters, and an edge case. It could briefly mention domicile/exchange semantics or screen_companies as an alternative, but overall it is largely sufficient for an 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?

The description adds meaning for key parameters: query (substring/ticker prefix), taxonomy (us-gaap vs ifrs-full), currency (ISO-4217), and in_index (Russell membership and filtering behavior). However, tier, domicile, exchange, and limit are not explicitly described, though some are self-explanatory by name.

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

Purpose5/5

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

The description states 'Find US public companies by name substring or ticker prefix (case-insensitive)', clearly identifying the verb, resource, and scope. It also distinguishes itself from sibling tools like search_filings by defining its lookup purpose.

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

Usage Guidelines4/5

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

The description explicitly tells when to use this tool: 'Use this to look up a company before querying its financials, ratios, or filings.' It provides clear context but does not explicitly mention when not to use it or how it compares to screen_companies.

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

search_filingsA

Search SEC filings by company, type (10-K, 10-Q, 8-K, 4, DEF 14A, 13F-HR), and date range. Returns filing metadata with accession numbers. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
tickerNo
to_dateNo
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description provides useful behavioral context: it returns filing metadata with accession numbers and explains ticker alias resolution (e.g., 'FB' resolves to META). However, it does not disclose rate limits, pagination, or any restrictions on date ranges, which would be valuable for a no-annotation tool.

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 its core purpose and then provides relevant examples in an args block. It is not overly verbose, but the structure slightly favors ticker details while leaving other parameters implied, which feels uneven but still 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?

The output schema exists, so return values need no further explanation. The description covers the main search dimensions (company, type, date range) and notes the output is metadata. Minor gaps remain around the limit parameter and date format, but these are not critical given the output schema and optional nature of parameters.

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 0%, and the description partially compensates. It thoroughly explains the 'ticker' parameter with examples and enumerates valid values for 'type'. However, it does not describe 'limit', 'to_date', or 'from_date' formats or behavior, leaving meaningful gaps for agents.

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

Purpose5/5

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

The description opens with 'Search SEC filings by company, type (10-K, 10-Q, 8-K, 4, DEF 14A, 13F-HR), and date range,' which is a specific verb+resource+scope statement. This clearly distinguishes it from sibling tools like search_filing_sections or search_companies.

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

Usage Guidelines3/5

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

The description implies when to use the tool through its purpose and includes one usage note ('Omit to search all companies'), but it does not explicitly discuss alternatives or exclusions. There is no mention of when to prefer search_filing_sections or other related tools.

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

search_filing_sectionsA

Semantic search across SEC filing section content (10-K Risk Factors, 10-Q MD&A, etc.) using natural-language queries. Returns matching text excerpts ranked by cosine similarity. Optionally scope by ticker (one company), filing_type (e.g. '10-K'), section_type (e.g. 'item_1a' for Risk Factors, 'item_7' for MD&A), fiscal year, or minimum similarity threshold. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
limitNo
queryYes
tickerNo
filing_typeNo
section_typeNo
min_similarityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description discloses meaningful behavior: returns excerpts ranked by cosine similarity, optional scoping, and ticker resolution details (CIK formats, historical ticker mapping). It omits some operational traits like pagination or rate limits, but for a search tool the core behavior is well covered.

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 compact and information-dense, with a logical flow: purpose, return behavior, optional filters, and a detailed parameter note for ticker. However, the 'Args:' section only elaborates on ticker while other parameters are only mentioned in prose, which is slightly unbalanced but not confusing.

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 complexity (7 parameters, many optional) and the existence of an output schema, the description covers the essential aspects: what it does, what it returns, how to scope it, and key parameter semantics. It lacks explicit mention of limit defaults or exhaustive parameter list, but is sufficiently complete for an AI to select and invoke it correctly.

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

Parameters4/5

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

Despite the 0% schema description coverage, the description adds substantial value: it explains ticker formats with examples (AAPL, CIK, historical FB→META), gives concrete section_type values ('item_1a' for Risk Factors, 'item_7' for MD&A), and clarifies filing_type and min_similarity. It does not detail year or limit, but defaults cover them.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Semantic search across SEC filing section content' using natural-language queries. It differentiates from sibling tools like search_filings by focusing on section-level content (10-K Risk Factors, 10-Q MD&A) and mentions ranked excerpt results.

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: for semantic search over SEC filing sections with optional scoping by ticker, filing type, section type, year, and similarity threshold. It does not explicitly name alternatives or state when not to use it, but the use case is unambiguous.

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

search_fundsA

Find institutional investment managers (hedge funds, mutual funds) by name. Use this to look up a fund's CIK before querying its holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description must carry the full burden. It discloses that the tool finds funds and returns CIK, which is behaviorally relevant. However, it does not explicitly mention that it is read-only or describe any side effects, rate limits, or auth requirements. The word 'find' implies a safe read operation, but more transparency would be better.

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 action and resource. Every word earns its place: it defines what the tool does, specifies the target entities, and gives a concrete use case. No unnecessary filler.

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

Completeness4/5

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

For a simple search tool with only two parameters and an output schema, the description is largely complete. It covers the tool's purpose and workflow. However, the lack of explicit mention of the limit parameter and the absence of safety annotations leave minor gaps, but the overall context is adequately conveyed.

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?

With 0% schema description coverage, the description must compensate. It adds meaning to the 'query' parameter by saying 'by name', which clarifies what the query searches for. However, the 'limit' parameter is not mentioned, so the description only partially compensates for the missing parameter documentation.

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 'Find' and the specific resource 'institutional investment managers (hedge funds, mutual funds)' by name. It also distinguishes itself from sibling tools by explicitly noting the use case of looking up a fund's CIK before querying holdings, which is unique to this tool.

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

Usage Guidelines4/5

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

The description provides clear context and workflow guidance: 'Use this to look up a fund's CIK before querying its holdings.' This implies when to use it (when needing a CIK for fund holdings), but it does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

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

search_industriesA

Search BLS industries by name or list by NAICS level. Use this to find NAICS industry codes before querying employment data. Params: query is a text search (e.g. 'software'), level is NAICS hierarchy depth (1=sector, 2=subsector, up to 6=national industry). Returns up to 25 results.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description discloses the result limit (up to 25 results), the meaning of both parameters, and the dual search/list modes. It doesn't explicitly state read-only behavior or edge cases, but for a search tool this is adequate 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?

Three sentences, each serving a distinct purpose: primary function, usage context, and parameter/output details. No filler, 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 two-optional-parameter interface and presence of an output schema, the description provides all necessary invocation details: what the tool does, when to use it, parameter semantics, and output size. It is complete for an agent to select and call correctly.

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

Parameters5/5

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

Schema coverage is 0%, and the description fully compensates by explaining that query is a text search with an example ('software') and level is an integer for NAICS depth (1=sector, 2=subsector, up to 6=national industry). This adds semantic meaning the schema alone completely lacks.

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 searches BLS industries by name or lists by NAICS level, with an explicit purpose of finding NAICS codes before querying employment data. This distinguishes it from siblings like get_industry_detail, which presumably retrieves specific industry details.

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 instructs to use this tool before querying employment data to locate NAICS codes, providing clear context. It does not explicitly name alternative tools or exclusions, but the workflow context is strong enough to guide correct usage.

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

search_occupationsA

Search BLS occupations by name. Use this to find SOC occupation codes before querying wage data. Params: query is a text search (e.g. 'software developer'), group is 'major' (broad categories like 15-0000 Computer and Mathematical) or 'detailed' (specific jobs like 15-1252).

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It implies a read-only search operation, but it does not explicitly confirm read-only behavior, mention rate limits, or describe edge cases (e.g., behavior with null query/group). This is a gap, but the simple search nature mitigates the risk.

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

Conciseness5/5

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

The description is concise and well-structured. It front-loads the purpose, then provides usage context, then parameter details. Every sentence earns its place with no filler or repetition.

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

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 (so return values don't need explanation), the description covers the essential context: purpose, usage scenario, and parameter semantics. It is complete for a low-complexity search tool with two optional parameters.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. It explains both parameters clearly: 'query' is a text search with an example ('software developer'), and 'group' is restricted to 'major' or 'detailed' with examples of each. This adds significant meaning beyond the bare schema, which only shows nullability.

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: 'Search BLS occupations by name.' It also specifies the intended outcome ('find SOC occupation codes before querying wage data'), which distinguishes it from sibling search tools like search_industries and aligns with the workflow context.

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 the tool ('Use this to find SOC occupation codes before querying wage data'), providing clear context. However, it does not name alternative tools or state when not to use it, so it earns a 4 rather than a 5.

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

send_webhook_testA

Enqueue a synthetic 'webhook.test' delivery to verify your endpoint is reachable and your HMAC verification works. Rate-limited to 5 calls per 60 seconds. Use list_webhook_deliveries afterward to see the result. If the subscription has is_active=False, the api may reject the request — call update_webhook(is_active=True) to re-enable first.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description discloses critical behaviors: rate limiting (5 calls/60 seconds), rejection when is_active=False, and the enqueueing behavior of a synthetic delivery. It could add details about async delivery timing or auth requirements, but covers the main operational constraints.

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, front-loaded with the primary action, and each sentence provides necessary context: what it does, rate limit, and troubleshooting/follow-up. No filler or redundant phrasing.

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

Completeness5/5

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

The tool is simple (one parameter, output schema exists). The description covers purpose, usage constraints, failure mode, and follow-up steps, making it self-contained. With output schema present, omitting return details is fine.

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 only has a bare subscription_id property with 0% description coverage. The description compensates by explaining that the parameter refers to a webhook subscription, that its active state affects success, and that the test delivery targets that subscription. This adds functional 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 ('Enqueue a synthetic webhook.test delivery') and the specific resource/action (testing webhook endpoint and HMAC verification). It distinguishes itself from sibling tools like replay_webhook_delivery by focusing on verifying connectivity and HMAC, not replaying past deliveries.

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: to verify endpoint reachability and HMAC. It names a follow-up tool (list_webhook_deliveries) and prescribes an alternative action (update_webhook) when the subscription is inactive, making usage context unambiguous.

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

update_webhookA

Update a webhook subscription. Pass only the fields you want to change — unset fields are left untouched. Use is_active=false to disable a hook without deleting it. Note: events=[] and filing_types=[] are treated as 'no change' (api does not support setting these to empty via this tool); to stop receiving any events, use is_active=false instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
eventsNo
is_activeNo
descriptionNo
filing_typesNo
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It effectively discloses non-obvious traits: unset fields remain untouched, empty arrays are ignored, and is_active=false disables rather than deletes. It does not mention error handling or idempotency, but the most critical quirks are covered. A slightly higher score would require even more detail, but this is already strong.

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: two sentences with no filler. It front-loads the core purpose, then provides necessary operational details. Each clause adds value, covering partial updates, disable-vs-delete, and the empty-array caveat without unnecessary words.

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

Completeness4/5

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

For a tool with several subtle behaviors and no annotations, the description is remarkably complete. It addresses the most likely user questions (how to update selectively, disable, and avoid the empty-array pitfall). It does not mention that subscription_id must reference an existing webhook, but that is implied by the tool's nature and the required parameter. The presence of an output schema reduces the need to describe return values.

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

Parameters4/5

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

The schema has zero description coverage, so the description must compensate. It adds significant meaning by explaining that events=[] and filing_types=[] are treated as 'no change' and that is_active=false disables the hook. However, it leaves url, description, and subscription_id to inference, though those are relatively self-explanatory. The partial-update behavior applies to all parameters, which is useful 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 opens with 'Update a webhook subscription,' a specific verb+resource pairing that clearly distinguishes this from sibling tools like create_webhook, get_webhook, and delete_webhook. It also conveys the core semantics of partial updates, reinforcing the purpose.

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 guidance on when to use this tool: 'Pass only the fields you want to change' and 'Use is_active=false to disable a hook without deleting it' directly contrasts with delete_webhook. It also explains when not to use certain values (events=[] is treated as no change) and offers an alternative (use is_active=false), giving clear when/when-not guidance.

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. Dates show when Glama detected each change.

  1. 60 tool updatesv0.1.0
    • First observedcompare_census_metric
    • First observedcompare_county_unemployment
    • First observedcompare_state_unemployment
    • First observedcreate_webhook
    • First observeddelete_webhook
    • First observedexplore_bls_metrics
    • First observedexplore_census_geographies
    • First observedexplore_census_metrics
    • First observedexplore_sba_metrics
    • First observedget_board_members
    • First observedget_census_metric_detail
    • First observedget_census_place
    • First observedget_census_place_breakdown
    • First observedget_census_place_metric_series
    • First observedget_census_place_metrics
    • First observedget_company
    • First observedget_county_employment
    • First observedget_county_lending
    • First observedget_county_unemployment
    • First observedget_county_wages
    • First observedget_events
    • First observedget_executive_compensation
    • First observedget_financial_metric
    • First observedget_financials
    • First observedget_fund_holdings
    • First observedget_holding_changes
    • First observedget_industry_detail
    • First observedget_industry_employment
    • First observedget_industry_lending
    • First observedget_industry_turnover
    • First observedget_insider_trades
    • First observedget_institutional_holders
    • First observedget_lender
    • First observedget_lenders
    • First observedget_lending_characteristics
    • First observedget_lending_outcomes
    • First observedget_occupation_wages
    • First observedget_ratio_history
    • First observedget_ratios
    • First observedget_regional_turnover
    • First observedget_sba_metric_detail
    • First observedget_state_lending
    • First observedget_state_turnover
    • First observedget_state_unemployment
    • First observedget_webhook
    • First observedlist_webhook_deliveries
    • First observedlist_webhook_event_types
    • First observedlist_webhooks
    • First observedreplay_webhook_delivery
    • First observedrotate_webhook_secret
    • First observedscreen_companies
    • First observedsearch_census_places
    • First observedsearch_companies
    • First observedsearch_filing_sections
    • First observedsearch_filings
    • First observedsearch_funds
    • First observedsearch_industries
    • First observedsearch_occupations
    • First observedsend_webhook_test
    • First observedupdate_webhook

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes with detailed descriptions, and the get/search/compare/explore prefixes help differentiate. However, composite tools like get_company that can include financials and ratios overlap with dedicated endpoints (get_financials, get_ratios), and search_companies vs screen_companies could cause misselection. The high volume of similar geographic lending/unemployment tools makes boundaries less obvious.

Naming Consistency4/5

Tool names predominantly follow a verb_noun pattern (get_, search_, compare_, explore_, list_, create_, update_, delete_) with consistent snake_case. Minor deviations exist: get_lender/get_lenders singular vs plural, get_financial_metric vs get_ratio_history naming inconsistency, and get_census_place_metrics vs get_census_place_metric_series.

Tool Count1/5

60 tools is far beyond the typical well-scoped MCP server, making it overwhelming and difficult for an agent to navigate. While each tool may serve a purpose, the sheer volume violates the expected 3-15 range and falls into the extreme category.

Completeness4/5

The server provides comprehensive coverage across BLS, Census, SEC company data, SBA lending, and webhooks. Each domain has lifecycle/query tools (search, get, compare, explore, CRUD for webhooks). Minor gaps exist, such as no direct state-level QCEW employment/wages tool, but overall the surface is fairly complete for its stated multi-source purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to access SEC EDGAR filings, US Treasury rates, BLS labor statistics, and economic indicators without API keys.
    6
    32
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Query 2,500+ verified public datasets (World Bank, IMF, Eurostat, OECD, WHO) from your AI agent. Search, analyze, and visualize data, and publish charts — with verified SEC + official source data.
    28
    410
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    It enables AI assistants (Claude, Cursor, etc.) to access SEC EDGAR data through 6 structured tools — from discovering available filings to keyword-searching within their pages.
    7
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thesma-dev/thesma-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server