Skip to main content
Glama
lzinga

US Government Open Data MCP

by lzinga

US Government Open Data MCP

MCP Server + TypeScript SDK for 40+ U.S. Government APIs

npm version npm downloads License: MIT

300+ tools covering economic, fiscal, health, education, energy, environment, lobbying, housing, patents, safety, banking, consumer protection, workplace safety, transportation, seismic, clinical trials, pharma payments, research funding, procurement, and legislative data.

20+ APIs require no key · The rest use free keys that take under a minute to get

Getting Started · API Reference · Documentation


Features

  • 300+ tools across 40+ government APIs — economic, health, legislative, financial, environmental, and more

  • Cross-referencing — built-in instructions guide the LLM to combine data from multiple agencies (e.g., FDA adverse events + lobbying spend + campaign contributions)

  • Code mode — WASM-sandboxed JavaScript execution reduces context window usage by 98-100% for large responses

  • Selective loading — load only the modules you need: --modules fred,treasury,congress

  • Dual transport — stdio for desktop clients, HTTP Stream for web/remote

  • TypeScript SDK — every API is importable as a standalone typed client, no MCP required

  • Disk-backed caching — responses cached to disk, survives restarts

  • Rate limiting + retry — token-bucket rate limiter with exponential backoff on 429/503

Related MCP server: Verilex Data

Quick Start

MCP Server

npx us-gov-open-data-mcp

Add to .vscode/mcp.json for VS Code / Copilot:

{
  "servers": {
    "us-gov-open-data": {
      "command": "npx",
      "args": ["-y", "us-gov-open-data-mcp"],
      "env": {
        "FRED_API_KEY": "your_key",
        "DATA_GOV_API_KEY": "your_key"
      }
    }
  }
}

Add to claude_desktop_config.json for Claude Desktop:

{
  "mcpServers": {
    "us-gov-open-data": {
      "command": "npx",
      "args": ["-y", "us-gov-open-data-mcp"],
      "env": {
        "FRED_API_KEY": "your_key",
        "DATA_GOV_API_KEY": "your_key"
      }
    }
  }
}

Example Prompts

Once connected, ask your AI assistant natural language questions:

Economic: "What's the current state of the U.S. economy? Show me GDP, unemployment, inflation, and interest rates."

Health: "Show me the adverse event profile for Ozempic including clinical trials, FDA reports, and pharma payments to doctors."

Legislative: "What happened with the Inflation Reduction Act? Who sponsored it, how did the vote break down by party?"

Follow the money: "Which banking PACs gave money to members of the Senate Banking Committee, and how did those members vote on banking deregulation?"

Cross-reference: "How has federal spending on healthcare changed over the last 5 years, and what health outcomes has it produced?"

TypeScript SDK

npm install us-gov-open-data-mcp
import { getObservations } from "us-gov-open-data-mcp/sdk/fred";
import { searchBills } from "us-gov-open-data-mcp/sdk/congress";

const gdp = await getObservations("GDP", { sort: "desc", limit: 5 });

No MCP server required. All functions include caching, retry, and rate limiting.

Documentation

Full documentation at lzinga.github.io/us-gov-open-data-mcp

Getting Started

MCP setup, SDK install, client configs

API Keys

Which APIs need keys, where to get them

Data Sources

All 40+ APIs grouped by category

API Reference

Auto-generated from TypeScript — every function and type

Examples

SDK code, MCP prompts, analysis showcases

Architecture

How the system works

Adding Modules

Add a new API — just create a folder

Data Sources

Category

APIs

Economic

Treasury, FRED, BLS, BEA, EIA

Legislative

Congress.gov, Federal Register, GovInfo, Regulations.gov

Financial

FEC, Senate Lobbying, SEC, FDIC, CFPB

Spending

USAspending, Open Payments

Health & Safety

CDC, FDA, CMS, ClinicalTrials.gov, NIH, NHTSA, DOL

Environment

EPA, NOAA, NREL, USGS

Justice

FBI Crime Data, DOJ News

Education

NAEP, College Scorecard, USPTO

Demographics

Census, HUD, FEMA

Other

BTS, USDA NASS, USDA FoodData, World Bank

Disclaimer

This project integrates a significant number of government APIs, many of which have large, complex, or inconsistently documented schemas. AI is used as a tool throughout this project to help parse API documentation, generate type definitions, and scaffold tool implementations — making it possible to cover this much surface area and get people access to government data faster than would otherwise be feasible. While every effort has been made to ensure accuracy, some endpoints may return unexpected results, have incomplete parameter coverage, or behave differently than documented.

This is a community-driven effort — if you find something that's broken or could be improved, please open an issue or submit a PR. Contributions that fix edge cases, improve schema accuracy, or expand coverage are especially welcome. The goal is to make U.S. government data as accessible and reliable as possible, together.

All data is sourced from official U.S. government and international APIs — the server does not generate, modify, or editorialize any data.

License

MIT

Available Tools

345 tools
bea_dataset_infoA
Read-onlyIdempotent

Discover BEA datasets, parameters, and valid parameter values. Essential for exploring the BEA API before making data requests.

Actions:

  • list_datasets: List all available BEA datasets

  • list_parameters: List parameters for a dataset (requires dataset_name)

  • get_values: Get valid values for a parameter (requires dataset_name + parameter_name)

  • get_filtered_values: Get values filtered by other params (requires dataset_name + target_parameter + filters)

Datasets: NIPA, NIUnderlyingDetail, FixedAssets, MNE, GDPbyIndustry, Regional, ITA, IIP, InputOutput, UnderlyingGDPbyIndustry, IntlServTrade

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhat to retrieve: 'list_datasets', 'list_parameters', 'get_values', or 'get_filtered_values'
filtersNoJSON object of filter params for get_filtered_values. E.g. '{"TableName":"SAINC1"}' to get LineCode values for table SAINC1
dataset_nameNoDataset name (required except for list_datasets). E.g. 'Regional', 'NIPA', 'GDPbyIndustry', 'ITA', 'IIP', 'MNE', 'FixedAssets', 'IntlServTrade', 'InputOutput'
parameter_nameNoParameter name (required for get_values). E.g. 'TableName', 'Year', 'GeoFips', 'LineCode', 'Frequency', 'Indicator'
target_parameterNoTarget parameter for filtered values (required for get_filtered_values). E.g. 'LineCode' to discover line codes for a given TableName

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds the action-specific parameter requirements, but it does not disclose response format, pagination, or potential errors. Given that annotations cover the safety profile, the description adds only marginal behavioral context beyond the action list.

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 well-structured with a clear introductory sentence and a bulleted list of actions. It is front-loaded with the purpose. The dataset list is somewhat redundant with the schema's parameter description but still useful. No unnecessary words; it earns its length.

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

Completeness3/5

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

The description explains all four actions and their parameter requirements, which is useful. However, since there is no output schema, the description should describe what each action returns (e.g., lists of datasets, parameter names, values). It only implies this via the action names. For a tool with multiple actions and no output schema, this is a notable gap.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for each parameter, so baseline is 3. The description adds value by mapping each action to its required parameters (e.g., 'list_parameters requires dataset_name') and by listing valid dataset names. This clarifies the usage of parameters beyond the schema's individual 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's purpose: 'Discover BEA datasets, parameters, and valid parameter values.' It lists all four actions with their exact functions, making it unambiguous what the tool does and how it differs from data-retrieval siblings like bea_gdp_national.

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

Usage Guidelines4/5

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

The description explicitly says it is 'Essential for exploring the BEA API before making data requests,' which signals when to use it. It does not name specific alternative tools, but the context strongly implies it is a precursor to data-fetching tools. No exclusions are given, but the usage context is clear.

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

bea_fixed_assetsA
Read-onlyIdempotent

Get Fixed Assets data — net stock, depreciation, and investment tables.

Covers private/government fixed assets, equipment, structures, and IP products. Annual data only, updated once per year (late August – early October).

Common tables: FAAt101 (current-cost net stock by type), FAAt201 (private equipment), FAAt401 (private nonresidential by industry), FAAt801 (current-cost depreciation). Use bea_dataset_info to discover all table names.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'LAST5' (default), 'ALL', 'X', or comma-separated years
table_nameNoFixedAssets table name (default: 'FAAt101'). Use bea_dataset_info to discover.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: annual frequency, release timing, and concrete table names with meanings. It does not mention output format or pagination, but that is a minor gap given the low-risk read-only nature.

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 purpose appears in the first line, followed by essential scope, update cadence, and table examples. Every sentence earns its place, and the structure makes key facts scannable. No filler or redundant restatement of the tool name.

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 read-only tool with two optional parameters Asiatic, the description supplies defaults, valid table examples, data coverage, temporal frequency, and a pointer for discovering more tables. No output schema exists, but an agent likely needs no more than this to make a correct call. A slight gap is the lack of any hint about the response shape, which would otherwise make this a 5.

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 describes both parameters at 100% coverage, including defaults and the year format. The description adds meaning by enumerating common table names and what each one represents (e.g., FAAt101 current-cost net stock by type). This goes beyond the schema's generic 'table name' description, so the definition adds useful 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 opens with a clear verb-object pair: 'Get Fixed Assets data — net stock, depreciation, and investment tables.' It names the specific resource and scope, listing common table identifiers and data categories. This distinguishes it from sibling BEA tools like GDP or international transactions without requiring schema inspection.

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 sets clear context: annual data only, update cadence, and data coverage (private/government fixed assets, equipment, structures, IP products). It directs the agent to bea_dataset_info for table discovery, which serves as an alternative lookup path. However, it does not explicitly state when not to use this tool versus other BEA datasets, 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.

bea_gdp_by_industryA
Read-onlyIdempotent

Get GDP contribution by industry sector nationally from BEA GDPbyIndustry dataset.

TableID options:

  • 1: Value added by industry (default)

  • 5: Contributions to percent change in real GDP

  • 6: Value added percent shares

  • 25: Real value added by industry

Industry='ALL' returns all sectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): comma-separated or 'ALL'. Default: last 3 complete years
industryNo'ALL' (default), or specific NAICS codes: '11' (agriculture), '21' (mining), '23' (construction), '31-33' (manufacturing), '42' (wholesale), '44-45' (retail), '51' (information), '52' (finance)
table_idNoTable ID: '1' (value added, default), '5' (contributions to GDP growth), '6' (% shares), '25' (real value added)
frequencyNoFrequency: A=annual (default), Q=quarterly (not all tables)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this a read-only, idempotent operation, so the bar is lower for behavioral disclosure. The description adds meaningful defaults (default table 1, industry ALL, default year range) and clarifies that 'Industry='ALL' returns all sectors,' which goes beyond what the schema states.

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, with the primary action in the first sentence and the table/industry options in an easy-to-scan list. No redundant elaboration or filler.

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

Completeness4/5

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

For a read-only query tool with four optional parameters and no output schema, the description covers the key choices: table ID, industry scope, and national focus. It omits output shape/pagination, but the annotations plus thorough schema make the missing information minor.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already explains year, industry examples, table_id values, and frequency. The description adds minor value by listing TableID options and noting that ALL returns all sectors, but largely restates schema content.

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 GDP contribution by industry sector nationally from BEA GDPbyIndustry dataset.' This clearly differentiates the tool from nearby BEA siblings like bea_gdp_national (national totals) and bea_gdp_by_state (state-level data).

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

Usage Guidelines3/5

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

The scope is clear: national-level GDP by industry. However, the description never names alternatives such as bea_gdp_by_state or bea_gdp_national or states when to prefer one over another. Usage context is implied by the tool's scope but not explicitly enforced.

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

bea_gdp_by_stateA
Read-onlyIdempotent

Get gross domestic product for U.S. states from BEA Regional dataset.

Table options:

  • SAGDP1: State annual GDP summary (default)

  • SAGDP9: Real GDP by state

  • SQGDP1: State quarterly GDP summary

GeoFips: 'STATE' for all states, or 5-digit FIPS (e.g. '06000' for CA)

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'LAST5' (default), 'LAST10', 'ALL', or comma-separated years
geo_fipsNoGeography: 'STATE' (all states, default), or state FIPS + '000' (e.g. '06000' for CA, '48000' for TX)
line_codeNoLine code: '1' (all industry, default), '2' (private), '3' (government)
table_nameNoRegional table: 'SAGDP1' (annual GDP summary, default), 'SAGDP9' (real GDP), 'SQGDP1' (quarterly GDP summary)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds some contextual value by naming the dataset family and table variants, but it does not disclose return format, units, or any boundaries beyond what the schema already states.

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 clearly structured: it leads with a one-sentence purpose, then uses compact labeled lists for table options and GeoFips. There is no filler or redundant narrative, and each line adds useful selection detail.

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

Completeness4/5

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

The schema plus description together cover the query options and defaults, and the annotations cover the behavioral safety profile, so an agent can reasonably invoke the tool and know what kind of data it returns. It could be even more complete by mentioning units and explicit sibling differentiation, but these gaps are not blocking for a read-only 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 description coverage is 100%, so the schema already documents all four parameters meaningfully. The description repeats table and GeoFips details but does not add fundamentally new semantic information beyond what is in the parameter descriptions, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get gross domestic product for U.S. states from BEA Regional dataset.' It combines a specific verb, resource, and geographic scope, and the table options further clarify that it serves state-level BEA data rather than national or industry GDP queries.

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

Usage Guidelines3/5

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

The description gives useful within-tool guidance by listing table options and explaining GeoFips, and the phrase 'for U.S. states' implies its primary use. However, it never explicitly contrasts this tool with sibling tools like bea_gdp_national or bea_gdp_by_industry, nor provides when-not-to-use information.

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

bea_gdp_nationalA
Read-onlyIdempotent

Get U.S. national GDP data from the NIPA tables. Shows GDP, GDP growth, components (consumption, investment, government, net exports), and deflators.

Common table names:

  • T10101: GDP and major components (real)

  • T10106: GDP and major components (nominal)

  • T10111: GDP percent change

  • T20100: Personal income and its disposition

  • T30100: Government receipts and expenditures

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s) to fetch. Use 'X' for all, 'LAST5' for last 5, or specific year. Default: LAST5
frequencyNoFrequency: Q=quarterly (default), A=annual, M=monthly
table_nameNoNIPA table name (default: T10101 — Real GDP). Other: T10106 (nominal GDP), T10111 (% change), T20100 (personal income)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds useful behavioral context by explaining what data is shown and mapping common NIPA table names to their contents. No contradiction with annotations is present.

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 a clear one-sentence summary followed by a scannable bullet-style table list. It contains no filler, though some table details duplicate the schema descriptions.

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

Completeness4/5

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

For a tool with no required parameters and no output schema, the description plus schema covers the main invocation decisions: table, year, and frequency. It could be slightly more complete by pointing to related BEA tools for state or industry data, but that is not essential for calling this 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 100%, so the baseline is 3. The description adds value beyond the schema by pairing table IDs with readable meanings, including extra detail like T10106 nominal GDP, T10111 percent change, and T30100 government receipts, helping an agent choose table_name more confidently.

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

Purpose5/5

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

The description clearly states it 'Get[s] U.S. national GDP data from the NIPA tables' and enumerates the covered series: GDP, GDP growth, components, and deflators. It also lists specific table names, which makes the tool's purpose unambiguous and distinguishes it from state-level and industry-level BEA siblings.

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

Usage Guidelines4/5

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

The description makes the intended scope explicit: national GDP and NIPA tables, and gives a table catalog that helps an agent choose table_name. It stops short of explicitly naming alternatives like bea_gdp_by_state or bea_gdp_by_industry, so it provides clear context but no explicit when-not-to-use guidance.

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

bea_input_outputA
Read-onlyIdempotent

Get Input-Output statistics — Make Tables, Use Tables, and Requirements tables.

Shows interrelationships between U.S. producers and users.

Use bea_dataset_info (action='get_values', dataset_name='InputOutput', parameter_name='TableID') to discover available table IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear(s): comma-separated or 'ALL'
table_idYesTable ID (required). Use bea_dataset_info to discover available tables.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds minimal behavioral context—only that it 'shows interrelationships,' which is more about content than behavior. It does not disclose pagination, rate limits, or return format, but with annotations covering safety, a score of 3 is appropriate.

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

Conciseness5/5

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

The description is three concise sentences with no wasted words. It front-loads the core purpose, adds a brief explanation of the data, and ends with a practical pointer for parameter discovery. It is well-structured 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?

For a simple tool with two well-documented parameters, no output schema, and annotations covering safety, the description is nearly complete. It explains what the tool does, points to the discovery mechanism for table IDs, and indicates the data covers interrelationships. It could mention that output is tabular, but the absence of an output schema and the tool's straightforward nature make this a minor gap.

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

Parameters3/5

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

The schema already provides descriptions for both parameters: year supports comma-separated values or 'ALL', and table_id requires discovery via bea_dataset_info. The description repeats this discovery hint, adding no new semantic meaning beyond the schema. Given 100% schema coverage, the baseline is 3, and the description does not exceed that.

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 Input-Output statistics, specifically Make, Use, and Requirements tables, and explains they show interrelationships between U.S. producers and users. This distinguishes it from other BEA tools like GDP or personal income. It lacks an explicit comparison to sibling tools but the name and content make its purpose unambiguous.

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

Usage Guidelines3/5

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

The description provides a clear pointer to bea_dataset_info for discovering table IDs, which is a useful prerequisite. However, it does not explicitly state when to use this tool versus other BEA tools, nor does it mention any exclusions or alternative scenarios. The guidance is limited to a discovery step, not a full decision framework.

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

bea_international_investmentA
Read-onlyIdempotent

Get U.S. international investment position (IIP) data.

Shows end-of-period accumulated stocks of U.S. financial assets and liabilities.

TypeOfInvestment examples:

  • FinAssetsExclFinDeriv: U.S. assets excl derivatives (default)

  • FinLiabsExclFinDeriv: U.S. liabilities excl derivatives

  • DirInvAssets: Direct investment assets

  • FinLiabsFoa: Liabilities to foreign official agencies

Component: 'Pos' (position), 'ChgPosTrans' (change from transactions), 'ChgPosPrice' (from price changes), 'ChgPosXRate' (from exchange rates)

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'ALL' (default), or comma-separated years
componentNo'Pos' (position, default), 'ChgPosTrans', 'ChgPosPrice', 'ChgPosXRate', or 'All'
frequencyNo'A' (annual, default), 'QNSA' (quarterly not seasonally adjusted)
type_of_investmentNo'FinAssetsExclFinDeriv' (default). Use bea_dataset_info for full list.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description adds meaningful context beyond them by explaining what IIP represents and by defining component semantics such as 'ChgPosTrans' (change from transactions), 'ChgPosPrice' (price changes), and 'ChgPosXRate' (exchange rates). It does not cover response shape or API quirks, but the annotation coverage lowers the burden.

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: a front-loaded purpose sentence, a one-line conceptual clarification, and short bullets for key parameter values. There is no filler, and the most decision-relevant information appears first.

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 read-only tool with four optional parameters and no output schema, the description is nearly complete: it states defaults, provides valid example values, and points to bea_dataset_info for the full TypeOfInvestment list. The main gap is that the return format/columns are not described, but the parameter space is well covered by the schema and description combined.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra value by giving meaningful TypeOfInvestment examples with plain-language meanings and by expanding Component values into their economic meanings beyond the schema's option list. Year and frequency are left to the schema, which already documents them adequately.

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?

Opens with a specific verb and resource: 'Get U.S. international investment position (IIP) data.' The second sentence clarifies that it returns end-of-period accumulated stocks of assets and liabilities, which distinguishes it from flow-oriented siblings like bea_international_transactions or bea_intl_services_trade. This is enough for an agent to know exactly what this tool provides.

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 by defining the data domain ('end-of-period accumulated stocks'), which suggests it is appropriate for position/stock questions. However, it never explicitly states when to use this tool versus alternatives such as bea_international_transactions or bea_dataset_info, and it gives no exclusions or fallback guidance.

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

bea_international_transactionsA
Read-onlyIdempotent

Get U.S. international transactions (balance of payments) data.

Tracks all transactions between U.S. and foreign residents: goods/services trade, current account, financial account, capital transfers.

Indicator examples:

  • BalGds: Balance on goods (default)

  • BalServ: Balance on services

  • BalCurAcct: Current account balance

  • ExpGds/ImpGds: Exports/Imports of goods

  • PfInvAssets: Portfolio investment assets

Frequency: A=annual, QSA=quarterly seasonally adjusted, QNSA=not adjusted

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'ALL' (default), or comma-separated years
frequencyNo'A' (annual, default), 'QSA' (quarterly SA), 'QNSA' (quarterly NSA)
indicatorNoTransaction type: 'BalGds' (default), 'BalServ', 'BalCurAcct', 'ExpGds', 'ImpGds'. Use bea_dataset_info for full list.
area_or_countryNo'AllCountries' (default total), or specific: 'China', 'Canada', 'Mexico', 'Japan', 'Germany'. 'All' for all area/country breakdowns.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it explains the data covers transactions between U.S. and foreign residents, lists default indicator (BalGds), and clarifies frequency options. It does not mention pagination or response format, but for a read-only data retrieval tool this is acceptable.

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

Conciseness4/5

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

The description is well-structured with a clear opening sentence, a brief explanation of what the data tracks, and a bulleted list of indicator examples. It is slightly longer than necessary but every section earns its place. The frequency line is concise and useful.

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 read-only data retrieval tool with 100% schema coverage and no output schema, the description is largely complete. It explains the data scope, provides indicator examples, and notes that bea_dataset_info can be used for the full list. It could mention that 'All' for area_or_country returns all breakdowns, but the schema already covers that. The lack of an output schema is not a major gap for this type of tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds value by explaining the meaning of the data categories (e.g., BalGds = balance on goods) and the default values, but it does not add significant new semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves U.S. international transactions (balance of payments) data, with a specific verb ('Get') and resource. It lists concrete indicator examples and frequency options, distinguishing it from other BEA tools like bea_gdp_national or bea_intl_services_trade. The scope is unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context on what data the tool returns and includes indicator examples, but it does not explicitly state when to use this tool versus alternatives like bea_intl_services_trade or bea_international_investment. The sibling list includes several BEA tools, so explicit exclusion guidance would improve this dimension.

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

bea_intl_services_tradeA
Read-onlyIdempotent

Get U.S. international trade in services data (annual).

IMPORTANT: BEA requires either a specific TypeOfService or a specific AreaOrCountry. You cannot use 'All' for both simultaneously.

TypeOfService: 'All' (default), or specific: 'Telecom', 'Travel', 'Transport', 'Insurance', 'Financial', 'Comp', 'ChargesForTheUseOfIpNie', etc. Use bea_dataset_info to discover all values.

TradeDirection: 'All' (default), 'Exports', 'Imports', 'Balance', 'SupplementalIns'

Affiliation: 'All' (default), 'AllAffiliations', 'Affiliated', 'Unaffiliated', 'UsParents', 'UsAffiliates'

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'All' (default for all years), or comma-separated years
affiliationNo'All' (default), 'AllAffiliations', 'Affiliated', 'Unaffiliated', 'UsParents', 'UsAffiliates'
area_or_countryNo'AllCountries' (default total), specific country name, or 'All' for all breakdowns.
trade_directionNo'All' (default), 'Exports', 'Imports', 'Balance', 'SupplementalIns'
type_of_serviceNo'All' (default — all types). Or specific: 'Telecom', 'Travel', 'Transport', etc. Use bea_dataset_info.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the crucial behavioral requirement that BEA mandates a specific TypeOfService or AreaOrCountry, and clarifies that data is annual. It does not mention pagination or response format, but given the annotations, 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?

The description is well-organized: an opening one-liner defining the tool, an IMPORTANT note front-loaded for critical usage guidance, followed by compact parameter value lists. No redundant sentences; every line contributes to correct usage.

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 5-parameter tool with no output schema registering, the description covers all parameter semanticships, including defaults and allowed values. It also points to a sibling tool (bea_dataset_info) for exhaustive value discovery. The only missing piece is a description of the return format, which is not strictly required for invocation but would have been useful. Overall, the description is sufficient for an agent to call this 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 100%, so the baseline is 3. The description goes far beyond the schema by listing plausible enum values for type_of_service, trade_direction, and affiliation, including examples like 'Telecom', 'Travel', 'Comp', and 'ChargesForTheUseOfIpNie'. It also explains the interdependency between type_of_service and area_or_country, 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 states a specific verb ('Get'), a clear resource ('U.S. international trade in services data'), and a temporal scope ('annual'). This clearly differentiates it from sibling BEA tools like bea_international_transactions or bea_gdp_national, even without naming them.

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 warns about the critical constraint: 'You cannot use ''All'' for both simultaneously' when selecting TypeOfService and AreaOrCountry. It also directs users to bea_dataset_info for discovering valid values and lists acceptable values for multiple parameters. This is clear, actionable usage guidance.

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

bea_multinational_enterprisesA
Read-onlyIdempotent

Get data on Direct Investment (DI) and Activities of Multinational Enterprises (AMNE).

DirectionOfInvestment (required):

  • 'Outward': U.S. investment abroad / foreign affiliates

  • 'Inward': Foreign investment in U.S. / U.S. affiliates

  • 'State': U.S. affiliates at state level (AMNE only)

  • 'Parent': U.S. parent enterprises (AMNE only)

Classification (required): 'Country', 'Industry', 'CountryByIndustry'

For AMNE stats, also set ownership_level ('0'=majority-owned, '1'=all) and non_bank_affiliates_only ('0'=both, '1'=nonbank only).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear(s): comma-separated or 'ALL'
stateNo2-digit state FIPS or 'all'. Only for Direction='State'.
countryNo3-digit country code(s) or 'all'. '000' for total of all countries.
industryNo4-digit NAICS industry code(s) or 'all'. '0000' for all-industries total.
series_idNoSeries IDs (comma-separated) or '0' for all. Use bea_dataset_info for list.
classificationYes'Country', 'Industry', or 'CountryByIndustry'
ownership_levelNo'0' (majority-owned only), '1' (all affiliates). Required for AMNE stats.
direction_of_investmentYes'Outward', 'Inward', 'State', or 'Parent'
non_bank_affiliates_onlyNo'0' (bank and nonbank), '1' (nonbank only). Required for AMNE stats.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds contextual detail about the data coverage (Outward/Inward/State/Parent) and the meaning of ownership levels, which goes beyond annotations but does not describe return formats, pagination, or rate limits. No contradiction with annotations.

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

Conciseness5/5

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

The description is compact and well-organized, using bullet lists for the required dimensions and a brief note for AMNE-specific flags. It is front-loaded with the core purpose, and every sentence contributes meaningful guidance without redundancy.

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

Completeness4/5

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

With 9 parameters, 3 required, conditional dependencies, and no output schema, the description covers the most important semantics for correct invocation: required parameters, valid values for Direction and Classification, and AMNE-specific flags. Minor gaps remain, such as year format and advanced use of series_id, but these are documented in the schema's parameter descriptions.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, but the description adds meaningful semantics beyond the schema: it explains what each DirectionOfInvestment value means (e.g., 'Outward': U.S. investment abroad / foreign affiliates) and clarifies which classification options are relevant for AMNE. It also explains the meaning of ownership_level and non_bank_affiliates_only values, raising the score above baseline.

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

Purpose4/5

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

The description clearly identifies the tool as retrieving Direct Investment (DI) and Activities of Multinational Enterprises (AMNE) data, with a specific verb and resource. It enumerates the main dimensions (DirectionOfInvestment and Classification). However, it does not explicitly differentiate this tool from sibling BEA data tools, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description provides conditional usage guidance, such as setting ownership_level and non_bank_affiliates_only for AMNE stats, and notes which Direction values are AMNE-only. It implies when the tool is appropriate but gives no explicit alternatives or exclusion criteria for choosing a sibling dataset tool.

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

bea_nipa_underlying_detailA
Read-onlyIdempotent

Get NIPA underlying detail data — more granular national account breakdowns.

BEA caution: these detailed estimates are lower quality than published aggregates.

Common tables: U20305 (PCE current $), U70205S (auto sales/production monthly), U001A (GDP), U20304 (PCE by type). Use bea_dataset_info to discover all tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'LAST5' (default), 'ALL', 'X', or comma-separated years
frequencyNoA=annual (default), Q=quarterly, M=monthly
table_nameNoNIUnderlyingDetail table (default: 'U20305'). Use bea_dataset_info to discover tables.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds a useful data-quality caution (lower quality than aggregates) and hints at table selection, which goes beyond the annotations. It does not describe response format or pagination, but given the annotations' coverage, 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 concise and well-organized: it states the core purpose first, adds a caution, then lists common tables and a discovery tip. No filler or redundant sentences, and it is front-loaded with the most important information.

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

Completeness4/5

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

For a tool with 3 optional parameters, no output schema, and a clear sibling set, the description provides enough to call it correctly: it explains the data scope, gives examples, and points to discovery. It could be improved by mentioning the response format, but the absence is not critical given the annotations and the tool's simple parameter set.

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

Parameters4/5

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

Schema coverage is 100%, so the schema documents each parameter. The description adds value by listing common tables and instructing users to use bea_dataset_info for discovery, which directly aids the table_name parameter. This extra context raises it above the baseline of 3.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('NIPA underlying detail data') and adds a clarifying phrase ('more granular national account breakdowns') that differentiates it from sibling BEA tools like bea_gdp_national which likely provide aggregates. It also lists common tables, making its 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 Guidelines4/5

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

It provides clear context by explaining the tool returns underlying detail and warns that these are lower quality than published aggregates, implying that for aggregates one should use other BEA tools. It also directs users to bea_dataset_info for discovering all tables. However, it does not explicitly name alternative tools or state when not to use this tool, 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.

bea_personal_incomeA
Read-onlyIdempotent

Get personal income data by state from BEA Regional dataset.

Table options:

  • SAINC1: Personal income summary (income, population, per capita) — default

  • SAINC3: Per capita personal income only

  • SAINC4: Personal income by major component (wages, dividends, transfers)

LineCode for SAINC1: 1=personal income, 2=population, 3=per capita income (default) LineCode for SAINC4: 1=total, 50=wages, 45=dividends/interest/rent, 47=transfer receipts

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): 'LAST5' (default), 'ALL', or comma-separated years
geo_fipsNo'STATE' (all states, default), or state FIPS + '000'. 'COUNTY' for all counties, 'MSA' for all metro areas.
line_codeNoSAINC1: '3' (per capita, default), '1' (personal income), '2' (population). SAINC4: '50' (wages), '45' (property income), '47' (transfers)
table_nameNo'SAINC1' (personal income summary, default), 'SAINC3' (per capita only), 'SAINC4' (by component)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering safety and idempotency. The description adds no further behavioral context such as rate limits, auth requirements, or error handling, but it does not contradict annotations. With annotations covering the safety profile, a baseline of 3 is appropriate.

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

Conciseness5/5

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

The description is concise and well-structured. It starts with a clear purpose statement, then uses bullet points to list table options and line code mappings. No redundant information, and the key details are 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 provides enough context for a simple data retrieval tool: it explains the available tables and line codes. It does not describe the output format, but given the lack of an output schema and the simplicity of the operation, this is not a critical gap. Annotations cover safety, so the description is largely complete for calling 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?

Schema description coverage is 100%, so the schema already documents all parameters. The description repeats and organizes the line code and table information that is already in the schema, adding marginal value by presenting it more clearly. It does not provide significant new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get personal income data by state from BEA Regional dataset.' It specifies the resource (personal income data) and the scope (by state), and distinguishes it from sibling BEA tools like bea_gdp_by_state by focusing on income rather than GDP. The table options further clarify what the tool returns.

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 implicitly conveys when to use this tool (when personal income data is needed) but does not explicitly mention alternatives or exclusions. However, the tool name and description make it clear this is for income data, not other economic indicators, so an agent can infer the appropriate context without explicit guidance.

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

bea_underlying_gdp_by_industryA
Read-onlyIdempotent

Get Underlying GDP by Industry — more industry detail than the main GDPbyIndustry dataset.

Annual data only, starting from 1997. BEA caution: quality of these detailed estimates is lower than published aggregates.

Use bea_dataset_info to discover valid TableIDs and Industry codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear(s): comma-separated, 'ALL', or default last 3 years
industryNo'ALL' (default) or specific NAICS industry codes
table_idNoTable ID (default: '210' for value added). Use bea_dataset_info to discover.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by disclosing the BEA caution about lower data quality for these detailed estimates, which is not implied by the annotations. It also mentions the annual-only and start-year constraints, which are behavioral limits. This is useful beyond the structured metadata, though it doesn't discuss pagination or return format, which are not required given the simplicity.

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 succinct sentences, each serving a purpose: identifying the resource, stating data scope, and warning about quality plus directing to helper tool. It is front-loaded with the most important info and contains no filler. Perfectly sized for an API tool description.

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

Completeness5/5

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

Given the tool's simplicity (3 params, no output schema, annotations covering safety), the description covers all essential aspects: purpose, differentiation from sibling, usage constraints (annual, start year), data quality caution, and parameter discovery guidance. An agent can confidently invoke this tool correctly with the information provided.

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

Parameters4/5

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

Schema coverage is 100%, so all three parameters (year, industry, table_id) have basic descriptions. The description adds significant context: it specifies that data is annual-only and starts from 1997, which directly constrains the 'year' parameter beyond the schema's generic description. It also points to bea_dataset_info for valid TableIDs and Industry codes, which is practical guidance for parameter values. This goes beyond mere schema repetition, earning a 4.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'Underlying GDP by Industry', and immediately distinguishes it from the main GDPbyIndustry dataset by highlighting 'more industry detail'. This makes it easy for an agent to know exactly what this tool retrieves and how it differs from the sibling tool bea_gdp_by_industry.

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 provides explicit usage conditions: 'Annual data only' and 'starting from 1997' establish when this tool is appropriate (and implicitly when not, e.g., if quarterly data is needed). The instruction to 'Use bea_dataset_info to discover valid TableIDs and Industry codes' gives a clear pathway for parameter selection. It also implies that this tool is preferred when more detailed industry data is required compared to the main GDPbyIndustry dataset.

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

bls_cpi_breakdownA
Read-onlyIdempotent

Get a breakdown of Consumer Price Index by component — food, shelter, energy, medical care, transportation, etc. Shows which categories are driving inflation.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoEnd year (default: current year)
start_yearNoStart year (default: 2 years ago)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe read-only behavior is covered. The description adds minimal extra behavioral context—just that it shows categories driving inflation—but nothing about data granularity, update frequency, or output structure. Given the annotation coverage, this is adequate but not rich.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the primary purpose and followed by a meaningful outcome ('Shows which categories are driving inflation'). No filler or redundancy; every word earns its place.

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

Completeness4/5

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

For a simple read-only tool with two optional params and no output schema, the description gives enough context about what it does and the kind of output (component breakdown). It doesn't mention frequency or index units, but the schema covers parameter defaults and the annotations cover safety. This is reasonably 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.

Parameters3/5

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

Schema description coverage is 100%, with both start_year and end_year clearly documented in the schema. The description adds no parameter-specific meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get a breakdown of Consumer Price Index by component', listing examples (food, shelter, energy, medical care, transportation). This clearly distinguishes it from BLS siblings like bls_series_data (generic series retrieval) and bls_employment_by_industry (employment focus). The purpose is unambiguous and scoped.

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

Usage Guidelines3/5

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

The description implies usage when an agent needs CPI component breakdowns, especially 'which categories are driving inflation'. However, it does not name any sibling tools or provide explicit when-to-use vs. when-not-to-use guidance, leaving some inference to the agent.

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

bls_employment_by_industryA
Read-onlyIdempotent

Get employment numbers broken down by major industry sector. Shows which sectors are growing or shrinking.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoEnd year (default: current year)
start_yearNoStart year (default: 3 years ago)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only the behavioral hint that it indicates growing/shrinking sectors, but doesn't disclose output format, time unit, seasonality, or data limitations. This is acceptable but minimal given the annotation coverage.

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

Conciseness5/5

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

The description is two sentences with zero filler. The primary action is front-loaded, and the secondary insight about growth/shrinkage adds value without bulking the text. Every word earns its place.

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

Completeness3/5

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

This tool has no output schema, so the description carries the burden of explaining what the agent can expect. It mentions 'growing or shrinking' but not the actual return fields, sector naming conventions, or whether results are time-series or a single snapshot. With only 2 optional parameters and a safe annotation profile, the description is functional but leaves moderate room for agent uncertainty.

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

Parameters3/5

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

Schema coverage is 100%, with both start_year and end_year described in the schema (including defaults). The description adds no parameter-specific meaning, not even mentioning that a date range can be specified. Baseline 3 is appropriate because the schema fully documents the parameters, and the description doesn't need to repeat them, though it could have enriched 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 states a specific verb ('Get'), a clear resource ('employment numbers'), and the breakdown dimension ('major industry sector'). It also adds an interpretive angle ('Shows which sectors are growing or shrinking') that distinguishes it from generic series tools like bls_series_data or bls_cpi_breakdown, making the tool's purpose immediately obvious.

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

Usage Guidelines3/5

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

The description implies usage through its resource specificity ('employment by industry') but does not explicitly say when to prefer this tool over alternatives such as bls_series_data or bea_gdp_by_industry. There are no exclusionary statements or alternative tool mentions, leaving the agent to infer the selection criteria from the resource name alone.

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

bls_search_seriesA
Read-onlyIdempotent

Look up popular BLS series IDs by topic. BLS doesn't have a search API, so this provides curated series IDs for common topics.

Topics: employment, unemployment, wages, cpi, cpi_components, ppi, productivity, jolts, state_employment

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoTwo-letter state code for state-level data (e.g., 'CA', 'TX')
topicYesTopic to look up: 'employment', 'unemployment', 'wages', 'cpi', 'cpi_components', 'ppi', 'productivity', 'jolts', 'state_employment'

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context that the tool returns curated 'popular' IDs, implying a limited set rather than exhaustive coverage. This helps the agent understand the tool's scope. There's no contradiction with annotations, and the added value is meaningful but not extensive.

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 efficient: two sentences and a topic list. The purpose is front-loaded, the rationale is brief, and the topic enumeration is necessary for parameter completeness. There is no waste or verbosity, making it easy to parse quickly.

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 lookup tool with 2 parameters (one optional) and no output schema, the description is nearly complete. It clearly states it returns series IDs, and the topic list covers all valid values. The only missing piece is an explicit connection to follow-up tools like bls_series_data, but that is inferable. Overall, an agent can correctly invoke this tool with the information provided.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (topic and state) are already documented with clear descriptions. The tool description repeats the topic list and mentions state-level data, but adds no new meaning beyond the schema. With high coverage, the baseline of 3 is appropriate; the description doesn't compensate for anything missing.

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 ('Look up'), the resource ('popular BLS series IDs'), and the scope ('by topic'). It distinguishes itself from sibling tools like bls_series_data (which fetches data for a given ID) and bls_employment_by_industry (which provides breakdowns) by focusing on curated ID lookup. The purpose is immediately understandable and specific.

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 why this tool exists ('BLS doesn't have a search API, so this provides curated series IDs') and lists valid topics. It implicitly guides the agent to use this tool to obtain series IDs before fetching data, but it does not explicitly exclude alternatives or state when not to use it. The context is clear enough, but exclusions are left to inference.

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

bls_series_dataA
Read-onlyIdempotent

Fetch time series data from the Bureau of Labor Statistics. Returns monthly/quarterly/annual observations for employment, wages, prices, and more.

Popular series IDs:

  • CES0000000001: Total nonfarm employment (thousands)

  • LNS14000000: Unemployment rate

  • CUUR0000SA0: CPI-U All Items

  • CES0500000003: Average hourly earnings, total private

  • JTS000000000000000JOR: Job openings rate (JOLTS)

  • PRS85006092: Nonfarm business labor productivity

Series ID prefixes: CES (jobs by industry), LNS (unemployment), CU (CPI), WP (PPI), OE (wages), JT (JOLTS)

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoEnd year (default: current year)
series_idsYesComma-separated BLS series IDs (max 50). Example: 'CES0000000001,LNS14000000,CUUR0000SA0'
start_yearNoStart year (default: 3 years ago). Max 20 year range with API key, 10 without.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scope context (data categories and frequencies) but does not disclose behavioral traits like rate limits, API key advantages, or response shape. No contradiction with annotations.

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

Conciseness4/5

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

The description is front-loaded with a clear purpose sentence, followed by scannable bullets of example IDs and prefixes. It is longer than strictly necessary, but every bullet earns its place by aiding series ID selection, and the structure is easy to parse.

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

Completeness3/5

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

With no output schema, the description partially covers return expectations ('monthly/quarterly/annual observations') but not the response structure (e.g., year/period/value fields). It also does not point to bls_search_series for unknown IDs, and the 10/20-year range limitation lives only in the schema, not the description. These gaps keep it from being fully complete.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds real value by mapping series ID prefixes (CES, LNS, CU, WP, OE, JT) to data categories and providing six concrete example IDs, which helps an agent construct valid series_ids beyond the schema's generic 'comma-separated BLS series IDs'.

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 ('Fetch') with a clear resource ('time series data from the Bureau of Labor Statistics') and states the return content (monthly/quarterly/annual observations for employment, wages, prices, and more). It is distinct from generic list tools but does not explicitly name sibling tools like bls_search_series or bls_cpi_breakdown, so it falls short of a 5.

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

Usage Guidelines3/5

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

The popular series IDs and prefix table imply this tool is for fetching known BLS series by ID, which is useful context. However, there is no explicit when-to-use vs. alternative guidance—no mention that bls_search_series should be used to discover IDs, or that bls_cpi_breakdown covers subcomponent breakdowns. Clear context but no exclusions.

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

bts_border_crossingsA
Read-onlyIdempotent

Get border crossing data at U.S. ports of entry: trucks, personal vehicles, pedestrians, train passengers, containers. Covers U.S.-Mexico and U.S.-Canada borders. Monthly data by port, state, and measure type.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
stateNoState full name: 'Texas', 'California', 'New York'
borderNoBorder
measureNoMeasure type: 'Trucks' (Commercial trucks), 'Personal Vehicles' (Personal vehicles (cars)), 'Pedestrians' (Foot traffic), 'Train Passengers' (Rail passengers), 'Rail Containers Loaded' (Rail freight containers (loaded)), 'Rail Containers Empty' (Rail freight containers (empty)), 'Buses' (Bus crossings)
port_nameNoPort of entry name: 'El Paso', 'San Ysidro', 'Detroit'

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description does not need to restate safety. It adds scope facts ('monthly data by port, state, measure type') but nothing about response format, pagination, rate limits, or other behavioral traits.

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 tight sentences immediately state the primary resource and key coverages with no filler. The most identifying information is front-loaded, so an agent can quickly understand the tool and its scope.

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?

All five parameters are optional and fully described in the schema; the description gives the data scope and expected dimensions. Although there is no output schema or explicit mention of defaults/date range, the intersection of description and schema is sufficient to call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description reinforces that filtering is by port, state, and measure, but it does not materially enrich the individual parameter meanings beyond what the schema provides.

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

Purpose5/5

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

The description names a specific resource ('border crossing data at U.S. ports of entry'), lists relevant crossing types, and identifies geographic coverage. This clearly distinguishes it from the broader BTS transport-statistics sibling and other datasets.

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 when-to-use or when-not-to-use guidance is provided, and no alternative sibling tool is mentioned. The description only states what the tool covers, leaving an agent to infer when to choose it over nearby tools like bts_transport_stats.

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

bts_transport_statsB
Read-onlyIdempotent

Get Monthly Transportation Statistics — 50+ national indicators including: • Airline passenger traffic and on-time performance % • Transit ridership, highway vehicle miles • Rail freight, Amtrak ridership and on-time % • Truck tonnage, fuel prices, vehicle sales • Transportation Services Index (freight, passenger, combined) • Border crossing summaries (trucks, persons) • Safety fatalities (air, rail) Monthly data going back to 1947 for some series.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMonths of data (default 24 = 2 years)
end_dateNoEnd date: '2024-12-31'
start_dateNoStart date: '2020-01-01'

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds historical depth (data back to 1947) and lists data categories, providing useful context. However, it does not describe response structure, pagination, or any specific behavior beyond what annotations already imply, so it adds moderate but not rich transparency.

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 well-structured with a clear opening statement and a bulleted list of indicator categories. It is slightly long but appropriate given the breadth of data covered. The purpose is front-loaded, and there is no 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 tool with no output schema and only three simple parameters, the description gives a good sense of data content but lacks explicit return format or clarification on whether all indicators are returned together. The absence of an indicator selection parameter is a potential gap that could confuse an agent about how to request specific series. Given the simple parameters, this is a moderate gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (limit, start_date, end_date) are well-documented in the schema itself. The description adds no additional parameter semantics, so it does not go beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states it retrieves monthly transportation statistics and enumerates specific indicator categories (airline, transit, rail, truck, etc.), giving a precise sense of the resource. It distinguishes itself from other domain tools by its focus on transportation, though it does not explicitly differentiate from the sibling bts_border_crossings, which is a subset of this 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?

The description provides no guidance on when to use this tool versus alternatives like bts_border_crossings or other statistical tools. It lacks any mention of exclusions, conditions, or selection criteria, leaving the agent to infer usage based solely on the title and content.

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

calc_contract_ratesB
Read-onlyIdempotent

Get all ceiling rates for a specific GSA MAS contract by its contract number (IDV PIID). Shows all labor categories and rates awarded under that contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoMax results (default 100)
contract_numberYesGSA contract number (IDV PIID) - e.g. 'GS10F0303V', 'GS35F0581X'

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered and the description is not obligated to restate it. The description adds value by disclosing full-result semantics ('all' ceiling rates and 'all' labor categories, not aggregated or filtered). However, it fails to disclose pagination behavior despite a page_size parameter defaulting to 100, which creates ambiguity around how 'all' results are delivered.

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

Conciseness4/5

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

Two sentences totaling roughly 30 words, with the primary action front-loaded in the first sentence. There is minor redundancy ('Get all ceiling rates...' vs. 'Shows all labor categories and rates...' both convey the return content), which prevents a perfect score, but the text is otherwise tight and free of filler.

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 low-complexity tool with one required parameter and annotations carrying the safety burden, the description covers the essentials of what the tool returns and the key input. However, with no output schema, the description is the only source of return-structure information, and it gives only a vague sense of the result format; it also leaves the interaction between 'all ceiling rates' and the default page_size of 100 unexplained, which an agent needs to call it correctly at scale.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented with examples ('GS10F0303V', 'GS35F0581X') and defaults. The description echoes the contract number concept but adds no meaning beyond the schema — page_size is not mentioned at all. Baseline 3 applies because the schema does the heavy lifting.

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

Purpose4/5

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

The description names a specific verb ('Get'), resource ('all ceiling rates for a specific GSA MAS contract'), and lookup key ('contract number (IDV PIID)'), making the purpose unambiguous and far beyond a tautology. It also clarifies what is shown ('all labor categories and rates awarded under that contract'). However, it does not differentiate itself from the closely related siblings calc_search_rates and calc_suggest, so it stops short of 5.

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

Usage Guidelines3/5

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

The phrase 'for a specific GSA MAS contract by its contract number' implies the tool is appropriate when the caller already knows the IDV PIID, which is useful contextual guidance. Yet there is no explicit mention of when not to use it, nor any pointer to alternatives like calc_search_rates when a contract number is unknown. The usage guidance is implied rather than stated, which leaves sibling routing to inference.

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

calc_search_ratesA
Read-onlyIdempotent

Search GSA CALC+ ceiling rates for federal labor categories. Find awarded hourly rates on GSA MAS professional services contracts. Search by keyword (wildcard across labor category, vendor, contract), exact field match, or browse with filters. Useful for market research, IGCEs, and competitive pricing. Data refreshed daily.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinNoGSA SIN (Special Item Number) - e.g. '541330ENG', '541620'
pageNoPage number (default 1)
sortNoSort direction (default: asc)
searchNoExact field match as 'field:value' - e.g. 'labor_category:Engineer II', 'vendor_name:Deloitte', 'idv_piid:GS10F0303V'
keywordNoWildcard keyword search across labor category, vendor name, and contract number (2 char min) - e.g. 'software engineer', 'Booz', 'GS10F'
categoryNoService category - e.g. 'Professional Services', 'Facilities'
orderingNoSort field: 'labor_category', 'current_price', 'education_level', 'keywords', 'certifications', 'min_years_experience', 'vendor_name', 'schedule'. Default: current_price
worksiteNoWorksite: 'Contractor', 'Customer', 'Both'
page_sizeNoResults per page (default 20)
price_rangeNoHourly rate range as 'min,max' dollars - e.g. '50,150'
subcategoryNoService subcategory - e.g. 'IT Services', 'Engineering'
business_sizeNoBusiness size: 'S' (Small Business), 'O' (Other than Small Business)
education_levelNoEducation filter: 'HS', 'AA', 'BA', 'MA', 'PHD'. Use pipe for multiple: 'BA|MA'
experience_rangeNoExperience range as 'min,max' years - e.g. '3,10' or '5,20'
security_clearanceNoSecurity clearance required: 'yes' or 'no'
min_years_experienceNoExact minimum years - e.g. '5'

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds that data is refreshed daily and explains the three search modes (keyword wildcard, exact field match, filters), which are behavioral details beyond the annotations. No contradiction.

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

Conciseness5/5

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

Five concise sentences, each with a distinct purpose: purpose, resource, search modes, use cases, data freshness. No fluff and front-loaded with the core action.

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

Completeness5/5

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

For a 16-parameter search tool with no output schema, the description provides a complete mental model: what data is searched, how to search it (three modes), why it's useful, and data freshness. The schema handles parameter details, so the description only adds necessary context.

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

Parameters4/5

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

Schema covers 100% of parameters with descriptions. The description adds high-level semantics: keyword is wildcard across labor category, vendor, contract; search is exact field match; other params serve as filters. This goes beyond the schema's individual field 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?

States a specific verb ('Search') and resource ('GSA CALC+ ceiling rates for federal labor categories'), and clarifies it finds awarded hourly rates on GSA MAS professional services contracts. This distinguishes it from sibling calc_contract_rates by focusing on ceiling rates specifically.

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 useful for market research, IGCEs, and competitive pricing, giving clear context for when to use. Does not name alternatives or exclusions, so not a full 5.

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

calc_suggestA
Read-onlyIdempotent

Autocomplete/suggest values for labor categories, vendor names, or contract numbers in GSA CALC+ data. Useful for finding exact values to use in calc_search_rates. Uses 'contains' matching (2 char min).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesField to suggest values for
prefixYesSearch prefix (2 character minimum) - e.g. 'soft' for software categories, 'Booz' for Booz Allen

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavior beyond those: 'Uses contains matching (2 char min)', which informs the agent of substring matching and the minimum prefix length. This is useful contextual behavior not captured in annotations.

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

Conciseness5/5

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

Three short sentences with no fluff. The primary purpose is front-loaded, followed by the use case, then the matching behavior. Every sentence earns its place.

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

Completeness5/5

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

Given the simple two-parameter schema, rich annotations, and no output schema, the description covers purpose, usage context, and matching behavior. Nothing an agent needs to correctly call calc_suggest appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the enum fields ('labor categories, vendor names, or contract numbers') but does not add parameter-specific meaning beyond the schema. The 'contains matching' detail is a behavioral trait more than a parameter clarification, so no bump 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 uses a specific verb 'Autocomplete/suggest' with a clear resource ('values for labor categories, vendor names, or contract numbers in GSA CALC+ data'). It also names the downstream consumer calc_search_rates, distinguishing it from siblings like calc_contract_rates without needing to open schemas.

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

Usage Guidelines4/5

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

It explicitly says this is useful for 'finding exact values to use in calc_search_rates', which tells the agent when to invoke it. However, it does not explicitly state when not to use it or name alternatives beyond the implicit calc_search_rates relationship, so a 4 rather than 5.

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

cdc_birth_indicatorsA
Read-onlyIdempotent

Get quarterly provisional birth indicators: fertility rates, teen birth rates, \npreterm birth rates, cesarean delivery rates, low birthweight — by race/ethnicity.\nTopics: 'General Fertility', 'Teen Birth', 'Preterm', 'Cesarean', 'Low Birthweight', 'NICU', 'Medicaid'

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records (default 200)
topicNo'General Fertility', 'Teen Birth', 'Preterm', 'Cesarean', 'Low Birthweight', 'NICU', 'Medicaid'
race_ethnicityNo'All races and origins', 'Hispanic', 'Non-Hispanic Black', 'Non-Hispanic White', 'Non-Hispanic Asian'

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior, so the safety profile is established. The description adds useful context with 'quarterly provisional' and grouping by race/ethnicity, but it does not disclose how omitted parameters behave or what data window is returned. There is no contradiction with the annotations.

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

Conciseness4/5

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

The description is compact and front-loads the core action and resource before enumerating topics. The first sentence lists several indicators and the second repeats overlapping topic labels, which is a minor redundancy, but the overall structure has 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?

For a read-only query tool with three optional parameters and no output schema, the description plus schema covers the essentials: the resource, topic choices, and race/ethnicity filtering. It does not describe default behavior when all parameters are omitted or the response shape, but that is a minor gap given the simple schema and openWorldHint.

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

Parameters3/5

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

The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description mostly repeats the topic list and names race/ethnicity as a grouping dimension without adding accepted-value details or interaction rules beyond what the schema provides.

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

Purpose5/5

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

The opening phrase 'Get quarterly provisional birth indicators' states a concrete verb and resource, and the indicator list (fertility, teen birth, preterm, cesarean, low birthweight) makes the tool's scope immediately clear. It is easy to distinguish from CDC mortality/life-expectancy siblings because the topic is specifically birth-related. The enumerated topic values further remove ambiguity.

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

Usage Guidelines3/5

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

The description implies use for birth and fertility indicators, but it provides no when-to-use or when-not-to-use guidance and does not reference alternatives such as cdc_life_expectancy or cdc_mortality_rates. An agent must infer the appropriate context from the name and topic list rather than being explicitly directed.

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

cdc_causes_of_deathB
Read-onlyIdempotent

Get leading causes of death in the U.S. by state and year. Data from 1999–2017. Causes include heart disease, cancer, kidney disease, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (1999–2017). Omit for all years
limitNoMax records (default 200)
stateNoFull state name: 'New York', 'California', 'Texas'. Omit for all states

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the data span (1999–2017) and sample causes, but it does not disclose behavioral details like whether causes are ranked, how many causes appear per state/year, or the output record shape. This is moderate value beyond annotations, hence a 3.

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 compact sentences with the purpose front-loaded and no filler. The first sentence states exactly what the tool does; the second adds the time range and representative examples. Every sentence earns its place.

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

Completeness4/5

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

For a simple, read-only filtered query tool with fully documented parameters and strong safety annotations, the description covers the data source, time range, and example content well enough for an agent to make an informed first call. The main gap is the lack of a stated output shape or ranking semantics, but this is not critical given the tool's simplicity and optional filters.

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

Parameters3/5

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

Schema description coverage is 100%: each parameter (year, limit, state) has a meaningful description, including value ranges, defaults, and guidance to omit for all states/years. The tool description does not add parameter semantics beyond restating the 'by state and year' dimensions, so with high schema coverage the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('leading causes of death in the U.S. by state and year'), giving a clear sense of the tool's function. It is distinct from many sibling tools, but it does not explicitly contrast itself with closely related CDC tools like cdc_mortality_rates or cdc_death_rates_historical, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description gives data range and examples of causes, but no exclusions, prerequisites, or routing advice such as 'use cdc_mortality_rates for rates per 100,000' or 'use cdc_causes_of_death for ranked cause lists.'

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

cdc_covidA
Read-onlyIdempotent

Get COVID-19 weekly case and death counts by state (data through early 2023). States use two-letter abbreviations: 'NY', 'CA', 'TX'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records (default 200)
stateNoTwo-letter state abbreviation: 'NY', 'CA', 'TX'

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent already knows this is a safe, non-mutating operation. The description adds a temporal constraint (data through early 2023) and clarifies the state format, which supplements the annotations with useful behavioral context without contradicting them.

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

Conciseness5/5

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

The description is two short sentences, front-loading the core purpose and then providing a key usage detail (state abbreviations). No filler or redundant information; every sentence serves a purpose. It is efficient and to the point.

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 read-only tool with clear schema coverage and no output schema, the description covers the main dataset, time frame, and parameter format. It does not mention pagination or optional output details, but given the simplicity and annotations, the description is sufficient for correct invocation. Missing details like default behavior of limit are minor.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (state and limit) are already described in the schema. The description reinforces the state format but does not add new meaning beyond the schema. The limit parameter is fully self-explanatory in the schema. High schema coverage means the description need not duplicate explanations, baseline 3 is warranted.

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 COVID-19 weekly case and death counts by state, with a specific time frame (data through early 2023). It uses a specific verb ('Get') and resource ('COVID-19 weekly case and death counts'), and is distinct from siblings like cdc_causes_of_death or cdc_weekly_deaths by specifying the data type and granularity.

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

Usage Guidelines3/5

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

The description implies usage for COVID-19 data retrieval but does not explicitly state when to use it versus other CDC tools (e.g., cdc_weekly_deaths or cdc_causes_of_death). It provides no conditions for selection or alternatives, leaving the agent to infer based on the data focus.

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

cdc_death_rates_historicalA
Read-onlyIdempotent

Get age-adjusted death rates for major causes since 1900.\nCauses: 'Heart Disease', 'Cancer', 'Stroke', 'Unintentional injuries', 'CLRD' (chronic lower respiratory diseases).\nGreat for long-term trend analysis — 120+ years of data.

ParametersJSON Schema
NameRequiredDescriptionDefault
causeNoCause of death. Omit for all causes.
limitNoMax records (default 200)
end_yearNoEnd year (latest: ~2017)
start_yearNoStart year (earliest: 1900)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context about age adjustment and the 120+ year range, but does not mention pagination, rate limits, or other runtime behavior. That is acceptable given the low annotation burden.

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 compact lines: the operation, the allowed causes, and a use-case framing. The '120+ years' phrase slightly repeats 'since 1900,' but it reinforces the long-term trend purpose, so no sentence is wasted.

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 query tool with zero required parameters, full schema coverage, and strong safety annotations, the description provides enough context about data scope and intended use. It does not describe the shape of response rows, but the tool is simple enough that this is not a critical gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description's cause list duplicates the enum and adds no new parameter semantics beyond what is already in the schema. Baseline 3 is appropriate here.

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 opens with a specific verb and resource: 'Get age-adjusted death rates for major causes since 1900.' It also lists the exact cause values, making the tool's scope immediately clear. It does not explicitly differentiate from sibling tools like cdc_mortality_rates, but the historical framing is strong enough to avoid major confusion.

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 phrase 'Great for long-term trend analysis — 120+ years of data' gives a concrete use case and implies the tool is best suited for historical spans. It does not name alternatives or exclusions, so it stops short of a 5, but the intended context is clear.

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

cdc_disabilityB
Read-onlyIdempotent

Get disability prevalence by state and type from BRFSS survey. Types: 'Any Disability', 'Mobility Disability', 'Cognitive Disability', 'Hearing Disability', 'Vision Disability', 'Self-care Disability', 'Independent Living Disability', 'No Disability'

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records (default 200)
stateNoTwo-letter state code: 'NY', 'CA'. Omit for all.
disability_typeNo'Any Disability', 'Mobility Disability', 'Cognitive Disability', 'Hearing Disability', 'Vision Disability', 'Self-care Disability', 'Independent Living Disability'

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the data source (BRFSS survey), which is useful. However, it does not describe pagination, default behavior when parameters are omitted, or output format. With annotations covering safety, a 3 is appropriate.

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

Conciseness4/5

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

The description is two sentences, front-loaded with the core purpose, then the list of types. It's efficient with no fluff. It could be slightly improved by integrating the type list more naturally, but overall it is well-structured.

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

Completeness3/5

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

For a simple retrieval tool with annotations covering safety, the description is mostly complete. It covers the data source and types. Missing are usage guidelines (when to use vs. other CDC tools) and any note about default behavior when state is omitted (though that's in the schema). It doesn't explain return values, but no output schema exists. Slightly incomplete for agent decision-making.

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

Parameters3/5

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

Schema coverage is 100% (all parameters have descriptions). The description lists disability types, but this duplicates the schema's description for disability_type. The description does not add extra meaning beyond the schema, so a baseline 3 is warranted.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get disability prevalence by state and type from BRFSS survey.' It specifies the resource (BRFSS) and the data returned (prevalence). The tool name and description distinguish it from other CDC tools, though it doesn't explicitly call out alternatives, so it loses one point.

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?

There is no guidance on when to use this tool vs. other CDC data tools (e.g., cdc_causes_of_death, cdc_places_health). The description does not mention conditions, exclusions, or alternative tools. Context signals show many sibling tools, so this absence is a notable gap.

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

cdc_drug_overdoseA
Read-onlyIdempotent

Get drug poisoning/overdose mortality by state (1999–2016).\nIncludes death rates by state, sex, race, and age group. Critical for opioid crisis analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNoSex filter
yearNoYear (1999–2016)
limitNoMax records (default 200)
stateNoFull state name: 'West Virginia', 'Ohio', 'New Hampshire'. Omit for all.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds useful behavioral context beyond annotations: it specifies the data includes death rates by state, sex, race, and age groupaine and the time range. It does not disclose pagination or output format, but given the annotations cover mutation risks, this is a reasonable 3.

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

Conciseness5/5

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

The description is two sentences with no filler. The first sentence front-loads the verb, resource, and time range; the second adds contextual value (breakdowns and use case). Everything earns its place, making it highly efficient.

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

Completeness4/5

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

For a read-only, no-required-parameter list tool with rich annotations and a fully documented schema, the description is nearly complete. It covers the core purpose, data scope (year range, breakdowns), and a key use case. It does not detail output format or caveats like data completeness by state, but with no output schema required and annotations covering safety, this is not a significant gap. A 4 is fitting.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (sex, year, limit, state) is documented in the schema. The description adds no new parameter-level meanings, but it does mention 'state, sex, race, and age group' as result dimensions, which indirectly helps interpret the 'state' and 'sex' parameters. Baseline 3 is appropriate because the schema carries the full burden.

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 'get[s] drug poisoning/overdose mortality by state (1999–2016)' with a specific verb, resource, and time range. It explicitly distinguishes itself from other CDC mortality tools (e.g., cdc_mortality_rates, cdc_causes_of_death) by naming drug overdose as the focus, and the additional breakdowns (sex, race, age group) further clarify the scope.

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

Usage Guidelines4/5

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

The description provides context for when the tool is relevant ('Critical for opioid crisis analysis'), which implies a use case. However, it does not explicitly state when to use this tool over alternatives like cdc_causes_of_death or cdc_mortality_rates, nor does it mention any exclusions. This is 'clear context, no exclusions,' earning a 4.

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

cdc_life_expectancyA
Read-onlyIdempotent

Get U.S. life expectancy at birth by race and sex (1900–2018). Races: 'All Races', 'Black', 'White'. Sex: 'Both Sexes', 'Male', 'Female'. Note: Data goes through 2018. For more recent mortality trends, use cdc_mortality_rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNoSex filter
raceNoRace filter
yearNoYear (1900–2018)
limitNoMax records (default 200)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the temporal limitation (data goes through 2018) which is not in annotations and is critical for correct usage. It also points to an alternative for more recent data. It doesn't describe return format, but for a read-only data retrieval tool with no output schema, that is a minor gap.

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, with the core purpose in the first sentence, valid values in the second, and a usage note in the third. It is front-loaded and contains no filler. Every sentence adds value, and the key scoping constraint (date range) is stated early.

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 no output schema, the description implies the result (life expectancy values) but doesn't specify structure. However, the tool is simple and the parameters are well-documented. Annotations cover safety and idempotency. The only missing piece is a note about pagination or response format, but the 'limit' parameter hints at pagination. Overall, sufficient for an agent to call correctly without extra context.

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

Parameters3/5

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

Schema description coverage is 100% – all four parameters have descriptions. The description repeats the enum values for sex and race, but that adds no new meaning beyond the schema. The year range is already in the schema description. The 'limit' parameter is covered by schema. No additional semantic insight is provided beyond what the schema already offers, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get') with a clear resource ('U.S. life expectancy at birth') and scope (by race and sex, 1900–2018). It also lists the exact allowed values for race and sex, which differentiates it from other CDC tools. The final sentence explicitly names the sibling cdc_mortality_rates as the alternative for more recent data, distinguishing it.

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 clearly indicates when to use this tool: when the user needs life expectancy data within the 1900–2018 range. It also explicitly says 'For more recent mortality trends, use cdc_mortality_rates,' giving an alternative and the condition to choose it. This is direct and actionable.

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

cdc_mortality_ratesA
Read-onlyIdempotent

Get provisional age-adjusted death rates by cause, sex, and state (quarterly, 2020–present). Causes: 'All causes', 'Heart disease', 'Cancer', 'COVID-19', 'Drug overdose', 'Suicide', etc. Returns rate_overall, rate_sex_female, rate_sex_male, and per-state rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
causeNo'All causes', 'Heart disease', 'Cancer', 'COVID-19', 'Drug overdose', 'Suicide', 'Diabetes', 'Alzheimer disease'
limitNoMax records (default 200)
quarterNoQuarter: '2024 Q4', '2025 Q1'. Omit for all.
rate_typeNoRate type (default: Age-adjusted)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds useful behavioral context by stating the return fields (rate_overall, rate_sex_female, etc.) and the 'provisional' nature of the data, but does not mention pagination behavior or rate limits. It adds value beyond annotations.

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

Conciseness5/5

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

The description is two sentences: the first states the core function with a front-loaded verb and resource, the second lists causes and return fields. No wasted words, well structured.

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

Completeness4/5

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

The description covers the main return structure and data scope, which is sufficient given the absence of an output schema. It doesn't explain pagination or default behavior when parameters are omitted, but these are minor gaps. The read-only, idempotent nature is already annotated, so the description is fairly complete for an agent to call correctly.

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

Parameters3/5

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

The input schema already provides full descriptions for all 4 parameters (cause, limit, quarter, rate_type) with examples and defaults. The description adds no additional parameter-specific information, so it relies on the schema. With 100% schema coverage, the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool retrieves provisional age-adjusted death rates filtered by cause, sex, and state, with a specific time range (quarterly, 2020–present). This distinguishes it from siblings like cdc_death_rates_historical (historical) and cdc_weekly_deaths (weekly).

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 context (quarterly, provisional, 2020–present) but does not explicitly state when to use this tool over alternatives like cdc_death_rates_historical or cdc_query. No exclusions or alternative routing is given, so the agent must infer based on the data granularity.

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

cdc_nutrition_obesityA
Read-onlyIdempotent

Get adult obesity, physical inactivity, and fruit/vegetable consumption by state from BRFSS.\nTopics: 'Obesity', 'Physical Activity', 'Fruits and Vegetables'. Data by state, race, age, income, education.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records (default 200)
stateNoTwo-letter state code: 'NY', 'CA', 'TX'. Omit for all.
topicNo'Obesity', 'Physical Activity', 'Fruits and Vegetables'

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, so the description does not need to repeat safety traits. It adds useful context about the data scope (adult obesity, physical inactivity, fruit/vegetable consumption) and the breakdowns available. However, it does not mention any behavioral nuances such as pagination, default limits, or how the returned data is structured.

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 with no fluff. The first sentence states the core purpose, and the second lists the topic values and breakdown dimensions. It is well front-loaded and every word earns its place.

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

Completeness4/5

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

For a simple query tool with three parameters and no output schema, the description, combined with the schema and annotations, covers the essentials: what data it returns, the allowed topics, and the optional state filter (via schema). It does not provide an example or clarify output shape, but given the simplicity and the presence of the schema, it is nearly complete. A small gap is the lack of any note about the 'limit' parameter's effect, but that is covered in the schema.

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

Parameters3/5

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

The schema description coverage is 100% (all three parameters have descriptions). The description adds no new meaning beyond the schema: the topic values ('Obesity', 'Physical Activity', 'Fruits and Vegetables') are exactly repeated from the schema. According to the rubric, when coverage is high, a baseline of 3 is appropriate, and the description does not go 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 specific action ('Get') and the resource (BRFSS data) with the three health metrics. It also lists the breakdown dimensions (state, race, age, income, education) and the topic values, making it distinct from sibling CDC tools like cdc_mortality_rates or cdc_places_health, which cover different indicators.

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. There are many sibling CDC health tools (e.g., cdc_places_health, cdc_life_expectancy), and the description does not mention any exclusions, prerequisites, or comparisons. The topics and dimensions imply usage context, but there is no explicit 'when to use' or 'when not to use'.

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

cdc_places_cityA
Read-onlyIdempotent

Get city-level health indicators from CDC PLACES — obesity, diabetes, smoking, depression, sleep, blood pressure, mental health, and 30+ more measures for every U.S. city with population > 50,000. Each row contains ALL measures for a city as separate columns (e.g. obesity_crudeprev, diabetes_crudeprev).

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name (partial match): 'Los Angeles', 'Chicago'
limitNoMax records (default 200)
stateNoTwo-letter state code: 'NY', 'CA', 'TX'

TDQS

A3.7/5.0
Behavior3/5

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

Annotations include 'readOnlyHint: true' and 'destructiveHint: false', so the safety profile is covered. The description goes beyond annotations by explaining the output structure: 'Each row contains ALL measures for a city as separate columns'. This is useful context that annotations don't provide. However, it does not mention pagination behavior, rate limits, or data update frequency, which might be useful. Without those, the score is moderate.

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. The first sentence is informative and front-loads the main purposeches. The second sentence adds a crucial detail about the data structure. There is minimal waste, though it could be slightly more structured with bullet points for the measures. Overall, it is efficient and readable.

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 read-only data retrieval tool with a simple interface (3 optional parameters). The description covers the main purpose, the data scope, and the output format. There is no output schema, so the description's explanation of the row structure is important and provided. The tool is not overly complex, so the description is adequate. Could benefit from noting the default limit behavior (default 200) which is in the schema anyway.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters (city, limit, state) are documented in the schema. The description does not add substantial information about parameters beyond what the schema already states. For example, the description does not explain how to use 'state' with 'city' (e.g., whether state is needed for disambiguation). It mentions examples of city names in the schema, but the description does not enhance this. Since coverage is high, baseline is 3.

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

Purpose5/5

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

The description clearly states a specific verb ('Get'), a specific resource ('city-level health indicators from CDC PLACES'), and the scope (all U.S. cities with population > 50,000). It lists examples of the measures included (obesity, diabetes, etc.). While there is a sibling 'cdc_places_health' which might be related, the description's specification of 'city-level' distinguishes it from the broader 'health' tool. The description is clear enough for an agent to understand what this tool does.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives.can be inferred that this tool is for city-level data, while sibling 'cdc_places_health' might cover other geographies, but no explicit comparison is made. It says 'every U.S. city' but does not mention when not to use it or suggest alternatives. The usage context is implied but not explicitly stated.

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

cdc_places_healthA
Read-onlyIdempotent

Get county-level health indicators from CDC PLACES (BRFSS-based estimates). Measures: OBESITY, DIABETES, CSMOKING (smoking), BINGE (binge drinking), BPHIGH (high BP), DEPRESSION, SLEEP (short sleep), CHD (heart disease), COPD, CANCER, STROKE, ARTHRITIS, CASTHMA (asthma), MHLTH (mental distress), PHLTH (physical distress), LPA (physical inactivity), ACCESS2 (no health insurance), DENTAL, CHECKUP, KIDNEY, HIGHCHOL, TEETHLOST, FOODINSECU (food insecurity), LONELINESS, HOUSINSECU (housing insecurity) Returns crude prevalence (%) by county.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records (default 200)
stateNoTwo-letter state code: 'NY', 'CA', 'TX'. Omit for all.
measureNoMeasure ID: 'OBESITY', 'DIABETES', 'CSMOKING', 'DEPRESSION', 'BINGE', 'SLEEP', 'BPHIGH', 'LPA', 'ACCESS2', 'FOODINSECU', 'LONELINESS', 'HOUSINSECU'

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, open-world, and non-destructive behaviorikuha. The description adds beyond annotations by stating 'Returns crude prevalence (%) by county' and identifying the data as BRFSS-based estimates. This gives the agent concrete output-format and source-quality context without contradicting the annotations.

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

Conciseness5/5

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

The description is front-loaded with the core action and scope, followed by a compact, exhaustive measure list and a single closing sentence about return format. The measure enumeration earns its length because it compensates for the incomplete schema enum; there is 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?

With no output schema, the description appropriately states the return type and unit ('crude prevalence (%) by county'). It fully enumerates available measures and implies filtering through the schema's state/measure parameters. Minor gaps like county identifier format and pagination behavior do not prevent correct selection and invocation.

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

Parameters4/5

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

Although schema description coverage is 100%, the description adds value by listing all 27 measure IDs, far more than the schema's truncated measure list. It also clarifies the output unit ('crude prevalence (%)') and the county-level domain. This materially enriches the sparse schema parameter descriptions.

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

Purpose5/5

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

The description opens with 'Get county-level health indicators from CDC PLACES', combining a specific verb, resource, and geographic scope. The county-level qualifier distinguishes it from sibling tools like cdc_places_city, and the long measure list makes the data domain unmistakable.

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

Usage Guidelines4/5

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

The description clearly frames this as a county-level CDC PLACES indicator tool, which implicitly tells an agent when to reach for it versus cdc_places_city or general CDC query tools. It does not name alternative tools or explicitly state exclusions, but the county-level scope is a strong contextual signal.

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

cdc_queryB
Read-onlyIdempotent

Custom query against any CDC dataset using SODA syntax. Datasets: bi63-dtpu (death 1999–2017), w9j2-ggv5 (life expectancy), 489q-934x (mortality rates), swc5-untb (PLACES county), dxpw-cm5u (PLACES city), pwn4-m3yp (COVID), r8kw-7aab (weekly deaths), s2qv-b27b (disability), xbxb-epbu (drug overdose), hn4x-zwk7 (nutrition/obesity), 6rkc-nb2q (historical death rates), 76vv-a7x8 (birth indicators)

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoSODA $group: 'year'
limitNoMax rows (default 1000)
orderNoSODA $order: 'year DESC'
whereNoSODA $where clause: "year = '2021' AND state = 'New York'"
selectNoSODA $select: 'year, state, deaths'
dataset_idYesDataset ID, e.g. 'bi63-dtpu'

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat that. It adds the list of dataset IDs and their context (e.g., death 1999–2017), which is useful. However, it does not disclose behavior like return format, pagination, or that this is an ad-hoc query tool meant for cases where dedicated tools don't fit.

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: one opening sentence and a list of datasets. The purpose is front-loaded, and the dataset list is dense but necessary. It avoids unnecessary 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?

The description tells the agent which datasets are available and that SODA syntax is used, which is sufficient for a generic query tool. However, it omits guidance about the existence of dedicated tools for the same datasets and does not explain when custom queries are needed. Given the lack of an output schema and the availability of dedicated siblings, this is a moderate gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the schema with examples. The description adds no parameter-specific meaning beyond what the schema provides, so it meets the baseline for full schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose: a custom query against any CDC dataset using SODA syntax. It lists specific dataset IDs, which makes the resource concrete. It distinguishes itself from dedicated CDC tools (like cdc_life_expectancy) by being generic, though it does not explicitly name those siblings.

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 the dedicated CDC dataset tools (e.g., cdc_life_expectancy, cdc_mortality_rates). It does not mention alternatives or exclusions. An agent might incorrectly choose this generic tool when a specialized tool would be more appropriate.

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

cdc_weekly_deathsA
Read-onlyIdempotent

Get weekly provisional death counts by state — COVID-19, pneumonia, influenza, and total deaths. THIS IS THE MOST CURRENT CDC MORTALITY DATA — updated weekly, covers 2020–present. Includes percent_of_expected_deaths to detect excess mortality.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (2020–present). Omit for all.
limitNoMax records (default 200)
stateNoFull state name: 'New York', 'California'. Omit for all.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds behavioral context by noting the data is 'provisional' and 'updated weekly,' which implies data may be revised. It also discloses the availability of percent_of_expected_deaths for excess mortality detection, going beyond annotation basics.

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) and front-loads the core action. The all-caps emphasis on data currency is attention-grabbing but not wasteful. Every sentence adds value, and there is no fluff.

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

Completeness4/5

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

The tool has no output schema, so the description partially compensates by mentioning the percent_of_expected_deaths field. It clearly indicates the scope (weekly, by state, specific causes) and data coverage. However, it does not explicitly describe the full output structure (e.g., fields like year, week, state), which might leave some ambiguity for the 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 coverage is 100%, so all parameters (year, limit, state) are fully documented in the schema. The description does not add any additional parameter-specific meaning; it only mentions a response field. Thus, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves weekly provisional death counts by state, specifically for COVID-19, pneumonia, influenza, and total deaths. It also mentions the key extra field percent_of_expected_deaths, making the purpose precise and unambiguous.

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

Usage Guidelines4/5

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

The description provides strong context by highlighting that this is the most current CDC mortality data, updated weekly and covering 2020–present. This helps the agent decide when to use this tool over others, 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.

census_populationA
Read-onlyIdempotent

Get population data for U.S. states using the American Community Survey. Quick shortcut — for more flexibility use census_query directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoACS year (default: 2023). Range: 2005-2023.
stateNoTwo-digit FIPS state code, e.g. '06' (CA), '48' (TX), '36' (NY). Omit or '*' for all.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the ACS data-source context and shortcut positioning, but does not disclose response shape, pagination, or any limitations beyond using the more flexible sibling.

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 short sentences deliver the core function, the data source, and the sibling routing with no filler. The main capability is front-loaded and every clause earns its place.

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

Completeness4/5

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

For a simple read-only, two-optional-parameter tool, the description plus schema and annotations are nearly sufficient. It only stops short of describing the response format, which is not supplied by an output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so both year and state are already documented with defaults, ranges, and FIPS examples. The description adds no parameter-specific detail beyond what the schema contains, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') with a concrete resource ('population data for U.S. states') and names the data source ('American Community Survey'). It also distinguishes itself from the more general sibling 'census_query', so an agent can tell when this convenience endpoint applies.

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 frames itself as a 'Quick shortcut' and explicitly routes users who need 'more flexibility' to 'census_query directly'. This gives an if/then choice between the simple tool and its flexible alternative.

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

census_queryA
Read-onlyIdempotent

Query the U.S. Census Bureau Data API. Supports ACS, Decennial Census, Population Estimates, Economic Census, and more. Returns data for specified variables and geography.

Common datasets: '2023/acs/acs1' (1yr), '2023/acs/acs5' (5yr), '2020/dec/pl' (Decennial), '2023/pep/population' Common variables: NAME, B01001_001E (population), B19013_001E (median income), B25077_001E (home value), B01002_001E (median age)

ParametersJSON Schema
NameRequiredDescriptionDefault
in_geoNoParent geography for nested queries. Example: 'state:06' to get counties in CA
datasetYesCensus dataset path, e.g. '2023/acs/acs1', '2023/acs/acs5', '2020/dec/pl'
for_geoYesGeography level and filter. Examples: 'state:*' (all states), 'state:06' (CA), 'county:*'
variablesYesComma-separated variable names. Always include NAME. Example: 'NAME,B01001_001E,B19013_001E'

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already convey readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns data for variables and geography, but it does not disclose response format, pagination, rate limits, or other runtime behaviors. With annotations doing most of the safety work, a 3 is appropriate.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, then adds examples that are directly useful for invoking the tool. The two 'Common...' lines are well-structured and each carries information, though the phrase 'and more' is a minor vagueness that prevents a 5.

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 read-only query tool with rich schema descriptions and no output schema, the description supplies enough context through dataset examples, variable meanings, and geographic examples. It could be more complete by mentioning response shape or how to discover additional variables, but nothing essential to making a first correct call is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by mapping common variable codes to human-readable meanings (e.g., B19013_001E = median income) and by providing realistic dataset paths. This goes beyond the schema's minimal examples, warranting a 4.

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?

States a specific verb and resource: 'Query the U.S. Census Bureau Data API.' It also clarifies the output ('Returns data for specified variables and geography') and lists supported datasets. It does not explicitly distinguish itself from siblings like census_population or census_search_variables, so it stops short of a 5.

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

Usage Guidelines3/5

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

The description implies usage context by listing common datasets and variable examples, so an agent can infer this is the general-purpose Census data query tool. However, it provides no explicit when-to-use vs. alternatives, and it does not mention sibling tools that might be more appropriate for variable discovery or population-specific lookups.

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

census_search_variablesA
Read-onlyIdempotent

Search for Census variable names/codes by keyword. Helps discover what data is available in a given dataset. Returns variable IDs you can use with census_query.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesCensus dataset path, e.g. '2023/acs/acs1'
keywordYesKeyword to search for, e.g. 'income', 'poverty', 'housing', 'education'
max_resultsNoMaximum results (default: 20)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the behavioral detail that it returns variable IDs for downstream use, but doesn't disclose output format, pagination, or error behavior. Given the strong annotation coverage, a 3 is appropriate.

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

Conciseness5/5

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

Two sentences with zero filler. The purpose is front-loaded, and the mention of census_query immediately signals the tool's role in the pipeline. Nothing extraneous.

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 three documented parameters and no output schema, the description is complete enough: it states the purpose, clarifies the return value (variable IDs), and points to the downstream tool. It could mention the max_results limit, but that's already in the schema, so the description is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents dataset, keyword, and max_results. The description adds no extra parameter semantics beyond what the schema already provides. Baseline 3 is appropriate when the schema handles all 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 'Search' and the resource 'Census variable names/codes', and explicitly distinguishes its purpose from census_query by noting it returns variable IDs for use with census_query. This makes it obvious this is a discovery tool, not a data retrieval tool, and differentiates it from census_population and census_query.

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 implicitly establishes the usage workflow: use this tool to discover variable IDs, then use census_query to fetch data. This gives clear context on when to call it. However, it doesn't explicitly say when not to use it or mention alternatives like census_population, so it stops short of full exclusions.

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

cfpb_complaint_aggregationsA
Read-onlyIdempotent

Get complaint counts grouped by a field (product, company, state, issue, etc.). Useful for ranking companies by complaint volume, identifying top issues, or comparing states. Aggregation fields: 'product', 'company', 'state', 'issue', 'company_response', 'timely', 'submitted_via', 'tags'.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesField to group by
issueNoFilter by issue type
stateNoFilter by state: 'CA', 'TX', 'NY'
companyNoFilter by company: 'Wells Fargo', 'Bank of America', etc.
productNoFilter by product: 'Mortgage', 'Debt collection', etc.
date_received_maxNoEnd date (YYYY-MM-DD)
date_received_minNoStart date (YYYY-MM-DD)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds the aggregation behavior — returning counts grouped by a field — but doesn't disclose response shape, group limits, or whether date filters apply to the aggregation. This is adequate but not rich.

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

Conciseness5/5

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

Two sentences, with the core behavior front-loaded in the first four words. Every sentence earns its place: the first states what it does, the second gives use cases and enumerates valid fields. No 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?

There is no output schema, so the description should help an agent predict the response shape, but it only says 'counts grouped by a field.' Missing details like sorting, limits, or exact result format are absent. It's adequate for a simple call, but an agent would be guessing at response structure.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters and the field enum. The description mostly repeats the enum values and gives example use cases, adding little semantic information beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb and resource: 'Get complaint counts grouped by a field,' and gives concrete examples of output (product, company, state, issue). It is distinct enough to understand, but it does not explicitly contrast itself with related siblings like cfpb_complaint_trends or cfpb_state_complaints, so it stops short of full differentiation.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'useful for ranking companies by complaint volume, identifying top issues, or comparing states.' This tells an agent when the tool is appropriate, though it doesn't mention when not to use it or point to a preferred alternative.

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

cfpb_complaint_detailA
Read-onlyIdempotent

Get full details for a specific complaint by its Complaint ID. Returns all fields: product, issue, company, narrative (if consented), response, dates, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
complaint_idYesCFPB Complaint ID number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only and idempotent behavior, and the description adds the useful caveat that narrative is returned 'if consented,' disclosing a possible conditional absence of data. This is meaningful behavioral context beyond the schema's parameter definition.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action and required identifier are front-loaded, and the second sentence economically lists the key return 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 the single-parameter schema, safe read-only annotations, and absence of an output schema, the description provides a reasonable inventory of returned fields and notes the condition on narrative. It is complete enough for an agent to understand the tool's purpose and result shape, though an explicit response format would make it stronger.

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

Parameters3/5

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

The input schema already provides 100% coverage with a clear description of the complaint_id parameter. The tool description repeats the concept ('by its Complaint ID') but does not add extra guidance about format, provenance, or how to obtain a valid ID, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get full details') and resource ('a specific complaint by its Complaint ID'). This clearly differentiates the tool from the sibling search, aggregation, and trend tools, which operate over sets of complaints rather than a single identified record.

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 makes the usage context clear: call this tool when you already have a Complaint ID and need the full record. It does not explicitly name alternatives or exclusions, but the 'specific complaint' framing implies that search tools should be used to find IDs.

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

cfpb_search_complaintsA
Read-onlyIdempotent

Search the CFPB consumer complaint database (13M+ records). Find complaints by company, product, state, issue, date, or keyword. Returns individual complaints with company responses. Company names auto-retry with fuzzy search if exact match fails (e.g. 'Wells Fargo' will find 'WELLS FARGO & COMPANY'). Products: 'Mortgage', 'Debt collection', 'Credit card or prepaid card', 'Checking or savings account', 'Student loan', 'Vehicle loan or lease', 'Credit reporting, credit repair services, or other personal consumer reports'.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoResults per page (default 10, max 100)
sortNoSort order
tagsNoTag filter
issueNoIssue type: 'Incorrect information on your report', 'Loan modification', etc.
stateNoTwo-letter state code: 'CA', 'TX', 'NY'
timelyNoWhether company responded timely
companyNoCompany name: 'Wells Fargo', 'Bank of America', 'Equifax', etc.
productNoFinancial product: 'Mortgage', 'Debt collection', 'Credit card or prepaid card', etc.
zip_codeNoFilter by ZIP code
search_termNoFree-text search across complaint narratives
has_narrativeNoOnly complaints with consumer narrative text (true/false)
submitted_viaNoSubmission channel
date_received_maxNoEnd date (YYYY-MM-DD): '2024-12-31'
date_received_minNoStart date (YYYY-MM-DD): '2020-01-01'

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral details beyond these: the fuzzy-search auto-retry for company names, and the explicit statement that it returns individual complaints with company responses. No contradictions with annotations. The description does not describe every edge case (e.g., pagination or rate limits), but for a read-only search tool this is acceptable.

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

Conciseness4/5

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

The description is composed of five sentences, with the primary purpose front-loaded. The product list is a long but necessary enumeration, and the fuzzy-search example is a concise, useful addition. There is no filler or repetition. Slightly long due to the product list, but justified.

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 14 optional parameters and no output schema, the description covers the essential context: what the tool does, what it returns, and how filters work. It does not explain the output structure in detail, but since there is no output schema, the description's statement about 'individual complaints with company responses' is adequate. The description also omits pagination/sort details, but those are well-documented in the schema. Overall, it is sufficiently complete 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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: it enumerates the full product list, explains the fuzzy-search behavior for the company parameter, and gives a concrete example ('Wells Fargo' matching 'WELLS FARGO & COMPANY'). These details help the agent use parameters correctly without needing to infer from the schema alone.

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 searches the CFPB consumer complaint database and lists the main filter dimensions (company, product, state, issue, date, keyword). It also specifies that it returns individual complaints with company responses, which is a clear and specific purpose. However, it does not explicitly differentiate from sibling tools like cfpb_complaint_trends or cfpb_state_complaints, relying on the name and general context.

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 its siblings. It does not mention alternatives like cfpb_complaint_trends, cfpb_complaint_aggregations, or cfpb_state_complaints, nor does it state what scenarios are better suited for those tools. The only implicit guidance is the mention of 'individual complaints' which hints at its scope, but no explicit 'use this for X, use that for Y' is given.

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

cfpb_state_complaintsA
Read-onlyIdempotent

Get complaint information broken down by state (geographic view). Returns complaint counts and data for each state. Useful for maps and state comparisons. Applies the same filters as search (product, company, date, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTag filter
issueNoFilter by issue type
companyNoFilter by company: 'Wells Fargo', etc.
productNoFilter by product: 'Mortgage', 'Debt collection', etc.
date_received_maxNoEnd date (YYYY-MM-DD)
date_received_minNoStart date (YYYY-MM-DD)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that it returns counts and data per state, which clarifies the output shape, but does not disclose details like pagination or aggregation specifics. This level of additional context is adequate given the annotation coverage.

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 with no filler. The primary purpose is front-loaded in the first sentence, and the second and third sentences provide needed context (output type and use cases). Every sentence earns its place.

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

Completeness4/5

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

Given the absence of an output schema, the description clearly states that it returns compliant counts and data per state, which is essential. It also mentions filter compatibility, covering the main usage context. It does not describe pagination or behavior with no matching data, but for a read-only aggregation tool with annotations covering safety, this is sufficient.

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

Parameters3/5

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

Schema coverage is 100% with each parameter having a description, so the schema already provides full parameter semantics. The description merely mentions the filters are the same as search, which is a helpful cross-reference but adds no new meaning beyond what the schema already conveys. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get'), an explicit resource ('complaint information broken down by state'), and a clear geographic aggregation. It distinguishes itself from siblings by emphasizing the state-level view, which is unique among CFPB tools like cfpb_complaint_trends (time trends) and cfpb_complaint_detail (individual complaints).

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 it ('Useful for maps and state comparisons') and mentions that it applies the same filters as search, implying compatibility with existing search parameters. It does not explicitly name alternative tools or state when not to use it, but the use-case guidance is sufficient.

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

cfpb_suggest_companyA
Read-onlyIdempotent

Autocomplete/suggest company names from the CFPB complaint database. Useful for finding the exact company name before searching complaints.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoMax suggestions (default 10)
textYesPartial company name to search: 'wells', 'bank of', 'equi'

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds the database context and the suggestion use case, but it does not disclose behavior such as return shape, ordering, or behavior on no matches—gaps that matter because there is no output 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?

Two short sentences, with the primary function first and the use case second. There is no redundancy with the title or annotations, and every sentence contributes either purpose or usage context.

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 two-parameter, read-only suggestion tool, the description is largely complete: it identifies the resource, the purpose, and the main use case. It could have specified what the suggestion response contains (e.g., just names vs. IDs), but 'suggest company names' and the schema's example values are sufficient for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters ('text' and 'size') are already documented with examples in the schema. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Autocomplete/suggest') and resource ('company names from the CFPB complaint database'), making the tool's function immediately identifiable. The phrase 'before searching complaints' distinguishes it from cfpb_search_complaints and other CFPB siblings without relying on the title or schema.

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 states a clear when-to-use: 'Useful for finding the exact company name before searching complaints,' which routes an agent to use this as a precondition/normalization step. It does not name an alternative tool or give explicit when-not-to-use conditions, 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.

clear_cacheA
DestructiveIdempotent

Clear cached API responses to force fresh data on next query. Specify a source name or omit to clear all.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoModule name to clear: bea, bls, bts, cdc, census, cfpb, clinical-trials, cms, college-scorecard, congress, doj-news, dol, eia, epa, epa-aqs, fbi, fda, fdic, fec, federal-register, fema, fred, govinfo, gsa-calc, hud, naep, nhtsa, nih, noaa, nrel, nws, open-payments, regulations, sec, senate-lobbying, treasury, usaspending, usda-fooddata, usda-nass, usgs, uspto, world-bank. Omit for all.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds the behavioral effect (forces fresh data on next query) and clarifies the scope of clearing (all or specific source), which complements the annotations without contradicting them.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the purpose and parameter behavior with zero fluff. Every word 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?

For a simple tool with one optional parameter, annotations covering destructiveness and idempotency, and a fully documented schema, the description provides enough context. It doesn't describe the return value, but no output schema exists and it's not essential for a cache-clearing operation.

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

Parameters3/5

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

Schema coverage is 100% – the parameter description already lists all valid source values and states that omitting clears all. The tool description adds no new meaning beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb (Clear) and resource (cached API responses) with a clear goal (force fresh data on next query). It is distinct from all sibling tools, which are data-fetching operations, making this unique and unambiguous.

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

Usage Guidelines4/5

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

The description explains when to use it (to force fresh data) and how to scope it (specify a source or omit for all). It does not explicitly discuss alternatives because none exist; the usage context is clear and actionable.

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

clinical_trials_by_locationA
Read-onlyIdempotent

Search for clinical trials near a geographic location. Uses the ClinicalTrials.gov geo-distance filter to find trials within a radius of a latitude/longitude point. Combine with condition or intervention filters to find specific trials nearby.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status (default: RECRUITING)
distanceNoSearch radius with unit: '50mi' (default), '100km'
latitudeYesLatitude of the search center: 38.9072 (Washington DC)
conditionNoFilter by condition: 'diabetes', 'breast cancer'
longitudeYesLongitude of the search center: -77.0369 (Washington DC)
page_sizeNoResults per page (default 10)
interventionNoFilter by intervention: 'pembrolizumab'

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds the behavioral detail that it uses the ClinicalTrials.gov geo-distance filter, which explains the underlying mechanism. However, it doesn't disclose potential limitations like maximum radius, behavior when no trials are found, or whether results are sorted by distance. The description doesn't contradict annotations.

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

Conciseness4/5

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

Three sentences with no wasted words. The core purpose is front-loaded in the first sentence, the mechanism in the second, and usage guidance in the third. It's appropriately sized for a tool with 7 parameters and clear scope.

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 read-only search tool with 100% schema coverage and no output schema, the description covers the essential context: what it does, how it works, and how to refine results. It could be more complete by noting the default radius (50mi) and that results are paginated, but these are already in the schema. The sibling list shows this is one of several clinical_trials tools, and the description does enough to differentiate it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters with examples and defaults. The description adds the conceptual context that latitude/longitude form a search center and that distance is a radius, but this is largely redundant with the schema's parameter descriptions. The description's mention of combining with condition/intervention filters does add some strategic value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool searches for clinical trials near a geographic location, using a specific geo-distance filter mechanism. It distinguishes itself from sibling tools like clinical_trials_search (which likely searches by text/condition) and clinical_trials_detail (which retrieves a specific trial). The verb 'search' plus the resource 'clinical trials' and the location-based scope make 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 explains the core use case (find trials near a location) and suggests combining with condition or intervention filters for more specific searches. It doesn't explicitly name sibling alternatives or state when NOT to use this tool, but the context signals and sibling list make the distinction fairly clear. The guidance to combine with other filters is useful but could be more explicit about when to choose this over clinical_trials_search.

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

clinical_trials_detailA
Read-onlyIdempotent

Get full details for a specific clinical trial by NCT ID. Returns protocol, eligibility, arms/interventions, design, locations, contacts, and oversight info. Use the fields param to request only specific sections (reduces response size).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPipe-separated fields to return: 'NCTId|BriefTitle|EligibilityModule'. Omit for full study.
nct_idYesClinicalTrials.gov NCT ID: 'NCT06000000'

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior, so the bar is lower. The description adds valuable behavioral context beyond the annotations: it states that omitting fields returns the full study and that using fields reduces response size, which tells the agent about the request/response trade-off. It does not repeat annotation facts, but it does disclose the filtering behavior.

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

Conciseness5/5

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

Three sentences with zero fluff. The first sentence states the purpose, the second lists what data is returned, and the third gives a practical optimization tip. The most important information is front-loaded and every sentence earns its place.

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

Completeness4/5

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

For a read-only detail tool with only two parameters and no output schema, the description gives a clear picture of what to expect: it names the data sections returned and explains the fields parameter's effect on response size. It does not describe error behavior or output structure, but those are less critical given the annotations and simple parameter set. Overall it is adequately complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%: both nct_id and fields have clear descriptions in the input schema. The description adds only a minor rationale for the fields parameter ('reduces response size'), which is helpful but doesn't materially expand on the schema's own documentation. Baseline 3 is appropriate because the schema carries the semantic load.

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 full details for a specific clinical trial by NCT ID.' It then enumerates the returned sections (protocol, eligibility, arms/interventions, design, locations, contacts, oversight), which makes the tool's scope clear and differentiates it from sibling search/stats tools. This is a precise, self-contained purpose statement.

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 full details when an NCT ID is already known ('by NCT ID'), and gives guidance on using the fields parameter to reduce response size. However, it never explicitly tells the agent when to choose this tool over siblings like clinical_trials_search or clinical_trials_stats, nor mentions any exclusions. Usage is implied rather than directly contrasted with alternatives.

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

clinical_trials_enumsA
Read-onlyIdempotent

List all valid enum values for ClinicalTrials.gov data fields. Returns every enum type (Status, Phase, StudyType, InterventionType, etc.) with all valid values. Use as a reference when building search filters or understanding field values.

ParametersJSON Schema
NameRequiredDescriptionDefault
enum_typeNoFilter to a specific enum type: 'Status', 'Phase', 'InterventionType'. Omit for all enums.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds that it returns every enum type with all valid values, which is helpful but mostly restates the core function. There's no mention of pagination or response format, but for a simple reference list this is a minor gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with the main action, and no redundant phrases. Every sentence adds value: what it does, what it returns, and when to use it.

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, read-only reference tool with one optional parameter fully described in the schemaending no output schema, the description is largely complete. The main missing piece is the exact return structure (e.g., whether it's a flat list or grouped by enum type), but the examples and use case make it clear enough for an agent to call correctly.

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

Parameters3/5

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

The schema description covers the only parameter (enum_type) at 100%, including the filter options and the behavior when omitted. The description itself adds no additional parameter detail beyond the general reference-to-field-values context. Since schema coverage is high, baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool lists all valid enum values for ClinicalTrials.gov data fields, using the specific verb 'List' with a specific resource. It also names example enum types (Status, Phase, StudyType, InterventionType) and states its purpose as a reference for building search filters. It doesn't explicitly differentiate from siblings like clinical_trials_field_values, but the core purpose is unambiguous.

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

Usage Guidelines4/5

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

The description provides a clear use case: 'Use as a reference when building search filters or understanding field values.' This tells an agent when to invoke this tool. However, it doesn't explicitly mention alternative tools or when not to use it, leaving some ambiguity relative to similarly-named siblings.

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

clinical_trials_field_sizesB
Read-onlyIdempotent

Get statistics on list/array field sizes in the ClinicalTrials.gov database. Shows min/max/top sizes for array fields like Condition, Intervention, Phase. Useful for understanding data distribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPipe-separated field names: 'Phase|Condition|InterventionName'. Omit for all.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it's a safe, non-destructive operation. The description adds that it shows min/max/top sizes, but the return format is unspecified (no output schema, no mention of JSON structure), and the default behavior when 'fields' is omitted is only vaguely implied (probably returns stats for all fields). It doesn't disclose pagination, aggregation behavior, or potential performance implications (e.g., scanning large dataset). Since annotations already cover safety, a 2 acknowledges the description's added value but notes missing 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.

Conciseness4/5

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

The description is two sentences and front-loads the core purpose ('Get statistics on list/array field sizes') before giving examples. It earns its place by clarifying what 'field sizes' means (min/max/top) and examples of array fields. It could be slightly more concise by trimming 'in the ClinicalTrials.gov database' since the tool name already implies that, but the redundancy is minor.

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

Completeness3/5

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

Given the simple interface (one optional param, no output schema, annotations indicating read-only and idempotent), the description covers the core semantics: what the tool computes and that it is useful for data distribution. However, it lacks details about the returned structure (e.g., in what format are the stats returned?), defaults for omitted 'fields' beyond what schema says (e.g., does it return all fields? how many?), and interaction with the sibling clinical_trials_size_stats. Since output schema is absent, the description should have explained return values more clearly. This is a moderate gap.

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

Parameters3/5

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

The schema's 'fields' parameter already has a description: 'Pipe-separated field names: 'Phase|Condition|InterventionName'. Omit for all.' This covers semantics fully (schema_description_coverage=100%). The tool description gives examples of fields and reinforces the purpose, but doesn't add meaning beyond the schema. Per the rubric, with full schema coverage, a baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies a specific verb ('Get statistics'), a resource ('list/array field sizes in the ClinicalTrials.gov database'), and names example fields (Condition, Intervention, Phase). It distinguishes itself from siblings like clinical_trials_field_values (which likely returns field values rather than size statistics) and clinical_trials_size_stats (which may also be related, though ambiguous). Differentiation from clinical_trials_size_stats is weaker because that sibling name could be synonymous with field sizes, so it doesn't fully distinguish from all siblings.

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

Usage Guidelines3/5

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

The description implies usage for understanding data distribution, but does not explicitly state when to use this tool versus alternatives. It does not mention any exclusions or alternatives like clinical_trials_size_stats or clinical_trials_field_values. The openWorldHint and readOnlyHint annotations give some sense of safe usage, but no direct guidance on when to prefer this tool. A clear context is provided ('for understanding data distribution'), but no 'use X instead' condition.

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

clinical_trials_field_valuesA
Read-onlyIdempotent

Get value statistics for study data fields — top values, counts, and distributions. Powerful analytics tool: find top conditions, top sponsors, phase distributions, intervention type counts. Examples: fields='Phase' shows trial count by phase; fields='Condition' shows top conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoFilter by field type: 'ENUM' (Enumeration field), 'STRING' (Free-text string field), 'DATE' (Date field), 'INTEGER' (Integer numeric field), 'NUMBER' (Floating-point numeric field), 'BOOLEAN' (Boolean (true/false) field)
fieldsYesPipe-separated field names: 'Phase', 'Condition', 'OverallStatus', 'LeadSponsorName'

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, and open-world behavior. The description adds useful behavioral context by specifying the output type (top values, counts, distributions) and providing examples of concrete outputs, all consistent with annotations. No contradiction.

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

Conciseness4/5

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

Three focused sentences with the main purpose front-loadedaint. The examples are concrete and the only minor fluff is the promotional phrase 'Powerful analytics tool', which does not detract significantly. Overall, every sentence earns its place.

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

Completeness4/5

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

For a simple read-only tool with two well-documented parameters and no output schema, the description is largely complete. The examples illustrate typical output patterns (counts by phase, top conditions). It does not explicitly describe the exact JSON response structure, but the provided context is sufficient for correct invocation in most cases.

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 already documents both parameters fully. The description goes beyond the schema by giving illustrative examples for the 'fields' parameter (e.g., 'fields='Phase' shows trial count by phase'), which helps an agent understand the expected output shape. It does not mention the optional 'types' filter, but that is already well described in the schema.

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 states a specific action ('Get value statistics') on a clear resource ('study data fields'), with concrete examples like 'fields='Phase' shows trial count by phase'. It clearly distinguishes this from search/detail tools, though it does not explicitly differentiate from closely named siblings like clinical_trials_field_sizes.

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: when you need top values, counts, or distributions for trial fields. However, it provides no explicit alternatives or when-not-to-use guidance, leaving routing decisions to inference rather than direct instruction.

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

clinical_trials_metadataA
Read-onlyIdempotent

Explore the ClinicalTrials.gov study data model — field names, types, and descriptions. Use to discover available fields for the fields parameter in search/detail tools, or to build advanced filter expressions with AREA[] syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_indexed_onlyNoInclude indexed-only fields (default false)
include_historic_onlyNoInclude fields only in historic data (default false)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value by specifying that the tool returns schema-level information (field names, types, descriptions) rather than study records or statistics, giving the agent a clear expectation of the response nature.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states what the tool reveals, and the second states exactly when to use it. The front-loaded purpose makes it easy for an agent to quickly judge relevance.

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 low-complexity: zero required parameters, two self-describing optional booleans, and no output schema. The description explains what the tool returns (field names, types, descriptions) and why an agent would call it. Nothing needed for correct selection or invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%: both boolean parameters are already documented with descriptive names and default values. The description adds no parameter-specific detail, but with full schema coverage that is acceptable; this is the baseline case where the schema carries the semantic weight.

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 names a specific verb ('Explore') and resource ('ClinicalTrials.gov study data model') and states the concrete outputs: field names, types, and descriptions. It distinguishes itself from data-returning siblings like clinical_trials_search and clinical_trials_detail by explicitly tying it to 'fields' parameter discovery and AREA[] filter syntax.

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 usage context: use it to discover fields for search/detail tools or to construct AREA[] filter expressions. It does not explicitly state when not to use it or name alternatives like clinical_trials_field_values or clinical_trials_enums, but the provided use cases are specific enough for an agent to route itself correctly.

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

clinical_trials_resultsA
Read-onlyIdempotent

Get posted results for a completed clinical trial by NCT ID. Returns outcome measures, adverse events (serious + other), participant flow, and baseline characteristics. Only works for trials where hasResults=true. Use clinical_trials_search with agg_filters='results:with' to find them.

ParametersJSON Schema
NameRequiredDescriptionDefault
nct_idYesClinicalTrials.gov NCT ID: 'NCT00841061'

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive traits, and the description adds an availability constraint (`hasResults=true`) plus what data sections will be returned. It does not state the exact failure mode when the precondition is unmet, but the wording is enough to prevent incorrect invocation.

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

Conciseness5/5

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

Three sentences, all substantive, with core purpose and eligibility front-loaded before return-content detail. There is no filler, repetition, or schema duplication.

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 read-only tool with rich annotations, this captures purpose, input, expected return categories, and the precondition/route for finding valid trials. Although there is no output schema, the listed result sections give sufficient expectations.

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

Parameters3/5

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

The single `nct_id` parameter is already fully documented in the schema with format and example ('NCT00841061'), at 100% schema description coverage, so the description adds little semantic value beyond naming the lookup key. Baseline 3 applies.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get posted results for a completed clinical trial by NCT ID.' It then enumerates the returned sections (outcome measures, adverse events, participant flow, baseline characteristics), which clearly separates this tool from sibling clinical_trials_detail and clinical_trials_stats.

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 the precondition: 'Only works for trials where hasResults=true.' It also names the alternative for finding eligible trials: clinical_trials_search with agg_filters='results:with'. This gives the agent both a clear when-to-use boundary and the exact search path.

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

clinical_trials_size_statsB
Read-onlyIdempotent

Get database statistics: total study count, average study JSON size, size distribution, and largest studies. Quick overview of the ClinicalTrials.gov database scope and data volume.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about what the tool returns (total study count, average JSON size, size distribution, largest studies), which is useful but not rich. It doesn't contradict the annotations. The description doesn't disclose any performance characteristics, data freshness, or limitations (e.g., how 'size' is measured or whether results are cached). With the safety profile covered by annotations, a 3 is appropriate—the description adds some value but not deep 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 two sentences with no filler. The first sentence front-loads the concrete deliverables (count, average size, size distribution, largest studies), and the second adds a quick contextual framing about scope and data volume. The 'quick overview' phrase in the second sentence is slightly redundant with the first sentence's enumeration but reinforces the tool's lightweight nature. No wasted words overall, though the second sentence could arguably be trimmed.

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 zero-parameter tool with no output schema, the description carries the burden of explaining what the tool returns, which it does reasonably well by enumerating the four outputs. The main gap is the failure to differentiate from the sibling 'clinical_trials_stats' and the absence of any note about data freshness or update frequency, which matters for a database-statistics tool. Given the tool's simplicity, the description is mostly adequate but leaves the sibling-ambiguity question unresolved, which an agent would need to resolve on its own.

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, making schema coverage trivially 100%. With no parameters to document, the baseline is 4, and the description appropriately focuses on describing the tool's outputs rather than parameter syntax. The enumeration of what the tool returns (count, average size, distribution, largest studies) substitutes for parameter documentation and helps the agent understand the result shape. Nothing is missing in terms of parameter semantics since there are no inputs to clarify.

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

Purpose4/5

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

The description clearly states the tool's function with a specific verb ('Get') and resource ('database statistics'), enumerating concrete outputs: total study count, average study JSON size, size distribution, and largest studies. The first sentence is informative and specific. However, it fails to differentiate this tool from the nearly identical sibling 'clinical_trials_stats', which likely serves a similar statistical purpose. The 'size' focus is evident in the name but not explicitly highlighted in the description to distinguish it.

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 offers minimal usage context, noting it provides a 'quick overview of the ClinicalTrials.gov database scope and data volume.' This implies when to use it (for database-level overviews) but provides no explicit when-to-use vs when-not-to-use guidance and no exclusions. Critically, it never mentions or contrasts the very similar sibling 'clinical_trials_stats', leaving an agent to guess which statistical tool to invoke for a given task. For a tool with such a close sibling, the absence of routing guidance is a significant gap.

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

clinical_trials_statsA
Read-onlyIdempotent

Get trial count breakdown by recruitment status for a condition or drug/intervention. Shows how many trials are recruiting, active, completed, terminated, etc. Works for diseases ('breast cancer') AND drug names ('semaglutide', 'pembrolizumab'). Queries 8 statuses in parallel for comprehensive breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
conditionYesDisease, condition, or drug name: 'breast cancer', 'semaglutide'
search_as_drugNoSet true to search as drug/intervention instead of condition (for drug names like 'semaglutide')

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds meaningful behavioral context beyond annotations: it 'queries 8 statuses in parallel for comprehensive breakdown,' which implies parallel calls and potentially higher latency or rate-limit impact. It also clarifies the nature of the output (counts by status, not a trial list). No contradictions with annotations.

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

Conciseness5/5

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

The description is four short, focused sentences. The main purpose is front-loaded, followed by output format, accepted inputs with examples, and a behavioral note. Every sentence earns its place with no fluff or repetition.

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

Completeness4/5

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

For a simple 2-parameter tool with no output schema, the description sufficiently explains what the tool returns (counts by status) and how it handles both condition and drug inputs. It does not detail the exact response structure or status list beyond 'etc.', but the general shape is clear. Annotations cover safety, so the description is nearly complete.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters already documented. The description adds example values ('breast cancer', 'semaglutide') and clarifies that condition can be a drug/intervention, but this mostly repeats schema guidance. It does not add significant meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb+resource: 'Get trial count breakdown by recruitment status for a condition or drug/intervention.' It clearly differentiates from sibling tools like clinical_trials_search and clinical_trials_detail by focusing on counts by status rather than searching or detailing individual trials. The examples of diseases and drug names further clarify the 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 when to use the tool (when a count breakdown by status is needed) and clarifies that it accepts both diseases and drug names. However, it does not explicitly mention alternatives or provide when-not-to-use guidance relative to siblings like clinical_trials_search or clinical_trials_by_location. The usage context is clear but not explicitly routed.

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

cms_hospitalsA
Read-onlyIdempotent

Query CMS hospital data: general info, quality ratings, mortality, readmissions, infections, patient surveys, Medicare spending. Filter by state or city.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name
limitNoMax results (default 50)
stateNoTwo-letter state code (e.g. CA, TX, NY)
datasetNoHospital dataset to queryhospital_info

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the data categories but doesn't disclose behavioral traits like pagination, rate limits, or what happens with no filters. It provides some context beyond annotations but not rich behavioral detail.

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

Conciseness5/5

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

The description is a single, well-structured sentence. It front-loads the purpose ('Query CMS hospital data'), then lists the data categories and filters without any redundant or vague wording.

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 filter options but doesn't mention the default dataset (hospital_info) or the default limit (50), which are in the schema. It also doesn't describe the response format, though there is no output schema. For a query tool with optional parameters, this is adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters (city, state, limit, dataset) have descriptions. The description reinforces the state/city filtering and lists the dataset categories, but it doesn't add meaning beyond what the schema already provides. The enum values are self-explanatory.

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 queries CMS hospital data and lists specific data categories (quality ratings, mortality, readmissions, infections, patient surveys, Medicare spending). This distinguishes it from cms_nursing_homes, but it doesn't explicitly differentiate from the generic cms_query tool, so it's not a full 5.

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

Usage Guidelines3/5

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

The description mentions filtering by state or city, which implies usage when hospital data is needed. However, it doesn't explicitly state when to prefer this over sibling tools like cms_query or cms_nursing_homes, and no alternatives are named.

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

cms_nursing_homesA
Read-onlyIdempotent

Query CMS nursing home data: provider info with five-star ratings, quality measures, health deficiencies/citations. Filter by state.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
stateNoTwo-letter state code
datasetNoNursing home dataset to querynursing_home_info

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds context about the data types included, which is useful but doesn't disclose rate limits, pagination, or output format. With annotations present, this is a modest additional contribution.

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

Conciseness5/5

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

A single, front-loaded sentence that states the purpose and key capabilities without any filler. Every clause 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 description covers the core data content and mentions state filtering. It doesn't describe the return format, but no output schema exists; however, the listed data types imply what will be returned. Given the annotations and schema, the description is reasonably complete for a query tool, though a note on output structure would make it fully self-contained.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are documented. The description mentions filtering by state, which maps to the state param, but doesn't add detail beyond the schema for the dataset enum or limit. Baseline of 3 applies when schema covers 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?

States the specific verb 'Query' and resource 'CMS nursing home data', and lists concrete contents (provider info, five-star ratings, quality measures, health deficiencies/citations). It clearly distinguishes from siblings like cms_hospitals and cms_search by focusing on nursing homes.

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: this is for querying nursing home data, filterable by state. It does not explicitly mention alternatives or when not to use, but the resource specificity is enough to guide an agent among the many CMS siblings.

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

cms_queryA
Read-onlyIdempotent

General-purpose query against any CMS provider dataset by dataset identifier. Use cms_search to find available datasets and their IDs. Supports filtering by any field.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
offsetNoOffset for pagination
dataset_idYesCMS dataset identifier (e.g. 'xubh-q36u' for hospitals, '4pq5-n9py' for nursing homes) or catalog key
filter_fieldNoField name to filter on (e.g. 'state', 'city', 'provider_name')
filter_valueNoValue to filter for

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, so the description only needs to add context beyond that. It adds that the tool can filter by any field and targets arbitrary dataset identifiers, but it does not describe pagination behavior, return variability, or dataset-specific caveats. Helpful but not deeply transparent.

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

Conciseness5/5

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

The description is two sentences with no filler. The core capability is front-loaded, and the pointer to cms_search is placed in the second sentence. Every clause contributes meaning.

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 general-purpose dynamic query tool with no output schema, the description gives the essential starting point but could better explain the full workflow, such as discovering the dataset's fields and acceptable filter values before querying. The annotation and schema cover safety and parameter shape, but the dynamic dataset nature leaves a meaningful gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even without extra commentary. The description does reinforce that dataset_id functions as an identifier and that filtering is arbitrary, but it adds little beyond the already-detailed parameter descriptions.

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

Purpose5/5

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

The description states a clear verb-resource pair: 'query against any CMS provider dataset by dataset identifier.' It also directs the agent to cms_search for IDs, distinguishing this general tool from dedicated siblings like cms_hospitals and cms_nursing_homes without needing to open their schemas.

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

Usage Guidelines4/5

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

The description explicitly tells the agent to use cms_search to find available datasets and their IDs, which is clear contextual routing. It does not spell out when-not-to-use the tool versus the specialized cms_hospitals/cms_nursing_homes tools, but the 'general-purpose' framing makes the intended niche reasonably clear.

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

code_modeA
Read-onlyIdempotent

Run a JavaScript processing script against any tool's output in a WASM sandbox. Calls the specified tool first, then runs your script with the raw response as DATA (string). Only your script's console.log() output enters context — typically 65-99% smaller.

USE THIS when you need specific fields, counts, or filters from a large response. DO NOT use this when you need to read and interpret the full data for cross-referencing or analysis.

The script can: JSON.parse(DATA), use loops/map/filter/reduce, Math, string ops, console.log(). The script CANNOT: access files, network, Node.js APIs, or import modules.

Example — count serious reactions for a drug: tool='fda_drug_events', tool_args={"search":"patient.drug.openfda.brand_name:aspirin","limit":100}, code='const d=JSON.parse(DATA);const data=d.data||d;const items=data.items||data.results||[];' + 'const counts={};items.forEach(r=>{const rxs=r.reactions||[];rxs.forEach(rx=>{counts[rx]=(counts[rx]||0)+1})});' + 'Object.entries(counts).sort((a,b)=>b[1]-a[1]).slice(0,10).forEach(([k,v])=>console.log(k+": "+v))'

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesJavaScript code to process the result. The tool's full response is available as DATA (string). Use JSON.parse(DATA) to parse it. Use console.log() to produce output. Only console.log output is returned — keep it concise.
toolYesName of the MCP tool to call (e.g. 'fda_drug_events', 'fred_series_data', 'congress_search_bills')
tool_argsNoArguments to pass to the tool, as a JSON object (e.g. {"search": "serious:1", "limit": 50})

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, open-world, and non-destructive. The description adds crucial context beyond that: the script runs in a WASM sandbox restricting system access, and only console.log output enters context, implying context savings. No contradictions. The description adds meaningful behavioral constraints not in the annotations.

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

Conciseness5/5

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

The description is well-structured and compact. It starts with the core purpose, then usage guidance, then capabilities/limitations, and ends with a concrete example. Every sentence earns its place; the example is illustrative 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?

The description is complete for a complex tool. It explains how to use it, what the script can and cannot do, and provides a worked example. The output schema is not present, but the description clearly explains the output behavior (only console.log). The tool_args parameter is explained via example, and the tool parameter is explained via the example. With no output schema, the description fills the gap effectively.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already describes each parameter. The description adds additional semantic meaning: it clarifies that DATA is a string, only console.log output is returned, and provides a concrete example with realistic arguments. This goes beyond the schema's basic 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 states a specific verb ('Run'), a clear resource ('a JavaScript processing script against any tool's output'), and a distinctive mechanism (WASM sandbox, console.log output). It clearly differentiates from siblings by positioning itself as a general-purpose post-processor rather than a data-specific tool.

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 ('USE THIS when you need specific fields, counts, or filters from a large response') and when not to ('DO NOT use this when you need to read and interpret the full data for cross-referencing or analysis'). This is clear and actionable.

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

congress_amendment_amendmentsA
Read-onlyIdempotent

Get sub-amendments to a specific amendment. Shows amendments that modify the parent amendment.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 50)
congressYesCongress number
amendment_typeYesAmendment type
amendment_numberYesAmendment number

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral context that this returns a filtered subset (sub-amendments of a parent), which is useful. However, it doesn't disclose pagination behavior, default limit, or what fields are returned, which would be valuable for a list-type endpoint.

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, zero waste. The first sentence states the action and resource; the second clarifies the relationship. The key scoping information is front-loaded.

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

Completeness4/5

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

For a read-only list tool with 100% schema coverage and no output schema, the description is nearly complete. The only gap is that it doesn't mention pagination or the limit parameter's behavior, but the schema covers the limit parameter with a default and maximum. An agent can call this tool correctly with the information provided.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description doesn't add meaning beyond the schema—it doesn't explain how congress, amendment_type, and amendment_number combine to identify the parent amendment, nor does it clarify the relationship between amendment_type and the parent. Baseline 3 is appropriate since the schema does the heavy lifting.

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 sub-amendments to a specific amendment' and further clarifies that it 'Shows amendments that modify the parent amendment.' This distinguishes it from the sibling congress_amendments (which lists amendments) and congress_amendment_details (which gets a single amendment's 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?

The description implies the use case: when you need sub-amendments to a specific parent amendment. It doesn't explicitly say when not to use it or name alternatives, but the context of sibling tools like congress_amendments and congress_amendment_details makes the distinction reasonably clear. It could be improved by explicitly stating 'Use this instead of congress_amendments when you need amendments that modify a specific parent amendment.'

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

congress_amendment_cosponsorsB
Read-onlyIdempotent

Get cosponsors of a specific amendment. Shows party affiliation and sponsorship details.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 250)
congressYesCongress number
amendment_typeYesAmendment type
amendment_numberYesAmendment number

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description does not need to restate that. It adds some output context ('party affiliation and sponsorship details') but does not disclose pagination, limit behavior, or handling of missing cosponsors.

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 with no filler. It leads with the core purpose and then states the value-add, making it easy to scan.

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

Completeness3/5

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

For a simple lookup the description plus schema is mostly adequate, but with no output schema it only partially describes the return shape. It also omits any mention of how to disambiguate from bill cosponsors or how results are ordered/paginated.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description itself adds no parameter-level semantics, and the schema descriptions are terse ('Congress number', 'Amendment type'), but they do exist and cover all parameters.

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

Purpose4/5

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

The description states a clear verb ('Get') and resource ('cosponsors of a specific amendment') and adds what the response contains ('party affiliation and sponsorship details'). It is unambiguous about targeting amendments, though it does not explicitly distinguish itself from the closely related congress_bill_cosponsors sibling.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like congress_bill_cosponsors (for bills) or congress_amendment_details. The description neither names alternatives nor gives selection criteria, leaving the agent to infer based on the name alone.

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

congress_amendment_detailsA
Read-onlyIdempotent

Get detailed information about a specific amendment, including its actions/timeline. Requires congress number, amendment type (hamdt/samdt), and amendment number.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
amendment_typeYesAmendment type
amendment_numberYesAmendment number

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already carry the read-only, idempotent, non-destructive safety profile, so the description only needs to add behavioral context beyond that. It adds that the result includes actions/timeline, a useful return-content signal, but says nothing else about response shape, pagination, or error behavior. This is a modest contribution, not a rich behavioral disclosure.

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

Conciseness5/5

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

Two sentences with no filler: the action, the headline return content, and the required parameters are all front-loaded. Every clause earns its place, making this an appropriately sized definition.

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 three-parameter detail lookup the description is minimally adequate: it names the entity and the required identifiers. But with no output schema and many closely related amendment sibling tools, the vague 'detailed information' plus one example ('actions/timeline') leaves the agent to infer the full response contents and when this tool is preferable to congress_amendment_text, congress_amendment_cosponsors, or congress_amendments.

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?

All three parameters have schema descriptions ('Congress number', 'Amendment type', 'Amendment number'), so schema coverage is 100% and the baseline is 3. The description merely repeats the required parameter names and adds no format or semantic nuance; its parenthetical '(hamdt/samdt)' even omits the valid 'suamdt' enum value present in the schema.

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 opens with 'Get detailed information about a specific amendment,' a clear verb-resource pairing, and singles out 'actions/timeline' as included content. It is therefore recognizable as the detail variant of the amendment family, but it never names sibling tools such as congress_amendment_text or congress_amendment_cosponsors, so differentiation is implicit rather than explicit.

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 right situation—a known congress, amendment type, and amendment number—by listing the required inputs, and the 'specific amendment' phrasing signals this is not a list/search tool. However, it gives no explicit when-to-use versus alternatives and does not mention that discovery should go through congress_amendments or that text-only needs should use congress_amendment_text.

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

congress_amendmentsA
Read-onlyIdempotent

Search/list amendments by congress and optional type (hamdt = House, samdt = Senate, suamdt = Senate Unnumbered). Returns amendment number, type, sponsor, purpose, and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number (default: current)
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z
amendment_typeNoAmendment type

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already convey that this is read-only, idempotent, and non-destructive, so the bar for behavioral disclosure is lower. The description adds useful context by stating the returned fields, but it does not mention pagination or potential size of results.

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

Conciseness5/5

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

The description is a single front-loaded sentence that states the action, scope, enum meanings, and return fields with no filler. Every clause earns its place.

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

Completeness4/5

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

For a list-style read-only endpoint, the description gives sufficient scope, filter semantics, and return-field information even without an output schema. Parameter details are provided by the schema and safety profile by annotations; the main missing element is a pointer to detail or bill-specific amendment tools.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by expanding the cryptic enum values (hamdt/samdt/suamdt) into House, Senate, and Senate Unnumbered, which directly helps an agent choose the correct filter.

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-resource pair ('Search/list amendments') and defines the scope by congress and optional amendment type. It names the three amendment type codes and lists returned fields, so an agent can distinguish it from detail-oriented siblings even without an explicit comparison.

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 its use case: searching or listing amendments filtered by congress and type, which is clear enough to select it. However, it gives no exclusions or pointers to alternative tools like congress_amendment_details or congress_bill_amendments.

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

congress_amendment_textB
Read-onlyIdempotent

Get text versions for a specific amendment (from 117th Congress onwards). Returns version types and format URLs (PDF, HTML).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number (117th onwards)
amendment_typeYesAmendment type
amendment_numberYesAmendment number

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that it returns version types and format URLs, which is useful behavioral context, but does not detail response structure, pagination, or error behavior. Given the annotation coverage, this is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences with no redundancy. It front-loads the core action and result types, making it easy to parse. Every word earns its place.

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

Completeness4/5

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

For a simple read-only tool with annotations covering safety and a fully described schema, the description adequately conveys the purpose and output. It does not specify exact response formatting, but without an output schema, the agent can rely on the described 'version types and format URLs'. The lack of pagination or error handling is a minor gap for such a focused tool.

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

Parameters3/5

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

The input schema provides 100% description coverage for all three parameters, including the congress range and amendment_type enum. The description does not add any parameter-specific semantics beyond what the schema already states (e.g., it repeats the 117th Congress constraint). Baseline 3 is appropriate since the schema carries the full burden.

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

Purpose4/5

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

The description clearly states it retrieves text versions for a specific amendment, specifying the resource and the return contents (version types and format URLs). However, it does not explicitly differentiate this from sibling tools like congress_amendment_details or congress_amendment_cosponsors, though the purpose is unambiguous enough for an agent to infer its scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions a congress range constraint but does not mention exclusions or alternative tools for similar queries. An agent would have to infer from the name and sibling list that this is the amendment-text-specific tool.

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

congress_bill_actionsA
Read-onlyIdempotent

Get the full action history / timeline for a bill — every step from introduction through committee, floor votes, amendments, and signing. Shows recorded roll-call vote numbers when available.

Use congress_search_bills first to find the congress number, bill type, and bill number.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax actions to return (default: 100)
congressYesCongress number (e.g., 118)
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns the full timeline and includes roll-call vote numbers when available, which is useful context about the response content. No contradiction.

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

Conciseness5/5

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

Two sentences, no redundancy, and the core purpose is front-loaded. The prerequisite instruction is concise and actionable.

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 read-only tool with strong annotations and a clear schema, the description fully explains what the tool returns and how to obtain the necessary identifiers. No output schema exists, but the description covers the expected content adequately.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (congress, bill_type, bill_number, limit) are documented in the schema. The description adds a usage hint about using congress_search_bills to find the parameters, but does not add syntax or format details beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('full action history / timeline for a bill'), enumerates the content (introduction, committee, floor votes, amendments, signing) and mentions roll-call vote numbers. It clearly differentiates from sibling tools like congress_bill_amendments and congress_bill_votes by focusing on the whole timeline.

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 instructs to 'Use congress_search_bills first' to obtain the required parameters, which is a clear when-to-use directive. This also implicitly distinguishes from other bill-related tools that might not need that prerequisite.

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

congress_bill_amendmentsA
Read-onlyIdempotent

Get amendments filed on a specific bill. Shows amendment sponsors, purposes, and status. Critical for tracking how bills are modified (e.g., 'gutted and replaced').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 50)
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral context that this tool is critical for tracking bill modifications, which is useful but not deeply behavioral. It doesn't disclose pagination, ordering, or response shape, but with annotations covering the safety profile, a 3 is appropriate.

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

Conciseness5/5

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

Three sentences with no waste. The core function is front-loaded, the data fields are listed, and the use case is given in a compact example. Every sentence earns its place.

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

Completeness4/5

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

For a read-only list tool with full schema coverage and no output schema, the description is nearly complete. It tells the agent what the tool does, what data it returns, and why it matters. The only minor gap is not mentioning pagination or the limit parameter's role, but the schema already documents limit with a default and maximum, so this is adequately covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no parameter-specific details beyond what the schema provides. Baseline 3 is correct because the schema does the heavy lifting and the description doesn't need to compensate.

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 amendments for a specific bill, listing the key data fields (sponsors, purposes, status). It also provides a concrete use case ('gutted and replaced') that distinguishes it from generic bill-related tools. The verb 'Get' plus the resource 'amendments filed on a specific bill' is specific and unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when tracking how a bill is modified, especially substantive changes. It doesn't explicitly name alternatives like congress_amendments or congress_bill_actions, but the context of 'specific bill' and the example of tracking modifications gives clear usage context. It lacks explicit when-not-to-use guidance, so it doesn't earn a 5.

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

congress_bill_committeesA
Read-onlyIdempotent

Get committees a bill was referred to, with activity dates. Shows which committees had jurisdiction and what actions they took (referral, hearings, markup, reporting).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior, so the description's burden is lower. It adds context about the content (activity dates, actions) but does not describe response format, pagination, or any edge cases. Given the strong annotation coverage, this is adequate but not rich.

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

Conciseness5/5

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

Two sentences with zero waste. The core purpose is front-loaded, and the follow-up sentence adds valuable detail about what is shown. Every word earns its place.

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

Completeness4/5

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

For a simple lookup tool with three well-documented parameters and strong safety annotations, the description is nearly complete. It explains the output (committees, activity dates, actions) adequately. However, without an output schema and given the dense sibling landscape, a brief note on return structure or a pointer to a related tool would make it more complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters (congress, bill_type, bill_number). The description adds no additional parameter-level meaning beyond the schema, so it meets the baseline for high coverage without needing to compensate.

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 a clear verb ('Get') and a specific resource (committees a bill was referred to) and elaborates on what it returns (jurisdiction and actions like referral, hearings, markup, reporting). This clearly differentiates it from sibling tools such as congress_committee_bills (bills for a committee) and congress_bill_actions (all actions on a bill).

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 it (when you need committee referral info for a bill) but provides no explicit guidance on when not to use it or how it differs from alternatives like congress_bill_actions or congress_committee_bills. With many similar congress_* siblings, explicit routing would be helpful, but the purpose is clear enough to infer basic usage.

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

congress_bill_cosponsorsA
Read-onlyIdempotent

Get the full list of cosponsors for a bill with party affiliation and sponsorship dates. Returns individual cosponsor details unlike congress_bill_details which only provides a party breakdown summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order. Value can be updateDate+asc or updateDate+desc
limitNoMax results (default: 250)
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds that it returns individual cosponsor details with party and dates, which is useful, but it does not mention pagination (though the schema includes a limit parameter) or response structure. It neither contradicts annotations nor adds rich behavioral context beyond the basic return content.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the action and purpose, and the second differentiates from a sibling. Information is front-loaded and every phrase earns its place.

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

Completeness4/5

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

For a read-only list tool with five parameters, all covered by schema, and no output schema, the description sufficiently explains what it returns and how it differs from a related tool. It does not mention pagination or limits, but those are evident from the schema. No critical missing information for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (congress, bill_type, bill_number, sort, limit) are already documented in the schema. The description does not add any additional parameter context; it only mentions response fields (party, dates) that are not parameter-related. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the specific verb ('Get') and resource ('full list of cosponsors for a bill'), and specifies the returned fields (party affiliation, sponsorship dates). It also explicitly contrasts with congress_bill_details, which provides only a summary, making the distinction precise.

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 names congress_bill_details as an alternative and notes the key difference (individual details vs. summary), giving context for when this tool is more appropriate. However, it does not explicitly state when to use the alternative or mention other exclusions, so it stops short of full 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.

congress_bill_detailsA
Read-onlyIdempotent

Get detailed information about a specific bill including sponsors, cosponsors with party breakdown, actions, committees, and current status.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number (e.g., 119, 118, 117)
bill_typeYesBill type
bill_numberYesBill number (e.g., 1, 25, 3076)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context such as potential response size, recency of the 'current status', data source caveats, or rate limits, but it does not contradict the annotations.

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

Conciseness5/5

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

A single sentence immediately names the action and resource, then tacks on a compact list of included data. There is no filler or repetition of the schema, making this a model of concise, front-loaded documentation.

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 straightforward detail-by-identifier tool, the description's enumerated content list is adequate for selection and invocation, and the schema covers all required parameters. Since there is no output schema, some return-format detail is absent, but the description gives enough of a shape for an agent to know what it will receive.

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?

All three parameters have schema descriptions, so schema coverage is 100% and the baseline applies. The tool description itself adds no additional parameter meaning beyond calling the resource a 'specific bill'; it does not clarify formats such as 'hjres' or edge cases, but the schema already provides basic examples.

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

Purpose4/5

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

The description clearly identifies the action (get detailed information) and the target resource (a specific bill), and it lists the major content sections: sponsors, cosponsors with party breakdown, actions, committees, and current status. This is enough to understand what the tool returns, but it does not differentiate it from overlapping siblings such as congress_bill_full_profile or granular siblings like congress_bill_actions, congress_bill_committees, and congress_bill_cosponsors.

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 is the tool to use when you need a composite bill overview, but it never states when to choose it over the granular congress_bill_* endpoints or congress_bill_full_profile. No exclusions or alternative routing are provided, so the agent must infer usage from the content list.

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

congress_bill_full_profileA
Read-onlyIdempotent

Get a COMPLETE bill profile in ONE call — combines bill details, all cosponsors (with party breakdown), full action timeline, CRS summaries, committees, legislative subjects, text versions, related bills, and all titles. Fetches 8 endpoints in parallel. Use this instead of calling congress_bill_details + congress_bill_actions + congress_bill_summaries + congress_bill_committees + congress_bill_subjects + congress_bill_text + congress_bill_related + congress_bill_titles individually.

Ideal for: Complete legislative analysis, bill research, accountability investigations, or getting everything needed to cross-reference with FEC (who funded the sponsors), lobbying_search (who lobbied), and FRED (economic impact after passage).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number (e.g., 119, 118, 117)
bill_typeYesBill type
bill_numberYesBill number (e.g., 1, 25, 3076)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, which establishes the tool's safe read-only nature. The description adds that it 'Fetches 8 endpoints in parallel,' giving the agent a sense of scope and potential latency. It doesn't contradict annotations. However, it stops short of detailing response size or any rate considerations, which would be extra value. Overall, it adequately complements the annotations without redundancy.

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 well-structured and informative. The first paragraph front-loads the key value proposition ('COMPLETE bill profile in ONE call') and then enumerates the included components and the parallel fetch. The second paragraph provides practical use contexts. Every sentence adds relevant information, but the description is somewhat lengthy. It could be slightly tighter, but it never wastes words. This earns a 4 rather than a 5 due to 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?

Given that this is a composite tool with no output schema, the description clearly enumerates the data domains it returns, which is essential for an agent to decide if it meets the need. It also mentions cross-referencing with other datasets (FEC, lobbying, FRED), which helps contextualize its use. However, it doesn't describe the output format or potential size, which could be a minor gap for an agent expecting a single flat object. Still, for the purpose of selecting and invoking with correct parameters, it is adequate.

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

Parameters3/5

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

The input schema provides 100% coverage of all three parameters (congress, bill_type, bill_number) with descriptions and examples. The description adds no additional parameter-level information, which is acceptable since the schema already fully documents them. Per the rubric, with high schema coverage, the baseline is 3, and the description doesn't need to compensate. It doesn't detract, but it also doesn't enrich beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get a COMPLETE bill profile in ONE call' and lists the included components (details, cosponsors, actions, summaries, committees, subjects, text, related bills, titles). It explicitly differentiates from sibling tools by naming the individual congress_bill_* tools and telling the agent to use this instead of calling them individually. The verb 'get' and resource 'bill profile' are specific and actionable.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Use this instead of calling congress_bill_details + congress_bill_actions + ... individually' and gives ideal use cases: 'Complete legislative analysis, bill research, accountability investigations, or getting everything needed to cross-reference with FEC, lobbying_search, and FRED.' This makes it clear when to choose this tool over the granular siblings, and also hints at when the alternatives might be preferred (if only one aspect is needed).

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

congress_bill_subjectsA
Read-onlyIdempotent

Get legislative subjects tagged on a bill, plus the primary policy area. Useful for finding all bills on a topic and for cross-referencing with lobbying data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 100)
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description correctly aligns by using 'Get'. The description adds that the response includes subjects plus the primary policy area, which is behavioral detail beyond the annotations. It does not discuss pagination or response format, but annotations cover the safety profile.

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 short sentences with no filler. The core function is stated first, followed by meaningful use cases, making it easy to scan.

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

Completeness4/5

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

For a simple read-only bill lookup, the description provides enough information about what is returned (subjects and primary policy area) and when to use it. It could detail the exact response structure, but the annotations and schema cover the remaining operational details.

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

Parameters3/5

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

Schema description coverage is 100% — every parameter (limit, congress, bill_type, bill_number) has a description, so the schema carries the parameter meaning. The description adds no additional parameter semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Get'), a specific resource ('legislative subjects tagged on a bill'), and adds the additional output ('primary policy area'). It also states use cases that help differentiate it from related Congress bill tools like congress_bill_summaries or congress_bill_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?

The description says the tool is useful for finding all bills on a topic and for cross-referencing with lobbying data, which gives clear usage context. It does not name alternative tools or exclusions, but the context is sufficient for an agent to decide when to use it.

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

congress_bill_summariesA
Read-onlyIdempotent

Get CRS (Congressional Research Service) summaries of a bill. These are plain-English, non-partisan summaries written by CRS analysts. Multiple versions may exist (as introduced, as reported, as passed).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds meaningful behavioral context about the content itself: the summaries are written by CRS analysts, are non-partisan, and may exist in multiple versions (as introduced, as reported, as passed). This goes beyond the structured annotations, though it does not address return format 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.

Conciseness5/5

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

Two sentences with no redundancy. The primary action and distinguishing content traits are front-loaded, and the note about multiple versions is concise and informative.

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 straightforward read-only fetch tool with three required parameters and no output schema, the description adequately explains what the tool returns and highlights the key nuance of multiple versions. It could be more explicit about the response shape, but the safety profile is fully covered by annotations, making it complete enough for correct 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?

The input schema provides descriptions for all three parameters, giving 100% coverage, so the baseline is 3. The tool description adds no parameter-specific detail beyond what the schema states; it does not explain congress numbering, bill type abbreviations, or how to obtain the bill number.

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

Purpose5/5

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

The description opens with 'Get CRS summaries of a bill,' a specific verb-resource pair. It clearly distinguishes this tool from siblings like congress_bill_text or congress_bill_actions by emphasizing the summary nature and its plain-English, non-partisan characteristics. The mention of multiple versions further clarifies exactly what this tool returns.

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 the use case: whenever CRS summaries for a given bill are needed. It does not explicitly name alternatives or provide exclusions, but the context is sufficiently clear for an agent to differentiate this from the many related congress_bill_* tools.

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

congress_bill_textA
Read-onlyIdempotent

Get available text versions for a bill (e.g., introduced, reported, engrossed, enrolled). Returns version types and format URLs. For full bill text content, use govinfo_bill_text.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value beyond annotations by revealing what the tool returns ('version types and format URLs') and signaling it lists available versions rather than guaranteeing content. This is especially useful since no output schema exists.

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

Conciseness5/5

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

Two sentences with zero filler. The first sentence delivers the core purpose and output, the second sentence routes to the alternative. Front-loaded and every word contributes.

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 lookup tool with 3 well-schematized parameters and no output schema, the description covers purpose, return shape, and the main alternative. Minor gaps exist—no mention of pagination, limit behavior, or what happens when a bill has no text versions—but these don't prevent an agent from invoking the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (congress, bill_type, bill_number) already has a schema description. The tool description adds no parameter-level details such as format constraints or relationships, but with full schema coverage the baseline of 3 is appropriate—the description doesn't need to compensate.

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 a specific verb and resource: 'Get available text versions for a bill', and enumerates concrete version types (introduced, reported, engrossed, enrolled). It further clarifies that the tool returns metadata ('version types and format URLs') rather than the text itself, which distinguishes it from govinfo_bill_text without needing to inspect that sibling.

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 names the key alternative explicitly: 'For full bill text content, use govinfo_bill_text.' This tells the agent when not to use this tool (when full text is needed). However, the positive use case—when to pick this tool over other congress_* siblings—is only implied through the purpose statement rather than stated as an explicit 'use this when...' guideline.

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

congress_bill_titlesA
Read-onlyIdempotent

Get all titles for a bill — short titles, official titles, display titles, and titles as they appeared in different text versions. Useful for finding the popular name of legislation (e.g., 'Inflation Reduction Act').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 100)
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that titles come from different text versions, which is useful. It doesn't mention pagination or the limit parameter's effect, but that's partially in the schema.

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

Conciseness5/5

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

Two sentences, front-loaded with the core function, then a concrete example. No wasted words. The example is particularly valuable for an agent trying to understand the tool's purpose.

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 read-only list tool with 100% schema coverage and no output schema, the description covers the essential purpose and use case. It doesn't describe the return structure, but that's not required without an output schema. The only minor gap is not mentioning pagination behavior explicitly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents congress, bill_type, bill_number, and limit. The description adds the concept of title types but doesn't explain parameter formats or relationships beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves all titles for a bill, enumerates the title types (short, official, display, version-specific), and gives a concrete use case (finding popular names like 'Inflation Reduction Act'). This distinguishes it from sibling bill tools like congress_bill_summaries or congress_bill_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?

The description implies when to use this tool: when you need title variants or the popular name of legislation. It doesn't explicitly exclude alternatives, but the sibling list is large and the use case is specific enough. It could be improved by noting it's not for full bill text or summaries.

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

congress_bill_votesA
Read-onlyIdempotent

Find ALL roll-call votes on a specific bill and fetch the party-line breakdowns — the KEY tool for 'follow the money' investigations. Scans the bill's action timeline for recorded vote references, then fetches each House and Senate vote with member-level results and party tallies.

This is the critical bridge between legislation and accountability: • Bill → Votes (this tool) • Votes → Who voted how (party tallies returned here) • Who voted → Who funded them (fec_candidate_financials / fec_committee_disbursements) • Who lobbied → lobbying_search

Returns all House and Senate roll-call votes associated with the bill, with full party breakdowns.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
bill_typeYesBill type
bill_numberYesBill number

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds behavioral detail by explaining it scans the bill's action timeline and fetches each vote with member-level results and party tallies. It also mentions the return content. This is valuable beyond annotations, though it does not address potential limitations like pagination or missing vote scenarios.

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 moderately long but well-structured with bullet points and a workflow diagram. It front-loads the core action and provides the investigative chain efficiently. While a few sentences could be trimmed, it is not overly verbose and earns its length by clearly communicating the tool's role.

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

Completeness4/5

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

The tool is composite and lacks an output schema, but the description explains what it returns: 'all House and Senate roll-call votes associated with the bill, with full party breakdowns.' It also connects to related tools (FEC, lobbying) for further investigation. It does not cover error handling or edge cases, but given its complexity and the provided annotations, it is reasonably complete.

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

Parameters3/5

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

The input schema covers all three parameters with basic descriptions ('Congress number', 'Bill type', 'Bill number') and an enum for bill_type. The description does not add any additional parameter-specific meaning or constraints. With 100% schema coverage, the baseline is 3; the description adds no extra 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 specific action ('Find ALL roll-call votes on a specific bill and fetch the party-line breakdowns') and the resource (a bill). It also explicitly differentiates from siblings by positioning itself as the key tool for 'follow the money' investigations and outlining the workflow (Bill → Votes → Who funded them). The purpose is unmistakable and distinct.

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

Usage Guidelines4/5

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

The description provides a clear usage context by showing the investigative workflow chain (Bill → Votes → FEC funding → lobbying). It implies when to use this tool (when you have a bill and need its votes) but does not explicitly contrast with siblings like congress_house_votes or congress_senate_votes. It gives context but lacks explicit 'when not to use' guidance.

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

congress_bound_congressional_recordA
Read-onlyIdempotent

Get bound Congressional Record issues — the permanent, final publication of proceedings. Filter by year, month, and day.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNoDay of month
yearNoYear (e.g., 1990)
limitNoMax results (default: 20)
monthNoMonth (1-12)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered and the description is consistent with it (no contradiction). The description adds only content context ('permanent, final publication') rather than behavioral detail such as pagination behavior, the default/cap on results (limit defaults to 20, max 250), or the fact that all filter parameters are optional. Some behavioral transparency is lost, though annotations carry much of the burden.

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

Conciseness5/5

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

Two sentences with zero waste: the first front-loads the purpose and defining trait ('permanent, final publication'), the second states the filtering capability. Every phrase earns its place and the key differentiator is placed early.

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 filter/list tool with no output schema and straightforward parameters, the description is mostly adequate. The main gaps are the lack of explicit sibling differentiation (bound vs. daily Congressional Record) and no mention of result limiting or pagination. Since no output schema exists, the description could do slightly more to set expectations about what is returned, but the core calling information is present.

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

Parameters3/5

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

Schema description coverage is 100%, with all four parameters (day, year, limit, month) already documented in the schema. The description's 'Filter by year, month, and day' adds little beyond what the schema states, and notably omits the limit parameter entirely. It provides no added semantics such as required combinations or format details, so it sits at the baseline 3 for high-coverage schemas.

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 states a specific verb ('Get') and resource ('bound Congressional Record issues'), and adds a clarifying phrase 'the permanent, final publication of proceedings' that distinguishes it from the daily Congressional Record sibling. However, it does not explicitly name the sibling (congress_daily_congressional_record) as the thing it is not, so differentiation relies on the reader inferring the contrast rather than being told.

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 'permanent, final publication' phrasing implies this tool is for the bound version rather than the daily one, giving some usage context. But there is no explicit when-to-use vs. when-not-to guidance and no named alternatives, which matters given direct siblings congress_congressional_record and congress_daily_congressional_record exist in the toolset. Usage context is implied, not stated.

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

congress_committee_billsA
Read-onlyIdempotent

Get bills referred to a specific committee. Use congress_committees to find the committee system code. Useful for tracking which bills die in committee vs. get reported out.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
chamberYesChamber
committee_codeYesCommittee system code (e.g., 'hsba00' for House Financial Services, 'ssfi00' for Senate Finance)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral context that this tool returns bills referred to a committee, which is useful but not deeply behavioral. It doesn't disclose pagination behavior, ordering, or whether the result includes only current Congress or all Congresses. With annotations covering the core safety traits, a 3 is appropriate.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the core function, and the second provides a prerequisite and a use case. Every word earns its place, and the most important information is front-loaded.

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

Completeness4/5

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

For a read-only list tool with 100% schema coverage and no output schema, the description is nearly complete. It covers the prerequisite (committee code lookup) and a use case. The only minor gap is that it doesn't mention whether the tool returns bills from all Congresses or just the current one, which could matter for an agent. But given the tool's simplicity and the annotations covering safety, this is a minor omission.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds a concrete example of committee_code format ('hsba00' for House Financial Services) in the schema, not in the description. The description itself doesn't add parameter semantics beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Get bills referred to') and a specific resource ('a specific committee'), which clearly distinguishes it from sibling tools like congress_bill_committees (which maps bills to committees) and congress_committee_details (which describes the committee itself). It also names the prerequisite tool (congress_committees) for finding the committee code, adding further differentiation.

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

Usage Guidelines4/5

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

The description explicitly tells the agent to use congress_committees to find the committee system code, which is a clear prerequisite. It also provides a use case ('tracking which bills die in committee vs. get reported out'), which implies when this tool is relevant. However, it doesn't explicitly state when NOT to use it or name alternative tools like congress_bill_committees or congress_committee_reports_for_committee, 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.

congress_committee_detailsB
Read-onlyIdempotent

Get detailed information about a specific congressional committee by chamber and committee code. Returns full history, website URL, subcommittees, bill/report counts, and related communications.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberYesChamber
committee_codeYesCommittee system code (e.g., 'hspw00' for House Transportation, 'ssju00' for Senate Judiciary)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare a safe read-only, idempotent, non-destructive operationclient. The description adds context about response contents but does not disclose any additional behavioral traits such as pagination, rate limits, or special result semantics. There is no contradiction with annotations.

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

Conciseness5/5

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

A single sentence front-loads the tool's purpose and then lists the returned data categories. Every word contributes useful information; there is no redundancy, filler, or unnecessary detail.

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

Completeness4/5

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

For a 2-parameter read-only tool with no output schema, the description covers the required inputs and major response fields. The main gap is that it does not explicitly state whether this returns data for the current Congress, leaving ambiguity against the 'congress_committee_details_by_congress' sibling. Also, it does not mention how to obtain a valid committee_code, though the schema provides examples.

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?

Both parameters are fully documented in the schema: chamber has an enum, and committee_code includes example values. The description merely repeats the parameter names without adding new meaning, so it does not add value beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb ('Get'), resource ('detailed information about a specific congressional committee'), and the key identifiers (chamber and committee code). It also enumerates the response contents (history, website, subcommittees, bill/report counts, communications). However, it does not differentiate from the similarly named sibling 'congress_committee_details_by_congress', so an agent might be uncertain which tool to use when a congress parameter is involved.

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?

There is no guidance on when to use this tool versus alternatives, or any prerequisites such as how to discover a valid committee_code. The description only implies that chamber and code are needed but does not mention using 'congress_committees' first or the difference from related tools like 'congress_committee_details_by_congress' or 'congress_committee_full_profile'.

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

congress_committee_details_by_congressA
Read-onlyIdempotent

Get detailed information about a committee filtered by a specific congress number. Shows membership for that specific congress vs. all-time details from congress_committee_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberYesChamber
congressYesCongress number (e.g., 119)
committee_codeYesCommittee system code (e.g., 'hspw00')

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds a small behavioral detail about the return content ('Shows membership for that specific congress') but does not disclose additional traits like response format, pagination, or error conditions. Given the annotation coverage, a 3 is appropriate.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the primary function first and then contrasts with a sibling. No redundant phrases or filler—every word contributes to understanding the tool's scope and differentiation.

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 provides enough context for an agent to call the tool correctly: it names the resource, the filtering criteria, and the distinction from the sibling tool. There is no output schema, so the description should indicate what is returned; it does mention 'detailed information' and 'membership.' While it could specify the exact fields or response shape, the annotations and the simplicity of the tool make this reasonably complete.

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

Parameters3/5

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

The input schema has 100% description coverage for all three parameters (chamber, congress, committee_code), each with a brief but adequate explanation. The tool description does not add further semantic detail beyond the schema. With full schema coverage, the description has little obligation to expand, so a baseline 3 is justified.

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 a clear verb and resource: 'Get detailed information about a committee filtered by a specific congress number.' It explicitly contrasts with the sibling tool congress_committee_details, which provides all-time details. This distinguishes the tool's purpose unambiguously.

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

Usage Guidelines4/5

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

The description implies when to use this tool versus congress_committee_details by stating 'Shows membership for that specific congress vs. all-time details from congress_committee_details.' It provides clear context for selection but stops short of an explicit 'use this when...' directive. This is sufficient for an agent to infer the appropriate scenario.

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

congress_committee_full_profileA
Read-onlyIdempotent

Get a COMPLETE committee profile in ONE call — combines committee details (history, subcommittees, website), recent bills referred, recent reports published, and recent nominations referred (4 endpoints in parallel). Use this instead of calling congress_committee_details + congress_committee_bills + congress_committee_reports_for_committee + congress_committee_nominations_for_committee individually.

Ideal for: Understanding a committee's jurisdiction, workload, and oversight activity. Cross-reference committee chair (from congress_member_details) with FEC donors and lobbying_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items per sub-resource (default: 10)
chamberYesChamber
committee_codeYesCommittee system code (e.g., 'hsba00' for House Financial Services, 'ssju00' for Senate Judiciary)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context by explaining that this is a composite call running '4 endpoints in parallel' and that it returns recent bills, reports, and nominations. It does not mention any rate-limit or pagination nuances, but the safety profile is covered by annotations and the composite behavior is clearly disclosed.

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

Conciseness4/5

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

The description is front-loaded with the key value proposition ('Get a COMPLETE committee profile in ONE call') and then efficiently lists the components, the alternatives it replaces, and the ideal use case. It is slightly lengthy but every sentence contributes practical selection and invocation guidance; no filler.

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

Completeness4/5

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

Given there is no output schema, the description does a good job describing what the returned composite profile contains: committee details, recent bills, recent reports, and recent nominations. It also explains why this tool is useful and how it relates to other tools. It does not detail pagination or response structure, but those are partially covered by the schema's limit parameter and are less critical for a read-only composite endpoint.

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

Parameters3/5

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

The input schema already covers all three parameters with 100% description coverage, including the chamber enum and a concrete committee_code example. The description does not add new parameter-level meaning beyond the schema, which matches the baseline expectation when schema coverage is full. The term 'recent' links loosely to the limit parameter but this is not elaborated.

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 distinct resource ('COMPLETE committee profile in ONE call'), and enumerates exactly what it combines: committee details, recent bills referred, recent reports published, and recent nominations referred. It differentiates itself from the four individual committee tools it aggregates, so an agent can tell it apart from siblings without needing to compare schemas.

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 instead of calling congress_committee_details + congress_committee_bills + congress_committee_reports_for_committee + congress_committee_nominations_for_committee individually,' naming the exact alternatives. It also gives an 'Ideal for' use case and suggests cross-referencing with other tools, providing clear when-to-use guidance.

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

congress_committee_house_communicationsA
Read-onlyIdempotent

Get House communications referred to a specific House committee.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
committee_codeYesHouse committee system code (e.g., 'hsgo00')

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the filtering behavior but does not disclose pagination via limit, response shape, sorting, or any additional runtime behavior beyond what annotations already convey.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently states the verb, resource, and scope with no filler. Every word contributes meaning, and the key qualifier 'referred to a specific House committee' appears immediately.

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 two-parameter read-only tool, the core information is present, but the description does not explain the output behavior since there is no output schema, nor does it clarify the relationship to sibling communication tools. It is minimally adequate but leaves the agent without a full picture of the result or selection criteria.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters — committee_code and limit — already have descriptions in the schema. The tool description adds no parameter-level detail beyond the schema, so the baseline score of 3 applies.

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

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 clearly identifies the resource ('House communications') and the filter ('referred to a specific House committee'). This is enough to recognize it as a committee-scoped variant of congress_house_communications, though it does not explicitly name or differentiate the related 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 Guidelines3/5

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

The phrase 'referred to a specific House committee' implies the intended use case: retrieving communications for a particular committee. However, there is no explicit guidance about when to prefer this over congress_house_communications or congress_committee_senate_communications, and no exclusion criteria are stated.

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

congress_committee_meeting_detailsA
Read-onlyIdempotent

Get detailed information about a specific committee meeting including title, committees, witnesses, meeting documents, related bills, and video links.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberYesChamber
congressYesCongress number
event_idYesEvent ID (e.g., '115538')

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds value by listing the content returned, but doesn't disclose any other behavioral aspects like rate limits or required permissions. No contradiction with annotations.

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

Conciseness5/5

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

A single, well-structured sentence that front-loads the core action and then enumerates the returned details. No redundant or vague phrasing; every word earns its place.

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

Completeness4/5

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

The description lists the major response categories (title, committees, witnesses, documents, bills, video links), which is sufficient for a detail endpoint without an output schema. It could mention that event_id must come from a list call, but that's a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (congress, chamber, event_id) is already documented. The description does not add extra meaning beyond what the schema provides, such as how to obtain a valid event_id or format expectations.

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

Purpose4/5

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

The description clearly states it retrieves detailed information about a specific committee meeting, listing the included fields (title, committees, witnesses, documents, bills, videos). It distinguishes itself from list tools like congress_committee_meetings, though it doesn't explicitly name alternatives.

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

Usage Guidelines3/5

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

It implies usage when you have a specific event_id but doesn't explicitly mention when to use this versus sibling detail tools like congress_hearing_details or congress_committee_details. No exclusions or alternative conditions are provided.

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

congress_committee_meetingsB
Read-onlyIdempotent

List committee meetings (hearings, markups, etc.) with dates, locations, and topics. Filter by congress and chamber.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
chamberNoChamber
congressNoCongress number
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context beyond 'list' – it does not describe pagination, sorting, rate limits, or any side effects. The mention of 'hearings, markups, etc.' is resource semantics, not behavioral transparency. No contradiction exists, but little value is added beyond the annotations.

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

Conciseness5/5

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

The description is two sentences with no redundant information. It front-loads the core action and resource, followed by filter capabilities. Every word contributes to understanding what the tool does.

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 list operation with no required parameters and all parameters documented in the schema. The description hints at the return content (dates, locations, topics), which is helpful given no output schema. It is adequate for an agent to invoke correctly, though more explicit mention of the distinction from sibling tools would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented. The description reinforces that filtering by congress and chamber is possible, but this is a direct restatement of the schema. No new meaning or format details are added beyond the schema, warranting the baseline score of 3.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('committee meetings') and includes what is returned (dates, locations, topics). However, it does not differentiate itself from sibling tools like congress_hearings or congress_committee_meeting_details, which could also provide meeting information. This is a clear purpose but without sibling distinction.

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

Usage 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. The description mentions filtering by congress and chamber but does not explain when an agent should choose this over congress_hearings or congress_committee_meeting_details. There are no exclusions or alternative tool references.

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

congress_committee_nominations_for_committeeA
Read-onlyIdempotent

Get nominations referred to a specific committee. Useful for tracking judicial or agency head nominations before a particular Senate committee.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
chamberYesChamber (usually 'senate' for nominations)
committee_codeYesCommittee system code (e.g., 'ssju00' for Senate Judiciary)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive, so the description's burden is lowered. It adds domain context ('judicial or agency head nominations') but does not disclose pagination, response shape, or any query-specific behavior beyond what the schema provides. This is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences with the core action front-loaded and the use case following in one clause. There is no filler or redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

For a list-fetch tool with three parameters and full schema coverage, the description is largely complete. It explains the purpose and use case; the only minor gap is not acknowledging that chamber could be house/joint, but the schema handles that and the Senate focus is appropriate for nominations.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's mention of 'specific committee' and 'Senate committee' slightly supplements the meaning of committee_code and chamber, but it does not materially add semantic value beyond the schema's own descriptions and example.

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 nominations referred to a specific committee using a specific verb and resource. It distinguishes from generic nomination tools by narrowing to committee referral, though it does not explicitly differentiate from the similar-sounding congress_nomination_committees.

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

Usage Guidelines3/5

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

The description provides a concrete use case ('tracking judicial or agency head nominations before a particular Senate committee'), which implies when to use it. However, it does not explicitly mention alternatives or exclusions, leaving the agent to infer when to choose this over congress_nominations or congress_nomination_committees.

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

congress_committee_print_detailsA
Read-onlyIdempotent

Get details about a specific committee print by congress, chamber, and jacket number.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberYesChamber
congressYesCongress number
jacket_numberYesJacket number (e.g., 48144)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds no additional behavioral context beyond the core action, such as return format, pagination, or error behavior. It neither contradicts the annotations nor adds meaningful behavioral detail beyond them, so a middling score is appropriate.

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

Conciseness5/5

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

The description is a single, succinct sentence that front-loads the verb ('Get') and resource ('details about a specific committee print') and immediately names the required identifiers. There is zero wasted wording, and every word contributes to the tool's purpose.

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 read-only detail lookup with complete parameter coverage and annotations conveying safety, the description is largely sufficient. It explains what the tool does and how to identify the resource. The only small gap is that it does not clarify what 'details' include (e.g., metadata only, not text), but given the sibling congress_committee_print_text and the tool name, the distinction is reasonably inferable.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter already described ('Chamber', 'Congress number', 'Jacket number (e.g., 48144)'). The description restates the parameters in prose but adds little new meaning beyond reinforcing that they are the lookup keys. It provides an example for jacket_number in the schema, and the description itself does not deepen the parameter semantics.

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

Purpose5/5

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

The description states the action ('get details'), the resource ('specific committee print'), and the identifiers ('congress, chamber, and jacket number') that define the target. This clearly distinguishes it from sibling tools like congress_committee_prints (which lists prints) and congress_committee_print_text (which retrieves full text).

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you already have the congress, chamber, and jacket number and need details about a committee print. However, it does not explicitly name alternatives or state when not to use it, such as pointing to congress_committee_print_text for full text or congress_committee_prints for a list. Usage guidance is only implied, not explicit.

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

congress_committee_printsA
Read-onlyIdempotent

List committee prints — publications ordered by committees that are not committee reports. Often include Rules Committee prints with bill text for floor consideration.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
chamberNoChamber
congressNoCongress number
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds the behavioral context of listing prints and the distinction from reports, but does not describe pagination, sorting, or default ordering. Since annotations carry the heavy lifting, a 3 is appropriate.

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

Conciseness5/5

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

The description is a single sentence that front-loads the primary purpose, immediately clarifies the distinction from committee reports, and adds a relevant example (Rules Committee prints). No wasted words; every phrase contributes to understanding.

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 list tool with full parameter documentation and comprehensive annotations (read-only, open-world, idempotent, non-destructive), the description sufficiently explains what the tool returns and its scope. It does not cover return format or pagination, but those are typically inferable from the list nature and the absence of an output schema makes them less critical. It is complete enough for correct invocation.

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

Parameters3/5

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

The input schema provides descriptions for all five parameters (limit, chamber, congress, toDateTime, fromDateTime) with 100% coverage. The description does not add any parameter-specific guidance beyond what the schema already states, so it does not exceed the baseline 3 for complete schema coverage.

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

Purpose5/5

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

The description clearly states the tool lists committee prints, specifying the resource (committee prints) and the action (list). It distinguishes from committee reports by explicitly saying 'not committee reports,' which separates it from the sibling tool congress_committee_reports. The additional note about Rules Committee prints with bill text adds useful 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 implies usage by contrasting with committee reports, effectively telling the agent to use this tool for prints rather than reports. However, it does not name an explicit alternative tool or provide conditions for when to choose this over other congress tools, so it's slightly less explicit than a full guideline.

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

congress_committee_print_textB
Read-onlyIdempotent

Get text versions for a committee print. Returns formatted text and PDF URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberYesChamber
congressYesCongress number
jacket_numberYesJacket number

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns formatted text and PDF URLs, which is useful but does not disclose pagination, response size, or whether the text is full or partial. No contradiction with annotations.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the main action and includes the key return details. It earns its place without fluff, though it could add a bit more context without becoming verbose.

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 read-only retrieval tool with three fully documented parameters and no output schema, the description is adequate but minimal. It does not mention whether the response is paginated, how many text versions may exist, or how to handle missing prints. Given the sibling set includes similar text tools, a bit more differentiation would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (congress, chamber, jacket_number). The description does not add any parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('text versions for a committee print'), and mentions return content ('formatted text and PDF URLs'). It is clear, though it does not explicitly distinguish it from the sibling congress_committee_report_text or congress_committee_print_details. The name itself is fairly descriptive, and the description adds the return format detail.

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: call this when you need text versions of a committee print. It does not explicitly state when to use it versus alternatives like congress_committee_print_details or congress_committee_report_text. No exclusions or alternative routing are provided, so the agent must infer from the name and context.

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

congress_committee_report_detailsA
Read-onlyIdempotent

Get detailed information about a specific committee report, including associated bills, title, issue date, and text versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
report_typeYesReport type: 'hrpt' (House Report), 'srpt' (Senate Report), 'erpt' (Executive Report)
report_numberYesReport number (e.g., 617)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds the return content (associated bills, title, issue date, text versions), which is useful context beyond the annotations. However, it does not disclose any other behavioral aspects like pagination or validation rules, but the annotations lower the bar.

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

Conciseness5/5

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

A single, efficient sentence that front-loads the verb and resource, then lists the key return fields. No fluff or repetition, making it 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?

For a detail endpoint with 3 fully documented parameters and no output schema, the description covers the return payload adequately. It does not explain how to discover report numbers or handle invalid combos, but that is minor given the schema and the tool's straightforward nature.

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

Parameters3/5

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

Schema description coverage is 100%: each parameter (congress, report_type, report_number) has a clear description and report_type has an enum. The tool description adds no additional parameter context, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific verb ('Get'), a resource ('committee report'), and the scope ('specific'), listing key return fields (associated bills, title, issue date, text versions). This distinguishes it from list-style siblings like congress_committee_reports and text-only tools like congress_committee_report_text.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. It does not name sibling tools like congress_committee_reports (for listing) or congress_committee_report_text (for text only), nor does it provide conditions or exclusions. The usage is implied by 'specific' but not directly stated.

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

congress_committee_reportsA
Read-onlyIdempotent

List committee reports — formal reports accompanying legislation reported out of committee. Filter by congress, report type (hrpt/srpt/erpt), and conference report flag. Critical for understanding committee intent and legislative history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number
conferenceNoFilter to conference reports only
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
report_typeNoReport type: 'hrpt' (House Report), 'srpt' (Senate Report), 'erpt' (Executive Report)
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds domain context about the content and purpose but does not disclose behaviors such as result ordering, pagination defaults, or the meaning of openWorldHint for this endpoint. No contradiction with annotations exists.

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

Conciseness5/5

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

Three short sentences with no filler. The first states the action, the second lists the filters, and the third gives the research context. Every sentence earns its place and the core information is front-loaded.

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

Completeness4/5

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

For a read-only list tool with rich annotations and a fully documented schema, the description is nearly complete. It provides the domain definition, key filters, and use-case context. It could mention what the response contains or the default congress, but these are not essential for 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 100%, so the baseline is 3. The description reinforces that 'congress', 'report_type', and the conference flag are the key filters, but it adds no syntax, formatting, or default-value details beyond what the schema already provides.

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 a specific verb and resource ('List committee reports') and defines what committee reports are ('formal reports accompanying legislation reported out of committee'). It does not explicitly distinguish itself from sibling tools like congress_committee_reports_for_committee or congress_committee_report_details, but the word 'List' and the filter emphasis imply a top-level list operation.

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—when you need a filtered list of committee reports for legislative history research ('Critical for understanding committee intent and legislative history'). However, it does not mention any alternative tools or when-not scenarios, so an agent is left to infer routing decisions from the name and siblings.

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

congress_committee_reports_for_committeeA
Read-onlyIdempotent

Get reports published by a specific committee. Shows formal committee reports accompanying legislation — use congress_committees to find the committee system code.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
chamberYesChamber
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z
committee_codeYesCommittee system code (e.g., 'hsju00')

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the type of content (formal committee reports accompanying legislation), which is useful. However, it does not describe pagination, return format, or any edge-case behavior. Given the annotations cover safety, a 3 is appropriate for the incremental value added.

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

Conciseness5/5

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

The description is two sentences with zero redundancy. The primary purpose is front-loaded, and the secondary hint about committee code is concise and actionable. Every word earns its place.

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

Completeness4/5

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

For a filtered list tool with full schema coverage and annotations covering safety, the description is sufficiently complete. It states the scope, the required input, and where to find the committee code. It does not describe return fields or pagination, but given the absence of an output schema and the simplicity of a list endpoint, this is not a critical gap. The description is adequate for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all five parameters. The description adds meaning to committee_code by pointing to congress_committees for finding the code, and implies chamber and committee_code are needed. It doesn't add anything about limit, fromDateTime, or toDateTime beyond what the schema provides. Baseline 3 is correct given full schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Get'), a specific resource ('reports published by a specific committee'), and clarifies the nature of these reports ('formal committee reports accompanying legislation'). This clearly distinguishes it from other committee-related tools like prints, meetings, or general committee reports. The mention of 'specific committee' and the committee code requirement sets it apart from congress_committee_reports.

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 by indicating the tool is for a specific committee and directs the agent to use congress_committees to find the committee system code. It doesn't explicitly exclude alternatives like the general congress_committee_reports, but the name and context make the intended use clear. This is more than implied guidance, though it stops short of explicit when-not-to-use instructions.

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

congress_committee_report_textA
Read-onlyIdempotent

Get text versions for a committee report. Returns formatted text and PDF URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
report_typeYesReport type: 'hrpt' (House Report), 'srpt' (Senate Report), 'erpt' (Executive Report)
report_numberYesReport number

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description only needs to add context. It adds that the tool returns formatted text and PDF URLs, which is useful. No contradictory behavior is disclosed. However, it does not describe pagination, response size, or potential limitations, but for a simple read-only tool this is acceptable.

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

Conciseness5/5

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

Two sentences with no wasted words. The primary action and output are front-loaded in the first sentence, and the second sentence adds a crucial detail about the return value. It is compact and scannable.

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

Completeness4/5

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

With no output schema, the description should clarify return values, and it does indicate 'formatted text and PDF URLs'. For a simple retrieval tool with well-documented parametersainer, this is nearly complete. A slight gap is not specifying how text versions are structured (e.g., HTML vs plain text), but the essentials are present.

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

Parameters3/5

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

Schema description coverage is 100% for all three parameters (congress, report_type, report_number), each with clear descriptions including the enum meanings for report_type. The tool description adds no additional parameter-level info, so the baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Get text versions') and the resource ('a committee report'), and specifies the output ('formatted text and PDF URLs'). This distinguishes it from sibling tools like congress_committee_report_details, which likely focuses on metadata, and congress_committee_reports, which likely lists reports.

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: use when you need the full text or PDF link of a known committee report. However, it does not explicitly mention alternatives or conditions for when not to use it. Given the tool's clear purpose, the usage context is inferable but not stated.

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

congress_committeesA
Read-onlyIdempotent

List congressional committees. Filter by congress number and/or chamber (house, senate, joint). Returns committee name, system code, and chamber.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 50)
chamberNoChamber
congressNoCongress number (e.g., 119). Default: current
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering the safety profile. The description adds that results include committee name, system code, and chamber, but says nothing about pagination behavior or defaults beyond what the schema provides. This meets the lower bar for tools with annotations, though richer details would be welcome.

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

Conciseness5/5

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

Two sentences with no fluff. The primary action is front-loaded, filters and output fields are stated in a compact second sentence. Every word earns its place.

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

Completeness4/5

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

For a simple list tool with safe annotations and a fully documented schema, the description covers the essential return fields and filters. It does not explain default congress behavior or result ordering, but the schema provides the default for congress, and the tool's simplicity makes it unlikely an agent would need more.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description ('Filter by congress number and/or chamber') largely repeats the schema's parameter descriptions without adding semantic nuance. The baseline 3 is appropriate since the schema carries the load.

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?

States a specific verb ('List') and resource ('congressional committees'), with explicit filter dimensions (congress number, chamber) and return fields. Clearly distinguishes itself from sibling committee tools (e.g., congress_committee_details, congress_committee_bills) by focusing on the simple list of committees.

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 it lists committees and can be filtered by congress/chamber, giving clear context for when to call it. It does not explicitly name alternatives or state when not to use it, but the narrow scope makes confusion unlikely among the many sibling congress tools.

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

congress_committee_senate_communicationsA
Read-onlyIdempotent

Get Senate communications referred to a specific Senate committee.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
committee_codeYesSenate committee system code (e.g., 'ssfr00')

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe-read profile is well covered. The description adds no additional behavioral context such as pagination, rate limits, or response shape, but the annotation coverage lowers the burden.

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

Conciseness4/5

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

The description is a single sentence with no filler and the resource is front-loaded. It loses a point for minor redundancy ('Senate' repeated) and for not adding any distinguishing detail beyond the tool name.

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 read-only list tool with two well-documented parameters and safety annotations, the description is largely sufficient. It does not explain return values, but the absence of an output schema and the straightforward resource name make this a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%: committee_code is documented with an example ('ssfr00') and limit has default/max constraints. The description adds no parameter-specific meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('Senate communications referred to a specific Senate committee'), which is clear and distinguishes it from House committee communications. However, it does not explicitly name or differentiate among related siblings like congress_senate_communications or congress_committee_house_communications.

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 scope 'referred to a specific Senate committee' implies when this tool is appropriate, but there is no explicit when-not guidance or pointer to alternatives. With many communication-related sibling tools, more explicit routing would improve this dimension.

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

congress_congressional_recordB
Read-onlyIdempotent

Get Congressional Record issues — the official daily record of debate, speeches, and proceedings in Congress. Filter by year, month, and day.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNoDay of month
yearNoYear (e.g., 2024)
limitNoMax results (default: 20)
monthNoMonth (1-12)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the record is the 'official daily record,' but this is more about purpose than behavior; it does not disclose pagination, rate limits, or return structure beyond what annotations imply.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that efficiently states the action and core filtering capability. However, it could be improved by adding a note about the existence of daily/bound siblings, which would make it more useful without much extra length.

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

Completeness3/5

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

The description is adequate for understanding the basic function, but it lacks explicit guidance on choosing among the congressional record variants (daily, bound, and this general one), which are present in the sibling list. Since there is no output schema, the description also does not clarify the return structure, leaving the tool slightly incomplete for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a description (e.g., 'Day of month', 'Year (e.g., 2024)'). The tool description only reiterates filtering by year, month, and day, adding no new meaning beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly identifies the tool as retrieving Congressional Record issues, the official daily record of debate, speeches, and proceedings in Congress. It names the resource and the verb, but it does not distinguish itself from sibling tools like congress_daily_congressional_record or congress_bound_congressional_record, so it lacks sibling differentiation.

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 the daily or bound congressional record siblings. It only mentions filter capabilities (year, month, day) without explaining what makes this endpoint the right choice, leaving an agent to guess among related tools.

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

congress_crs_report_detailsA
Read-onlyIdempotent

Get detailed information about a specific CRS report by report number/ID. Returns full summary, authors, topics, related legislation, and format links (PDF, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
report_numberYesThe report number or ID (e.g., 'R47175', 'RL33110', 'IF12345')

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds value by specifying the output fields (summary, authors, topics, related legislation, format links), which goes beyond the annotations. It doesn't mention potential error cases or pagination, but for a simple read operation 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?

The description is a single, front-loaded sentence that states the purpose and the key output. Every word contributes to clarity; there is no redundancy or fluff. It efficiently communicates both the action and the expected result.

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 single-parameter read tool with no output schema, the description is sufficiently complete. It lists the return fields so an agent knows what to expect. It doesn't mention edge cases like nonexistent report numbers, but given the simplicity and the annotations, this is not a critical gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter report_number is well documented with examples. The description mentions 'report number/ID' but doesn't add additional meaning beyond the schema. Baseline of 3 is appropriate when schema already provides full 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 'get', the resource 'detailed information about a specific CRS report', and the key identifier 'report number/ID'. It also enumerates the returned content (summary, authors, topics, related legislation, format links), which distinguishes it from the sibling congress_crs_reports (likely a list tool) and other detail 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 clearly implies that this tool is used when you have a specific report number, which is a clear usage context. It doesn't explicitly mention alternatives like congress_crs_reports for finding numbers, but the purpose is unambiguous enough to route an agent correctly. No exclusions are stated, but the context is clear.

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

congress_crs_reportsB
Read-onlyIdempotent

Get Congressional Research Service reports — authoritative, nonpartisan analysis on legislative topics. CRS reports are considered the gold standard for policy research.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the qualitative context that CRS reports are 'gold standard' for policy research, which is useful for judging relevance, but it does not disclose behavior such as whether results are sorted by date, whether the date filters are inclusive, or whether the tool returns summaries or full text. With annotations covering safety, a 3 is appropriate.

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

Conciseness4/5

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

The description is two sentences and front-loads the core purpose. The second sentence adds qualitative context that helps an agent judge relevance. No wasted words, though the qualitative claim is somewhat promotional rather than operational.

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 read-only list tool with three optional parameters and no output schema, the description is adequate but not complete. It does not mention what fields are returned, whether results are paginated, or how the date filters behave. The sibling congress_crs_report_details suggests a detail counterpart, but the description does not clarify the relationship. An agent could call this tool correctly, but it would be guessing about the return shape.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (limit, toDateTime, fromDateTime). The description adds no parameter-specific meaning beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly identifies the tool as retrieving Congressional Research Service reports and characterizes them as authoritative, nonpartisan analysis on legislative topics. It distinguishes the resource (CRS reports) but does not explicitly differentiate it from the sibling congress_crs_report_details, which likely retrieves a single report's details. The verb 'Get' is specific enough, and the resource is clear, but the lack of explicit sibling differentiation keeps it from a 5.

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

Usage Guidelines3/5

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

The description implies this is the general entry point for CRS reports, but it does not state when to use this tool versus congress_crs_report_details or other congress_* search tools. There is no explicit when/when-not guidance or mention of alternatives. The context of 'policy research' gives some implied usage, but an agent would have to infer the distinction from the sibling name.

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

congress_daily_congressional_recordA
Read-onlyIdempotent

Get daily Congressional Record issues with sections (Senate, House, Extensions of Remarks, Daily Digest). Filter by volume and issue number for specific issues, or list recent issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
issue_numberNoIssue number (requires volume_number)
volume_numberNoVolume number (e.g., 171)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description only adds modest context: the resource contains four named sections and calling without filters returns recent issues. It does not disclose response format or pagination, but those are less critical given the annotations and simple GET nature.

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?

One sentence, about 30 words, with the core purpose front-loaded and no filler. Every phrase earns its place by conveying either the resource contents, the filtering options, or the fallback list behavior.

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 read-only tool with zero required parameters and no output schema, the description covers what the tool returns (sections) and the two ways to invoke it (specific volume/issue or recent list). It does not address overlap with sibling congressional record tools, but within its own scope an agent has enough to select and call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the relationship between volume_number and issue_number as jointly used for 'specific issues,' and by indicating that omitting them lists recent issues—semantics not fully captured by the individual parameter descriptions.

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') with a clear resource ('daily Congressional Record issues') and even enumerates the section types (Senate, House, Extensions of Remarks, Daily Digest). It distinguishes from 'bound' volumes via the word 'daily,' though it does not explicitly differentiate from the sibling 'congress_congressional_record.'

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

Usage Guidelines3/5

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

The description gives clear usage modes: filter by volume and issue number for specific issues, or list recent issues. However, it never explicitly says when to prefer this tool over the similar sibling tools 'congress_congressional_record' or 'congress_bound_congressional_record,' so differentiation is left implied.

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

congress_hearing_detailsB
Read-onlyIdempotent

Get detailed information about a specific hearing including title, date, committees, associated meeting, citation, and available text formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberYesChamber
congressYesCongress number
jacket_numberYesHearing jacket number

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds what data is returned but does not disclose behavior like pagination, error handling, or authorization requirements. Given annotations cover the main behavioral traits, a 3 is appropriate.

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

Conciseness5/5

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

A single, front-loaded sentence that immediately conveys the purpose and lists the return contents. No redundant information or filler.

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 lists return fields but does not explain how to acquire the required jacket_number or mention potential error cases. With no output schema, it partially compensates but leaves the agent to infer the discovery path. Adequate for a straightforward detail lookup.

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

Parameters3/5

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

Schema description coverage is 100%, but the parameter descriptions are minimal ('Chamber', 'Congress number', 'Hearing jacket number'). The description does not add meaning beyond these, such as explaining how jacket_number relates to congress and chamber or where to obtain it. It meets the baseline but does not enrich understanding.

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

Purpose4/5

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

The description clearly states it retrieves detailed information about a specific hearing and enumerates the key fields (title, date, committees, etc.). It distinguishes itself from listing tools like congress_hearings by focusing on a specific hearing, though it doesn't explicitly name 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 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 that it requires a jacket number from a prior search, nor does it point to congress_hearings or similar tools for finding hearings. The usage context is implied but not explicit.

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

congress_hearingsA
Read-onlyIdempotent

List congressional hearings. Filter by congress and chamber. Hearings are formal proceedings where committees gather testimony from witnesses.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
chamberNoChamber
congressNoCongress number

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds that filtering by congress and chamber is supported, and gives helpful domain context about hearings, but does not disclose pagination, result shape, or other 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.

Conciseness4/5

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

Two sentences with a clear, front-loaded imperative instruction. The second sentence defining hearings is optional context but not wasteful, keeping the description appropriately sized.

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 list tool with optional parameters and full schema coverage, this description is mostly sufficient. It clearly states what the tool lists and the key filters, though it could benefit from a brief note distinguishing it from hearing_details.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description only restates that congress and chamber can be used as filters, adding no new semantic detail beyond the schema.

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 states a specific verb and resource: 'List congressional hearings', which clearly identifies the operation. It briefly distinguishes from related siblings like congress_hearing_details by focusing on listing rather than details, though it does not name alternatives explicitly.

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 its use: to list hearings, optionally filtered by congress and chamber. However, it provides no explicit guidance about when to choose this tool over closely related siblings such as congress_hearing_details or congress_nomination_hearings.

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

congress_house_communication_detailsB
Read-onlyIdempotent

Get detailed information about a specific House communication including abstract, committees, submitting agency, and legal authority.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
communication_typeYesCommunication type: 'ec' (Executive Communication), 'ml' (Memorial), 'pm' (Presidential Message), 'pt' (Petition)
communication_numberYesCommunication number

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the returned content, but it does not disclose behaviors such as pagination, error handling, or what happens when the specified communication is not found. This is acceptable but not rich.

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

Conciseness5/5

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

A single, focused sentence that front-loads the operation and resource, then efficiently lists the distinguishing return fields. There is no wasted text or repetition of schema details.

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 detail-retrieval tool with fully documented required parameters and read-only annotations, the description provides enough context about what the tool returns. It does not explain how to obtain the required identifiers or how to handle invalid combinations, but these are minor gaps for a well-scoped lookup endpoint.

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

Parameters3/5

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

Schema description coverage is 100%, with congress, communication_type, and communication_number all described directly in the input schema. The description does not add parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the action ('Get detailed information'), the resource ('a specific House communication'), and lists the meaningful fields returned (abstract, committees, submitting agency, legal authority). It is distinguishable from list-oriented siblings like congress_house_communications, though it does not explicitly name any alternative.

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 about when to use this tool versus congress_house_communications, congress_senate_communication_details, or congress_house_requirement_details. The word 'specific' implies this is a detail lookup, but the description does not state when an agent should choose it or what prior step would provide the required identifiers.

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

congress_house_communicationsA
Read-onlyIdempotent

List House communications — executive communications, memorials, presidential messages, and petitions referred to House committees. Types: ec (Executive Communication), ml (Memorial), pm (Presidential Message), pt (Petition).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number
communication_typeNoCommunication type: 'ec' (Executive Communication), 'ml' (Memorial), 'pm' (Presidential Message), 'pt' (Petition)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the list of communication types and their codes, which is useful, but it does not disclose pagination behavior, default ordering, or whether results are limited to a specific congress. It does not contradict the annotations.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the core action and resource, then provides the type mapping in a compact list. Every sentence earns its place.

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

Completeness4/5

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

For a simple list tool with no required parameters and full schema coverage, the description is mostly complete. It could mention that results are paginated via limit and that congress is optional, but the schema already covers those details. The lack of an output schema is not a major gap for a list endpoint.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (limit, congress, communication_type). The description adds the enum expansion for communication_type, but that is also present in the schema. It does not add meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists House communications and enumerates the specific types (executive communications, memorials, presidential messages, petitions). It distinguishes itself from related tools like congress_senate_communications and congress_house_communication_details by focusing on the list-level House communications endpoint.

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

Usage Guidelines4/5

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

The description implies usage for listing House communications and provides the type filter values, but it does not explicitly state when to use this tool versus alternatives like congress_house_communication_details or congress_committee_house_communications. The context signals show many sibling tools, so explicit routing guidance would improve it.

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

congress_house_requirement_detailsB
Read-onlyIdempotent

Get detailed information about a specific House requirement including legal authority, frequency, nature, and matching communications count.

ParametersJSON Schema
NameRequiredDescriptionDefault
requirement_numberYesRequirement number (e.g., 8070)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the description need not restate safety. It adds value by listing the content fields, but it does not disclose error behavior, pagination (unlikely for a single object), or any special constraints beyond what annotations imply.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the action ('Get detailed information') and immediately lists key content. There is no fluff or redundant phrasing, making it highly concise and clear.

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 detail tool with one parameter and no output schema, the description covers the essential purpose and content. It could mention that the requirement_number typically comes from congress_house_requirements, but this is a minor gap given the tool's simplicity and the annotations covering safety.

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

Parameters3/5

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

The schema provides a description for the single parameter (requirement_number), so schema coverage is 100%. The tool description adds no extra meaning about the parameter, such as where to obtain it or how it maps to the data. Baseline of 3 is appropriate because the schema carries the burden.

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 detailed information about a specific House requirement and lists the included aspects (legal authority, frequency, nature, matching communications count). It is specific about the resource and purpose, though it does not explicitly contrast with sibling tools like congress_house_requirements or congress_house_requirement_matching_communications.

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 prerequisites such as obtaining the requirement number from congress_house_requirements, nor does it differentiate from the matching communications tool. Usage context is left entirely to the agent's inference.

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

congress_house_requirement_matching_communicationsA
Read-onlyIdempotent

Get communications that match a specific House requirement. Shows agency submissions fulfilling a recurring reporting obligation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
requirement_numberYesRequirement number (e.g., 8070)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the results are 'agency submissions fulfilling a recurring reporting obligation,' which provides context about the nature of the data but doesn't disclose additional behavioral traits like pagination, sorting, or response format. Since annotations cover the critical safety aspects, the description adds modest value beyond them, earning a middle score.

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: two sentences, no filler, and the primary action is front-loaded. Every word contributes to understanding the tool's purpose. It effectively communicates the core function without unnecessary elaboration, 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.

Completeness4/5

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

For a simple filtered-list tool with only two parameters and no output schema, the description provides sufficient context: it explains what the tool returns (communications matching a requirement) and the nature of those communications. While it doesn't detail the response format or pagination, these are likely standard for similar tools and the schema covers the limit parameter. The description is adequate for an agent to make a correct call, though it could be slightly richer about the return structure.

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

Parameters3/5

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

The input schema has 100% description coverage: both 'requirement_number' and 'limit' have explicit descriptions in the schema. The tool description does not add any extra meaning to the parameters beyond what the schema provides. According to the rubric, when schema coverage is high (>80%), the baseline is 3, and the description does not compensate with additional details, so it stays at 3.

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

Purpose4/5

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

The description clearly states the tool's purpose: retrieving communications that match a specific House requirement. It uses a specific verb ('Get') and resource ('communications') and adds context that these are agency submissions for a recurring reporting obligation. While it doesn't explicitly differentiate from sibling tools like congress_house_communications or congress_house_requirement_details, the phrase 'matching a specific House requirement' implies a filtering function that is distinct. It is clear enough for an agent to understand the core function.

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

Usage Guidelines3/5

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

The description implies the usage scenario: you need a requirement number to fetch matching communications. However, it does not explicitly state when to use this tool over alternatives (e.g., when you have a requirement number versus browsing all communications). There is no mention of exclusions or alternatives, so the guidance is implied rather than explicit. This is adequate but not strongly prescriptive.

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

congress_house_requirementsB
Read-onlyIdempotent

List House requirements — recurring reporting obligations from executive agencies to Congress. Shows requirement number, frequency, and matching communications count.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it shows requirement number, frequency, and matching communications count, which hints at the output structure but doesn't go beyond that. It doesn't disclose any pagination, sorting, or auth requirements. Given the annotations cover the main behavioral traits, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the purpose and then mentions the displayed fields. There is no wasted text, and it's easy to parse. It could be slightly more structured, but it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description adequately conveys the main purpose and some output fields. It doesn't mention any additional filters or sorting options, but given the schema only has 'limit', that's not necessary. It gives enough context for an agent to decide when to use it and what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'limit', has a schema description ('Max results (default: 20)') that fully documents its purpose. Schema coverage is 100%, so the baseline is 3. The tool description does not add any additional meaning about the parameter, so it stays at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: 'List House requirements — recurring reporting obligations from executive agencies to Congress.' It also specifies the fields shown (requirement number, frequency, matching communications count). It doesn't explicitly differentiate from siblings like congress_house_requirement_details, but the term 'List' implies it's an overview, while 'details' would be for a specific item. Overall, it's specific and distinguishable enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus related ones like congress_house_requirement_details or congress_house_requirement_matching_communications. It doesn't mention alternatives or conditions for selection. The agent is left to infer that this is for listing requirements, but no explicit 'use this for X, that for Y' guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_house_votesA
Read-onlyIdempotent

Get House of Representatives roll call vote results with member-level party breakdown. Primary source: Congress.gov API (118th-119th Congress); falls back to clerk.house.gov XML for older congresses. Coverage: 1990 to present. Use year param for historical votes. Cross-reference with: congress_senate_votes (same bill's Senate vote), FEC (congress_member donors via fec_candidate_financials), lobbying_search (who lobbied on the bill), FRED (economic impact 1-3 years after passage). For Senate votes, use congress_senate_votes.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoCalendar year (e.g. 2024). Overrides congress+session if provided.
limitNoMax results when listing votes (default: 20)
sessionNoSession (1 or 2). Default: current session
congressNoCongress number (default: current). Used with session to determine year.
vote_numberNoSpecific roll call vote number. Omit to list recent votes.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds concrete behavioral context: primary source (Congress.gov API), fallback (clerk.house.gov XML), coverage period (1990–present), and that results include member-level party breakdown. It doesn't mention pagination or output format, but those are minor given the annotations carry the safety profile.

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?

Three sentences, each with a distinct role: (1) purpose and result granularity, (2) data source and coverage, (3) cross-references and alternative routing. No redundancy, and it front-loads the core purpose. The cross-reference list is long but relevant and organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 optional parameters, no output schema, and annotations covering safety, the description supplies the essential context: data source/fallback, coverage years, how to request historical data (year param), and how to connect to sibling tools. It does not explicitly state that omitting all params returns a list of recent votes, but that's inferable from the limit parameter and the phrase 'roll call vote results.' Overall sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (each of the 5 parameters has a description), so the baseline is 3. The description adds a small but useful hint: 'Use year param for historical votes.' This helps an agent decide when to override the default current congress/session behavior, slightly enhancing the schema 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 states a specific verb ('Get') and resource ('House of Representatives roll call vote results') with a distinguishing detail ('member-level party breakdown'). It differentiates from congress_senate_votes by explicitly directing Senate queries there, so an agent can select correctly without opening schemas.

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 and alternatives: says to use congress_senate_votes for Senate votes, recommends the year parameter for historical votes, and lists cross-referencing tools (FEC, lobbying_search, FRED) for enriched analysis. This is above-and-beyond guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_infoA
Read-onlyIdempotent

Get information about congresses and their sessions — start/end dates, session numbers, and chambers. Use to look up when a congress was in session, or get current congress details.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results when listing (default: 20)
currentNoSet true to get the current congress info
congressNoSpecific congress number (e.g., 118). Omit to list recent congresses

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds that the tool returns session dates, numbers, and chambers—useful but not behavioral. It doesn't mention pagination limits or the 'omit congress to list recent congresses' behavior, which the schema already documents. With annotations covering the main behavioral traits, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The primary purpose is front-loaded, and the usage context follows immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with three optional parameters fully described in the schema and safety carried by annotations, the description covers the common use cases — looking up session dates and getting current congress. It doesn't need to repeat schema details or output format, and no critical information is missing for selecting and invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters (limit, current, congress) with descriptions. The description only reiterates that 'current congress details' can be obtained, which maps to the 'current' parameter. No additional semantic meaning beyond the schema is provided, so baseline 3 is correct.

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 a precise resource ('congresses and their sessions'), then lists the data fields ('start/end dates, session numbers, and chambers'). This clearly distinguishes it from all sibling congress tools like congress_search_bills or congress_member_details, so an agent can tell what this tool is for without inspecting the schema.

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: 'Use to look up when a congress was in session, or get current congress details.' This tells an agent when to call the tool. It does not explicitly name alternatives or exclusions, but no sibling tool covers the same functionality, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_law_detailsA
Read-onlyIdempotent

Get detailed information about a specific public or private law, including sponsors, CBO cost estimates, committee reports, and constitutional authority statement. Requires congress number, law type, and law number.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number (e.g., 118, 119)
law_typeYesLaw type: 'pub' (Public Law), 'priv' (Private Law)
law_numberYesLaw number (e.g., 274 for Public Law 118-274)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety behavior is covered. The description adds value by listing the categories of data returned, but it does not mention potential failure modes, pagination, or whether full text is included, which would enrich the behavioral picture.

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 purpose, lists key response contents, and specifies the required parameters. There is no fluff or repetition; every clause contributes useful 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?

The tool is a simple identifier-based lookup, and annotations cover safety, but with no output schema the description must compensate. It lists several content areas but uses 'including', leaving uncertainty about other returned fields. It also does not clarify how this relates to the many congressional sibling tools, so an agent may still be unsure what exactly to expect or when this is the best choice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already has a clear description with examples (e.g., '118', 'pub', '274'). The description only restates the requirement for congress number, law type, and law number without adding deeper semantic 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 states a specific action ('Get detailed information'), a specific resource ('public or private law'), and names concrete content areas (sponsors, CBO cost estimates, committee reports, constitutional authority statement). This clearly distinguishes it from the sibling congress_bill_details, which concerns bills rather than enacted laws.

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 makes the core use case clear: retrieve details for a specific law given congress, law type, and law number. However, it does not explicitly contrast this with bill-related tools or say when not to use it, leaving the agent to infer that laws differ from bills.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_member_billsA
Read-onlyIdempotent

Get bills sponsored or cosponsored by a specific member of Congress. Requires the member's BioGuide ID (use congress_search_members to find it).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoBill relationship type (default: sponsored)
limitNoMax results (default: 20)
bioguide_idYesMember's BioGuide ID (e.g., 'S000033' for Bernie Sanders, 'C001098' for Ted Cruz)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral detail that it returns bills sponsored or cosponsored, but does not disclose output structure, pagination, or any limitations (e.g., default congress). Given the annotations, a score of 3 is appropriate – it adds some context but not rich behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero unnecessary words. The verb and resource are front-loaded, and the prerequisite is stated in the second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with rich annotations and a fully documented schema, the description is complete enough for an agent to call it correctly. It explains the core purpose, the required parameter, and how to obtain it. The lack of an output schema is acceptable since the description makes clear it returns bills, and the agent can infer the structure from the domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (type, limit, bioguide_id) are already documented in the schema. The description only repeats that the bioguide_id is required and mentions 'sponsored or cosponsored' which mirrors the type enum. It adds minimal value beyond the schema, hence a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a precise resource ('bills sponsored or cosponsored by a specific member of Congress'). It clearly differentiates from sibling tools like congress_bill_cosponsors (which deals with a specific bill's cosponsors) and congress_search_members (which is about member lookup). The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the required parameter (BioGuide ID) and directs the agent to the sibling tool congress_search_members to obtain it. This provides clear context for when to use the tool. However, it does not mention when not to use it or alternatives for bill-related queries beyond the ID lookup, 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.

congress_member_detailsA
Read-onlyIdempotent

Get detailed information about a specific member of Congress by BioGuide ID. Returns full bio, party history, all terms served, committee assignments, photo URL, and official website.

Use congress_search_members first to find the BioGuide ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioguide_idYesBioGuide ID (e.g., 'P000197' for Pelosi, 'M000355' for McConnell)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is read-only, idempotent, and non-destructive. The description adds what data is returned but does not disclose additional behavioral traits such as pagination, missing-member handling, or relation to the full profile variant. With this annotation coverage, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The core action and return contents are front-loaded, and the prerequisite workflow is stated in a compact second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only lookup tool with strong annotations, the description is reasonably complete. It lists the expected return content and the prerequisite lookup step. Since there is no output schema, the return-value summary helps compensate, though it could be slightly more explicit about behavior for unknown IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the one parameter is already documented with examples ('P000197' for Pelosi). The description reinforces that the parameter is a BioGuide ID and suggests how to find it, but it does not add material semantic detail beyond the schema. This meets the baseline for high schema coverage.

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 detailed information') and a clear resource ('specific member of Congress by BioGuide ID') and lists the main content returned. It clearly separates this from search-oriented tools by telling the agent to use congress_search_members first, though it does not explicitly differentiate it from similar detail tools like congress_member_full_profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit prerequisite: 'Use congress_search_members first to find the BioGuide ID.' This tells the agent the correct workflow before calling this tool. However, it does not mention when to prefer this over congress_member_full_profile or congress_member_bills, so the guidance is useful but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_member_full_profileA
Read-onlyIdempotent

Get a COMPLETE member of Congress profile in ONE call — combines bio/details, recent sponsored legislation, and recent cosponsored legislation (3 endpoints in parallel). Returns party history, terms served, committee assignments, photo, website, plus legislative activity.

Use this instead of calling congress_member_details + congress_member_bills (sponsored) + congress_member_bills (cosponsored) individually.

Ideal for: Accountability research — cross-reference with FEC (fec_candidate_financials) for donors, lobbying_search for industry lobbying, and congress_house_votes / congress_senate_votes for voting record.

ParametersJSON Schema
NameRequiredDescriptionDefault
bill_limitNoMax bills to return per category (default: 20)
bioguide_idYesMember's BioGuide ID (e.g., 'P000197' for Pelosi, 'M000355' for McConnell). Use congress_search_members to find it.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it is a safe read operation. The description adds that it combines three endpoints in parallel, implying performance benefits, and lists the types of data returned. It does not explicitly state rate limits or potential large response sizes, but given the annotations, this is adequate. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a bold headline for the tool's purpose, a clear list of returned data, and a 'when to use' section with examples. It is relatively concise given the complexity of the tool. However, the latter part about 'Ideal for' could be seen as less essential, but it helps in selecting the right tool for research. No fluff, but could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only 2 parameters, and the schema covers them well. With no output schema, the description does a good job of listing what data is returned (party history, terms served, committee assignments, photo, website, legislative activity). It also provides context for how to find the bioguide_id. However, it does not mention pagination or potential size of the response, but for a composite tool, this is satisfactory. The description is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds value by explaining how to use bioguide_id: it gives examples (P000197 for Pelosi, M000355 for McConnell) and tells you to use congress_search_members to find it. This goes beyond the schema's description. For bill_limit, the description says 'Max bills to return per category (default: 20)', but the schema already states that; however, the description clarifies that it applies per category. Overall, it adds meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to get a complete member of Congress profile in one call, combining bio/details, sponsored, and cosponsored legislation. It explicitly lists what is returned (party history, terms served, committee assignments, photo, website, legislative activity) and distinguishes it from individual endpoint calls. This is a specific verb (get) + resource (complete member profile) that clearly differentiates from siblings like congress_member_details.

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 tells when to use this tool: instead of calling three individual endpoints (congress_member_details, congress_member_bills for sponsored and cosponsored) separately. It also provides ideal use cases (accountability research) and suggests complementary tools (fec_candidate_financials, lobbying_search, congress_house_votes/senate_votes). This is clear guidance on when and 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.

congress_nomination_committeesA
Read-onlyIdempotent

Get committees associated with a nomination. Shows committee activities (referral, hearing, discharge).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
nomination_numberYesNomination number

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds that the tool shows committee activities (referral, hearing, discharge), which is useful context beyond annotations. No contradictions. It doesn't describe pagination or response structure, but the annotations hold the safety profile, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The primary action is front-loaded ('Get committees associated with a nomination'), and the second sentence adds concise clarifying details. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with annotations covering safety and a clear output focus (committees and their activities), the description is complete enough to select it. It specifies the input parameters implicitly via the context. Missing nuances like response format are not critical given the absence of an output schema and the tool's simple scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for both parameters (congress and nomination_number). The description does not add extra meaning beyond what the schema states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get committees associated with a nomination' and clarifies the scope with 'Shows committee activities (referral, hearing, discharge)'. This clearly differentiates it from sibling tools like congress_nomination_hearings and congress_nomination_details by stating exactly what kind of data it returns.

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: use when you need committees for a nomination bob. It does not explicitly mention alternatives or conditions when not to use this tool. With many similar congress sibling tools, explicit routing would be helpful, but the description at least signals its intended purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_nomination_detailsA
Read-onlyIdempotent

Get detailed information about a specific presidential nomination, including all actions (committee referral, hearing, vote, confirmation/rejection).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
nomination_numberYesNomination number (PN number)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful scope by naming the action stages returned, but it does not disclose response format, pagination, or what happens when a nomination has no recorded actions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the tool's purpose and packs the relevant action taxonomy into a parenthetical. No filler, no repeated annotation 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?

The two parameters are fully documented in the schema and the description states what the tool returns. Without an output schema, a bit more detail about the response shape would improve completeness, but the low parameter complexity and rich annotations make this sufficient 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'Congress number' and 'Nomination number (PN number)' already documented. The description adds no additional parameter meaning, which matches the baseline for fully covered schema 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 uses a specific verb ('Get detailed information') and a concrete resource ('specific presidential nomination'), then enumerates the action types covered (committee referral, hearing, vote, confirmation/rejection). This clearly distinguishes it from list-oriented siblings like congress_nominations and narrower tools like congress_nomination_hearings.

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?

There is no explicit guidance about when to choose this tool over siblings such as congress_nomination_full_profile, congress_nomination_nominees, or congress_nomination_committees. The phrase 'specific presidential nomination' implies a detail lookup but provides no selection conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_nomination_full_profileA
Read-onlyIdempotent

Get a COMPLETE presidential nomination profile in ONE call — combines nomination details, full action timeline, committee referrals/activity, and associated hearings (4 endpoints in parallel). Use this instead of calling congress_nomination_details + congress_nomination_committees + congress_nomination_hearings individually.

Ideal for: Tracking judicial and executive nominations from submission through confirmation/rejection. Cross-reference with lobbying_search for industry interest in the nominee.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
nomination_numberYesNomination number (PN number)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond the annotations: it reveals that the tool makes parallel calls to 4 endpoints, that it is a composite/aggregation tool, and that it returns a combined profile. This helps the agent understand the tool's behavior and potential performance characteristics. It doesn't describe pagination or response format, but for a composite read tool with these annotations, the description adds meaningful 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 and front-loaded: the first sentence states the core value proposition ('COMPLETE presidential nomination profile in ONE call') and the components. The second sentence provides explicit routing guidance. The 'Ideal for' section adds use-case context. Every sentence earns its place, and the description is appropriately sized for a composite tool that needs to explain its aggregation behavior.

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 composite tool with 2 well-documented parameters, no output schema, and strong annotations, the description is quite complete. It explains what data is aggregated, when to use it, and even suggests a complementary tool (lobbying_search). The only minor gap is that it doesn't describe the response structure or whether the combined profile has any limitations (e.g., missing data if one endpoint fails), but given the annotations and the tool's straightforward read-only nature, this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (congress and nomination_number). The description doesn't add parameter-level detail beyond what the schema provides, but it does mention 'nomination_number (PN number)' in the schema itself. The description's mention of 'presidential nomination profile' and 'nomination details' implies the parameters identify a specific nomination, but it doesn't add syntax or format details. Baseline 3 is appropriate since the schema carries the parameter documentation burden.

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 a COMPLETE presidential nomination profile in ONE call' and enumerates the four data components it combines (nomination details, action timeline, committee referrals/activity, hearings). It explicitly names the sibling tools it replaces (congress_nomination_details, congress_nomination_committees, congress_nomination_hearings), making it easy for an agent to distinguish this composite tool from its individual counterparts.

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 instead of calling congress_nomination_details + congress_nomination_committees + congress_nomination_hearings individually,' providing clear when-to-use guidance. It also gives an 'Ideal for' section that describes the use case (tracking judicial and executive nominations from submission through confirmation/rejection) and even suggests cross-referencing with lobbying_search for industry interest, which is a helpful alternative/complementary tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_nomination_hearingsA
Read-onlyIdempotent

Get printed hearings associated with a nomination. Shows hearing dates, citations, and chambers.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
nomination_numberYesNomination number

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds modest behavioral context by specifying output contents (hearing dates, citations, chambers), but does not discuss pagination, ordering, or response shape. With rich annotations, this is acceptable but not outstanding.

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, no filler. The main action and scope are front-loaded, and the second sentence efficiently lists the output fields. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool, the description tells the agent what it returns and the inputs it needs. No output schema exists, but the description's mention of dates, citations, and chambers provides a reasonable expectation of the return shape. It stops short of 5 only by omitting practical details like pagination or result limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: congress is described as 'Congress number' and nomination_number as 'Nomination number'. The description's phrase 'associated with a nomination' reinforces the nomination_number param but adds no new syntax or format details. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a clear resource ('printed hearings'), and the association to a nomination. It differentiates from siblings like congress_hearings (generic hearings) and congress_nomination_details (nomination metadata) by narrowing scope to hearing records tied to a nomination and listing the displayed fields.

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 it: when you need printed hearings for a given nomination (identified by congress and nomination_number). It gives clear context but does not explicitly name alternatives or exclusions, so it doesn't quite reach 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_nomination_nomineesA
Read-onlyIdempotent

Get the list of nominees for a specific position within a nomination. Some nominations contain multiple positions (ordinals). Use congress_nomination_details first to see the ordinal numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
ordinalYesPosition ordinal (typically 1)
congressYesCongress number
nomination_numberYesNomination number

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is established. The description adds context about the ordinal requirement and prerequisite flow, but does not describe return format, pagination, or any side effects. Given annotation coverage, a 3 is appropriate – it adds some value but not deep behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The main purpose is front-loaded, followed by a concise explanation of the ordinal nuance and a clear pointer to the prerequisite tool. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list-retrieval tool with annotations covering safety and a schema that documents all parameters, the description adequately explains the purpose, the key concept (ordinal), and the correct usage flow. It lacks details on return fields or output structure, but given the simplicity and no output schema, it is sufficiently complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented. The description adds meaning by explaining the role of ordinal ('Some nominations contain multiple positions') and the need to use details first, but it doesn't add new parameter-specific details beyond what the schema provides. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Get the list of nominees for a specific position within a nomination.' It distinguishes itself from sibling tools by explaining the ordinal concept and pointing to congress_nomination_details for prerequisite info, which differentiates it from other nomination-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs 'Use congress_nomination_details first to see the ordinal numbers,' providing a clear when-to-use prerequisite. It also explains that some nominations have multiple ordinals, implying why this tool is needed. However, it doesn't explicitly mention when not to use it or name alternative tools beyond the prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_nominationsB
Read-onlyIdempotent

List presidential nominations to federal offices (judges, cabinet, ambassadors, agency heads). Shows nominee name, position, organization, and confirmation status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number (default: current)
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering the safety profile. The description adds the return fields (nominee name, position, organization, confirmation status), which is useful. However, it does not disclose behavior like pagination, default limits, or whether only pending nominations are included. Given the annotations already carry the core behavioral traits, this is a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero filler. The main purpose is front-loaded, and the output fields are stated succinctly. It is concise and well-structured, earning a 5.

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 sufficient for a list tool with clear parameters. It names the entity, scope, and output fields. It does not mention how to access details for a specific nomination, but that is covered by sibling tools. The absence of an output schema is acceptable since the description states the fields. The only gap is lack of guidance on distinguishing from other list tools, but that falls under usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters (limit, congress, toDateTime, fromDateTime) are documented in the schema. The description does not add any parameter-specific context or guidance. The baseline of 3 is appropriate when the schema carries the full burden.

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 ('List') and resource ('presidential nominations to federal offices') with concrete examples (judges, cabinet, ambassadors, agency heads). It also states the output fields (nominee name, position, organization, confirmation status), making the purpose clear. It does not explicitly differentiate from sibling tools like congress_nomination_details, but the list-vs-detail distinction is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as congress_nomination_details or congress_nomination_full_profile. There is no mention of filtering by congress or date, prerequisites, or scenarios where this tool is preferred. Agents must rely on the tool name and schema to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_recent_lawsA
Read-onlyIdempotent

Get recently enacted laws (bills signed by the President). Optionally filter by law type (public or private). Shows what legislation has become law.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number (default: current)
law_typeNoLaw type: pub (public law) or priv (private law). Default: all

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the definition of 'law' (bills signed by the President) and notes the optional filter, but does not disclose additional behaviors like pagination, rate limits, or result ordering. It adds modest context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The core purpose is front-loaded, and the optional filter is mentioned clearly. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with three optional parameters and no output schema, the description adequately conveys what the tool returns (recently enacted laws). It could mention pagination or result format, but annotations cover safety and the simplicity reduces the need for more detail. Slightly more could be added, but it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with descriptions for all three parameters (limit, congress, law_type). The description does not add any parameter-specific meaning beyond what the schema already contains, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves recently enacted laws (bills signed by the President), with an optional filter by law type. This verb+resource+scope is unambiguous and distinguishes it from siblings like congress_law_details (specific law details) and congress_search_bills (searching bills).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (finding recent laws) but does not explicitly state when to prefer this tool over alternatives such as congress_law_details or congress_search_bills. No exclusions or alternative conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_search_billsA
Read-onlyIdempotent

Search for bills in Congress by keyword, congress number, or bill type. Returns bill number, title, sponsor, latest action, and status.

Congress numbers: 118th (2023-2024), 119th (2025-2026), 117th (2021-2022). Bill types: hr (House), s (Senate), hjres, sjres, hconres, sconres, hres, sres

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order. Value can be updateDate+asc or updateDate+desc (default: updateDate+desc)
limitNoMax results (default: 20)
queryNoKeyword/text search across bill titles and summaries (e.g., 'infrastructure', 'tax reform', 'climate')
offsetNoResults offset for pagination (default: 0)
congressNoCongress number (e.g., 119 for 2025-2026, 118 for 2023-2024). Omit to list bills across all congresses
bill_typeNoBill type
toDateTimeNoFilter by update date to this timestamp. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from this timestamp. Format: YYYY-MM-DDT00:00:00Z

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the returned fields but does not disclose default behaviors (e.g., default limit of 20, default sort order) or pagination behavior, though these are present in the schema. With annotations covering the read-only nature, the description adds modest value but could be richer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus two bullet-like lines, front-loading the core purpose and return fields. Every sentence adds value, with no filler. The structure is efficient 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?

For a search tool with eight optional parameters and no output schema, the description covers the main search criteria (keyword, congress, bill type) and return fields. Pagination (offset/limit) and date filtering are described in the schema, so the description doesn't need to repeat them. The added congress-year and bill-type mappings enhance completeness. It is sufficient for an agent to call 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 100%, so the schema documents each parameter. The description goes beyond by mapping congress numbers to years (118th, 119th, 117th) and expanding bill type abbreviations (hr=House, s=Senate, etc.), which adds practical meaning that the enum alone does not convey. This compensates for the otherwise generic parameter descriptions.

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 searches for bills by keyword, congress number, or bill type, and lists the return fields (bill number, title, sponsor, latest action, status). This distinguishes it from detailed bill tools like congress_bill_details, though it doesn't explicitly name the distinction. The purpose is unambiguous and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it is a search tool but provides no explicit guidance on when to use it versus alternative tools like congress_bill_details, congress_bill_actions, or congress_search_members. Given the large set of sibling congress tools, explicit differentiation would help an agent decide correctly. No exclusionary or alternative recommendations are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_search_membersA
Read-onlyIdempotent

Search for members of Congress by state, congress number, district, or get all current members. Supports: /member (all), /member/{stateCode} (by state), /member/{stateCode}/{district} (by district), /member/congress/{congress} (by congress), /member/congress/{congress}/{stateCode}/{district} (combined).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 50)
stateNoTwo-letter state code to filter by, e.g. 'CA', 'TX'. Can be used alone or with district.
congressNoCongress number. When used with state+district, filters to that congress. Use alone to list all members of a congress.
districtNoHouse district number (use with state). Returns all historical members for that seat.
toDateTimeNoFilter by update date end (YYYY-MM-DDT00:00:00Z)
fromDateTimeNoFilter by update date start (YYYY-MM-DDT00:00:00Z)
currentMemberNoFilter by current member status. true = current members only, false = former only

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the multiple endpoint forms, but does not disclose return structure, pagination, or historical-member behavior beyond what the schema already states.

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 efficient sentences, front-loading the core purpose and then compactly listing supported endpoint patterns. Every part earns its place, and the structured list is easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations and 100% parameter schema coverage, the description does not need to repeat parameter details. It covers the main decision-relevant behavior — what search dimensions are supported and how they combine — and is complete enough for an agent to invoke the tool correctly. A minor gap is no mention of the response shape, but no output schema is provided and the search semantics make it reasonably inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies. The description maps parameters to URL path patterns, but the schema already explains combinations like using congress with state+district and using district with state. The description adds little semantic meaning beyond what the property descriptions provide.

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 a specific action ('Search for members of Congress') and enumerates the exact resource scopes: state, congress number, district, and all current members. The endpoint pattern list makes the tool's scope unmistakable and differentiates it from sibling tools like congress_member_details or congress_search_bills.

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 — whenever you need member listings by state, congress, or district — and even highlights the 'all current members' mode. However, it does not explicitly name alternatives or state when NOT to use it, such as when a specific member's details are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_senate_communication_detailsB
Read-onlyIdempotent

Get detailed information about a specific Senate communication including abstract, committees, and congressional record date.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
communication_typeYesCommunication type: 'ec' (Executive Communication), 'pm' (Presidential Message), 'pom' (Petition or Memorial)
communication_numberYesCommunication number

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, covering the safety profile. The description adds that it returns specific fields but does not disclose additional behavioral traits such as pagination, error handling, or the full response structure. Given annotations carry the main burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the verb, resource, and key output fields without wasted words. It is appropriately concise and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a detail endpoint with three required parameters, all documented, and annotations covering safety, the description is mostly sufficient. However, it does not mention how to obtain the communication_number (e.g., from the list tool) or describe the full response shape, which could be useful. Given the lack of an output schema, a bit more context would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: each parameter has a description (congress, communication_type with enum, communication_number). The description does not add any extra meaning beyond the schema, and it does not need to since the schema is already explicit. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed information about a specific Senate communication and lists the key fields (abstract, committees, congressional record date). It implies a detail-oriented purpose distinct from a list operation, though it does not explicitly name the sibling list tool (congress_senate_communications).

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?

There is no guidance on when to use this tool versus alternatives like the list tool or the house communication detail tool. It does not mention prerequisites (e.g., needing a communication number from a prior list call) or exclusions. The usage context is only implied by the word 'specific'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_senate_communicationsA
Read-onlyIdempotent

List Senate communications — executive communications, presidential messages, and petitions/memorials referred to Senate committees. Types: ec (Executive Communication), pm (Presidential Message), pom (Petition or Memorial).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number
communication_typeNoCommunication type: 'ec' (Executive Communication), 'pm' (Presidential Message), 'pom' (Petition or Memorial)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the behavioral constraint that communications are those referred to Senate committees, which is useful, but it does not disclose response format, pagination behavior, or any quirks 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?

Two sentences, front-loaded with the main purpose and followed by the type mapping. No wasted words; highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with optional parameters and no output schema, the description covers the core scope and types. It lacks explicit guidance on using details or committee-specific variants, but that belongs to usage guidelines. The description is adequately complete for an agent to understand what it returns and how to filter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all three parameters, each already described in the schema. The description repeats the communication_type enum values and meanings, adding no new semantic information beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists Senate communications, specifies the three types with their abbreviations, and distinguishes it from the house counterpart by name. It is specific about the resource and scope.

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 mention when to use this tool versus alternatives like congress_house_communications, congress_senate_communication_details, or congress_committee_senate_communications. No explicit exclusions or conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_senate_votesA
Read-onlyIdempotent

Get Senate roll call vote results from senate.gov XML. Shows how senators voted by party on specific legislation, nominations, and procedural motions. Coverage: 101st Congress (1989) to present. Cross-reference with: congress_house_votes (same bill's House vote), FEC (senator donors via fec_candidate_financials), lobbying_search (who lobbied on the bill), congress_member_bills (senator's voting vs sponsoring patterns). For House votes, use congress_house_votes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results when listing votes (default: 20)
sessionNoSession (1 or 2). Default: current session (1 for odd years, 2 for even)
congressNoCongress number (default: current). Coverage: 101st (1989) to present
vote_numberNoSpecific roll call vote number. Omit to list recent votes.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds useful behavioral context: the data source (senate.gov XML), coverage range (101st Congress to present), and the types of votes (legislation, nominations, procedural motions). This goes beyond what annotations provide, though it doesn't describe output format or pagination (not critical for a read-only tool).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, starting with the main purpose and then adding relevant cross-references. It is not overly verbose and the structure is logical. The cross-reference list is helpful but could be considered slightly dense; still, it earns its place by enhancing usability.

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 relatively simple, with all parameters documented and annotations covering safety. The description adds source and coverage context. It doesn't explain the return format, but for a roll call vote result, the output is straightforward. The description is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (limit, session, congress, vote_number) are documented in the schema. The description adds no extra parameter semantics beyond what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'Senate roll call vote results' from a specific source (senate.gov XML). It differentiates from siblings by explicitly routing House votes to congress_house_votes, and it lists complementary cross-references. No ambiguity about what this tool does.

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 says 'For House votes, use congress_house_votes,' providing a direct alternative. It also lists cross-reference tools for deeper analysis (FEC, lobbying, member bills), giving context on when to use this tool in conjunction with others. This is clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_treatiesB
Read-onlyIdempotent

List treaties submitted to the Senate. Shows treaty topic, date transmitted, and ratification status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
congressNoCongress number (default: all)
toDateTimeNoFilter by update date to. Format: YYYY-MM-DDT00:00:00Z
fromDateTimeNoFilter by update date from. Format: YYYY-MM-DDT00:00:00Z

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds that it returns treaty topic, date transmitted, and ratification status, which is useful output context. However, it does not disclose pagination behavior, default limits (though limit parameter exists), or that it returns a list (implied by 'List'). The added behavioral info is modest beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no filler. It front-loads the purpose ('List treaties') and follows with the key output fields. Every word earns its place; it is appropriately concise for a simple list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no output schema, the description covers the main output fields but omits important context like pagination (limit parameter), date filtering semantics (fromDateTime/toDateTime), and the distinction from more detailed treaty tools. It is adequate for a basic list operation but not fully complete given the rich sibling ecosystem.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter (limit, congress, toDateTime, fromDateTime) has a clear description in the schema. The tool description does not add any additional meaning or usage context for the parameters. Baseline 3 is appropriate since the schema does the heavy lifting and the description adds no extra value.

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 states a clear verb ('List') and resource ('treaties submitted to the Senate'), and mentions the key output fields (topic, date transmitted, ratification status). However, it does not differentiate from sibling tools like congress_treaty_details or congress_treaty_full_profile, which also relate to treaties. It is clear in its core function but lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings (e.g., congress_treaty_details for a single treaty, congress_treaty_full_profile for comprehensive data). The description only states what it does, not when it is the appropriate choice. There is no mention of exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_treaty_committeesB
Read-onlyIdempotent

Get committees associated with a treaty. Typically the Senate Foreign Relations Committee.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
treaty_numberYesTreaty document number

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide the safety profile (readOnlyHint, idempotentHint, destructiveHint=false). The description adds a slight behavioral hint about typical output but does not cover pagination, return format, or possible empty results. With annotations covering the main concerns, this is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, front-loaded with the core action. The parenthetical note about the Senate Foreign Relations Committee is brief and relevant, adding value without rhetorical waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup with two documented required parameters and safety annotations, the description plus schema provide enough information to call the tool correctly. The lack of any output format description or connection to related treaty tools leaves a small gap, but given the low complexity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both 'congress' and 'treaty_number' already have descriptions. The tool description adds nothing about parameter formats, relationships, or examples, so it relies entirely on the schema for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Get committees associated with a treaty.' It distinguishes the tool from siblings like congress_treaty_details (treaty details) and congress_committees (committee list) by focusing on the association. The extra note about the Senate Foreign Relations Committee adds useful domain context, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus related tools (e.g., congress_treaty_details or congress_treaty_full_profile). There are no exclusions or conditions mentioned. The 'Typically the Senate Foreign Relations Committee' comment is an outcome expectation rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_treaty_detailsA
Read-onlyIdempotent

Get detailed information about a specific treaty, including all Senate actions (committee referral, hearings, ratification vote).

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress in which the treaty was received
treaty_numberYesTreaty document number

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds value by specifying the scope of the detail (Senate actions) and the identifiers required (congress, treaty_number), but does not disclose what happens if the treaty is not found or what the response format is. Given the annotations cover safety, the description provides some useful context but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and to the point. It front-loads the primary purpose and then lists the key content. There is no redundancy or filler. It could be slightly longer to include usage guidance, but for its length it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (only 2 parameters, both covered by schema, read-only annotations), the description is fairly complete for an agent to call it correctly. It explains what the output contains (Senate actions). However, it does not mention the output format, error handling, or relationships to other treaty tools, but these are not critical for invocation. A score of 4 is justified as it covers the essential context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema: 'congress' is described as 'Congress in which the treaty was received' and 'treaty_number' as 'Treaty document number'. The description mentions 'specific treaty' and 'congress' implicitly, but does not add further meaning beyond what the schema provides. Baseline 3 is appropriate since the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'detailed information about a specific treaty', and enumerates the types of Senate actions included (committee referral, hearings, ratification vote). This distinguishes it from the list tool 'congress_treaties' and the potentially related 'congress_treaty_partitioned_details' and 'congress_treaty_full_profile' siblings, though it does not explicitly name them. The purpose is specific and clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when you need details about a specific treaty, given a congress and treaty number. However, it does not explicitly state when to use this instead of alternatives like 'congress_treaty_full_profile' or the partitioned details tools. Since multiple sibling tools exist for treaty details, the guidance is insufficient to direct the agent to the correct one without deeper investigation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_treaty_full_profileA
Read-onlyIdempotent

Get a COMPLETE treaty profile in ONE call — combines treaty details, full action timeline, and committee assignments (3 endpoints in parallel). Use this instead of calling congress_treaty_details + congress_treaty_committees individually.

Ideal for: International agreement research and Senate Foreign Relations Committee tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress in which the treaty was received
treaty_numberYesTreaty document number

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral transparency about the composite implementation: it runs '3 endpoints in parallel' and merges them into one response. It does not detail return shape or pagination, but the parallel/composite behavior is useful beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs with no filler. The core value proposition ('complete profile', 'ONE call', '3 endpoints in parallel') is front-loaded, and the alternative routing follows immediately. The use-case sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a composite tool with only two well-documented parameters, the definition explains what the caller gets (details, timeline, committee assignments) and when to use it. There is no output schema, so the component enumeration partially compensates; a fuller return-shape description would improve it further, but nothing required for selection and invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both congress and treaty_number carrying meaningful descriptions ('Congress in which the treaty was received' and 'Treaty document number'). The tool description adds no further parameter guidance, so it correctly relies on the schema; the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') with a clear scope ('COMPLETE treaty profile in ONE call') and enumerates the three combined components: treaty details, full action timeline, and committee assignments. This directly distinguishes it from individual treaty endpoints and marks it as a composite tool.

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 names the exact alternative calls it replaces ('congress_treaty_details + congress_treaty_committees') and instructs the agent to use this instead. The 'Ideal for' line adds contextual targeting (international agreement research and Senate Foreign Relations Committee tracking), giving clear selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_treaty_partitioned_actionsA
Read-onlyIdempotent

Get actions on a partitioned treaty (one with a suffix letter). Shows committee referral, hearings, and ratification votes for a specific treaty partition.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 50)
congressYesCongress number
treaty_numberYesTreaty document number
treaty_suffixYesTreaty partition letter (e.g., 'A', 'B')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds what is returned (committee referral, hearings, votes) but does not disclose additional behavioral aspects like pagination or rate limits. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with clear front-loading of purpose and a second sentence listing output content. Zero waste, every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and output content adequately. It lacks detail on response structure, but the annotations convey safety and the schema fully documents parameters. For a read-only list tool, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions. The tool description does not add meaning beyond the schema; it mentions 'partitioned treaty' but that is already captured in treaty_suffix. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get actions on a partitioned treaty') and adds the key condition (suffix letter) and the content types (committee referral, hearings, ratification votes). This distinguishes it from sibling tools like congress_treaty_partitioned_details and provides precise 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 the intended use case (partitioned treaties with a suffix letter) and clearly defines the scope. However, it does not explicitly name alternatives or state when not to use this tool, so it misses the 'explicit exclusions' bar for a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congress_treaty_partitioned_detailsA
Read-onlyIdempotent

Get details about a partitioned treaty (one with a suffix letter like A, B, etc.). Some treaties are divided into parts, each identified by a suffix.

ParametersJSON Schema
NameRequiredDescriptionDefault
congressYesCongress number
treaty_numberYesTreaty document number
treaty_suffixYesTreaty partition letter (e.g., 'A', 'B')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, which cover the safety and idempotency behavior. The description adds the concept of partitioned treaties, which is useful for selection, but does not add additional behavioral context such as return format, pagination, or authentication requirements. Since annotations cover the essential behavior, and the description adds only domain context, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the main purpose stated first and a clarifying definition of 'partitioned' second. There is zero waste, and it is concise and well-structured. Every word adds value, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with three fully-described parameters and complete annotations, the description is sufficient for an agent to know when to call it. It explains the partition concept and the condition for using the tool. It doesn't explicitly mention the alternative tool, but given the clarity of the purpose, that is not a significant gap. It could be slightly more complete by naming the non-partitioned sibling, but overall it is well-rounded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (congress, treaty_number, treaty_suffix) are fully described in the schema. The description does not add any parameter-specific details beyond what the schema already provides. With full schema coverage, the baseline of 3 is correct.

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 details about a partitioned treaty', specifying the verb and resource. It also explains what a partitioned treaty is (one with a suffix letter), which distinguishes it from the sibling tool congress_treaty_details for regular treaties. This makes the purpose unambiguous and distinct from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: when a treaty has a suffix letter, indicating it is partitioned. It implicitly tells the agent to use this for partitioned treaties and another tool (like congress_treaty_details) for non-partitioned ones. However, it does not explicitly name the alternative or provide explicit 'when-not-to-use' guidance, so it just misses the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

doj_blog_detailA
Read-onlyIdempotent

Get the full text of a specific DOJ blog entry by UUID. Returns the complete body, component, topic, date, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the blog entry (from search results)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by listing the returned fields (complete body, component, topic, date, URL), which is useful beyond annotations. It does not mention pagination or errors, but for a simple read operation that is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first sentence clearly states the action and target, and the second enumerates the return fields. No wasted words; the most important information 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 read-only tool with one parameter and no output schema, the description adequately covers what the tool does and what it returns. The annotations cover safety and idempotency. Nothing essential is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter 'uuid' is well-described as 'UUID of the blog entry (from search results)'. The description itself only repeats the fact that it uses a UUID, adding no additional semantic value beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('full text of a specific DOJ blog entry'), and input (UUID). It explicitly lists the return fields (body, component, topic, date, URL), which distinguishes it from the sibling doj_blog_entries that likely lists entries. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage after a search by noting the UUID comes 'from search results' in the parameter schema. It does not explicitly state when not to use it or name alternatives, but for a simple detail-lookup tool this is sufficient context. The sibling list contains doj_blog_entries and doj_press_release_detail, which are obviously different in scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

doj_blog_entriesA
Read-onlyIdempotent

Search DOJ Office of Public Affairs blog entries (3,200+ records). Blog entries often provide more context and analysis than press releases. Covers policy discussions, division activities, and enforcement context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (zero-indexed)
sortNoSort by
pagesizeNoResults per page (default 20, max 50)
directionNoSort direction: 'DESC' (newest first), 'ASC'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds contextual information about the dataset (3,200+ records, content focus) but does not disclose that the tool is essentially a paginated list with no filtering, and does not mention default sort order or result shape. Given the annotation coverage, a 3 is appropriate; the description adds some value but leaves room for more behavioral detail.

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 with no wasted words. The main action is front-loaded, followed by a valuable comparative insight and a brief scope statement. Every sentence earns its place, and the length is appropriate for a simple listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paginated list tool with zero required parametersley and full schema description coverage, the description provides adequate context: what the dataset containsholistically and why it might be preferred over press releases. The lack of an output schema is not a deficit here since the tool's purpose and parameter semantics are clear. The only gap is the 'search' ambiguity noted above, but it does not severely hinder completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters (page, sort, pagesize, direction) are already explained in the schema. The description adds no parameter-specific meaning or usage examples. Baseline 3 is correct since the schema does the heavy lifting and the description neither contradicts nor enhances parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific resource ('DOJ Office of Public Affairs blog entries') and an action ('Search'), and adds a useful differentiator against press releases (more context/analysis). However, the term 'Search' is slightly misleading because the schema only exposes pagination and sort parameters, with no keyword or filter input, so an agent might expect a full-text search rather than a paginated listing.

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 a clear usage hint by contrasting blog entries with press releases: 'Blog entries often provide more context and analysis than press releases.' It also implies coverage of policy discussions, division activities, and enforcement context, which helps an agent decide when this tool is relevant. It does not explicitly name alternative sibling tools like doj_press_releases or doj_blog_detail, but the comparative context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

doj_press_release_detailA
Read-onlyIdempotent

Get the full text of a specific DOJ press release by UUID. Returns the complete body, component, topic, date, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the press release (from search results)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, so the description doesn't need to cover side effects. It adds transparency about the response by listing the returned fields (full body, component, topic, date, URL), which is useful because there is no output 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?

Two short sentences, front-loaded with the action and key identifier, with no filler. The return-field list is compact and directly relevant.

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, read-only detail fetch with rich annotations, the description is self-sufficient: it names the input, the resource, and the expected return fields. No critical information for invoking the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and the schema documents it fully ('UUID of the press release (from search results)'). The description merely restates that the release is fetched by UUID, adding no new parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact operation: getting the full text of a single DOJ press release, keyed by UUID. The singular 'specific...by UUID' clearly separates it from the sibling list tool doj_press_releases and from doj_blog_detail.

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 schema clarifies that the UUID comes 'from search results', making the intended usage clear: look up full details after identifying a release. It doesn't explicitly name alternatives or when-not-to-use, 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.

doj_press_releasesA
Read-onlyIdempotent

Search DOJ press releases (262K+ records covering all DOJ divisions). Includes enforcement actions, indictments, settlements, and policy announcements. Filter by title keyword and sort by date. Components: FBI, DEA, ATF, Civil Rights Division, Antitrust, USAO, and more. Topics: Drug Trafficking, Cybercrime, National Security, Civil Rights, Financial Fraud, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (zero-indexed). Use with pagesize for pagination.
sortNoSort by: 'date' (press release date), 'created' (when added)
titleNoFilter by title keyword: 'cybercrime', 'antitrust', 'fentanyl', 'civil rights'
pagesizeNoResults per page (default 20, max 50)
directionNoSort direction: 'DESC' (newest first, default), 'ASC' (oldest first)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive behavior, so the description only needs to add context. It does: dataset scale, coverage of all divisions, content categories, and available filtering/sorting. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: core search purpose first, then dataset scope, then filter capability, then components/topics. Every sentence adds useful context without 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 read-only search tool with no required parameters, full schema coverage, and rich annotations, this description supplies enough context about dataset coverage, content, and filtering options. It does not describe the response format, but no output schema exists and the main missing guidance is alternative-tool routing rather than call prerequisites.

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?

Since schema description coverage is 100%, the schema already documents all five parameters, including title keyword examples. The description adds broad topic/component lists that can inform title filters, but it mostly restates filter-by-title-and-sort behavior rather than adding new parameter-level detail.

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 starts with a specific verb and resource: 'Search DOJ press releases,' and adds dataset scope (262K+ records, all DOJ divisions). It also lists included content types, making it distinct from siblings like doj_press_release_detail and doj_blog_entries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when this search tool is appropriate: retrieving DOJ press releases by title keyword and date across known components and topics. It does not explicitly mention alternatives or exclusions, such as pointing to doj_press_release_detail for full details or doj_blog_entries for blog content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dol_osha_accident_injuriesA
Read-onlyIdempotent

Get injury details from OSHA accident investigations. Returns demographics (age, sex), nature of injury, body part, source, degree of injury. Degree of injury: 1=Fatality, 2=Hospitalized, 3=Non-hospitalized. Link to accidents via summary_nr.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
offsetNoPagination offset
summary_nrNoAccident summary number (links to specific accident)
degree_of_injNoDegree of injury: 1=Fatality, 2=Hospitalized, 3=Non-hospitalized

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by detailing the return fields and explaining the degree_of_inj mapping (1=Fatality, 2=Hospitalized, 3=Non-hospitalized). It also clarifies the relationship to accidents via summary_nr. There is no contradiction with annotations, and the additional context is helpful.

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 and front-loaded with the main purpose. It uses four short sentences, each carrying useful information: purpose, return fields, degree mapping, and linkage. No wasted words, and it is 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?

Without an output schema, the description lists the returned fields and explains the degree codes. It mentions the key link via summary_nr. It does not discuss pagination or filtering details, but limit/offset are described in the schema. For a read-only data retrieval tool, the description covers the essential aspects an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented in the input schema. The description repeats the degree_of_inj mapping and mentions summary_nr linkage, but these are also present in the schema descriptions. It does not add significant new meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Get injury details from OSHA accident investigations') and lists the returned fields (demographics, nature of injury, body part, source, degree). It clearly indicates the scope is injuries tied to accidents, and mentions linking via summary_nr, which helps distinguish it from sibling tools like dol_osha_accidents. However, it does not explicitly name the sibling it is not, so it lacks explicit differentiation.

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 by saying 'Link to accidents via summary_nr', suggesting one would first obtain a summary_nr from the accidents tool. It does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or conditions. The guidance is implied rather than explicit, so it is adequate but not strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dol_osha_accidentsA
Read-onlyIdempotent

Search OSHA accident and fatality investigations. Returns event descriptions, dates, locations, and industry codes. Use dol_osha_accident_injuries to get injury details for a specific accident.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
stateNoTwo-letter state code: 'CA', 'TX', 'NY'
offsetNoPagination offset
sort_byNoField to sort by: 'event_date' (default)
sic_codeNoSIC industry code
sort_orderNoSort direction (default: desc)
event_keywordNoEvent keyword: 'fall', 'electrocution', 'struck', 'caught'

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, covering the safety profile. The description adds return field details but does not disclose any non-obvious behavioral traits such as pagination behavior, default sorting, or response structure. Given the annotations, a 3 is appropriate as the description adds some value but not extensive 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 two sentences with no wasted words. The main purpose is front-loaded in the first sentence, followed by output details and a useful alternative. Every sentence earns its place, making it both concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, all optional, and no output schema, the description provides a reasonable amount of context by listing the key return fields and pointing to a sibling for further details. However, it does not mention pagination or default sorting, and there's no output schema to inform the agent of exact result structure. These gaps are minor given the schema descriptions. Overall, it is fairly complete for a search-type 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 description coverage is 100%, so each parameter already has a description. The tool description does not elaborate on parameter usage beyond what the schema provides. It mentions industry codes, which loosely relates to sic_code, but does not clarify any parameter semantics. With full schema coverage, the baseline of 3 is correct, and the description adds minimal additional 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 purpose with a specific verb and resource: 'Search OSHA accident and fatality investigations.' It also lists the return fields (event descriptions, dates, locations, and industry codes), making the output concrete. Moreover, it differentiates from a sibling by pointing to dol_osha_accident_injuries for injury details, which helps the agent distinguish it from a closely related 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 explicitly provides an alternative for a follow-up scenario: 'Use dol_osha_accident_injuries to get injury details for a specific accident.' This tells the agent when to use a different tool. However, it does not mention when to use this tool versus other OSHA-related siblings like dol_osha_inspections or dol_osha_violations, leaving some ambiguity in tool selection among those.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dol_osha_inspectionsA
Read-onlyIdempotent

Search OSHA workplace inspections. Find inspections by state, establishment name, industry (SIC/NAICS), or type. Inspection types: A=Accident, B=Complaint, C=Referral, H=Planned, L=Programmed high-hazard. Returns site details, inspection type/scope, open/close dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
stateNoTwo-letter state code: 'CA', 'TX', 'NY'
offsetNoPagination offset
sort_byNoField to sort by: 'open_date' (default), 'close_case_date'
sic_codeNoSIC industry code
insp_typeNoInspection type: A=Accident, B=Complaint, C=Referral, H=Planned, L=High-hazard
estab_nameNoEstablishment name: 'Amazon', 'Walmart', 'Tesla'
naics_codeNoNAICS industry code: '236220' (commercial construction)
sort_orderNoSort direction (default: desc)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds useful behavioral context beyond annotations by stating what is returned ('site details, inspection type/scope, open/close dates') and clarifying the meaning of inspection type codes (e.g., L=Programmed high-hazard). This goes beyond simple read-only confirmation.

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 with no fluff. The first sentence states the core purpose, followed by filter options, type codes, and return details. Every sentence earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema and nine optional parameters, the description covers the essential context: what it searches, the main filter dimensions, and what is returned. It does not mention sorting or pagination, but those are documented in the schema. It also does not explicitly note that all parameters are optional, but the schema already indicates no required parameters. Overall, it is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description repeats the filter categories (state, establishment name, industry, type) and provides a slightly more detailed meaning for insp_type 'L' (Programmed high-hazard) than the schema's 'High-hazard'. This adds marginal value but does not significantly compensate for what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Search OSHA workplace inspections,' which states a specific verb and resource. It clearly distinguishes this from siblings like dol_osha_violations and dol_osha_accidents by focusing on inspections and listing relevant filters. The inclusion of inspection type codes further clarifies the exact domain.

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 by listing search criteria ('by state, establishment name, industry (SIC/NAICS), or type'), but it does not explicitly state when to prefer this tool over related OSHA tools, nor does it mention any prerequisites or exclusions. The context is clear enough to infer, but no explicit guidance or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dol_osha_violationsA
Read-onlyIdempotent

Search OSHA violations found during workplace inspections. Violation types: S=Serious, W=Willful, R=Repeat, O=Other, U=Unclassified, F=Failure to abate. Returns standard cited, penalty amounts (initial and current), abatement status. Link to inspections via activity_nr.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
offsetNoPagination offset
sort_byNoField to sort by: 'issuance_date' (default), 'current_penalty'
standardNoOSHA standard cited: '19100147' (control of hazardous energy)
viol_typeNoViolation type: S=Serious, W=Willful, R=Repeat, O=Other
sort_orderNoSort direction (default: desc)
activity_nrNoInspection activity number (links to specific inspection)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds useful context by listing return fields (standard cited, initial/current penalties, abatement status) and the activity_nr linkage. It does not mention rate limits or pagination, but those are partially in the schema. A minor concern: the description includes U and F violation types not present in the enum, which could mislead agents, though this is not an annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each earning its place: purpose, violation type legend, return fields, and linkage/pagination guidance. The most important information is front-loaded, and there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter search tool with full schema coverage and no output schema, the description provides enough return-shape hints (standard, penalties, abatement status) and linkage guidance to let an agent call it correctly. It could list all returned fields or explicitly mention that no filters return all violations, but it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does add a legend for violation type codes and explains the activity_nr linkage, but it also references U and F codes that are not in the schema enum, creating potential confusion. Overall, the extra semantics are marginal and slightly inconsistent.

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 ('Search'), names the resource ('OSHA violations'), and scopes it ('found during workplace inspections'). It clearly distinguishes this tool from siblings like dol_osha_inspections and dol_osha_accidents, so an agent can tell them apart without opening the schema.

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 context is clear: this tool returns violation-level data (penalties, abatement status) and links to inspections via activity_nr, implying it is the right choice when violation details are needed rather than inspection or accident records. However, it does not explicitly name alternatives or state when not to use this tool, 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.

dol_ui_claims_nationalA
Read-onlyIdempotent

Get national weekly Unemployment Insurance (UI) initial and continued claims. Includes insured unemployment rate and covered employment. Key economic indicator — spikes indicate labor market stress.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of weekly records (default 25, use 52 for 1 year)
offsetNoPagination offset
sort_byNoField to sort by: 'rptdate' (default)
sort_orderNoSort direction (default: desc)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that this is a key economic indicator and that spikes indicate labor market stress, which is interpretive context beyond the annotations. It doesn't disclose pagination behavior or data source specifics, but the annotations carry the main behavioral burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The core function is stated first, then the included metrics, then the economic significance. Every sentence earns its place and the description is appropriately sized for a simple read-only data retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, no-output-schema tool with 100% parameter coverage, the description is complete enough. It tells the agent what data is included and why it matters. It doesn't describe the return format, but with no output schema and simple parameters, that's a minor gap. The sibling distinction is clear via 'national'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description doesn't add parameter-level detail beyond what the schema provides, but it does clarify the domain (weekly claims) which helps interpret 'limit' and 'offset'. Baseline 3 is appropriate since the schema does the heavy lifting.

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 national weekly UI initial and continued claims, and includes the insured unemployment rate and covered employment. It also notes the economic significance, which helps an agent understand the tool's domain. It is distinct from its sibling dol_ui_claims_state by explicitly saying 'national'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the national counterpart to dol_ui_claims_state, and the 'national' qualifier helps an agent choose it for national-level data. It doesn't explicitly state when to use it over alternatives, but the sibling name and the description's focus on national weekly claims provide clear context. No explicit exclusions or alternative routing, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dol_ui_claims_stateA
Read-onlyIdempotent

Get state-level weekly Unemployment Insurance (UI) claims. Compare initial claims, continued claims, and insured unemployment rate across states.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records (default 25)
stateNoTwo-letter state code: 'CA', 'TX', 'NY'. Omit for all states.
offsetNoPagination offset
sort_byNoField to sort by: 'rptdate' (default)
sort_orderNoSort direction (default: desc)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the 'weekly' time frequency and the specific metrics, which are useful but not extensive. It does not disclose behaviors like default limit, pagination, or response format, though these are partially covered by the schema descriptions. Given the annotations, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action and scope. No unnecessary words, and the key differentiator ('state-level') is stated first. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only query tool with 5 optional parameters and no output schema, the description covers the core purpose and available metrics. The schema handles parameter details. It lacks explicit mention of response shape or default behaviors like returning all states if no state is specified, but these are minor given the schema covers them. The description is nearly complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions. The tool description adds context about the data content (metrics) but does not elaborate on parameter behavior beyond what the schema provides. Since the schema already documents parameters thoroughly, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves state-level weekly UI claims and lists the key metrics (initial claims, continued claims, insured unemployment rate). It explicitly says 'across states,' distinguishing it from the national-level sibling dol_ui_claims_national without naming it. The verb 'Get' and resource are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for state-level comparison but does not explicitly mention when to use this tool versus alternatives like dol_ui_claims_national. An agent could infer from 'state-level' that national data belongs elsewhere, but there is no direct guidance or exclusion statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dol_whd_enforcementA
Read-onlyIdempotent

Search WHD (Wage and Hour Division) enforcement cases. Covers wage theft investigations: back wages owed, penalties assessed, violation counts. Laws enforced: FLSA (minimum wage/overtime), FMLA (family leave), Davis-Bacon (prevailing wage), SCA (service contracts). Data available since FY2005.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
stateNoTwo-letter state code: 'CA', 'TX', 'NY'
offsetNoPagination offset
sort_byNoField to sort by: 'findings_end_date' (default), 'bw_atp_amt' (back wages)
trade_nmNoBusiness/trade name: 'McDonald\'s', 'Subway', 'Walmart'
naics_codeNoNAICS industry code: '722511' (full-service restaurants)
sort_orderNoSort direction (default: desc)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: temporal coverage ('Data available since FY2005') and the substance of the dataset (wage theft investigations, back wages, penalties, violation counts).

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 tight sentences with the verb and resource front-loaded. Every sentence adds useful information: what the tool searches, what the data covers, which laws are enforced, and data availability. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with all optional parameters documented, the description is largely complete. It conveys the output-relevant fields (back wages, penalties, violation counts), the laws, and temporal coverage. The absence of an output schema is partially mitigated by this description, though return structure is not detailed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all 7 parameters already described in the schema. The description does not add parameter-specific meaning, so a baseline 3 is appropriate: the schema carries the parameter-documentation burden.

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 opens with a specific verb and resource: 'Search WHD (Wage and Hour Division) enforcement cases.' It further clarifies what the cases contain (back wages, penalties, violation counts) and which laws are covered, making it easy to distinguish from sibling DOL tools like dol_osha_inspections or dol_ui_claims.

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 this tool is relevant: labor-standard enforcement, wage theft, and specific laws like FLSA, FMLA, Davis-Bacon, and SCA. It does not explicitly name alternatives or exclusions, but the domain context is sufficient to route an agent to this tool rather than the OSHA or unemployment insurance siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_electricityA
Read-onlyIdempotent

Get electricity retail prices, generation, or consumption by state and sector.

Sectors: residential (RES), commercial (COM), industrial (IND), transportation (TRA), all (ALL). Data types: 'price' (cents/kWh), 'revenue' (M$), 'sales' (MWh), 'customers'

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM or YYYY). Default: latest available
startNoStart date (YYYY-MM or YYYY). Default: 2 years ago
stateNoTwo-letter state code (e.g., 'CA', 'TX'). Omit for national.
lengthNoMax rows (API max: 5000). Omit to let date range control volume.
offsetNoRow offset for pagination
sectorNoSector: RES=residential, COM=commercial, IND=industrial, ALL=default
data_typeNoData type (default: price in cents/kWh)
frequencyNoFrequency (default: monthly)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful detail like units (cents/kWh, MWh, M$), but it does not disclose return shape, pagination behavior, or the fact that 'generation' is not a supported data type. With strong annotations, this is acceptable but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: one functional sentence followed by two terse reference lines. Every sentence contributes either the core action or key vocabulary, with no filler or duplicated parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters and no output schema, the description could do more to explain response behavior, pagination, or the relationship between 'generation' and supported data types. However, the schema thoroughly documents every parameter, and the description covers the primary conceptual axes (sector and data type) well enough for a basic call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by spelling out sector abbreviations and providing units for each data type (cents/kWh, M$, MWh), which is not present in the schema. The sector list in the description also includes 'TRA', which is absent from the schema enum, creating a small inconsistency but still offering useful context.

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 names the tool's function: get electricity retail prices, generation, or consumption by state and sector. It is specific enough to separate this from non-electricity EIA siblings, e.g., eia_petroleum or eia_natural_gas, though it does not explicitly name those alternatives. The word 'generation' is slightly misleading because the data_type enum does not include generation, but the data-type list quickly clarifies what is actually available.

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 specifying electricity data and enumerating sectors and data types, but it never states when to prefer this tool over alternatives like eia_state_energy or eia_total_energy. There are no exclusions or routing guidance beyond the resource being electricity, so an agent must infer the boundary from the sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_natural_gasA
Read-onlyIdempotent

Get natural gas prices — Henry Hub spot price, citygate, residential, commercial, industrial, electric power.

Process codes: PRS (citygate), PRP (electric power), PRC (commercial), PRI (industrial), PRR (residential), PNG (Henry Hub spot)

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM). Default: latest available
startNoStart date (YYYY-MM). Default: 2 years ago
lengthNoMax rows (API max: 5000). Omit to let date range control volume.
offsetNoRow offset for pagination
processNoPrice type: 'PRS' (citygate), 'PRP' (electric power), 'PRC' (commercial), 'PRI' (industrial), 'PRR' (residential). Default shows all.
frequencyNoFrequency (default: monthly)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral traits beyond the schema, such as rate limits, pagination behavior, or response structure. For a read-only data fetch, the lack of additional behavioral context keeps this at a baseline 3.

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 compact sentences: the first states the tool's output, the second packs the necessary process-code mappings. There is no filler or redundancy, and the key content is front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only data retrieval tool with no output schema, the description plus parameter schema cover the essentials: what data is returned, how to filter by price type, and date/frequency options. It does not describe units or the exact response envelope, but with 100% parameter coverage and annotations, no critical calling requirement is missing. A 4 reflects this adequate but not exhaustive completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so start, end, length, offset, process, and frequency are already self-documenting. The description adds value by including the PNG (Henry Hub spot) process code, which is absent from the schema's process description, and by mapping human-readable price categories to their codes. This goes beyond the schema, warranting a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('natural gas prices'), enumerating six distinct price categories: Henry Hub spot, citygate, residential, commercial, industrial, and electric power. This clearly distinguishes it from sibling EIA tools like eia_petroleum and eia_electricity, and the title 'EIA: Natural Gas Prices' reinforces the resource.

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 (when natural gas prices are needed) by naming the dataset, but it does not explicitly reference alternative tools such as eia_petroleum, eia_electricity, or eia_total_energy, nor does it state when not to use this tool. The process code listing hints at filtering options but does not explain selection criteria. This is adequate implied usage but lacks explicit alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_petroleumA
Read-onlyIdempotent

Get petroleum/oil prices — crude oil spot prices (WTI, Brent), retail gasoline prices, diesel, heating oil.

Product codes:

  • EPCBRENT: Brent crude oil spot price

  • EPCWTI: WTI crude oil spot price

  • EMM_EPMRU_PTE_NUS_DPG: US regular gasoline retail

  • EMM_EPMPU_PTE_NUS_DPG: US premium gasoline retail

  • EMD_EPD2D_PTE_NUS_DPG: US diesel retail

  • EER_EPJK_PF4_RGC_DPG: US jet fuel spot price

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM or YYYY-MM-DD). Default: latest available
startNoStart date (YYYY-MM or YYYY-MM-DD). Default: 2 years ago
lengthNoMax rows to return (API max: 5000). Omit to let date range control volume.
offsetNoRow offset for pagination (use with length)
productNoProduct type: 'crude' (default — WTI), 'gasoline', 'diesel', 'all'. Or a specific series ID like 'EPCWTI'
frequencyNoFrequency (default: monthly)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description's 'Get' wording is consistent with those. The description adds product-code context but does not disclose operational details such as return shape, units, pagination behavior, or rate limits. With annotations carrying the safety profile, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-line purpose followed by a scannable bulleted code list, with no filler. The slight redundancy and mismatch around 'heating oil' (mentioned in the intro but absent from the code list) keeps it from being perfect.

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 all six parameters fully documented, no required parameters, and safety covered by annotations, an agent can invoke this tool correctly using the schema plus the product-code mapping. The lack of an output schema and absence of an explicit note about return format or units are minor gaps, but the description is still complete enough for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even without description-level parameter help. The product code list adds real semantic value by mapping specific series IDs (EPCBRENT, EPCWTI, EMM_EPMRU_PTE_NUS_DPG, etc.) to human-readable products, directly assisting with the `product` parameter. Other parameters like start/end/length/frequency are already fully described 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 opens with a specific verb+resource ('Get petroleum/oil prices') and enumerates concrete product categories, separating it clearly from sibling EIA tools like eia_electricity and eia_natural_gas. The only minor flaw is that 'heating oil' is mentioned in the overview but has no matching product code in the list, yet the core purpose remains 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 intended use case is clear: retrieving petroleum and oil price data. Product codes and categories give an agent enough context to select this tool over EIA siblings, though it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_state_energyA
Read-onlyIdempotent

Get state-level energy data from the State Energy Data System (SEDS). Covers production, consumption, expenditures, and prices by energy source for all 50 states.

MSN codes (energy data codes):

  • TETCB: Total energy consumption (trillion BTU)

  • TETCD: Total energy consumption per capita

  • TEPRB: Total energy production (trillion BTU)

  • ESTCB: Electricity total consumption

  • CLTCB: Coal consumption

  • NNTCB: Natural gas consumption

  • PATCB: Petroleum consumption

  • RETCB: Renewable energy consumption

  • NUETB: Nuclear energy consumption

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd year (YYYY). Default: latest available
msnNoMSN energy data code. 'TETCB' (total consumption, default), 'TETCD' (per capita), 'TEPRB' (production), 'RETCB' (renewables), 'PATCB' (petroleum)
startNoStart year (YYYY). Default: 5 years ago
stateNoTwo-letter state code (e.g., 'CA'). Omit for all states.
lengthNoMax rows (API max: 5000). Omit to let date range control volume.
offsetNoRow offset for pagination

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to repeat safety characteristics. It adds meaningful behavioral context beyond annotations by defining the dataset scope (SEDS, all 50 states, energy categories) and listing MSN codes. It does not disclose response shape or pagination behavior, but the provided context is still useful.

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 definition is front-loaded with the core purpose, followed by a compact, high-value MSN code list that directly informs parameter selection. There is no filler or redundant repetition of schema details; every sentence and bullet contributes to correct tool use.

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 read-only, all-optional-parameter tool with rich schema descriptions and safety annotations, the description is largely complete: it names the dataset, scope, covered metrics, and key codes. The main gaps are the absence of explicit sibling routing and no hint about the output row structure, but these are not critical for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial value by explaining MSN codes with units and definitions, including codes absent from the schema's msn description (e.g., ESTCB, CLTCB, NNTCB, NUETB). This helps an agent pick the correct msn value. Other parameters are already well described in the schema, so the description appropriately supplements rather than repeats.

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 a concrete resource ('State Energy Data System (SEDS)'), and clearly scopes the data to state-level energy information for all 50 states. It also enumerates covered categories (production, consumption, expenditures, prices), which helps an agent understand exactly what this tool provides and distinguishes it from fuel-specific EIA siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is for state-level SEDS data across all 50 states, which strongly implies when it should be selected. However, it does not explicitly name sibling alternatives like eia_total_energy or eia_petroleum, nor does it state when to prefer those tools, so it falls short of explicit routing/exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_total_energyA
Read-onlyIdempotent

Get the monthly/annual U.S. energy overview — total production, consumption, imports, exports, and prices across all energy sources.

MSN codes:

  • ELETPUS: Electricity net generation

  • ELNIPUS: Electricity net imports

  • CLTCPUS: Coal consumption

  • NNTCPUS: Natural gas consumption

  • PATCPUS: All petroleum consumption

  • RETCPUS: Renewable energy consumption

  • NUETPUS: Nuclear electric power

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM or YYYY). Default: latest available
msnNoMSN code to filter by. Omit for overview of major categories.
startNoStart date (YYYY-MM or YYYY). Default: 2 years ago
lengthNoMax rows (API max: 5000). Omit to let date range control volume.
offsetNoRow offset for pagination
frequencyNoFrequency (default: monthly)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by listing the MSN codes and their meanings, which are not present in the schema. It does not disclose defaults or pagination, but those are covered in the schema. The description adds useful behavioral context for filtering without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a clear one-sentence purpose followed by a compact list of MSN codes. It is front-loaded with the primary purpose and uses a bullet list efficiently. Every sentence earns its place without verbosity.

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 lack of an output schema, the description provides a reasonable sense of the data returned (production, consumption, imports, exports, prices) and the available filters via MSN codes. It doesn't explain the default behavior when msn is omitted, but that is covered in the schema. The tool is simple and read-only, so the description is adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. However, the description goes beyond the schema by providing the specific MSN codes and their meanings (e.g., ELETPUS, CLTCPUS), which are essential for using the msn parameter effectively. This enhances parameter semantics significantly.

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 the monthly/annual U.S. energy overview — total production, consumption, imports, exports, and prices across all energy sources.' It specifies a verb, resource, and scope, and the inclusion of MSN codes differentiates it from sector-specific EIA tools like eia_petroleum or eia_electricity, which are evident from the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage 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 its siblings. It does not mention alternatives or conditions for choosing this aggregate tool over sector-specific ones, leaving the agent to infer from the name and description. No when-to-use or when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_air_qualityA
Read-onlyIdempotent

Get air quality data from EPA's Air Quality System (AQS). Returns annual summary data by state (county-level monitor readings for criteria pollutants). Parameters: '14129' (Lead (Pb)), '42101' (CO (Carbon Monoxide)), '42401' (SO2 (Sulfur Dioxide)), '42602' (NO2 (Nitrogen Dioxide)), '44201' (Ozone), '81102' (PM10), '88101' (PM2.5 (FRM/FEM)), '88502' (PM2.5 (non-FRM, e.g. continuous)). Services: 'annualData' (Annual summaries (yearly statistics per monitor)), 'dailyData' (Daily summaries (daily mean, max, etc.)), 'quarterlyData' (Quarterly summaries (quarterly statistics)), 'sampleData' (Raw sample data (hourly or finer grain)). States use 2-digit FIPS codes: '01'=AL, '06'=CA, '37'=NC, '48'=TX. bdate/edate must be in same year (YYYYMMDD format). Requires AQS_API_KEY and AQS_EMAIL. Signup: https://aqs.epa.gov/data/api/signup

ParametersJSON Schema
NameRequiredDescriptionDefault
bdateYesBegin date YYYYMMDD: '20240101'
edateYesEnd date YYYYMMDD (must be same year as bdate): '20241231'
paramYesAQS parameter code: '14129' (Lead (Pb)), '42101' (CO (Carbon Monoxide)), '42401' (SO2 (Sulfur Dioxide)), '42602' (NO2 (Nitrogen Dioxide)), '44201' (Ozone), '81102' (PM10), '88101' (PM2.5 (FRM/FEM)), '88502' (PM2.5 (non-FRM, e.g. continuous)). Up to 5 comma-separated.
stateYes2-digit state FIPS code with leading zero: '06' (CA), '48' (TX), '37' (NC)
countyNo3-digit county FIPS code within the state: '183' (Wake Co, NC), '037' (Los Angeles)
serviceNoData service: 'annualData', 'dailyData', 'quarterlyData', 'sampleData'. Default: annualData

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral context: the requirement for AQS_API_KEY and AQS_EMAIL, a signup link, and the constraint that bdate/edate must be in the same year. These go beyond the annotations and help the agent understand authentication and date-boundary behavior.

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 structured into clear sections (overview, parameters, services, states, date constraint, authentication). It is front-loaded with the main purpose and readable. It is somewhat long due to enumerating all parameter codes and services, but these are necessary for usability. It avoids fluff and is appropriately organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters (4 required) and no output schema, the description covers essential usage details: parameter codes, service options, state FIPS codes, date constraints, and authentication. It does not describe return structure or pagination, but since no output schema exists, some ambiguity remains. Overall it is sufficiently complete for an agent to call the tool correctly, though return format details would improve it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the parameter codes, service choices, state examples, and the same-year constraint. The description largely duplicates this information, adding only the API key/email requirement, which is not parameter-specific. Thus it adds little value beyond the schema, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('air quality data from EPA's Air Quality System (AQS)'). It also mentions the return type ('annual summary data by state') and lists available services. However, it does not explicitly differentiate itself from sibling tools like epa_aqs_daily or epa_aqs_monitors, which reduces sibling differentiation slightly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on how to use the tool (parameters, services, date constraints) but does not explain when to prefer this tool over the sibling epa_aqs_daily or epa_aqs_monitors. It omits any when-not-to-use guidance, so an agent must infer the appropriate selection from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_aqs_dailyA
Read-onlyIdempotent

Get daily air quality summary data from EPA AQS. Returns daily mean, max, and observation count per monitor. Parameters: '14129' (Lead (Pb)), '42101' (CO (Carbon Monoxide)), '42401' (SO2 (Sulfur Dioxide)), '42602' (NO2 (Nitrogen Dioxide)), '44201' (Ozone), '81102' (PM10), '88101' (PM2.5 (FRM/FEM)), '88502' (PM2.5 (non-FRM, e.g. continuous)). Useful for tracking day-to-day pollution levels. Cross-reference with CDC health data. Requires AQS_API_KEY and AQS_EMAIL.

ParametersJSON Schema
NameRequiredDescriptionDefault
bdateYesBegin date YYYYMMDD
edateYesEnd date YYYYMMDD (same year as bdate)
paramYesAQS parameter code: '14129' (Lead (Pb)), '42101' (CO (Carbon Monoxide)), '42401' (SO2 (Sulfur Dioxide)), '42602' (NO2 (Nitrogen Dioxide)), '44201' (Ozone), '81102' (PM10), '88101' (PM2.5 (FRM/FEM)), '88502' (PM2.5 (non-FRM, e.g. continuous))
stateYes2-digit state FIPS code: '06' (CA), '48' (TX)
countyNo3-digit county FIPS code

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating safe read-only behavior. The description goes beyond annotations by specifying the exact data returned (daily mean, max, observation count) and the requirement for authentication via AQS_API_KEY and AQS_EMAIL. This adds transparency about the necessary setup and output content.

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 three sentences covering purpose, data details, and use case. It's front-loaded with the main purpose. However, the parameter code list is duplicated from the schema, which is redundant and slightly bloaty. Removing that duplication would make it even more concise, but it's still efficient overall.

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 no output schema, so the description should clarify return format. The description states it returns 'daily mean, max, and observation count per monitor' but doesn't detail structure or additional fields like units. Also, authentication requirements are mentioned, which is good. Given the lack of output schema and the moderate complexity, a score of 3 is justified for the missing structural details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so all parameters (bdate, edate, param, state, county) have descriptions in the schema. The description does not add new parameter details; it merely lists the parameter codes already in the schema. However, it does provide context that parameters are required for daily data retrieval, but that's not additional semantics. Given the 100% coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get daily air quality summary data from EPA AQS.' It specifies the resource (EPA AQS), the scope (daily summary data), and what metrics are returned (daily mean, max, observation count). This distinguishes it from sibling tools like epa_air_quality and epa_aqs_monitors, which are about broader air quality queries or monitor metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: 'Useful for tracking day-to-day pollution levels. Cross-reference with CDC health data.' It doesn't explicitly mention when not to use it or alternative tools, but it does give context for when it's appropriate. The lack of explicit exclusions is a minor gap, but the intended use is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_aqs_monitorsA
Read-onlyIdempotent

Find air quality monitoring stations from EPA AQS. Returns monitor locations, operational dates, measurement types, and operating agencies. Parameters: '14129' (Lead (Pb)), '42101' (CO (Carbon Monoxide)), '42401' (SO2 (Sulfur Dioxide)), '42602' (NO2 (Nitrogen Dioxide)), '44201' (Ozone), '81102' (PM10), '88101' (PM2.5 (FRM/FEM)), '88502' (PM2.5 (non-FRM, e.g. continuous)). Useful for finding what is being measured and where. Requires AQS_API_KEY and AQS_EMAIL.

ParametersJSON Schema
NameRequiredDescriptionDefault
bdateYesBegin date YYYYMMDD
edateYesEnd date YYYYMMDD
paramYesAQS parameter code: '14129' (Lead (Pb)), '42101' (CO (Carbon Monoxide)), '42401' (SO2 (Sulfur Dioxide)), '42602' (NO2 (Nitrogen Dioxide)), '44201' (Ozone), '81102' (PM10), '88101' (PM2.5 (FRM/FEM)), '88502' (PM2.5 (non-FRM, e.g. continuous))
stateYes2-digit state FIPS code: '06' (CA), '48' (TX)
countyNo3-digit county FIPS code

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's job is to add context. It discloses return contents (monitor locations, operational dates, measurement types, agencies) and the authentication requirement (AQS_API_KEY and AQS_EMAIL), which goes beyond the schema. It omits details like pagination or rate limits, but for a simple lookup this is adequate. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient: a direct opening sentence, a return-fields sentence, a parameter listing, a usage note, and an auth requirement. The parameter list is somewhat redundant with the schema but not verbose. Front-loaded and well-organized, earning a strong score without being overly terse.

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 no output schema, the description compensates by explicitly stating what the tool returns (monitor locations, operational dates, measurement types, agencies). It also mentions the required authentication. It does not cover pagination or limits, but for a station lookup tool these are minor. Overall, an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented in the schema. The description redundantly lists the parameter codes and their meanings, matching exactly what the schema provides. It adds no new semantic value beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Find'), resource ('air quality monitoring stations'), and source ('EPA AQS'), then lists concrete return fields (locations, operational dates, measurement types, operating agencies). This unambiguously identifies the tool's function and distinguishes it from other EPA tools like epa_aqs_daily or epa_air_quality.

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 a clear use case ('Useful for finding what is being measured and where') that conveys the intended scenario. It does not explicitly name alternatives or state when not to use, but the context is sufficient for an agent to infer appropriateness. No exclusions are mentioned, 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.

epa_drinking_waterA
Read-onlyIdempotent

Get Safe Drinking Water Information System (SDWIS) data by state. Returns public water systems with population served, source type, and system type. System types: 'CWS' (Community Water System (serves residents year-round)), 'NTNCWS' (Non-transient Non-community (serves 25+ of same people, e.g. schools)), 'TNCWS' (Transient Non-community (serves transient users, e.g. gas stations)). Cross-reference with CDC health data and Census population for per-capita analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNoMax results (default 100)
stateYesTwo-letter state code: 'CA', 'TX', 'NY'

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral details beyond that—no mention of data coverage limitations, update frequency, pagination behavior, or how the open-world hint manifests. The system type definitions are semantic output context, not behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

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 compact enumeration of return fields, then clarifications for system types, and a final cross-reference suggestion. It is efficient, but the system-type definition block is somewhat lengthy and could potentially be abbreviated without losing essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two parameters and no output schema, the description is nearly complete. It states the output nature (public water systems), defines the key system type values, and suggests a concrete analytical use case. It does not describe the output structure (e.g., whether it is an array or object), but such information is not strictly necessary given the service's simplicity and the schema coverage for input.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%—both `state` and `rows` have descriptions. The tool description adds no parameter-specific meaning beyond what the schema already provides; it does mention 'by state' but that is already in the schema's state description. The system type information is about return values, not parameters, so the description adds little to parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource (SDWIS data), the scope (by state), and the returned fields (population served, source type, system type). It goes beyond the tool name by explaining the domain and the data semantics, and it is readily distinguishable from sibling EPA tools like epa_air_quality or epa_facilities.

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 makes the tool's use case explicit: retrieving public water system data for a state and cross-referencing with CDC and Census data for per-capita analysis. It does not name alternative tools or state when not to use it, but the context is clear enough for an agent to select it for drinking-water-related queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_enforcementA
Read-onlyIdempotent

Search EPA enforcement cases -- civil and criminal actions with penalties, settlements, and outcomes. Case types: 'JDC' (Judicial (court) case), 'AFR' (Administrative formal (EPA order)). Returns case name, primary law violated, penalties, settlement dates, and outcomes. Cross-reference with DOJ press releases, SEC financials, lobbying data, and FEC contributions.

ParametersJSON Schema
NameRequiredDescriptionDefault
lawNoFilter by primary law: 'CAA' (Clean Air), 'CWA' (Clean Water), 'RCRA', 'CERCLA', 'TSCA', 'SDWA'
limitNoMax results (default 20)
stateYesTwo-letter state code: 'CA', 'TX', 'NY'

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by specifying the case types and return fields (case name, primary law, penalties, settlement dates, outcomes), which is valuable beyond the annotations. It does not mention pagination or rate limits, but that is minor given the read-only nature.

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 at four sentences and front-loads the core purpose. The inclusion of case types and return fields is valuable, and the cross-referencing note is a useful contextual pointer. No fluff or redundant phrasing; the only slight deviation is the cross-reference sentence, which is off-topic but still relevant for investigation workflows.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 params, read-only, no output schema), the description adequately covers the main aspects: purpose, case types, and return fields. It lacks explicit mention of pagination or limit behavior, but the schema's limit parameter with default covers that. The description is sufficient for an agent to know what to expect and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for all three parameters (state, law, limit) with descriptions. The tool description does not add any additional semantics beyond the schema; it does not mention that state is required (though schema already does) or provide extra format details for law codes. Since schema coverage is complete, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches EPA enforcement cases, specifies it covers civil and criminal actions, and lists the types of data returned (penalties, settlements, outcomes). It also names the case types (JDC, AFR), distinguishing it from other EPA tools like epa_facilities or epa_superfund that focus on facilities or sites. The verb 'Search' and resource are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for enforcement-related investigations and suggests cross-referencing with DOJ, SEC, lobbying, and FEC data, which gives context on when to combine it with other tools. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions, though among EPA siblings, none cover enforcement cases, so the differentiation is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_facilitiesB
Read-onlyIdempotent

Search EPA-regulated facilities for environmental compliance and violations via ECHO. Find facilities with air or water permit violations, inspections, and enforcement actions. Media types: 'air' (Clean Air Act (CAA) facilities via ICIS-Air), 'water' (Clean Water Act (CWA) facilities via ICIS-NPDES).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
stateYesTwo-letter state code: 'CA', 'TX', 'NY'
major_onlyNoOnly show major facilities (true/false, default true)
media_typeNoMedia type: 'air' (Clean Air Act (CAA) facilities via ICIS-Air), 'water' (Clean Water Act (CWA) facilities via ICIS-NPDES). Default: air
active_onlyNoOnly show active facilities (true/false, default true)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the ECHO source and media type details, but those are also present in the input schema. It does not disclose additional behavioral traits such as pagination, rate limits, or handling of no results. Moreover, the description contains an internal factual error ('Clean Water Act (CAA)'), which undermines transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the primary purpose. It is efficient and avoids fluff. However, it redundantly repeats media type details already in the schema, and the factual error adds noise. It could be slightly more concise by not repeating schema content, but overall it is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and 5 parameters, the description could benefit from mentioning required parameters (state) and available filters, but the schema already documents these. It does not explain how this search tool differs from related EPA tools or when to use it over them. The factual error further detracts from completeness. The description is adequate but not thorough for a search tool with multiple filters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters have descriptive text in the schema. The description repeats the media_type explanation but does not add any meaning beyond what the schema already provides. For example, it does not clarify the interplay between filters like major_only and active_only, or the effect of limit. Baseline of 3 is appropriate given high schema coverage.

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 a specific verb ('Search') and resource ('EPA-regulated facilities') with a clear domain (environmental compliance and violations). It mentions air and water permit violations, inspections, and enforcement actions, which distinguishes it from detail tools like epa_facility_detail. However, it does not explicitly name sibling alternatives, and it contains a minor factual error ('Clean Water Act (CAA)' instead of 'Clean Air Act (CAA)'), which slightly reduces clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on what the tool does (search for facilities, violations, inspections) but does not explicitly state when to use it versus alternatives like epa_facility_detail, epa_enforcement, or epa_toxic_releases. There is no mention of when not to use this tool or which scenarios call for a different tool. It implies a search use case but lacks explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_facility_detailA
Read-onlyIdempotent

Get a detailed facility report from ECHO by registry ID. Returns permits, enforcement actions, compliance summaries, NAICS/SIC codes, and inspection history. Use epa_facilities first to find a RegistryID, then pass it here for the full report.

ParametersJSON Schema
NameRequiredDescriptionDefault
registry_idYesECHO Registry ID from epa_facilities results (e.g. '110071141730')

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds context about the data returned but does not discuss other behavioral traits like error conditions, data freshness, or potential response variability. With annotations present, the bar is lower, and the added value is moderate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: first states the purpose, second lists the data contents, third gives usage guidance. No redundant words, front-loaded with the core function, and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter detail tool with annotations covering safety and a clear workflow, the description covers all necessary aspects: what it does, what data it returns, and how to obtain the required input. No output schema exists, but the listed contents provide sufficient context for expected results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already states it is an ECHO Registry ID from epa_facilities results. The tool description reinforces the source and workflow but does not add new semantic meaning beyond what the schema provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets a detailed facility report from ECHO by registry ID, and lists the specific data contents (permits, enforcement actions, compliance summaries, NAICS/SIC codes, inspection history). This distinguishes it from sibling tools like epa_facilities (which likely returns search results) and other EPA detail tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use epa_facilities first to obtain a RegistryID, then pass it here for the full report. This gives a clear workflow and effectively tells the agent when to use this tool versus alternatives, satisfying the when-to-use requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_greenhouse_gasA
Read-onlyIdempotent

Get Greenhouse Gas (GHG) emissions data by state. Returns large emitters reporting under EPA's Greenhouse Gas Reporting Program (GHGRP). Includes CO2-equivalent emissions, facility name, sector, and location. Cross-reference with EIA energy data and BLS CPI energy component.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNoMax results (default 100)
stateYesTwo-letter state code: 'CA', 'TX', 'NY'

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds meaningful behavioral context by clarifying that the data covers only 'large emitters' under GHGRP and enumerates the returned fields, which is especially valuable given the absence of an output 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?

Three sentences with no filler. The primary action and scope are front-loaded, followed by a compact list of returned fields and a useful cross-reference hint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with full schema coverage, the description is largely complete: it identifies the data source, scope, returned content, and a related-data hint. It does not mention temporal coverage, aggregation granularity, or update frequency, but those are minor gaps given the low complexity and informative annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'state' and 'rows' have clear schema descriptions. The tool description reinforces the state-filtering purpose but does not add new parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get Greenhouse Gas (GHG) emissions data by state.' It further distinguishes the tool by naming EPA's GHGRP program and the specific return fields (CO2-equivalent emissions, facility name, sector, location), making it clearly distinct from sibling EPA tools like epa_toxic_releases or epa_facilities.

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: when GHG emissions data by state from EPA's GHGRP is needed. The cross-reference note with EIA and BLS adds a usage context, but there is no explicit mention of when not to use it or which alternative EPA sibling tools to prefer, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_rcraA
Read-onlyIdempotent

Search RCRA hazardous waste facilities by state via ECHO. Returns generators, transporters, and treatment/storage/disposal (TSD) facilities regulated under RCRA Subtitle C. Cross-reference with epa_toxic_releases (TRI) and epa_greenhouse_gas for multi-program facility analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
stateYesTwo-letter state code: 'CA', 'TX', 'NY'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds meaningful context by specifying the facility types returned (generators, transporters, TSD) and that it queries via ECHO, which goes beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. It front-loads the core action ('Search RCRA hazardous waste facilities by state'), then adds return details, and finally a cross-referencing tip. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with one required parameter and no output schema, the description explains what is returned (facility types) and hints at the ECHO source. It lacks explicit details about result structure or pagination, but given the low complexity and strong annotations, it is nearly complete. A 4 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'state' and 'limit' fully described in the input schema. The description does not add any additional parameter details beyond what the schema provides, so it meets the baseline for high coverage without adding extra 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 verb ('Search'), resource ('RCRA hazardous waste facilities'), and scope ('by state'), and specifies the facility types returned (generators, transporters, TSD). It distinguishes itself from related EPA tools like epa_facilities and epa_toxic_releases by focusing on RCRA Subtitle C facilities, so an agent can easily tell it apart.

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 by stating the search scope and explicitly mentions cross-referencing with epa_toxic_releases and epa_greenhouse_gas for multi-program analysis, which suggests when to use this tool versus others. However, it does not explicitly state when not to use it or provide alternative conditions, so it lacks full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_superfundA
Read-onlyIdempotent

Get Superfund (CERCLA) contaminated sites by state. Returns site name, location, NPL status, and cleanup progress. NPL statuses: 'F' (Final NPL (active cleanup)), 'P' (Proposed NPL), 'D' (Deleted from NPL (cleanup completed)), 'N' (Not on NPL). Cross-reference with Census demographics, CDC health data, HUD housing values, and USAspending cleanup funding.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNoMax results (default 100)
stateYesTwo-letter state code: 'NJ', 'CA', 'TX'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral context by explaining the NPL status codes (F, P, D, N) and the returned cleanup progress, which are essential for interpreting results. It does not contradict annotations and adds useful detail beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is approximately three sentences and front-loads the main purpose immediately. The NPL status enumeration is necessary for correct interpretation and is presented compactly. There is no redundant fluff, and every sentence contributes to understanding the tool's behavior and use.

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 two parameters (one required, one optional) and no output schema, the description sufficiently explains what the tool returns and includes the crucial NPL status interpretation. It also suggests cross-referencing with other datasets, which is helpful for broader analysis. It does not mention pagination beyond the rows parameter (which schema covers) or error handling, but for a simple state-query tool these are minor omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters: 'state' includes a clear description of two-letter codes, and 'rows' includes max results and default. The description does not add any additional parameter-specific guidance beyond what the schema already provides, so it does not elevate the semantics beyond the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'Superfund (CERCLA) contaminated sites' with a scope of 'by state.' It explicitly lists the returned fields (site name, location, NPL status, cleanup progress) and provides the NPL status codes. This distinguishes it from sibling EPA tools like epa_facilities or epa_toxic_releases, which cover other data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning cross-referencing with Census, CDC, HUD, and USAspending data, which suggests analytical use cases. However, it does not explicitly state when not to use this tool or name alternative tools for different data needs. It provides clear context but lacks exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_toxic_releasesA
Read-onlyIdempotent

Get Toxics Release Inventory (TRI) data by state. TRI tracks chemical releases from industrial facilities reported under EPCRA Section 313. Common sectors: 'Chemicals', 'Metal Mining', 'Electric Utilities', 'Petroleum', 'Food/Beverages/Tobacco', 'Paper', 'Primary Metals'. Cross-reference with epa_facilities for compliance status and epa_greenhouse_gas for emissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNoMax results (default 100)
stateYesTwo-letter state code: 'CA', 'TX', 'NY'
countyNoCounty name to filter by: 'LOS ANGELES', 'HARRIS'

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful domain context about TRI and common sectors, but it does not disclose the return format, pagination behavior, time range, or data granularity, which would be valuable for an agent without an output 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 four sentences with no filler, and the core purpose is front-loaded. Every sentence contributes: the purpose, the data source background, the common sectors, and the cross-reference guidance to sibling tools.

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 query tool with fully documented parameters and read-only annotations, the description is adequate. However, there is no output schema, and the description does not clarify what fields or structures the returned TRI data contains, leaving a meaningful gap for an agent deciding how to use the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: state, county, and rows each have clear descriptions with examples and defaults. The description's mention of 'by state' aligns with the required state parameter, but it adds no new meaning beyond what the input schema already documents for the 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 opens with 'Get Toxics Release Inventory (TRI) data by state', clearly stating a specific verb, resource, and scope. The second sentence explains what TRI tracks, which distinguishes it from sibling EPA tools like epa_facilities and epa_greenhouse_gas without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: to retrieve TRI chemical release data by state. It also names alternative tools and their appropriate use cases ('Cross-reference with epa_facilities for compliance status and epa_greenhouse_gas for emissions'), but it does not explicitly state when *not* to use this tool or provide exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_uv_indexA
Read-onlyIdempotent

Get UV index forecast for a U.S. location (ZIP code or city/state). UV Scale: 0-2 Low, 3-5 Moderate, 6-7 High, 8-10 Very High, 11+ Extreme. Useful for health recommendations -- high UV correlates with skin cancer risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNo5-digit ZIP code: '10001', '90210'. Use this OR city+state.
cityNoCity name: 'Los Angeles', 'Chicago'. Must be used with state.
stateNoTwo-letter state code: 'CA', 'IL'. Must be used with city.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and non-destructive behavior. The description adds the UV scale (0-2 Low, 3-5 Moderate, etc.) and the health relevance, which are not present in annotations or schema. This enriches the agent's understanding beyond the structured metadata without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, front-loading the core purpose, then adding the interpretive scale and a practical usage note. There is no redundant wording; every sentence earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by providing the UV scale, which implies the return is a numeric index that can be mapped to categories. It does not specify forecast period or behavior when no parameters are provided, but given the simple nature and strong annotations, this is largely sufficient for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (zip, city, state) already clearly described. The description only mentions 'ZIP code or city/state', which is already implicit in the schema. No additional parameter semantics are provided, so it rests at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a UV index forecast for a U.S. location, specifying both the resource and action. It is distinct from all sibling tools, none of which deal with UV index. The inclusion of the UV scale further clarifies the exact output interpretation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes it is for U.S. locations and ties usage to health recommendations, giving a clear context. It does not explicitly mention alternatives or when not to use it, but given the extensive sibling list, no other tool serves this purpose, so the guidance is adequate though not explicit about exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_agenciesA
Read-onlyIdempotent

List law enforcement agencies in a U.S. state from the FBI CDE. Returns agencies grouped by county with ORI codes, coordinates, and NIBRS participation dates. Use ORI codes from this tool to query agency-level data in other FBI tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesTwo-letter state abbreviation (e.g., 'CA', 'TX', 'WA')

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by specifying the return structure (agencies grouped by county, with ORI codes, coordinates, and NIBRS participation dates). It doesn't mention pagination, rate limits, or error behavior, but the additional output details justify a score above the baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose in the first sentence. The second sentence adds essential output details and a usage hint. There is zero fluff; every word serves a function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter list tool, the description covers the purpose, output content, and a usage pattern (ORI codes for other tools). The schema covers the parameter, and annotations cover safety. Minor gaps exist, such as no mention of pagination or result limits, but these are not critical given the tool's simplicity. It is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description for the only parameter 'state' is complete (100% coverage) with examples like 'CA', 'TX'. The tool description adds nothing about the parameter itself. Since the schema fully documents the parameter, a baseline of 3 is appropriate – no extra semantic value is provided by 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 states a specific verb ('List'), a clear resource ('law enforcement agencies in a U.S. state from the FBI CDE'), and the output scope (grouped by county, with ORI codes, coordinates, and NIBRS participation dates). This unambiguously distinguishes it from other FBI tools like fbi_crime_summarized or fbi_arrest_data, which cover different data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage hint: 'Use ORI codes from this tool to query agency-level data in other FBI tools.' This tells the agent when to use it (to obtain ORI codes for downstream queries) but does not explicitly contrast it with sibling tools or state when not to use it. It lacks explicit alternatives or exclusion conditions, so it's adequate but not strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_arrest_dataA
Read-onlyIdempotent

Get arrest statistics from the FBI at national, state, or agency level. Offense codes are numeric: 'all' (all offenses), '11' (murder), '20' (rape), '30' (robbery), '50' (aggravated assault), '150' (drug abuse), and 40+ more. Returns counts or totals broken down by year, age, sex, race, ethnicity.

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code for agency-level data
typeNoData type: 'counts' (default) or 'totals'
stateNoTwo-letter state abbreviation for state-level data
offenseYesArrest offense code: '11' (Murder), '12' (Simple Assault), '20' (Rape), '23' (Larceny-Theft), '30' (Robbery), '50' (Aggravated Assault), ... (48 total)
to_yearNoEnd year (default: current year)
from_yearNoStart year (default: 5 years ago)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond annotations by stating that the tool 'Returns counts or totals broken down by year, age, sex, race, ethnicity.' This gives the agent a concrete expectation of the output shape, which is valuable because there is no output schema. It also specifies the scoping behavior (national/state/agency). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The first sentence states the core purpose and scope, the second gives key offense-code examples, and the third states the output breakdown. Every sentence earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 parameters and no output schema, and the description provides a solid overview but leaves gaps. It does not explain how to request national-level data versus state/agency level (implicitly omitting state/ori, but not stated), nor does it clarify the difference between 'counts' and 'totals' beyond naming them. Date range and type parameters are documented in the schema, but their interaction with the returned breakdown could be clearer. These are meaningful gaps for correct invocation, making the description adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by humanizing offense codes: '11' (murder), '20' (rape), '30' (robbery), '50' (aggravated assault), '150' (drug abuse), and noting '40+ more.' It also clarifies the meaning of the level parameters by stating that data can be at national, state, or agency level, which maps to state and ori. This extra context helps an agent select the correct offense code without opening 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 uses a specific verb and resource: 'Get arrest statistics from the FBI.' It clearly distinguishes this tool from siblings like fbi_crime_summarized and fbi_expanded_homicide by focusing on arrest statistics and naming the levels (national, state, or agency). It also lists the offense codes and output breakdown dimensions, leaving no ambiguity about what the tool does.

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 arrest statistics at national, state, or agency level are needed, with offense-code filtering and demographic breakdowns. It does not explicitly name sibling alternatives or state exclusions (e.g., 'use fbi_crime_summarized for summarized crime counts'), so it stops short of the 'explicit when-not' tier. The context is clear enough for an agent to infer suitability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_crime_summarizedA
Read-onlyIdempotent

Get summarized UCR crime data from the FBI at national, state, or agency level. Covers 10 offense categories: V (violent crime), P (property crime), HOM (homicide), RPE (rape), ROB (robbery), ASS (aggravated assault), BUR (burglary), LAR (larceny/theft), MVT (motor vehicle theft), ARS (arson). Returns year-by-year data with counts and rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code for agency-level data (e.g., 'WASPD0000')
stateNoTwo-letter state abbreviation for state-level data
offenseYesUCR offense code: 'V' (Violent Crime), 'P' (Property Crime), 'HOM' (Homicide), 'RPE' (Rape), 'ROB' (Robbery), 'ASS' (Aggravated Assault), 'BUR' (Burglary), 'LAR' (Larceny/Theft), 'MVT' (Motor Vehicle Theft), 'ARS' (Arson)
to_yearNoEnd year (default: current year)
from_yearNoStart year (default: 5 years ago)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that it returns year-by-year data with counts and rates, which is useful behavioral context beyond annotations. However, it does not disclose pagination, rate limits, or data granularity details, which would be helpful but are not critical given the read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The main purpose is front-loaded, and the offense list is compact and directly relevant. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description gives a high-level idea of the return shape (year-by-year counts and rates). It covers the tool's scope, offense categories, and level of data. It omits any caveats about data availability or aggregation rules, but given the schema and annotations, it is reasonably 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter documented. The description does not add meaning beyond the schema—it merely restates the offense codes that are already in the enum. It does not explain the relationship between ori and state, or the year range defaults, which are already covered by the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves summarized UCR crime data from the FBI at national, state, or agency level, and enumerates the 10 offense categories. This is a specific verb-resource-scope combination that distinguishes it from sibling FBI tools like fbi_arrest_data or fbi_hate_crime.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear context (summarized UCR crime data) but does not explicitly mention when to use this tool over alternatives like fbi_nibrs or fbi_expanded_property. It implies usage for summary statistics, but lacks explicit exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_expanded_homicideA
Read-onlyIdempotent

Get expanded homicide (Supplementary Homicide Report) data from the FBI. Includes victim/offender demographics, weapons used, and circumstances. Available at national, state, or agency level.

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code for agency-level data
typeNoData type (default: counts)
stateNoTwo-letter state abbreviation for state-level data
to_yearNoEnd year
from_yearNoStart year

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so safety behavior is covered. The description adds content detail (demographics, weapons, circumstances) but does not disclose any additional behavioral traits like pagination, response size, or interaction between parameters. Given the annotation coverage, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, starts with the verb and resource, and includes all essential information (data source, content, levels) without redundancy. No unnecessary words.

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 data content, but it does not explain how to request each level (e.g., which parameter to use for national vs. state vs. agency) or how parameters interact when multiple are provided. With 5 optional parameters and no output schema, this leaves some ambiguity, though the schema helps fill gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter (ori, type, state, to_year, from_year) already has a description. The description's mention of 'national, state, or agency level' hints at parameter usage but adds no semantics beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves expanded homicide data from the FBI and lists content areas (victim/offender demographics, weapons, circumstances). It also indicates levels (national, state, agency), which distinguishes it from sibling FBI tools like fbi_arrest_data or fbi_crime_summarized. It doesn't name a sibling explicitly, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful context about what data is included and the availability at different geographic levels, which tells an agent when to use this tool. However, it does not explicitly contrast against alternatives (e.g., 'use this instead of fbi_crime_summarized for homicide details'), and it does not specify conditions for choosing national vs. state vs. agency level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_expanded_propertyA
Read-onlyIdempotent

Get expanded property crime details from the FBI (Supplemental Return / Return A data). Provides additional breakdowns beyond summarized counts: value of stolen/recovered property, type of property, premises involved. Available for burglary (NB), larceny (NL), motor vehicle theft (NMVT), and robbery (NROB).

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code for agency-level data
typeNoData type (default: counts)
stateNoTwo-letter state abbreviation for state-level data
offenseYesOffense code: 'NB' (Burglary), 'NL' (Larceny), 'NMVT' (Motor Vehicle Theft), 'NROB' (Robbery)
to_yearNoEnd year
from_yearNoStart year

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, covering safety and idempotency. The description adds meaningful context about the data source (Supplemental Return / Return A) and the nature of the output (value of stolen/recovered property, type, premises), which goes beyond the annotations. It does not contradict annotations and adds useful behavioral detail about what the tool 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 three sentences with zero fluff. It front-loads the purpose, then lists the additional breakdowns, and finally specifies the applicable offense codes. Every sentence adds value, and it is appropriately sized for a read-only data retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the purpose, the data source, the output content, and the applicable offense types. It does not explain the 'type' parameter (counts vs totals) or how to filter by ORI/state, but those are clearly documented in the schema. Given the moderate complexity and full schema coverage, the description is complete enough for an agent to call the tool correctly without missing crucial context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters documented. The description repeats the offense codes (NB, NL, NMVT, NROB) and their meanings, but the schema already provides that. It does not add any new parameter-specific semantics beyond what the schema already includes, so it stays at the baseline 3 for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the specific resource ('expanded property crime details from the FBI'), listing concrete output breakdowns (value, type, premises). It differentiates from summarized counts and other FBI tools by naming the offense codes and the data source (Supplemental Return / Return A). This is unambiguous and distinguishes it from siblings like fbi_crime_summarized and fbi_expanded_homicide.

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 mentions it provides 'additional breakdowns beyond summarized counts,' which implies using this tool when expanded detail is needed over aggregate data. It does not name alternative tools explicitly but implies the distinction from summarized crime data and limits scope to property crimes (burglary, larceny, motor vehicle theft, robbery), which is clear enough. It lacks explicit exclusions or 'when not to use' guidance but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_hate_crimeA
Read-onlyIdempotent

Get hate crime data from the FBI at national, state, or agency level. Returns incidents broken down by bias category (race, religion, sexual orientation, etc.), offense type, victim type, offender demographics, and location type. Optionally filter by bias code (e.g., '12'=Anti-Black, '14'=Anti-Jewish, '22'=Anti-Islamic, '41'=Anti-Gay).

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code for agency-level data
biasNoBias code filter: '11' (Anti-White), '12' (Anti-Black or African American), '13' (Anti-American Indian or Alaska Native), '14' (Anti-Asian), '15' (Anti-Multiple Races, Group), '16' (Anti-Native Hawaiian or Other Pacific Islander), ... (35 total)
typeNoData type
stateNoTwo-letter state abbreviation for state-level data
to_yearNoEnd year
from_yearNoStart year

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context by stating that results are broken down by specific dimensions and that bias filtering is optional meaningful behavioral detail. It does not disclose potential response format limitations, pagination, or data availability, but with annotations covering the main safety aspects, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The core action and scope are front-loaded ('Get hate crime data...'), followed by a compact list of return dimensions, and then a helpful note on bias filtering. Every sentence earns its place, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 optional parameters and no output schema, the description provides a reasonable overview but leaves some gaps. It does not explain the 'counts' vs 'totals' type parameter (though the schema describes it) or indicate default year ranges. Since no output schema exists, the description could more explicitly state the nature of the returned data (e.g., counts as numbers), but it does list the breakdown categories, which helps an agent understand what to expect. Moderate completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the significance of the bias parameter with concrete examples ('12'=Anti-Black, '14'=Anti-Jewish, etc.) and clarifying that it is optional. This adds meaningful semantic value for selecting parameter values, particularly for the bias enum, which the schema only lists as codes without 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's purpose: 'Get hate crime data from the FBI at national, state, or agency level.' It specifies the resource (FBI hate crime data) and the verb (get), and provides concrete details about the returned breakdowns (bias category, offense type, victim type, offender demographics, location type), making it distinct from sibling FBI tools.

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: if an agent needs hate crime data, this is the tool, and it can be scoped to national, state, or agency level. However, it does not explicitly state when to choose this over alternatives like fbi_crime_summarized or fbi_nibrs, nor does it mention any exclusions or prerequisites. The usage context is clear from the subject matter but not directly articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_law_enforcement_employeesA
Read-onlyIdempotent

Get law enforcement employee data (sworn officers, civilian employees) at national, state, or agency level. Shows staffing levels over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code (requires state param too)
stateNoTwo-letter state abbreviation for state-level data
to_yearNoEnd year (default: current year)
from_yearNoStart year (default: 5 years ago)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's added value comes from revealing that the data is time-series and can be aggregated at three levels. This supplements the safety profile with useful behavioral context, though it does not describe response format 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the core purpose and then adds specificity about data types and levels, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with all optional parameters and strong annotations, but the description does not explain how to request national versus state versus agency data in terms of parameters, nor does it describe the output format beyond 'shows staffing levels over time.' Since there is no output schema, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter (state, ori, to_year, from_year). The description only adds a high-level mention of 'national, state, or agency level' without explicitly mapping which parameters produce each level (e.g., omit both for national, provide state for state-level, provide ori for agency).

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') with a clear resource ('law enforcement employee data'), further specifying the data types (sworn officers, civilian employees) and scopes (national, state, agency). It also notes the temporal dimension ('over time'), making it clearly distinct from sibling FBI tools like crime summaries or arrests.

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 communicates the tool's scope (national, state, or agency level) and the nature of the data (staffing levels over time), giving clear context for when to use it. However, it does not explicitly name alternative tools or state when not to use this one, stopping short of fully guiding selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_lesdcC
Read-onlyIdempotent

Get Law Enforcement Suicide Data Collection (LESDC) statistics. Chart types: race, demographics, manner, location, employment, occupation, military, totals, duty, exp, experience, suffered, prior, investigation, wellness.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear to query
chart_typeYesLESDC chart type

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description needed to add behavioral context such as return format, year coverage, or handling of missing data. Instead, it mostly restates that the tool gets statistics and lists chart types, adding little beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately short and front-loaded: the primary purpose appears first, followed by a compact chart-type list. However, the list duplicates schema information and omits one enum value, so it is not as clean or self-contained as a top-tier description.

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 two-parameter, read-only tool, the schema and annotations carry most of the weight, and the description is minimally adequate for selecting the tool. Still, it does not describe the response/statistics format, leaves out a valid chart type, and offers no usage context, so there are clear gaps an agent would have to resolve elsewhere.

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 100%, so the baseline is 3, but the description's chart-type list is redundant with the enum and omits the valid value 'expfollowing'. It adds no extra meaning about what each chart type represents or how the year parameter behaves, and the omission makes it slightly misleading.

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 names a concrete resource ('Law Enforcement Suicide Data Collection statistics'), so an agent can tell this tool is about LESDC data. The chart-type list further narrows the scope, but it does not explicitly distinguish this from sibling FBI tools, so it is not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus other FBI or crime-data tools, and no mention of prerequisites or fallback behavior. The chart-type list is not usage guidance; it is just a parameter enumeration. Usage must be inferred entirely from the tool name and domain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_nibrsA
Read-onlyIdempotent

Get NIBRS (National Incident-Based Reporting System) data from the FBI. More detailed than summarized UCR data — includes victim/offender demographics, relationships, weapons, location, and time of day for 71 offense types. Offense codes use NIBRS format: '13A' (aggravated assault), '09A' (murder), '23H' (all other larceny), '35A' (drug violations), '220' (burglary), etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
oriNoAgency ORI code for agency-level data
typeNoData type (default: counts)
stateNoTwo-letter state abbreviation for state-level data
offenseYesNIBRS offense code: '100' (Kidnapping/Abduction), '101' (Treason), '103' (Espionage), '120' (Robbery), '200' (Arson), '210' (Extortion/Blackmail), ... (72 total)
to_yearNoEnd year
from_yearNoStart year

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds useful context about what the data contains, but does not disclose pagination, rate limits, authentication needs, or the difference between 'counts' and 'totals' outputs. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the first identifies the source, the second contrasts with UCR and lists contained data fields, and the third provides concrete code examples. No filler, no repetition of schema details; information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the data's meaning and offense code format, which is helpful. But it omits guidance on the 'type' parameter's counts-vs-totals distinction and on how ori/state scoping interacts with the required offense parameter. Without an output schema, those gaps leave the agent with incomplete information about what request shape produces what result.

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 100% description coverage, so the baseline is 3. The description goes beyond the schema by explaining the NIBRS code format and mapping several enum codes to human-readable offense labels (e.g., '13A' = aggravated assault, '09A' = murder), helping an agent choose a valid offense 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?

Description states a specific verb ('Get'), a specific resource ('NIBRS data from the FBI'), and explicitly contrasts with 'summarized UCR data' — which corresponds to the sibling tool fbi_crime_summarized. It also enumerates the data content (victim/offender demographics, relationships, weapons, location, time of day), so an agent can unambiguously identify the tool's 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 phrase 'More detailed than summarized UCR data' gives clear comparative context: use this tool for granular incident-level data rather than aggregate UCR summaries. However, it stops short of naming the alternative sibling or stating explicit exclusions, such as when to choose fbi_arrest_data or fbi_hate_crime instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_use_of_forceA
Read-onlyIdempotent

Get Use of Force data from the FBI. Covers incidents where law enforcement use of force resulted in death, serious injury, or firearm discharge. Available at federal (all federal agencies) or national (all participating agencies) level. Use scope='federal' for federal agencies, 'national' for all agencies participation data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear to query (2019-present)
scopeYes'federal' = federal UoF by year, 'national' = national UoF participation by year
quarterNoQuarter (default: 4 = full year cumulative)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds useful context about the incidents covered and the federal/national levels, but it does not disclose additional behavioral details such as response shape, pagination, or update cadence.

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 lead with the core action, then define the data coverage, then give concrete parameter guidance. Every sentence earns its place, and the scope instruction is front-loaded before the parameter mapping.

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 read-only, idempotent query tool with 100% schema coverage and only three simple parameters, the description covers purpose, data scope, and scope selection sufficiently. It could mention the quarter default behavior or output format, but the schema already documents quarter and annotations carry the safety context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so year, scope, and quarter are already documented in structured form. The description adds natural-language clarity to the scope enum with 'all federal agencies' and 'all participating agencies,' but it does not meaningfully explain year or quarter 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 opens with a specific action and resource ('Get Use of Force data from the FBI') and clarifies the exact incident types covered. It also disambiguates the two scopes ('federal' vs 'national'), making it easy to distinguish this tool from other FBI siblings like fbi_crime_summarized or fbi_arrest_data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit direction for choosing scope: 'Use scope=\'federal\' for federal agencies, \'national\' for all agencies participation data.' It does not explicitly name alternative tools or say when not to use this tool, but the clear data coverage makes the appropriate context obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_animal_eventsA
Read-onlyIdempotent

Search animal/veterinary adverse event reports (1.3M+ reports). Reports of drug side effects in animals — dogs, cats, horses, cattle, etc. Each report has: animal info (species, breed), drugs, reactions (VEDDRA terms), outcomes. Note: Some fields may contain 'MSK' (masked) values for privacy.

Example searches:

  • 'animal.species:"Dog"' — dog events

  • 'original_receive_date:[20200101+TO+20231231]' — events in date range

  • 'serious_ae:true' — serious adverse events only

Count fields: animal.species.exact, primary_reporter.exact, serious_ae

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds useful data-level context: 1.3M+ report scale, field composition, the 'MSK' privacy masking warning, and count fields. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by report contents, a privacy note, and examples. No filler or redundancy given the complexity of an OpenFDA search tool; length is justified.

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?

No output schema exists, but the description covers report contents, search examples, and the masking quirk, giving enough for an agent to make a first call. It does not describe the exact response envelope (meta/results), which is a minor gap for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description enriches the parameters by showing dataset-specific search field examples (animal.species, original_receive_date, serious_ae) and listing count fields, going beyond the schema's generic query syntax.

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?

States a specific verb ('Search') and a clear resource ('animal/veterinary adverse event reports'). The 'animal/veterinary' qualifier distinguishes it from sibling FDA event tools like fda_drug_events even without naming them.

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: reports of drug side effects in animals, and includes concrete example searches showing how to query species, date ranges, and serious events. Does not explicitly name alternatives or give when-not scenarios, 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.

fda_approved_drugsA
Read-onlyIdempotent

Search FDA-approved drugs (Drugs@FDA database). Find approved drugs by brand name, sponsor/manufacturer, or application number. Shows approval history, active ingredients, and marketing status.

Example searches:

  • 'openfda.brand_name:"Ozempic"' — find Ozempic

  • 'sponsor_name:"Pfizer"' — all Pfizer approvals

  • 'products.active_ingredients.name:"SEMAGLUTIDE"' — by ingredient

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, open-world, idempotent, and non-destructive behavior, so the description doesn't need to restate those. It adds valuable context by specifying the output fields (approval history, active ingredients, marketing status) and provides example query syntax using OpenFDA query operators. This goes beyond the annotations and helps the agent understand what to expect from the tool. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it opens with the purpose, then lists what it shows, followed by three concrete example queries. Every sentence adds value, and the examples are front-loaded to illustrate usage quickly. There is no redundant text or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema, the description provides sufficient information about what the tool returns (approval history, active ingredients, marketing status). It also demonstrates the query syntax through examples, covering the main usage pattern. It does not mention pagination or error handling, but those are minor given the tool's simplicity and the presence of the limit parameter in the schema.

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 descriptions cover both parameters fully (100% coverage), so the baseline is 3. The description adds domain-specific examples (e.g., 'openfda.brand_name:"Ozempic"') that are directly applicable to this tool, making the search parameter more meaningful. These examples show the exact field names and value formats, which is valuable beyond the generic schema 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 the tool's purpose: 'Search FDA-approved drugs (Drugs@FDA database).' It specifies the verb 'Search' with a resource and lists the exact search dimensions (brand name, sponsor, application number). This distinguishes it from sibling tools like fda_drug_events (adverse events) and fda_drug_labels (label text) by focusing on the approved-drug database and its unique output fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for searching approved drugs and shows what it returns. It does not explicitly mention alternatives or when not to use it, but the purpose is specific enough that an agent can infer it should be used for approval-related queries. Example searches demonstrate the query format, which adds practical guidance. However, it lacks explicit exclusions such as 'do not use for adverse events or labels.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_countA
Read-onlyIdempotent

Count/aggregate any OpenFDA endpoint by a specific field. Returns top terms with counts. Works on ALL FDA endpoints. IMPORTANT: Use '.exact' suffix for full phrase counts (e.g. 'brand_name.exact'). Without '.exact', multi-word values like 'Class III' are split into separate word counts.

Endpoints: drug/event, drug/label, drug/ndc, drug/enforcement, drug/drugsfda, drug/shortages, device/event, device/510k, device/classification, device/enforcement, device/recall, device/pma, device/udi, food/enforcement, food/event, animalandveterinary/event, tobacco/problem.

Example count_field values per endpoint:

  • drug/ndc → pharm_class.exact, dea_schedule, dosage_form.exact

  • drug/shortages → update_type, status.exact, therapeutic_category.exact

  • device/510k → country_code, advisory_committee, clearance_type.exact

  • tobacco/problem → tobacco_products.exact, reported_health_problems.exact

  • food/event → reactions.exact, outcomes.exact

  • animalandveterinary/event → animal.species.exact, primary_reporter.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax count results (default: API default)
searchNoOptional search filter to narrow results before counting
endpointYesOpenFDA endpoint path (e.g. 'drug/ndc', 'device/510k', 'tobacco/problem')
count_fieldYesField to count. Use '.exact' for full phrases (e.g. 'pharm_class.exact')

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal read-only, idempotent, non-destructive behavior. The description adds genuinely useful behavioral detail beyond that: the `.exact` suffix requirement and the warning that multi-word values are split into separate word counts without it.

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 well-structured and front-loads the critical `.exact` caveat. The endpoint list largely duplicates the schema enum, but the example count_field values justify the length and make the tool easier to use.

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 output shape, the key field-format nuance, supported endpoints, and concrete example fields. Since there is no output schema, it does enough to prepare an agent to call the tool correctly, though it leaves search-filter behavior entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is fair, and the description adds value by providing per-endpoint example values for count_field and explaining the `.exact` suffix. This helps an agent pick realistic field names without external lookup.

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 a specific verb and resource: 'Count/aggregate any OpenFDA endpoint by a specific field' and clarifies output as 'top terms with counts.' It also distinguishes itself from per-endpoint FDA siblings by emphasizing it works on ALL FDA endpoints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: any OpenFDA endpoint and any count_field, with supported endpoint examples. It does not explicitly name alternatives or exclusions, so it stops just short of the strongest possible routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_covid_serologyA
Read-onlyIdempotent

Search COVID-19 serology test evaluation results. FDA's evaluation of antibody test performance (sensitivity/specificity).

Example searches:

  • 'antibody_truth:"Positive"' — positive samples

  • 'manufacturer:"Abbott"' — tests by manufacturer

Count fields: type (sample material), manufacturer.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the data nature (FDA evaluation, sensitivity/specificity) and hints at count fields, but does not disclose the exact return format, pagination, or whether results are records or aggregates. It does not contradict annotations, but it does not fully elaborate on behavioral traits beyond what is already given.

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 starts with the purpose, provides two illustrative search examples, and lists count fields. There is no redundant or vague wording. The examples are front-loaded and directly useful, making the description efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema and only two parameters, the description provides sufficient context for a search tool. It explains the subject matter (serology evaluation), gives example queries, and mentions count fields. It does not explicitly describe the structure of the response (e.g., whether it returns a list of records, total counts, etc.), but the examples and focus on sensitivity/specificity imply the data contains those metrics. The tool is not overly complex, and the description covers the essential usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (limit and search) have descriptions in the schema, so schema coverage is 100%. The description adds valuable examples for the search parameter, specifying valid fields like antibody_truth and manufacturer, and lists count fields (type, manufacturer.exact) that are not in the schema. This goes beyond the schema's generic query syntax and helps an agent construct meaningful queries. Limit is adequately described in the schema; the description does not add extra, but the search examples significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: searching FDA's evaluation results for COVID-19 serology (antibody) tests. It specifies the resource (FDA evaluation data) and the subject (sensitivity/specificity), which distinguishes it from other FDA search tools like fda_drug_events or fda_device_events. The verb 'Search' is explicit, and the examples reinforce the tool's focus on antibody test performance.

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 example searches but does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it. It implies usage via examples (e.g., searching by manufacturer or antibody_truth) but lacks explicit guidance on selecting this tool over other FDA or COVID-19 related tools. The context is clear, but exclusions and alternative routing are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_510kA
Read-onlyIdempotent

Search 510(k) premarket clearance decisions (174K+ since 1976). A 510(k) demonstrates a device is substantially equivalent to a legally marketed device.

Example searches:

  • 'advisory_committee:cv' — cardiovascular devices

  • 'openfda.regulation_number:868.5895' — by regulation number

  • 'device_name:"pacemaker"' — by device name

  • 'applicant:"Medtronic"' — by company

Count fields: country_code, advisory_committee, clearance_type.exact, decision_code

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is established. The description adds context about dataset volume and the regulatory meaning of 510(k), but doesn't disclose response format, pagination behavior, or any other operational traits beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the primary action. The example searches and count fields are useful, and no sentence feels wasted, though the four examples could arguably be trimmed without losing core meaning.

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 two-parameter search tool with no output schema, the description provides sufficient orientation: what the data is, how to search, and which fields support counting. It could be more complete by noting response shape or API constraints, but nothing critical is missing for an agent to call it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both parameters have descriptions, including search syntax examples in the schema. The description enriches this by providing four real query examples and listing 'Count fields', which adds meaning for aggregation-style usage even though it isn't strictly parameter documentation.

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 opens with a specific verb and resource: 'Search 510(k) premarket clearance decisions', which clearly identifies what the tool does. However, it doesn't explicitly differentiate from sibling FDA tools like fda_device_pma or fda_device_classification, so it relies on the 510(k) term alone to distinguish them.

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 usage context: dataset scope (174K+ decisions since 1976), a brief regulatory definition, and concrete example searches for the 'search' parameter. It doesn't mention when not to use this tool or name alternatives, but the examples effectively show how to construct queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_classificationA
Read-onlyIdempotent

Search medical device classification — ~1,700 generic device types. Returns device class (1=Class I, 2=Class II, 3=Class III), product codes, definitions.

Example searches:

  • 'regulation_number:872.6855' — by regulation number

  • 'product_code:NOB' — by product code

  • 'device_name:"pacemaker"' — by device name

  • 'device_class:3' — Class III (highest risk) devices

Count fields: device_class, medical_specialty.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the return content (device class, product codes, definitions) and the count fields, which go beyond the annotations. It also notes the scale (~1,700 types) without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: it starts with the core purpose, then details the output, followed by examples and count fields. It is a bit long but every sentence contributes useful information, and the examples are front-loaded. The structure aids quick scanning.

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 read-only search tool with no output schema, the description covers the essential aspects: what is searched, what is returned, example queries, and count fields. It does not mention pagination or limit behavior, but the limit parameter is already documented in the schema, so this is not a critical gap. Overall, it provides sufficient context for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (limit and search), so the baseline is 3. The description adds meaningful enrichment by providing concrete example queries (e.g., 'regulation_number:872.6855', 'product_code:NOB') and explaining the search query syntax with combinators, which helps the agent craft correct queries beyond the generic schema text.

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 searches medical device classification data, specifies the scope (~1,700 generic device types), and lists the returned fields (device class, product codes, definitions). It also provides example search formats, making the purpose unmistakable and distinct from sibling FDA tools like fda_device_events or fda_device_510k.

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 conveys usage through examples and explains the search syntax, making it clear when this tool is appropriate (searching device classifications). However, it does not explicitly state when not to use it or name alternatives for other device-related queries (e.g., events, recalls), leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_enforcementA
Read-onlyIdempotent

Search FDA device recall enforcement reports. Same classification system as drug/food recalls: Class I (most dangerous) to Class III. Note: Records before June 2012 may lack some fields.

Example searches:

  • 'classification:"Class I"' — most dangerous recalls

  • 'report_date:[20200101+TO+20231231]' — recalls in date range

  • 'recalling_firm:"Medtronic"' — by company

Count fields: voluntary_mandated.exact, classification.exact, status.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: the classification system (Class I-III), the caveat about records before June 2012 lacking fields, and the count fields available. This goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, a useful note about data quality, and concrete examples. It's slightly longer than necessary but every section earns its place by providing actionable query patterns.

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 search tool with 2 parameters and no output schema, the description covers the key aspects: what it searches, how to construct queries, and data caveats. It doesn't describe the return format, but the absence of an output schema and the simplicity of the tool make this acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds value by providing concrete query syntax examples and listing count fields, which helps the agent construct effective searches beyond the schema's generic examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches FDA device recall enforcement reports, with a specific verb ('Search') and resource ('FDA device recall enforcement reports'). It distinguishes itself from sibling tools like fda_device_recalls by focusing on enforcement reports, and the classification system note 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?

The description provides example searches and count fields, giving clear context on how to use the tool. It doesn't explicitly state when to use this tool versus alternatives like fda_device_recalls, but the examples and classification note imply the usage context well.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_eventsA
Read-onlyIdempotent

Search FDA medical device adverse event reports (MAUDE) — injuries, malfunctions, deaths.

Example searches:

  • 'device.generic_name:pacemaker' — pacemaker events

  • 'event_type:death' — events resulting in death

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds behavioral context beyond annotations with concrete query field examples ('device.generic_name', 'event_type') and event type coverage, giving the agent additional insight into the data shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, purposeful sentences plus two targeted examples. The main purpose is front-loaded)Skip; no filler or redundant content. Every element contributes to invoking the tool correctly.

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 two-parameter search tool with full schema coverage, read-only annotations, and no output schema, this description is sufficient. It supplies purpose, domain context, and executable query examples. Minor missing details like pagination defaults are already captured in the parameter schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already describes both parameters. The description adds value by providing domain-specific search examples (pacemaker, death) that illustrate the expected query format and field names, which the schema's generic openFDA syntax examples do not.

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?

States a specific verb ('Search') and resource ('FDA medical device adverse event reports (MAUDE)') and enumerates the event categories covered ('injuries, malfunctions, deaths'). This clearly differentiates from sibling tools like fda_device_recalls, fda_drug_events, and fda_device_pma.

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: use when searching medical device adverse event reports. It does not explicitly name alternatives or exclusions, but the resource-specific phrasing ('MAUDE') makes the intended use obvious relative to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_pmaA
Read-onlyIdempotent

Search Premarket Approval (PMA) decisions for Class III medical devices. PMA is required for high-risk devices — evaluates safety and effectiveness.

Example searches:

  • 'decision_code:APPR' — approved PMAs

  • 'product_code:LWP' — by product code

  • 'advisory_committee:CV' — cardiovascular devices

  • 'applicant:"Medtronic"' — by company

Count fields: advisory_committee, decision_code

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful examples and count fields, but does not disclose return format, pagination, or any side effects. It does not contradict annotations, and the additional context is modest, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and efficient. It leads with the core purpose, adds a brief domain explanation, then provides four concrete examples and a count-field hint. Every sentence serves a purpose, no fluff, and the examples are immediately useful for an agent. This is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema, the description does not explain the structure of returned data (e.g., fields per decision, pagination). It mentions count fields but not how results are presented. Given the tool's simplicity, the description covers the essentials for calling it, but an agent would not know what to expect in the response, which is a notable gap. A 3 is fair.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, but the description adds concrete example search syntax (e.g., 'decision_code:APPR', 'product_code:LWP') and count fields, which enrich the meaning of the 'search' parameter beyond the schema's generic description. The 'limit' parameter is already well-documented in the schema, so no extra needed. This added value justifies a 4.

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 searches Premarket Approval (PMA) decisions for Class III medical devices, using a specific verb and resource. It adds domain context (PMA required for high-risk devices) and examples, but does not explicitly differentiate from sibling tools like fda_device_510k or fda_device_classification, so it misses the top score for sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (for PMA decisions) and provides example search queries, but gives no explicit guidance on when to choose this tool over alternatives (e.g., 510k, recalls). It does not state exclusions or when not to use it. The context about high-risk devices hints at applicability, but no direct comparison is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_recallsA
Read-onlyIdempotent

Search FDA medical device recall reports (RES system). Find recalled devices by name, manufacturer, or reason for recall.

Example searches:

  • 'openfda.device_name:"pacemaker"' — pacemaker recalls

  • 'reason_for_recall:"software"' — software-related recalls

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety traits: readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful context by naming the RES system and providing query syntax examples. It doesn't disclose result behavior, sorting, or rate limits, but the annotation coverage lowers that burden to a moderate level.

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 with the tool's purpose, followed by useful examples. Every sentence adds value and there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only search tool with fully described parameters and rich annotations, the description is largely complete. The only gap is the absence of any note about the output shape, but with no output schema, a brief mention of return fields could have helped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already well-documented. The description adds concrete example searches such as 'openfda.device_name:"pacemaker"' and 'reason_for_recall:"software"', which go beyond the schema by showing realistic field usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Search FDA medical device recall reports (RES system).' It also specifies the main search dimensions (name, manufacturer, reason for recall), so an agent knows the tool's scope. It doesn't explicitly distinguish itself from similar FDA siblings like fda_device_enforcement or fda_food_recalls, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear use-case context: find device recall reports by name, manufacturer, or reason. The example searches reinforce the intended query patterns. It doesn't state a when-not-to-use or name alternatives, but the read-only, recall-specific framing is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_registrationsA
Read-onlyIdempotent

Search medical device establishment registrations & listings (336K+ records). Where devices are manufactured and which devices are made at each establishment.

Example searches:

  • 'products.product_code:HQY' — establishments making product code HQY

  • 'products.openfda.regulation_number:886.5850' — by regulation number

Count fields: products.openfda.device_class

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds useful behavioral context: dataset scale (336K+ records), what the data represents, and a count field path. It does not contradict the annotations, though it omits pagination/result-shape details.

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 front-loaded: a one-line summary, a clarifying sentence, two useful examples, and a short count-field note. No filler. The 'Count fields' line is terse but still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only search tool, the description supplies enough query syntax, domain examples, and scale information for an agent to call it correctly. The absence of an output schema is partially mitigated by the examples, though a brief note on the returned record shape would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents both parameters. The description adds domain-specific value examples for the 'search' parameter, such as 'products.product_code:HQY' and 'products.openfda.regulation_number:886.5850', plus a count-field hint, going beyond generic query syntax.

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?

States a specific verb 'Search' with a concrete resource: 'medical device establishment registrations & listings.' It also clarifies what question the tool answers ('Where devices are manufactured and which devices are made at each establishment'), which distinguishes it from sibling FDA device tools like fda_device_events, fda_device_classification, and fda_device_recalls.

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 with two concrete example searches by product code and regulation number, making it easy to see when to use this tool. However, it does not explicitly name sibling tools or state 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.

fda_device_udiA
Read-onlyIdempotent

Search the Global Unique Device Identification Database (GUDID). Detailed device records: description, MRI safety, product codes, sterilization. Note: Booleans are stored as strings ('true'/'false').

Example searches:

  • 'brand_name:"CoRoent"' — by brand

  • 'is_rx:true' — prescription devices

  • 'mri_safety:"MR Unsafe"' — MRI unsafe devices

  • 'exists:public_device_record_key' — records with a public key

Count fields: product_codes.openfda.device_class, is_rx, mri_safety.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context by warning that booleans are stored as strings ('true'/'false') and by illustrating valid query patterns for fields like is_rx and mri_safety. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-sentence purpose, a critical data-format note, four illustrative search examples, and a compact count-fields line. Every part earns its place, and the most important information 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 read-only search tool with only two parameters and no output schema, the description covers the purpose, key searchable fields, example queries, and a data-type quirk. An agent has enough context to construct valid searches and interpret results appropriately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description clearly adds value by giving concrete OpenFDA query syntax examples, field names, and count fields for the search parameter. The limit parameter is already fully described in the schema, so no additional explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Search the Global Unique Device Identification Database (GUDID)') and enumerates what the records contain (description, MRI safety, product codes, sterilization). This clearly differentiates it from related FDA device tools like fda_device_events or fda_device_classification.

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 makes it clear this tool is for querying GUDID device records, giving concrete search examples and count fields. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough that an agent can infer appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_countsA
Read-onlyIdempotent

Aggregate/count FDA drug adverse event data by any field. For counting other endpoints, use fda_count instead.

Common count fields:

  • 'patient.reaction.reactionmeddrapt.exact' — most common adverse reactions

  • 'patient.drug.openfda.brand_name.exact' — most reported drug brands

  • 'patient.drug.openfda.generic_name.exact' — most reported generic names

  • 'receivedate' — reports over time

  • 'primarysource.reportercountry.exact' — reports by country

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax count results (default 10)
searchNoOptional search filter, e.g. 'patient.drug.openfda.brand_name:aspirin'
count_fieldYesField to count by. Use '.exact' suffix for full phrase counts. E.g. 'patient.reaction.reactionmeddrapt.exact'

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety profile is clear. The description adds that it aggregates/counts data, but doesn't disclose behavioral nuances like pagination, rate limits, or what happens when no results are found. It also doesn't mention potential large result sizes or performance implications, but the default limit and max are in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It front-loads the core purpose, then provides usage guidance with a list of common fields. Each line provides distinct value without redundancy. It doesn't waste words on restating schema details.

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 fairly simple parameter structure (3 params, 1 required) with complete schema coverage, the description is adequate. It provides key usage guidance and examples. However, it lacks details on the output format (though no output schema exists, the agent might benefit from knowing what the count response looks like) and doesn't explain the relationship between search and count_field (e.g., whether search can filter before counting).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are documented. The description adds value by explaining the '.exact' suffix usage and providing concrete examples of count_field values. It also explains the search parameter with an example ('patient.drug.openfda.brand_name:aspirin'), which helps the agent construct valid queries beyond the schema's basic 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 the tool aggregates/counts FDA drug adverse event data by any field, with a specific verb ('Aggregate/count') and resource ('FDA drug adverse event data'). It also names a sibling tool (fda_count) for other endpoints, distinguishing it from alternatives. The list of common count fields adds concrete use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use fda_count for other endpoints, providing a clear alternative. It also gives common count fields with examples, implying when each is useful. However, it does not explicitly state when NOT to use this tool beyond the fda_count mention, or describe edge cases like when the search parameter is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_eventsA
Read-onlyIdempotent

Search FDA adverse drug event reports (FAERS) — side effects, hospitalizations, deaths. Over 20 million reports. Search by drug name, reaction, seriousness.

Example searches:

  • 'patient.drug.openfda.brand_name:aspirin' — events involving aspirin

  • 'patient.drug.openfda.generic_name:ibuprofen+AND+serious:1' — serious ibuprofen events

  • 'patient.reaction.reactionmeddrapt:nausea' — events where nausea was reported

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context: the dataset size (over 20 million reports), the event types included, and exact OpenFDA query field paths. It does not describe return format, pagination, or what happens when no results are found, but with annotations covering the safety behavior, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured. It front-loads the core purpose and dataset scope, then provides exactly three illustrative example queries that cover distinct, useful search patterns. Every sentence serves a purpose; there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a free-form search tool with a query-language parameter, the description plus the schema's search syntax documentation cover the main things an agent needs to invoke it correctly. The only noticeable gap is the lack of an output schema or any statement about the shape of returned records (e.g., whether it returns individual reports or aggregates). Still, the name and description make the domain unambiguous, so the tool is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage, describing both 'limit' and the generic OpenFDA query syntax for 'search'. The description adds domain-specific parameter semantics by showing concrete field paths like 'patient.drug.openfda.brand_name', 'patient.drug.openfda.generic_name', 'serious', and 'patient.reaction.reactionmeddrapt'. This goes beyond the schema's generic examples and helps an agent construct valid, domain-appropriate queries.

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 a specific verb ('Search'), a clear resource ('FDA adverse drug event reports (FAERS)'), and the scope of data ('side effects, hospitalizations, deaths'). It further enumerates search dimensions (drug name, reaction, seriousness). This clearly distinguishes it from siblings like fda_drug_labels, fda_device_events, and fda_food_adverse_events without requiring schema inspection.

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 makes it plain that this tool searches adverse event reports, and the examples show how to query by drug, seriousness, and reaction. However, it never explicitly contrasts this tool with closely related FDA siblings (e.g., fda_drug_labels for labeling, fda_device_events for devices, fda_drug_recalls for recalls). Usage context is implied rather than stated with explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_labelsA
Read-onlyIdempotent

Search FDA drug product labeling (package inserts / prescribing information — SPL). Contains indications, warnings, boxed warnings, adverse reactions, drug interactions, dosage.

Example searches:

  • 'openfda.brand_name:"Tylenol"' — labeling for Tylenol

  • 'exists:boxed_warning' — all labels with a Black Box Warning

  • 'effective_time:[20200101+TO+20231231]' — labels updated in date range

  • 'openfda.product_type:"HUMAN PRESCRIPTION DRUG"' — prescription drug labels only

Count fields: openfda.product_type.exact, openfda.brand_name.exact, openfda.route.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, open-world, and non-destructive behavior, so the safety profile is covered. The description adds useful context about queryable fields and count fields, but it omits return-format details and pagination/rate-limit behavior, so the annotations carry most of the behavioral burden.

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 purpose is front-loaded and every block (content, examples, count fields) serves a distinct purpose. It is slightly long, and the 'Count fields' line is cryptic without an explanation of how it is used, but overall there is no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter search tool with 100% schema coverage and no output schema, this description gives enough to invoke it correctly: resource, content, query syntax examples, and count fields. It does not explicitly explain what the returned label records look like, but the description is otherwise complete for the search use case.

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 descriptions are 100% covered, so the baseline is 3. The description goes beyond the schema by giving concrete search syntax examples (e.g., 'openfda.brand_name:"Tylenol"', '_exists_:boxed_warning', range syntax) and listing count fields, which meaningfully clarifies how the search parameter behaves.

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: 'Search FDA drug product labeling (package inserts / prescribing information — SPL).' It also lists the label sections it covers (indications, warnings, boxed warnings, etc.), which clearly separates it from sibling adverse-event, recall, and approval tools even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples convey when this tool is useful (e.g., looking up a brand's labeling, finding labels with boxed warnings, filtering to prescription drugs), so usage is implied rather than explicit. It never names alternatives or says when not to use it, unlike a direct comparison to fda_drug_events or fda_approved_drugs would.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_ndcA
Read-onlyIdempotent

Search the NDC Directory — National Drug Code product listings (132K+ records). Find drugs by brand name, generic name, dosage form, DEA schedule, pharmacological class. Each entry has product data, active ingredients, packaging info, and openfda annotations.

Example searches:

  • 'brand_name:"Tylenol"' — Tylenol products

  • 'dea_schedule:"CII"' — Schedule II controlled substances

  • 'dosage_form:"LOTION"' — all lotions

  • 'active_ingredients.name:"OXYCODONE"' — products containing oxycodone

  • 'finished:true' — finished drug products only

Count fields: pharm_class.exact, dea_schedule, dosage_form.exact, route.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds useful context about data volume (132K+ records) and the content of each entry (product data, active ingredients, packaging info, openfda annotations). It does not contradict annotations and provides additional behavioral hints.

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 and front-loaded, starting with the core purpose, then explaining what each entry contains, and finally providing practical examples. Every sentence adds value, and the examples are essential for a search tool with a complex query language. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the search syntax, data content, and even mentions count fields. It does not explain what happens if the search parameter is omitted (since it is optional), nor does it describe the response format, but the output schema is absent, and the description gives enough context for an agent to understand the data shape. Minor gaps keep it from a 5.

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 100%, so the baseline is 3, but the description adds significant value by enumerating specific searchable fields (brand_name, dea_schedule, dosage_form, active_ingredients.name, finished) and giving realistic query examples. This goes well beyond the generic syntax in the schema and helps the agent construct correct queries.

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 searches the NDC Directory for drug products, listing the specific searchable fields (brand name, generic name, dosage form, DEA schedule, pharmacological class) and providing concrete examples. It distinguishes itself from sibling FDA tools by focusing on NDC product listings, making its 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 gives strong context on what the tool is for and how to use it via examples, but it does not explicitly state when to use this tool over alternatives like fda_drug_labels or fda_drug_counts. However, the specificity to NDC Directory makes the intended use clear without needing exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_recallsA
Read-onlyIdempotent

Search FDA drug recall enforcement reports. Find recalled drugs by classification (Class I=most serious), company, or reason.

Example searches:

  • 'classification:"Class I"' — most dangerous recalls

  • 'recalling_firm:"Pfizer"' — recalls by Pfizer

  • 'reason_for_recall:listeria' — recalls due to listeria

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the description need not repeat these. It adds value by demonstrating query syntax with field examples, but it does not describe the return format, pagination, or any limitations. The description neither contradicts annotations nor adds significant behavioral context 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: two opening sentences plus three example queries. It front-loads the purpose and immediately provides actionable examples, with no unnecessary fluff. 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 description is adequate for a simple search tool with well-documented parameters, but it does not mention the default behavior when no search is provided (since no params are required) or what the response contains. With no output schema, the agent must infer the result structure, which could lead to errors downstream. A note about the response format would improve completeness.

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 already documents both parameters with descriptions (100% coverage), but the tool description enriches the 'search' parameter by giving specific field names like 'classification', 'recalling_firm', and 'reason_for_recall' with exact syntax examples. This goes beyond the generic OpenFDA query syntax and helps the agent craft effective searches.

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 a specific verb ('Search') and a specific resource ('FDA drug recall enforcement reports'), making the tool's purpose unambiguous. It clearly distinguishes from other FDA tools by focusing on drug recalls specifically, and the provided field examples (classification, company, reason) further clarify the domain.

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 concrete examples of how to construct queries, but it does not explicitly mention when to use this tool versus alternatives like fda_device_recalls or fda_food_recalls. There is no 'when not to use' guidance, leaving the agent to infer usage from the name and description. The examples imply usage, but exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_shortagesA
Read-onlyIdempotent

Search FDA drug shortage listings — which drugs are in shortage and why. Tracks status, dosage form, therapeutic category, company, and shortage reason.

Example searches:

  • 'status:"Currently in Shortage"' — active shortages

  • 'dosage_form:"Capsule"' — capsule shortages

  • 'therapeutic_category:"Antiviral"' — antiviral shortages

  • 'generic_name:"Adderall"' — specific drug

Count fields: update_type, status.exact, therapeutic_category.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds value by enumerating available query fields (status, dosage_form, therapeutic_category, generic_name) and count fields (update_type, status.exact, therapeutic_category.exact), which are not in the schema. It also shows query syntax with examples, going beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized: it states the purpose in the first sentence, lists tracked fields, then gives four illustrative example searches, and finally mentions count fields. Every sentence contributes unique information, and there is no redundancy or filler. The structure is front-loaded with the core purpose.

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 two-parameter, read-only search tool, the description covers the essential search syntax and available fields, and the schema and annotations handle limits and safety. It does not explicitly describe the output format, but that is often implied for search tools and the tool name and examples make the expected result clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers both parameters (limit and search) with descriptions and syntax examples, achieving 100% coverage. The description supplements this by providing domain-specific field names and example queries (e.g., 'status:"Currently in Shortage"'), which give agents concrete, actionable syntax that the schema alone does not offer.

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 FDA drug shortage listings — which drugs are in shortage and why.' This names a specific verb and resource, and lists the tracked fields (status, dosage form, therapeutic category, company, shortage reason). It clearly distinguishes this tool from siblings like fda_drug_recalls or fda_drug_events by focusing exclusively on shortages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that the tool is for drug shortage data and includes concrete example searches that show how to use the search parameter. It does not explicitly name alternatives or state when not to use the tool, but the narrow focus on shortages makes the usage context unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_food_adverse_eventsA
Read-onlyIdempotent

Search FDA food adverse event reports (CAERS database). Reports of illnesses, allergic reactions, and injuries from foods and dietary supplements.

Example searches:

  • 'products.industry_name:"Dietary Supplements"' — supplement events

  • 'reactions:"hospitalization"' — events involving hospitalization

Count fields: reactions.exact, outcomes.exact, products.industry_name.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the description has a low safety-disclosure burden. It adds useful behavioral context by giving CAERS-specific example queries and listing count fields such as 'reactions.exact' and 'products.industry_name.exact'.

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: purpose statement, then example searches, then a count-fields hint. Every line earns its place, and there is no fluff or tautology.

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 two-parameter read-only search tool with a fully documented schema, the description is nearly complete: it gives domain context, realistic example queries, and count-field hints. A minor gap is the lack of any explicit note about the response shape, but the opening line makes clear it returns matching food adverse event reports.

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 already documents both parameters with 100% schema coverage, so the baseline is 3. The description adds value beyond the schema with realistic search examples and named count fields. The limit parameter needs no additional explanation beyond its schema 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 opens with 'Search FDA food adverse event reports (CAERS database)', giving a specific verb and resource. It names the domain — food and dietary supplements — and the report types, distinguishing it clearly from sibling tools like fda_drug_events, fda_device_events, and fda_food_recalls.

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 this tool: it is for food adverse event reports in the CAERS database, with example searches that narrow to supplements or hospitalization events. It does not explicitly name sibling tools as alternatives, so it stops just short of full when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_food_recallsA
Read-onlyIdempotent

Search FDA food recall enforcement reports. Class I (may cause death), Class II (temporary health problems), Class III (unlikely harm).

Example searches:

  • 'classification:"Class I"' — most serious recalls

  • 'recalling_firm:tyson' — recalls by a specific company

  • 'reason_for_recall:listeria' — recalls due to listeria

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds domain context about recall classes and query examples but does not disclose additional behavioral details such as result format or pagination. This is adequate given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a one-sentence purpose, a short classification legend, and three illustrative example searches. Every line earns its place and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with two parameters and no required fields, the description plus schema and annotations provide enough to call it correctly. It does not explain return fields, but the absence is minor because the tool is a simple search endpoint and the schema covers query construction.

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 already documents both parameters at 100% coverage. The description adds meaningful value beyond the schema by showing concrete field names and query patterns like 'classification:"Class I"', 'recalling_firm:tyson', and 'reason_for_recall:listeria', which help an agent construct effective searches.

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: 'Search FDA food recall enforcement reports.' The word 'food' clearly separates it from sibling tools like fda_drug_recalls and fda_device_recalls, and the classification explanations reinforce the domain.

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 what the tool searches and gives realistic example queries for common use cases such as severity, firm, and reason. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough that an agent can route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_historical_docsA
Read-onlyIdempotent

Search historical FDA documents — press releases from 1913 to 2014 (OCR full-text search).

Example searches:

  • 'doc_type:pr+AND+text:"poison prevention packaging"' — press releases about poison prevention

  • 'year:1920+AND+text:Botulism' — 1920s botulism references

  • 'text:"thalidomide"' — mentions of thalidomide

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral detail about OCR full-text search and the 1913-2014 date range, which enriches the agent's understanding beyond the annotations. No contradictions found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a single opening sentence states the purpose, followed by three clear example queries in a block. Every line contributes directly to the agent's capability to invoke the tool correctly and no information is redundant or padded.

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 two-parameter tool without an output schema, the description provides enough context to get started: scope, syntax examples, and parameter behavior. It does not list the full set of queryable fields, which could cause exploratory attempts, but the examples cover common use cases and the schema covers defaults and syntax.

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 description covers both parameters generically (limit and search syntax), achieving 100% coverage. The description adds value by showing dataset-specific fields in examples, such as 'doc_type:pr', 'year:1920', and 'text:"thalidomide"', which are not mentioned in the schema. This gives the agent concrete guidance on constructing real queries.

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: 'Search historical FDA documents — press releases from 1913 to 2014 (OCR full-text search)'. This precisely distinguishes it from other FDA tools that handle drug events, labels, devices, etc. The date range and OCR detail make the resource concrete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for historical FDA press releases and provides example queries that clarify search patterns. However, it does not explicitly state when to use this tool versus the many other FDA search tools in the sibling list, nor does it name any alternative or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_nsdeA
Read-onlyIdempotent

Search NDC SPL Data Elements — comprehensive drug product data. Use 'missing:marketing_end_date' for products still on market. Use 'exists:marketing_end_date' for discontinued products.

Example searches:

  • 'package_ndc:"55700-019-60"' — by NDC

  • 'missing:"marketing_end_date"' — currently marketed products

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful search-pattern behavior like the _missing_/_exists_ sentinels and example queries, but doesn't disclose return structure, pagination, or any endpoint-specific quirks. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the tool's purpose, and every line adds actionable information. Examples are formatted clearly with separators and are 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?

For a simple two-parameter read-only search tool with no output schema, this description covers the essential invocation details: query syntax, important field behavior, and examples. It loses one point because it doesn't differentiate from closely related FDA tools in the sibling list, which is a real selection risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by giving domain-specific examples for the 'search' parameter (package_ndc, marketing_end_date) and by clarifying the special sentinel syntax, which helps the agent form correct queries beyond the generic schema text.

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 states a specific action and resource: 'Search NDC SPL Data Elements' for drug product data. This is clear, but it doesn't explicitly distinguish itself from sibling tools like fda_drug_ndc or fda_drug_labels, which could cause confusion when an agent is choosing among FDA drug-data 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?

Provides concrete usage guidance: how to find marketed vs. discontinued products using '_missing_:marketing_end_date' and '_exists_:marketing_end_date', plus example searches. However, it doesn't explicitly state when to choose this tool over sibling FDA drug tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_substanceA
Read-onlyIdempotent

Search FDA substance data — molecular-level ingredient information. Search by name, CAS code, UNII, or molecular formula.

Example searches:

  • 'names.name:"PARACETAMOL"' — by substance name

  • 'codes.code:"220127-57-1"' — by CAS registry number

  • 'unii:"09211A0HHL"' — by UNII

  • 'structure.formula:"C6H12"' — by molecular formula

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully disclosed. The description adds minimal behavioral context beyond the search syntax; it does not describe pagination, limits, or any non-obvious behavior. This is acceptable given the annotations, but the description doesn't contribute meaningful extra behavioral details, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single opening sentence, a short 'Search by' line, and four example search commands. The examples are useful and earn their place, though perhaps a couple of the examples could be trimmed. It is well-structured and front-loaded; each part serves the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For this simple search tool, the annotations cover safety and the schema covers both parameters. The description adds the domain-specific examples and data categories, which is sufficient for correct usage. It doesn't explain what output looks like (no output schema), but that's not required given the search-style tool and the fact that return values are fairly guessable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers both parameters, but the description enriches usage by providing concrete examples specific to the substance domain: 'names.name:"PARACETAMOL"', 'codes.code:"220127-57-1"', 'unii:"09211A0HHL"', 'structure.formula:"C6H12"'. This goes beyond the generic 'field:value' examples in the schema and directly helps an agent construct correct queries.

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 ('Search FDA substance data — molecular-level ingredient information'), indicating the resource domain and the level of data. It distinguishes from other FDA tools like drug labels or adverse events by focusing on the substance identifiers (name, CAS, UNII, molecular formula). The verb 'Search' and the specific resource make it 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 'how-to' context (search by name, CAS, UNII, formula) and includes explicit example queries, giving strong practical guidance. However, it does not explicitly mention when to prefer this tool over other FDA search tools (e.g., fda_unii or fda_drug_labels), so it lacks the explicit 'when-not' or alternative direction that would merit a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_tobacco_problemsA
Read-onlyIdempotent

Search tobacco product problem reports (~1.3K reports). Reports about damaged, defective, or health-affecting tobacco products. E-cigarettes/vaping products dominate (~60% of reports).

Example searches:

  • 'date_submitted:[20180101+TO+20200723]' — reports in date range

  • 'nonuser_affected:"Yes"' — reports where non-users were affected

Count fields: tobacco_products.exact, reported_health_problems.exact

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's 'Search' framing aligns with the safety profile. The description adds useful context about dataset size and content but does not disclose operational details such as rate limits, response shape, or behavior on invalid queries. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, well-structured, and front-loaded with the core purpose, followed by actionable examples and count fields. Every section earns its place, and no filler or redundant restatement of the tool name appears.

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 two-parameter search tool, the description covers the domain, query syntax examples, limits, and useful fields, which is sufficient for most invocation scenarios. It falls slightly short because the count-field line implies aggregation capability that is not represented by any parameter in the schema, leaving the agent without guidance on how to actually use those fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters at 100% coverage, so the baseline is 3. The description adds value by providing concrete field-specific query examples ('date_submitted', 'nonuser_affected') and mentioning count fields like 'tobacco_products.exact' and 'reported_health_problems.exact', which help an agent construct more meaningful searches.

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 names a specific verb ('Search') and resource ('tobacco product problem reports'), and adds concrete characteristics: ~1.3K reports, damages/defects/health effects, and e-cigarette dominance. It is clearly differentiated from sibling FDA tools like fda_drug_events and fda_device_events by focusing on tobacco-specific reports.

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 domain and examples make it evident when to use this tool: when searching tobacco product problem reports, including date-range and non-user-affected filters. It does not explicitly state when NOT to use it or name alternatives, but the wording is specific enough that an agent would not confuse it with FDA drug, device, food, or animal event tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_uniiA
Read-onlyIdempotent

Search UNII (Unique Ingredient Identifiers) — links ingredient names to unique chemical IDs.

Example searches:

  • 'unii:"L7V4I673D2"' — by UNII code

  • 'substance_name:"ASPIRIN"' — by substance name

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
searchNoOpenFDA search query. Examples: 'field:value', 'field:"Exact Phrase"', 'field:[20200101+TO+20231231]', '_exists_:field'. Combine with '+AND+', '+OR+', '+NOT+'.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the useful context that this is a search tool with example query formats, but doesn't disclose additional behavioral traits like pagination behavior or result format. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by two concrete examples that demonstrate usage. Every sentence earns its place, and the examples are immediately actionable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter search tool with full schema coverage and comprehensive annotations, the description is nearly complete. The example queries provide the key context an agent needs to construct valid searches. The only minor gap is not describing what the response contains, but no output schema exists and the tool's purpose makes the return type fairly predictable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (limit and search) are already documented in the schema. The description's example searches add practical value by showing the exact query syntax for the search parameter, but this is supplemental rather than essential since the schema already explains the format.

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 searches UNII identifiers and links ingredient names to unique chemical IDs, with a specific verb ('Search') and resource ('UNII'). It distinguishes itself from sibling FDA tools by focusing on UNII identifiers, though it doesn't explicitly name a sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete example searches showing how to query by UNII code or substance name, which gives clear context for when to use this tool. It doesn't explicitly state when not to use it or name alternatives, but the examples effectively communicate 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.

fdic_depositsA
Read-onlyIdempotent

Get Summary of Deposits — branch-level deposit data from annual survey (June 30). Shows deposit amounts at each bank branch. Filter by state or institution. Useful for market share analysis and banking access by geography.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
offsetNoPagination offset
filtersNoFilter: 'STALP:"NY"', 'CERT:3511', 'CITY:"New York"'
sort_byNoSort field: 'DEPSUMBR' (branch deposits), 'INSTNAME'
sort_orderNoSort direction

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the annual survey context and branch-level focus, but it does not mention response shape or pagination nuances. That is acceptable given the annotations, but not rich additional disclosure.

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?

Three sentences, no filler. The core purpose is front-loaded and the additional use-case sentence is useful context, though the final sentence could be considered slightly expendable.

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 no output schema, the description sufficiently explains what resource is accessed, the level of granularity, the data period, and common use cases. It is enough for an agent to decide when this tool fits, though it does not enumerate available fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description only loosely paraphrases the filter parameter ('Filter by state or institution') without adding new semantics beyond the filter examples 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 states a specific verb and resource: 'Get Summary of Deposits' with branch-level deposit data from an annual June 30 survey. It distinguishes the tool from FDIC siblings like fdic_failures or fdic_search_institutions by emphasizing branch-level deposits and geography.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear use cases: 'market share analysis and banking access by geography.' However, it does not explicitly name sibling tools or state when not to use it, so it falls just short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_failuresB
Read-onlyIdempotent

Get FDIC-insured bank failures — all failures since 1934. Includes failure date, estimated cost to FDIC, resolution type, and acquiring institution. Filter by state: PSTALP:"GA", by year range, or combine filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25, max 100)
offsetNoPagination offset
filtersNoLucene-style filter: 'PSTALP:"GA"', 'FAILDATE:[2008-01-01 TO 2010-12-31]'
sort_byNoSort field: 'FAILDATE' (default), 'COST', 'QBFASSET'
sort_orderNoSort direction

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, providing a strong safety profile. The description adds context about scope (all failures since 1934) and available filters, but doesn't disclose additional behavioral traits like pagination behavior, result size implications, or output format. It adds some value beyond annotations by clarifying the data scope, but not deep behavioral detail. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The purpose is front-loaded, followed by included fields and then filter examples. No redundancy or fluff. Every sentence earns its place, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 optional parameters and no output schema, the description covers the core purpose and filtering, but omits guidance on pagination (limit/offset) and sorting (sort_by/sort_order). While these are documented in the schema, the description doesn't indicate scenarios where they're needed (e.g., large result sets). Given the annotations cover safety and the schema documents params, this is adequate but not complete—an agent might not know pagination is relevant for a dataset spanning since 1934.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all five parameters. The description adds a concrete example for the 'filters' parameter: PSTALP:"GA" and a date range format, which clarifies the Lucene-style syntax beyond the schema's generic description. It also mentions the ability to combine filters, which isn't in the schema. This adds meaningful value for the most complex parameter, so above baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get FDIC-insured bank failures' with a scope of 'all failures since 1934'. It lists the included fields (failure date, cost, resolution type, acquiring institution) and filter options. While it doesn't explicitly differentiate from sibling tools like fdic_financials or fdic_search_institutions, the focus on 'failures' is specific enough to distinguish its intent. It's clear but not as sharp as explicitly naming a sibling alternative.

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 explicit guidance on when to use this tool versus alternatives. It mentions filtering syntax (PSTALP:"GA", year range) but doesn't state conditions for choosing this tool over other FDIC datasets. The description implies usage through examples but lacks a clear 'use this when...' or 'for other data, use X' statement. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_financialsA
Read-onlyIdempotent

Get quarterly Call Report financial data for FDIC-insured banks. Includes assets, deposits, net income, ROA, ROE, loan loss reserves. Filter by CERT number (specific bank) or STALP (state). Dollar values in thousands.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
fieldsNoFields: 'CERT,INSTNAME,REPDTE,ASSET,DEP,NETINC,ROA,ROE'
offsetNoPagination offset
filtersNoFilter: 'CERT:3511' (specific bank), 'STALP:"CA"', 'REPDTE:20240331' (quarter)
sort_byNoSort field: 'REPDTE' (default), 'ASSET', 'NETINC'
sort_orderNoSort direction

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about the data being quarterly Call Report values and includes 'Dollar values in thousands,' which clarifies result units. It does not discuss pagination or return format, but the annotations and schema partially reduce the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, purposeful sentences: what it returns, its coverage, and its key filter information plus units. Every sentence earns its place, nothing is redundant, and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no required parameters, a fully self-describing schema, and no output schema, the description is sufficiently complete to guide selection and invocation. It states the domain, major metrics, filter options, and units. Minor omissions like common pitfalls (e.g., not to use this for deposit market share) are not essential for selecting the tool, but a brief note on alternatives would elevate completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself gives detailed parameter descriptions with examples (e.g., filters: 'CERT:3511'). The description extends semantics slightly by expanding the metrics to readable terms (assets, net income, ROA) and noting the thousands unit, which helps interpret output. Still, most meaningful parameter information is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get quarterly Call Report financial data for FDIC-insured banks' – specificity around the resource and audience. It also names the included metrics, but it does not explicitly contrast with sibling FDIC tools like fdic_deposits or fdic_summary, so it does not fully differentiate from alternatives.

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 by saying 'Filter by CERT number (specific bank) or STALP (state).' This gives examples of when to use the tool, but there is no explicit guidance on when not to use it or how it relates to sibling tools. The reader must infer the distinction to other FDIC data tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_historyA
Read-onlyIdempotent

Get institution event history — mergers, acquisitions, name changes, charter conversions. Filter by CERT number to trace a specific bank's history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
offsetNoPagination offset
filtersNoFilter: 'CERT:3511', 'PSTALP:"CA"'
sort_byNoSort field: 'EFFDATE' (effective date)
sort_orderNoSort direction

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so safety is covered. The description adds value by enumerating the event types returned and the filtering behavior (by CERT number), which goes beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The first sentence front-loads the core action and event types, while the second provides a practical usage tip. Every word contributes meaning.

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 read-only, idempotent list tool with fully documented parameters)Skip; the description covers the nature of results (event types) and how to filter. Since there is no output schema, the description gives enough about the return semantics to guide an agent, though it could mention fields like effective date or pagination 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 100%, and each parameter already has a clear description (e.g., filters example 'CERT:3511'). The description marginally reinforces that the filter uses CERT but does not add any semantic detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('institution event history') with concrete event types (mergers, acquisitions, name changes, charter conversions) that distinguish it from generic search tools. The addition of 'to trace a specific bank's history' clarifies the intended use case without ambiguity.

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 second sentence provides a clear use case ('trace a specific bank's history') and implies the CERT filter, but it does not explicitly state when to prefer this over sibling tools like fdic_search_institutions or fdic_failures. The guidance is implicit and context-based rather than an explicit directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_search_institutionsA
Read-onlyIdempotent

Search FDIC-insured banks and savings institutions. Filter by state, name, charter type, asset size, active status. Filters: STALP:"CA", ACTIVE:1, ASSET:[1000000 TO *], INSTNAME:"Wells Fargo", CHARTER_CLASS:"N". Assets and deposits are in thousands of dollars.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25, max 100)
fieldsNoComma-separated fields to return: 'INSTNAME,STALP,ASSET,DEP,NETINC'
offsetNoPagination offset
searchNoFree-text search across institution names
filtersNoLucene-style filter: 'STALP:"CA" AND ACTIVE:1', 'ASSET:[1000000 TO *]'
sort_byNoSort field: 'ASSET', 'DEP', 'INSTNAME', 'NETINC'
sort_orderNoSort direction

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about asset/deposit units (thousands of dollars) and the filter syntax, but does not disclose other behaviors like response structuring, pagination limits beyond schema, or potential errors. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the purpose, followed by filter examples and a unit note. It is not overly verboseretaining only necessary details. Slight lack of structure but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 7 parameters and no output schema, the description covers the essential query capabilities and units. However, it does not describe the response format or how filters combine (e.g., AND semantics), which might be needed for complex queries. The sibling list is large but the description helps distinguish it from FDIC-specific tools. Overall adequate but with minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description adds context that assets and deposits are in thousands of dollars, which is not in the schema, and provides examples for the filters parameter. However, it doesn't elaborate on the semantics of each parameter beyond the schema, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches FDIC-insured banks and savings institutions, names the key filters (state, name, charter type, asset size, active status), and provides concrete examples. This distinguishes it from siblings like fdic_failures or fdic_financials, which have different scopes.

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 querying bank information and provides filter examples, but it does not explicitly state when to use this tool over alternatives like fdic_financials or fdic_deposits. It gives clear context but lacks explicit exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_summaryA
Read-onlyIdempotent

Get aggregate banking statistics — industry totals by state or charter type. Useful for overview metrics: total banks, deposits, assets by state/year.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
fieldsNoFields to return
offsetNoPagination offset
filtersNoFilter: 'STALP:"TX"', 'YEAR:2023'
sort_byNoSort field
sort_orderNoSort direction

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the data scope (by state or charter type) and the nature of the output (aggregate totals), which is useful. It does not disclose any edge cases like pagination limits or response format, but given the annotations cover the critical behavioral aspects, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero fluff. It front-loads the purpose and then gives a concrete use case. Every word contributes to the agent's understanding, making it highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description does a reasonable job of indicating what the tool returns: 'total banks, deposits, assets by state/year.' It also clarifies the aggregation dimension (state or charter type). While it doesn't specify the exact JSON structure or pagination behavior, the description is sufficient for an agent to understand the tool's purpose and expected output. It's not fully complete (no mention of sorting or field customization), but the schema covers those parameters, so a 4 is warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (limit, fields, offset, filters, sort_by, sort_order) have descriptive comments in the schema. The description itself does not add extra meaning beyond what the schema already provides; it merely references state/year in the text, which aligns with the filters example. With full schema coverage, the baseline of 3 is correct.

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 aggregate banking statistics — industry totals by state or charter type.' This specifies a concrete verb and resource, and the mention of 'industry totals by state or charter type' distinguishes it from sibling tools like fdic_search_institutions (which likely searches individual institutions) and fdic_failures (which covers failures). The overview metrics (total banks, deposits, assets) further clarify what it returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear context for use: 'Useful for overview metrics: total banks, deposits, assets by state/year.' This implies the tool is for high-level aggregates rather than detailed record-level queries. However, it does not explicitly name alternative tools or state when not to use it, so it lacks the explicit exclusion/alternative guidance that would warrant a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_candidate_financialsA
Read-onlyIdempotent

Get financial summary for a candidate — total raised, spent, cash on hand, debt. Requires a candidate_id (use fec_search_candidates to find one).

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoTwo-year election cycle, e.g. 2024
candidate_idYesFEC candidate ID, e.g. 'P80001571' (Trump), 'P80000722' (Harris)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns a financial summary with specific fields, which is useful context. It does not disclose details like cycle behavior or response format, but the annotations carry the main behavioral burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the prerequisite/alternative is stated efficiently. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with one required parameter and full schema coverage, the description is nearly complete. It could mention that cycle is optional or that the tool is specific to candidates (not committees), but the annotations and schema cover the rest. The pointer to fec_search_candidates is a valuable addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds that candidate_id is required and points to fec_search_candidates, but it does not add meaning beyond the schema's examples. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get financial summary') and resource ('candidate'), and lists the key fields returned (total raised, spent, cash on hand, debt). It also names the sibling tool (fec_search_candidates) needed to find the required ID, which distinguishes it from related FEC tools like fec_committee_financials.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the prerequisite: requires a candidate_id and directs the agent to fec_search_candidates to find one. It does not explicitly say when not to use this tool or mention alternatives like fec_committee_financials, but the context is clear enough for an agent to know when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_committee_disbursementsA
Read-onlyIdempotent

Get itemized disbursements from a PAC or committee — shows exactly which candidates and committees received money, how much, and when. This is the KEY tool for conflict-of-interest investigations: trace direct money from named industry PACs to named politicians. Example: fec_committee_disbursements(committee_id='C00004275', cycle=2018, recipient_name='Crapo') shows ABA BankPAC donations to Sen. Crapo. WORKFLOW: (1) fec_search_committees(name='Company', committee_type='Q') to find PAC ID, (2) this tool with recipient_name filter. Try multiple cycles (election year ± 1 cycle) since PACs often give early. Common PAC IDs: ABA BankPAC=C00004275, Wells Fargo=C00034595, Citigroup=C00008474, Goldman Sachs=C00350744, Pfizer=C00016683, Merck=C00097485.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoElection cycle year (e.g. 2024, 2026). Must be even year.
per_pageNoResults per page (default 20)
committee_idYesFEC committee ID (e.g. 'C00016683' for Pfizer PAC). Get from fec_search_committees.
recipient_nameNoFilter to specific recipient: 'Pelosi', 'McConnell', 'NRCC', 'DSCC'

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given the annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, the description adds useful behavioral context: it shows the type of data returned, advises trying multiple cycles because PACs give early, and provides common PAC IDs. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence carries value: purpose, use-case framing, example, workflow, cycle advice, and reference data are each one distinct block. It is front-loaded with the core definition and would be slightly tighter without the common-PAC-ID list, but nothing is 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?

With no output schema, the description still explains what the return shows ('which candidates and committees received money, how much, and when'), offers a step-by-step workflow, a realistic example, and parameter guidance. For a read-only query tool this is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description enriches params with concrete values: committee_id examples for named PACs, recipient_name examples, and a full worked example mapping parameters to a real investigation. This goes materially beyond the schema's brief descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get itemized disbursements from a PAC or committee' and details what is shown (recipient, amount, date). It clearly differentiates from FEC siblings by focusing on committee disbursements rather than contributions or financial summaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong usage context by calling this 'the KEY tool for conflict-of-interest investigations' and gives a concrete workflow that chains fec_search_committees before this tool, plus a tip to try multiple cycles. It does not explicitly name when-not-to-use alternatives (e.g., fec_individual_contributions), 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.

fec_committee_financialsA
Read-onlyIdempotent

Get financial totals for a committee (PAC, campaign, party). Requires a committee_id (use fec_search_committees to find one).

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoTwo-year election cycle, e.g. 2024
committee_idYesFEC committee ID, e.g. 'C00703975'

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is read-only, idempotent, and non-destructive, so the description does not need to repeat that. It adds some context about committee scope and the prerequisite lookup, but it does not disclose behavior such as default cycle behavior, response shape, or API 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?

Two sentences with no filler: the purpose is front-loaded and the prerequisite is immediately actionable. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the small parameter set and strong read-only annotations, the description is adequate for making a basic call. However, with no output schema, it leaves the agent without hints about what financial fields to expect or how the optional cycle parameter affects results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds only that committee_id is required and that fec_search_committees should be used to find it, which is helpful but not a deeper explanation of cycle semantics.

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 states a specific verb ('Get') and a specific resource ('financial totals for a committee'), and it clarifies the committee types (PAC, campaign, party). It is clear, though it does not explicitly differentiate itself from close siblings like fec_candidate_financials or fec_committee_disbursements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states that committee_id is required and instructs the agent to use fec_search_committees to obtain one. This gives immediate actionable routing, but it does not mention when to prefer alternatives or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_independent_expendituresA
Read-onlyIdempotent

Get itemized independent expenditures (Schedule E) — outside spending by Super PACs and other groups FOR or AGAINST a candidate (ad buys, mailers, etc.). This is the KEY tool for tracking outside money: 'how much did Super PACs spend against Senator X?' Filter by candidate_id (most common), committee_id (the spender), and/or support_oppose ('S'=support, 'O'=oppose). WORKFLOW: (1) fec_search_candidates to find candidate_id, (2) this tool filtered by candidate_id. Use fec_outside_spending_by_candidate for totals instead of line items.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoElection cycle year (even year, e.g. 2024)
per_pageNoResults per page (default 20)
candidate_idNoTarget FEC candidate ID (e.g. 'P80000722'). Get from fec_search_candidates.
committee_idNoSpending committee ID (the Super PAC making the expenditure)
support_opposeNo'S' = supporting the candidate, 'O' = opposing

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context that this returns itemized line items (as opposed to totals) and clarifies the FOR/AGAINST semantics. It does not contradict annotations and provides useful behavioral context beyond the structured fields.

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 well-structured: it opens with the core purpose, then the workflow, and finally the sibling distinction. It is not overly verbose and each sentence earns its place, though the formatting with all-caps 'KEY' and 'WORKFLOW' is a bit emphatic but still clear.

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 read-only query tool with all-optional parameters, the description covers the main use case, the workflow, and the differentiation from a sibling. It lacks explicit mention of pagination or return format, but given no output schema and the annotations covering safety, this is a minor gap. The tool is well-specified for an agent to call 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 input schema already has 100% coverage with descriptions for all five parameters. The description enhances this by giving a concrete example candidate ID ('P80000722') and explicitly instructing to obtain candidate_id from fec_search_candidates. It also re-emphasizes the meaning of support_oppose, adding practical guidance that is not 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 states a specific verb ('Get'), a precise resource ('itemized independent expenditures (Schedule E)'), and the domain (outside spending by Super PACs). It also frames it as the KEY tool for a common question and explicitly contrasts with fec_outside_spending_by_candidate, distinguishing it from that sibling.

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 gives a concrete WORKFLOW: first call fec_search_candidates to get candidate_id, then use this tool filtered by that ID. It also explicitly says to use fec_outside_spending_by_candidate when totals are needed instead of line items, so the agent knows exactly when to pick this tool over the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_individual_contributionsA
Read-onlyIdempotent

Get itemized individual contributions (Schedule A) — who donated to a committee, their employer and occupation, amount, and date. This is the KEY tool for donor research: 'who funds this candidate and where do they work?' The full dataset is ~123M records, so ALWAYS pass a filter — typically committee_id (the recipient committee) and/or contributor_name/employer. WORKFLOW: (1) fec_search_committees or fec_search_candidates to find the committee_id, (2) this tool filtered by committee_id, optionally narrowing by contributor_employer (e.g. 'Goldman Sachs') or contributor_state.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoTwo-year transaction period / election cycle (even year, e.g. 2024)
per_pageNoResults per page (default 20)
max_amountNoMaximum contribution amount
min_amountNoMinimum contribution amount
committee_idNoRecipient FEC committee ID (e.g. 'C00401224'). Get from fec_search_committees.
contributor_nameNoDonor name to filter by, e.g. 'Smith'
contributor_stateNoTwo-letter state code of the donor
contributor_employerNoDonor employer, e.g. 'Goldman Sachs'
contributor_occupationNoDonor occupation, e.g. 'Attorney'

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the large dataset size (~123M records) and mandates a filter, which is a crucial behavioral constraint. It is consistent with annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) and adds the performance warning beyond what annotations provide. However, it does not mention rate limits, error handling, or pagination details (though per_page is in schema), so it stops short of full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It front-loads the core purpose, then states the filter requirement, and concludes with a workflow. Every sentence adds value—no redundancy or filler. The structure guides the agent logically from purpose to usage to steps.

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 lacking an output schema, the description covers what data is returned (donor, employer, occupation, amount, date) and how to obtain it. It addresses dataset size, filter necessity, and prerequisite lookups. For a read-only query tool with comprehensive schema, this is sufficient for an agent to invoke correctly without missing critical context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 9 parameters. The description adds extra meaning by explaining committee_id as the recipient committee and noting it comes from fec_search_committees, giving example values for contributor_employer ('Goldman Sachs') and contributor_state. It also provides context for cycle (two-year period) and filter combinations, significantly enriching the schema's baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves itemized individual contributions (Schedule A) with specific fields (donor, employer, occupation, amount, date). It explicitly identifies this as the 'KEY tool for donor research', differentiating it from sibling tools like fec_committee_financials and fec_committee_disbursements. The purpose is unambiguous and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage 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 the tool: always pass a filter due to dataset size, and specifies typical filters (committee_id, contributor_name/employer). Includes a concrete workflow: first use fec_search_committees or fec_search_candidates to find committee_id, then call this tool with that ID, optionally narrowing by employer or state. This is clear, specific, and leaves no ambiguity about usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_outside_spending_by_candidateA
Read-onlyIdempotent

Get TOTAL independent (outside) spending supporting vs. opposing a candidate (Schedule E totals). Use this for an exact summary — 'how much outside money supported vs. opposed this candidate?' — instead of paginating raw line items. For the itemized breakdown of who spent it, use fec_independent_expenditures.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoElection cycle year (even year, e.g. 2024)
candidate_idYesTarget FEC candidate ID (e.g. 'P80000722'). Get from fec_search_candidates.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable context that it returns aggregated totals (supporting vs. opposing) and points to the raw-item alternative, going beyond the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with the core purpose, followed by usage guidance and alternative. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only aggregation tool with 2 parameters and clear annotations, the description fully explains what it returns (totals), when to use it, and how it differs from the raw-item tool. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters (candidate_id and cycle), including an example and source for candidate_id. The description adds no additional parameter details, so it relies on the schema. Baseline 3 is appropriate given high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get TOTAL'), resource ('independent spending by candidate'), and explicitly notes it is a Schedule E totals summary. Distinguishes from the sibling fec_independent_expenditures by indicating it is not the itemized breakdown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use it ('for an exact summary... instead of paginating raw line items') and names the alternative tool (fec_independent_expenditures) for itemized data. Provides clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_search_candidatesA
Read-onlyIdempotent

Search for federal election candidates by name, state, party, office, or election year. Data from the Federal Election Commission (FEC).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCandidate name to search for
pageNoPage number (default: 1)
partyNoThree-letter party code: 'DEM', 'REP', 'LIB', 'GRE', etc.
stateNoTwo-letter state code, e.g. 'CA', 'TX', 'NY'
officeNoOffice: H=House, S=Senate, P=President
per_pageNoResults per page (default: 20, max: 100)
election_yearNoElection year, e.g. 2024

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description does not need to re-state those. The description adds only the FEC data source and filter fields, with no additional behavioral details like pagination, return format, or rate limits. It is not contradictory, but it adds little beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first front-loads the action and resource with the key filter list, and the second gives the data source. There is no wasted wording, and the structure makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description carries some burden to explain what a successful call returns. It does not state that the tool returns a list of matching candidates or mention pagination. The description is adequate for a simple search, but the lack of return-value context and any indication that at least one filter is useful makes it 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?

Schema description coverage is 100%, so every parameter is already documented with descriptions in the schema. The description repeats the filter fields but offers no new semantic information about relationships, default behaviors, or combination rules. The baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Search') and resource ('federal election candidates') and enumerates filter dimensions (name, state, party, office, election year), making it easy to distinguish at a high level. However, it does not explicitly differentiate from closely related sibling tools like fec_search_committees or fec_candidate_financials, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use this tool when you need to search for federal election candidates. But there is no explicit guidance about when to choose this tool over alternatives such as fec_candidate_financials or fec_search_committees, nor any mention of exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_search_committeesA
Read-onlyIdempotent

Search for political committees (PACs, campaign committees, party committees) by name, state, or type. CRITICAL for investigations: Use committee_type='Q' (Qualified PAC) + name='Company Name' to find corporate PAC IDs. Example: name='Wells Fargo', committee_type='Q' returns C00034595 (Wells Fargo Employee PAC). Then use fec_committee_disbursements with the committee_id to trace money to specific politicians.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCommittee name to search for
pageNoPage number (default: 1)
cycleNoTwo-year election cycle, e.g. 2024
stateNoTwo-letter state code
per_pageNoResults per page (default: 20)
committee_typeNoCommittee type: 'P' (Presidential), 'H' (House), 'S' (Senate), 'N' (PAC - Nonqualified), 'Q' (PAC - Qualified), 'X' (Party - Nonqualified), 'Y' (Party - Qualified), 'I' (Independent Expenditor), 'O' (Super PAC)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent behavior, so the description's added value is the investigation-specific usage pattern and the example output. It discloses that committee_type='Q' + name returns a committee ID, which is useful context. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly written: one sentence for the core purpose, a bolded critical tip, a concrete example, and a next-step pointer. No wasted words, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema, the description is highly complete: it explains the primary use case, gives a working example, and connects to the next tool in the workflow. It doesn't mention pagination or response format, but those are standard for search tools and the schema covers per_page. This is adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all 6 parameters, so the baseline is 3. The description adds meaningful value by demonstrating how to combine committee_type='Q' and name in a real example, and clarifies that 'Q' means Qualified PAC for corporate searches. This exceeds the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for political committees by name, state, or type, distinguishing it from sibling FEC tools like fec_search_candidates. The specific example with 'Wells Fargo' and committee_type='Q' leaves no ambiguity about what the tool does.

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 tells when to use this tool ('CRITICAL for investigations') and provides a concrete workflow, including the next step to use fec_committee_disbursements with the returned committee_id. This is more than enough to guide an agent on when to select it over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_top_candidatesA
Read-onlyIdempotent

Get top candidates ranked by total money raised for a given office and election cycle.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoTwo-letter state code to filter by
officeYesOffice: H=House, S=Senate, P=President
per_pageNoNumber of results (default: 20)
election_yearYesElection year, e.g. 2024

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that the tool is read-only, idempotent, and non-destructive. The description adds the behavioral detail of ranking by fundraising totals, but does not disclose other traits like pagination limits, default result size, or any caveats about data freshness. With annotations covering safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the verb and states the core behavior with no wasted words. It achieves maximum clarity in minimal 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?

For a simple list tool with no output schema, the description adequately conveys the primary purpose and output type (top candidates ranked by money raised). Parameters are fully covered by the schema. It could optionally mention the shape of results (e.g., candidate names and totals) but this is reasonably inferable, so a 4 is justified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters (office, election_year, state, per_page) are already documented in the schema. The description does not add any parameter-specific meaning beyond what the schema provides, so it meets the baseline of 3 without adding extra 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 a specific verb ('Get'), a resource ('top candidates'), and the ranking criterion ('by total money raised') with a scope ('for a given office and election cycle'). This distinguishes it from siblings like fec_candidate_financials which focus on individual candidate 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?

The description provides no explicit guidance on when to use this tool versus alternatives like fec_candidate_financials or fec_search_candidates. It does not mention exclusions or conditions under which another tool would be more appropriate. Usage context is only implied by the tool's name and purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_disaster_declarationsA
Read-onlyIdempotent

Search FEMA disaster declarations (since 1953). Filter by state, year, incident type, or declaration type. Returns disaster name, type, affected area, programs declared.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMax results (default 50)
skipNoNumber of records to skip for pagination
yearNoFilter by year of declaration
stateNoTwo-letter state code (e.g. TX, FL, CA)
incident_typeNoIncident type: Hurricane, Flood, Fire, Severe Storm(s), Tornado, Earthquake, Snow, Biological
declaration_typeNoDR=Major Disaster, EM=Emergency, FM=Fire Management

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds that the tool returns a specific set of fields and that it covers declarations since 1953, setting temporal scope. It also hints at filtering capabilities. Does not add detail on pagination or response format, but given strong annotations, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no waste. The first sentence identifies resource and scope. The second lists filters. The third lists return fields. The most critical information (resource, scope, filters) is front-loaded. Could be slightly more structured but is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero required parameters, no output schema, and no enums (though incident_type has a list in description), the description supplies enough for an agent to make a basic query and interpret results. Missing details like pagination behavior or specific return formatting are not critical for a read-only search tool with annotations covering safety and quality. It's complete for core usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all six parameters have descriptions) and includes defaults and example values. The description adds a summary of what each filter does but doesn't go beyond schema. Baseline of 3 is appropriate because schema does the heavy lifting, and the description's mention of filter types reinforces usage without adding new semantic detail.

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?

States a specific verb ('Search'), resource ('FEMA disaster declarations'), and scope ('since 1953'). Clearly lists filter dimensions (state, year, incident type, declaration type) and return fields (disaster name, type, affected area, programs declared). Easily distinguishes from sibling fema_housing_assistance, fema_public_assistance, and fema_query by resource specificity.

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?

Implies usage for searching/filtering disaster declarations, and the description includes the available filter dimensions. No explicit mention of when to use alternative tools like fema_query or fema_housing_assistance, but the resource-specific naming and filter list make the usage context clear. Slight gap: no guidance on when to prefer this over generic fema_query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_housing_assistanceB
Read-onlyIdempotent

Get FEMA Individual Housing Program (IHP) assistance data for homeowners. Shows approved assistance amounts, inspections, and damage by county/zip for a disaster.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMax results (default 50)
skipNoNumber of records to skip
stateNoTwo-letter state code
countyNoCounty name
disaster_numberNoFEMA disaster number (from disaster declarations)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds value by specifying the data content (approved amounts, inspections, damage) but does not disclose potential behavior such as pagination, rate limits, or the need for a disaster number to return meaningful results. Since annotations cover the safety aspects, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the main purpose and data content. It is concise without redundancy, though it could be slightly better structured (e.g., separating the data types) but remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has five optional parameters and no output schema. The description does not clarify how to combine parameters or what happens when no filters are given (e.g., returns all IHP data? likely requires a disaster number). It also does not mention the response format. Given the tool's moderate complexity and the lack of an output schema, more guidance would be helpful, but it is not severely 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?

Schema description coverage is 100% – all five parameters have descriptions in the schema. The description does not add further parameter details, such as how parameters interact (e.g., whether disaster_number is expected to be provided) or formatting requirements. Baseline 3 applies when the schema already documents parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'FEMA Individual Housing Program (IHP) assistance data', and the scope: for homeowners, with county/zip filtering for a disaster. It also lists what it shows (approved amounts, inspections, damage), making it distinguishable from siblings like fema_public_assistance or fema_disaster_declarations.

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 other FEMA tools. It does not mention alternatives (e.g., fema_public_assistance) or conditions that would select this over them. The intended use is only implied by the data type (IHP), leaving the agent to infer when it is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_public_assistanceA
Read-onlyIdempotent

Get FEMA Public Assistance (PA) grant awards. Shows project-level grants to state/local/tribal governments and nonprofits for debris removal, emergency work, and permanent repair.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMax results (default 50)
skipNoNumber of records to skip
stateNoTwo-letter state code
disaster_numberNoFEMA disaster number

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds scope context (project-level, recipient types) rather than behavioral details like pagination behavior, rate limits, or response format. This adds some value but does not go beyond what annotations and the schema already establish.

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 short sentences with zero filler. The first sentence states the verb and resource; the second expands with recipient type and grant categories. Every word contributes to an agent's understanding.

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 low-complexity tool with four optional, fully documented parameters and annotations covering the safety profile, the description is nearly complete. It conveys what the tool returns and to whom, but it does not mention result ordering, pagination behavior, or any constraints on disaster_number/state values beyond the schema's scope. Minor gap given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all four parameters (top, skip, state, disaster_number) already described in the schema. The description does not add parameter-specific meaning beyond the general context of PA grants, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('Get') and resource ('FEMA Public Assistance (PA) grant awards'), then narrows with 'project-level', eligible entities (state/local/tribal governments, nonprofits), and grant categories (debris removal, emergency work, permanent repair). This clearly distinguishes it from siblings like fema_housing_assistance and fema_disaster_declarations without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: when the user needs FEMA PA grant award data. It correctly scopes the tool to project-level government/nonprofit grants, implying it is not for individual housing assistance or disaster declaration metadata. However, it does not explicitly name alternatives (e.g., fema_query, fema_housing_assistance) 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.

fema_queryA
Read-onlyIdempotent

General-purpose query against any OpenFEMA v2 dataset. Use this for NFIP flood insurance claims/policies, hazard mitigation grants, mission assignments, IHP registrations, etc. Supports OData $filter syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMax results (default 50)
skipNoOffset for pagination
filterNoOData $filter expression (e.g. "state eq 'TX' and yearOfLoss eq '2017'")
selectNoComma-separated fields to return (OData $select)
datasetYesDataset key (disaster_declarations, housing_owners, housing_renters, public_assistance, nfip_claims, nfip_policies, hazard_mitigation, mission_assignments, fema_regions, registrations) or raw endpoint name
order_byNoOData $orderby expression (e.g. 'dateOfLoss desc')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the full safety profile (readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false), so the description need not repeat it. The description adds the OData $filter support detail, but does not disclose return format, pagination/limit behavior, or per-dataset response variance, which are useful behavioral traits beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with the core purpose front-loaded and coverage examples following. The trailing 'etc.' and the one-line OData note are slightly loose but not wasteful. It is efficient and scannable without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description carries the burden of explaining what a response looks like, but it never addresses return structure, pagination ($top/$skip semantics are only implied by the schema), or that results vary per dataset. Adequate for selecting the tool, but an agent calling it blindly would not know what shape of result to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are strong (e.g., filter gives a concrete example, dataset enumerates all keys), so the description adds no parameter meaning beyond the schema. The description's mention of OData support is generic and does not deepen parameter semantics; baseline 3 is correct given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('General-purpose query against any OpenFEMA v2 dataset') and enumerates concrete coverage (NFIP claims/policies, hazard mitigation grants, mission assignments, IHP registrations). This clearly distinguishes it from the specific FEMA siblings (fema_disaster_declarations, fema_housing_assistance, fema_public_assistance, fema_regions) by framing it as the general fallback.

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?

Positive guidance is explicit ('Use this for NFIP... etc.'), which tells an agent which datasets route here. However, it does not explicitly state when NOT to use it or when to prefer the specialized fema_* sibling tools, leaving the exclusion logic to inference rather than statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_regionsA
Read-onlyIdempotent

Get FEMA region boundaries and associated states. 10 FEMA regions cover all U.S. states and territories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a factual scope note (10 regions, all states/territories) but does not disclose any behavioral traits like return format or data structure. It does not contradict the annotations, and it adds minimal behavioral context beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. The action and resource are front-loaded, and the additional sentence provides useful context about the 10 regions. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and annotations covering safety, the description provides sufficient information for an agent to invoke the tool correctly. It states what the tool returns and a key fact about coverage, which is complete for a simple lookup tool. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing to describe. According to the rubric, 0 parameters warrants a baseline score of 4. The description correctly does not waste words on parameters since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'FEMA region boundaries and associated states,' making the tool's purpose unambiguous. It also provides a factual detail about 10 regions covering all states and territories, which helps distinguish it from other FEMA tools like fema_disaster_declarations, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no mention of when to use this tool versus alternatives. It does not reference sibling tools such as fema_query or fema_disaster_declarations, nor does it provide conditions or exclusions. An agent would have no guidance on selecting this over other FEMA tools beyond inferring from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fooddata_detailA
Read-onlyIdempotent

Get complete nutritional details for a specific food by its FDC ID. Returns full nutrient breakdown: calories, protein, fat, carbs, vitamins, minerals, amino acids. Use fooddata_search first to find FDC IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
fdcIdYesFoodData Central ID (get from fooddata_search results)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond that by specifying what the response contains: "full nutrient breakdown: calories, protein, fat, carbs, vitamins, minerals, amino acids." This helps set expectations for the no-output-schema case.

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 with no filler. The main purpose is front-loaded, the return scope is summarized, and the prerequisite is given last. Each sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, annotation-rich read tool, the description is complete: it explains what the tool does, what it returns, and how to obtain the required ID. With no output schema, the return-value summary is sufficient for an agent to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter description already says the ID comes from fooddata_search results. The tool description repeats this but adds no new semantic information about the fdcId parameter, so the baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: "Get complete nutritional details for a specific food by its FDC ID." It also names the return content (nutrients) and the prerequisite workflow (use fooddata_search first), which helps distinguish it from sibling search/list 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 explicitly says "Use fooddata_search first to find FDC IDs," giving a clear prerequisite and workflow context. It doesn't enumerate alternatives or exclusions, but for a detail-by-ID tool the intended usage is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fooddata_listA
Read-onlyIdempotent

Browse a paged list of foods from the USDA database. Useful for exploring available foods by data type without a specific search term.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortByNoSort field
dataTypeNoFilter by data type
pageSizeNoResults per page (default 25, max 200)
sortOrderNoSort direction
pageNumberNoPage number (1-based)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds behavioral context by highlighting that results are paged and that the intended use is data-type exploration, which goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The main purpose is front-loaded in the first sentence, and the second sentence adds the key use-case distinction that makes the tool's role clear. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the fully documented schema and read-only annotations, the description sufficiently covers purpose and usage for a list-browsing tool. It does not describe the output shape or pagination defaults, but those are partially covered by schema defaults and are not essential for a read-only list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented with meanings and constraints. The description only reinforces the dataType filter and adds no additional parameter-level semantics beyond the schema.

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 states a specific action ('Browse a paged list') and resource ('foods from the USDA database'), making the tool's function clear. It also separates itself from search-oriented tools by noting it is for exploring without a specific search term, though it does not explicitly name a sibling like fooddata_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: exploring foods by data type without a specific search term. It implies the alternative is a search tool like fooddata_search, but it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_agenciesA
Read-onlyIdempotent

List all federal agencies that publish in the Federal Register. Returns agency names, short names, slugs (for filtering), and URLs. 470+ agencies.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the scope ('all federal agencies that publish in the Federal Register') and the count ('470+'), which is useful context. It does not disclose pagination or response size limits, but for a simple list tool this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the return fields and scale are stated compactly. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with no output schema, the description covers the essential facts: what is listed, what fields are returned, and the approximate size. It could mention pagination or how to use slugs, but the description is complete enough 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema provides no parameter semantics. The description compensates by explaining what the returned data contains (names, short names, slugs, URLs), which is the only meaningful semantic information an agent needs. Baseline 4 for zero-param tools 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 states a specific verb ('List') and resource ('all federal agencies that publish in the Federal Register'), and specifies the returned fields (names, short names, slugs, URLs). It is clearly distinguishable from sibling tools like fbi_agencies or fr_search_rules.

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 is a reference/list tool for enumerating agencies, and the mention of slugs 'for filtering' hints at downstream use. However, it does not explicitly state when to choose this over alternatives or provide exclusions. For a zero-parameter list endpoint, this is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_document_detailA
Read-onlyIdempotent

Get full details for a specific Federal Register document by document number. Returns title, abstract, full text URL, agencies, CFR references, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_numberYesFederal Register document number: '2024-00001'

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint true, idempotentHint true, destructiveHint false). The description adds value by enumerating the response contents (title, abstract, full text URL, agencies, CFR references, and more), helping an agent understand what will be returned. It does not cover errors or response formatting, but this is a minor gap given the 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?

Two sentences, no fluff. The first sentence immediately states the tool's purpose, and the second logically lists what it returns. Information is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with a single well-described parameter and no output schema, the description is complete enough: it names the action, the input, and the output content. It does not mention not-found handling, but that is a minor omission for a detail-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 description coverage is 100%, so the schema fully documents the only parameter (document_number with an example format). The description merely references the parameter as part of the action without adding new semantic details beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific action ('Get full details'), target resource ('specific Federal Register document'), and required identifier ('by document number'). It is clear in its purpose and implies a detail lookup, distinct from search tools like fr_search_rules, though it does not explicitly name a sibling to differentiate from.

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?

Usage context is implied: an agent should call this when they have a document number and need full details. The description does not explicitly say when to use this vs alternatives or what to do if the number is unknown, but the purpose is inferable from 'by document number'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_release_dataA
Read-onlyIdempotent

Bulk fetch a FRED release. Common: 53 (GDP), 50 (Employment), 10 (CPI), 18 (Rates)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax obs
release_idYese.g. 53 (GDP)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side-effect expectations. The description adds the bulk-fetch behavior and common release examples, but it does not describe response shape, pagination, or the meaning of fractional 53/50/10/18 beyond examples. This is acceptable given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and minimal: one sentence states the core purpose and the second sentence provides useful example IDs. There is no filler, redundancy, or unnecessary detail.

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 idempotent fetch with well-documented parameters and annotations, the key selection and invocation details are present. However, there is no output schema and the description does not explain what the returned data structure is or how the 50/52/51/52 limit/max works with a release. It is adequate but not rich enough for full agent confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with release_id already documented as 'e.g. 53 (GDP)' and limit as 'Max obs'. The description contributes only a small extra set of common release ID examples (50, 10, 18), which is helpful but marginal compared to 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 a specific action and resource: 'Bulk fetch a FRED release.' The parenthetical common release IDs (53 GDP, 50 Employment, 10 CPI, 18 Rates) make the purpose concrete and distinguish it from sibling tools like fred_series_data, which targets individual series.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Bulk fetch' implies it is meant for whole-release retrieval rather than single-series lookups, and the sibling fred_series_data suggests the alternative. However, the description never explicitly states when to use this tool instead of fred_series_data or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_series_dataB
Read-onlyIdempotent

Get observations for a FRED series. Popular: GDP, UNRATE, CPIAUCSL, FEDFUNDS, DGS10, MORTGAGE30US

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax obs (default 1000)
end_dateNoYYYY-MM-DD
frequencyNod=daily, w=weekly, bw=biweekly, m=monthly, q=quarterly, sa=semiannual, a=annual
series_idYesSeries ID
sort_orderNodefault: desc
start_dateNoYYYY-MM-DD

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds popular series IDs but not behavioral details such as default limit, date-range filtering, or output shape; no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the purpose is front-loaded. The popular-series list is useful but not essential, keeping it just below a top score.

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 read-only fetch tool, the schema and annotations cover parameters and safety adequately. However, there is no output schema and no description of the return shape or when to prefer this over related FRED tools, leaving moderate gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters described including enums for frequency and sort_order. The description does not add parameter semantics beyond naming example series_id values, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get observations for a FRED series.' This is clear and distinguishable from sibling tools like fred_search and fred_series_info, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus fred_search, fred_series_info, or fred_release_data. The list of popular series hints at common usage but does not state conditions, exclusions, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_series_infoA
Read-onlyIdempotent

Get metadata for a FRED series — title, units, frequency, range, notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYese.g. 'GDP', 'UNRATE', 'CPIAUCSL'

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety and side-effect profile. The description adds value by specifying the exact metadata fields returned, which is useful context beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with purpose and lists the fields returned. No wasted words, fully efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter metadata lookup with no output schema, the description lists all returned fields and the parameter is well documented in the schema. Nothing critical is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter series_id, which includes an example. The description does not add additional parameter details beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('metadata for a FRED series') and lists the exact fields returned (title, units, frequency, range, notes). It clearly distinguishes from sibling tools like fred_series_data (which retrieves data values) and fred_search (which finds series).

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 is for retrieving metadata rather than data, but it does not explicitly mention alternatives or when not to use it. An agent can infer from the name and description, but there is no direct comparison to fred_series_data or fred_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_executive_ordersA
Read-onlyIdempotent

Search for presidential executive orders. Filter by president, year, or keyword. Covers all executive orders since 1994.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
yearNoYear to filter by, e.g. 2025
keywordNoSearch keyword in title/abstract, e.g. 'tariff', 'immigration', 'climate'
per_pageNoResults per page (default: 20)
presidentNoPresident slug: 'donald-trump', 'joe-biden', 'barack-obama', 'george-w-bush', 'william-j-clinton'

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the tool is safe and non-destructive. The description adds the coverage constraint ('since 1994'), which is useful context beyond the annotations. However, it does not disclose other behavioral aspects like pagination limits or potential rate limits, but the annotations cover the main safety profile, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the core purpose and then the key filters. It is concise with no wasted words, and the coverage note is a useful addition. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (optional filters only, no required params, no output schema), the description is adequate. It covers what the tool does and its scope. Missing details like pagination defaults are in the schema, and return format is not essential for a search tool without an output schema. The description is complete for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with every parameter documented in the schema. The description adds a general note about filters (president, year, keyword) but does not add meaning beyond the schema. For example, it does not explain the 'president' slug format beyond what the schema already shows. Baseline 3 is correct since schema covers all details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching for presidential executive orders, with filters for president, year, or keyword, and a coverage range. It uses a specific verb ('Search') and resource ('presidential executive orders'), making it distinct from many siblings. However, it does not explicitly differentiate from similar search tools like 'fr_search_rules' or 'fr_presidential_documents', but the name and description are sufficient for basic understanding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when you need to search executive orders with filters. It does not state when to use this tool over alternatives, nor does it provide exclusions (e.g., when not to use it). Given there are many Federal Register tools (e.g., fr_search_rules, fr_document_detail), more guidance would help, but the description gives a clear use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_presidential_documentsA
Read-onlyIdempotent

Search all presidential documents: executive orders, memoranda, proclamations, and other presidential actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNoSearch keyword
doc_typeNoDocument subtype
end_dateNoEnd date YYYY-MM-DD
per_pageNoResults per page (default: 20)
presidentNoPresident slug: 'donald-trump', 'joe-biden', 'barack-obama', 'george-w-bush', 'william-j-clinton'
start_dateNoStart date YYYY-MM-DD

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds only scope, not behavioral traits like result ordering, date filtering behavior, or pagination, so it adds modest context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with no filler; the general scope and examples are front-loaded, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are fully documented in the schema and annotations cover safety, making the tool invokable. The missing return-shape or pagination details are not explained, but for a search tool with full schema coverage this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all six parameters with types, descriptions, and an enum. The description does not add parameter-specific meaning beyond enumerating document categories.

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?

States a specific action ('Search') on a clearly bounded resource ('all presidential documents'), and enumerates document types that distinguish it from siblings like fr_executive_orders and fr_search_rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies broad, cross-type use via 'all presidential documents' but never mentions alternatives or when to prefer a narrower sibling such as fr_executive_orders or fr_document_detail. No exclusions are stated, so context is clear but routing guidance is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_public_inspectionA
Read-onlyIdempotent

List documents currently on public inspection — approved for publication but NOT yet officially published (appearing in the Federal Register tomorrow, or imminently for 'special' filings). This is the forward-looking view: 'what regulations are about to come out?' Special filings are expedited/emergency documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by document type
special_onlyNoOnly show 'special' (expedited/emergency) filings

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which cover the safety profile. The description adds meaningful behavioral context beyond that: it explains the temporal status (approved but not yet published) and defines 'special' filings as expedited/emergency. It does not describe response format or pagination, but given the annotations cover the safety profile, this is above average.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the core action and immediately provides essential clarifications (temporal scope, special filings). No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional params, read-only, no output schema), the description covers the essential context: what the tool lists, the temporal semantics, and the meaning of special filings. It does not mention pagination or result limits, but these are not critical for a forward-looking list tool. The description is adequately complete for an agent to decide whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage: both 'type' and 'special_only' have descriptions. The tool description adds some context (e.g., 'special filings are expedited/emergency documents' which maps to special_only), but it does not add syntax or format details beyond the schema. Since the schema already documents parameters well, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'List documents currently on public inspection' and immediately clarifies the meaning with 'approved for publication but NOT yet officially published'. It distinguishes this from published documents and calls it the 'forward-looking view', which sets it apart from sibling tools like fr_search_rules and fr_document_detail without naming them. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong context on when to use this tool: it is for documents that will appear in the Federal Register tomorrow or imminently, and it frames the use case as 'what regulations are about to come out?'. However, it does not explicitly name alternatives or state when NOT to use it (e.g., for already-published rules), leaving the contrast to inference from the sibling list. This is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_search_rulesA
Read-onlyIdempotent

Search for proposed rules, final rules, and agency notices in the Federal Register. Use to track regulatory activity by agencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
agencyNoAgency slug, e.g. 'environmental-protection-agency', 'securities-and-exchange-commission'
keywordNoSearch keyword, e.g. 'tariff', 'emissions', 'banking'
doc_typeNoRule type
end_dateNoEnd date YYYY-MM-DD
per_pageNoResults per page (default: 20)
start_dateNoStart date YYYY-MM-DD
significantNoOnly show significant/major rules (true/false)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the scope of what is searched (proposed rules, final rules, agency notices) and the use case (tracking regulatory activity). It doesn't disclose pagination behavior, result ordering, or date-range semantics beyond what the schema provides, but the annotations carry the main behavioral burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence states the resource and document types; the second states the use case. Information is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with 100% schema coverage and no output schema, the description is nearly complete. It covers what is searched and why you'd use it. The only minor gap is that it doesn't mention the relationship to the fr_* sibling tools (e.g., fr_document_detail for retrieving full documents), but the annotations and schema cover the operational essentials.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters. The description adds no parameter-specific meaning beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for proposed rules, final rules, and agency notices in the Federal Register, and explicitly mentions tracking regulatory activity by agencies. This distinguishes it from sibling tools like fr_executive_orders, fr_presidential_documents, fr_document_detail, and fr_public_inspection, which cover different document types or operations.

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 this tool: to track regulatory activity by agencies. It doesn't explicitly name alternatives or exclusion conditions, but the sibling list contains related tools (fr_executive_orders, fr_presidential_documents, fr_document_detail) and the description's focus on rules/notices implies the distinction. A 4 is appropriate because the context is clear but no explicit when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fr_suggested_searchesA
Read-onlyIdempotent

List the Office of the Federal Register's curated topic bundles (e.g. 'Dodd-Frank', 'Endangered Species'). Each topic shows how many documents appeared in the last year and how many currently have OPEN public comment periods — useful for discovering active regulatory topics and where the public can still weigh in. Sections: money, environment, world, science-and-technology, business-and-industry, health-and-public-welfare.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoFilter to a single topic section
open_comments_onlyNoOnly show topics that currently have documents with open comment periods

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by specifying exactly what the returned topic bundles contain: document counts from the last year and the number of currently open comment periods. It also lists the available sections, which clarifies the tool's coverage. The read-only, idempotent, non-destructive annotations are consistent with the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core action and resource. Every sentence adds meaningful context without filler, and the explicit section list is compactly presented.

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 a simple, optional-parameter list tool with two optional parameters and rich annotations covering safety semantics. It clearly states what is returned, what the sections are, and why an agent would use it, with no major gaps beyond an explicit default-behavior statement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameter descriptions, so the baseline is 3, and the description adds little extra meaning. The description does repeat the section enum values and the open-comment concept, but it does not clarify anything beyond what the schema already states.

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

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: discovering active regulatory topics and surfacing places where the public can still comment. It stops short of naming alternatives or saying when not to use sibling tools like fr_search_rules or fr_document_detail, so it earns strong but not full marks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_endpoint_fieldsA
Read-onlyIdempotent

Get field names, data types, and formats for a specific Treasury Fiscal Data API endpoint. This helps you discover what fields are available before querying data.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYesThe API endpoint path, e.g. '/v2/accounting/od/debt_to_penny' or '/v1/accounting/dts/operating_cash_balance'

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds what the caller will receive — field names, data types, and formats — which is meaningful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The first sentence front-loads the exact operation and result, and the second justifies the tool's purpose. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only metadata lookup with full schema coverage, the description is complete. It states the input (endpoint), the output (fields, types, formats), and when to use it, leaving no critical gap an agent would need to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the endpoint parameter already described and illustrated with concrete examples. The description adds no new parameter semantics, but it does not need to because the schema carries the full burden.

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') with a precise resource ('field names, data types, and formats for a specific Treasury Fiscal Data API endpoint'). It clearly positions this as a metadata-discovery operation, distinguishable from data-querying siblings like query_fiscal_data and list_datasets.

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 states it should be used 'before querying data,' giving clear usage context tied to the query workflow. It does not explicitly name excluded alternatives, but the 'before querying' framing makes the intended timing and purpose clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

govinfo_bill_textA
Read-onlyIdempotent

Get the FULL legislative text of a bill from GovInfo — the actual law language with section numbers, dollar amounts, legal citations, and provisions.

IMPORTANT: Try congress_bill_summaries first for a quick CRS summary (~500-2000 chars). Only use this tool when the user needs exact legislative language, specific provisions, or dollar amounts from the bill text.

Use preview_only=true first to check bill size before loading. Bills range from 5k chars (simple resolutions) to 500k+ (omnibus/appropriations). Default limit is 100k chars.

Version suffixes: enr (enrolled/signed), eh (engrossed House), es (engrossed Senate), ih (introduced House), is (introduced Senate)

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoBill version: 'enr' (enrolled/signed, default), 'eh' (engrossed House), 'es' (engrossed Senate), 'ih' (introduced House), 'is' (introduced Senate)
congressYesCongress number (e.g., 119, 118, 117)
bill_typeYesBill type
max_lengthNoMaximum characters to return (default: 100000). Most bills fit within 100k. Set higher (e.g. 500000) for large omnibus bills, or 0 for no limit.
bill_numberYesBill number (e.g., 1, 5376)
preview_onlyNoWhen true, returns only metadata (title, pages, character count, estimated tokens) WITHOUT the actual text. Use this to check bill size before loading. Default: false.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds crucial behavioral context: bills can range from 5k to 500k+ characters, the default limit is 100k, and version suffixes determine which version of the bill is retrieved. It also mentions the preview_only behavior for checking size, which is not in annotations. Minor gap: it doesn't explicitly state that max_length=0 fetches the entire bill, but the schema covers that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear paragraphs: first defines the tool's purpose, then provides usage guidance with the sibling, then a practical tip on previewing, and finally version explanations. Front-loaded with the core purpose, and every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, multiple versions, variable output size), the description is comprehensive. It addresses when to use it, how to avoid overwhelming responses, and the version system. The annotations and schema cover safety and parameter details, so nothing critical is missing for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (congress, bill_type, bill_number, version, max_length, preview_only) is already documented in the schema. The description adds context by mentioning the range of bill sizes and default limit, which helps interpret max_length. It also explains version suffixes (enr, eh, es, etc.) in human terms, reinforcing the schema's enum description. This adds value but the schema does most of the heavy lifting, so a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the full legislative text of a bill, specifying it includes section numbers, dollar amounts, legal citations, and provisions. It distinguishes itself from congress_bill_summaries by contrasting with a quick CRS summary, and implicitly differentiates from congress_bill_amendments and other text tools by focusing on full bill text.

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 instructs to try congress_bill_summaries first for quick summaries and only use this tool when exact legislative language, provisions, or dollar amounts are needed. Also provides a practical tip to use preview_only=true to check size before loading, which guides when to use the tool effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

govinfo_cbo_reportsB
Read-onlyIdempotent

Search for Congressional Budget Office reports published through GovInfo. CBO scores tax bills with distributional analysis showing impact by income group.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query — bill name or topic (e.g., 'Tax Cuts and Jobs Act', 'reconciliation')
page_sizeNoResults per page (default: 10)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the content type (CBO reports, distributional analysis by income group), which is useful but doesn't disclose behavioral traits like pagination behavior, result format, or whether the search covers all CBO reports or only cost estimates. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states the core function, and the second adds a distinctive content detail. It is front-loaded with the verb and resource. Slightly more detail could be added about result format, but the description is appropriately sized for a search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with 2 parameters and full schema coverage, the description is mostly adequate. However, it doesn't clarify whether results include full report text, links, or metadata, and it doesn't distinguish itself from govinfo_search or congress_crs_reports. Given the large sibling list with many similar search tools, a bit more context about what makes this tool unique would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (query and page_size). The description adds example query values ('Tax Cuts and Jobs Act', 'reconciliation') which gives semantic guidance beyond the schema's generic 'bill name or topic' description. However, this is marginal value; the schema already carries the main burden.

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 states a specific verb ('Search') and resource ('Congressional Budget Office reports published through GovInfo'), which clearly identifies the tool's function. It also adds a distinctive detail about CBO scoring tax bills with distributional analysis, which helps differentiate it from generic govinfo_search. However, it doesn't explicitly name sibling tools like govinfo_search or congress_crs_reports, so differentiation is implicit rather than explicit.

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 specifying the resource (CBO reports) and giving example queries ('Tax Cuts and Jobs Act', 'reconciliation'), which suggests when an agent would use this tool. However, it does not explicitly state when to use this tool versus alternatives like govinfo_search or congress_crs_reports, nor does it provide exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hud_fair_market_rentsA
Read-onlyIdempotent

Get HUD Fair Market Rents (FMR) for a county, metro area, or entire state. Shows monthly rent by bedroom count (efficiency through 4-bedroom). FMR determines Section 8 voucher amounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFiscal year (e.g. 2024). Defaults to current year.
stateNoTwo-letter state code for state-wide FMR data (e.g. CA, TX)
entity_idNoCounty FIPS or CBSA code for specific area FMR (get from hud_list_counties)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds context about the output content and purpose, but does not disclose additional behavioral traits such as pagination, response format, or any prerequisites. It adds some value but not substantial behavioral transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, three sentences, front-loaded with the primary action and scope. Every sentence adds useful information: what it gets, what it shows, and why it matters. 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?

For a simple read-only tool with optional parameters, the description covers the key output (rent by bedroom count), geographic scopes, and purpose. It does not explicitly state that state or entity_id must be provided, but that is reasonably inferred from the schema and description. No output schema exists, so the description adequately conveys the return content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description clarifies that entity_id covers county or metro area and state covers state-wide, which is already implied by the schema descriptions. It does not add significant new parameter semantics beyond what the schema provides.

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 HUD Fair Market Rents, specifies geographic scopes (county, metro, state), and explains the output (monthly rent by bedroom count). It distinguishes itself from related tools by focusing on FMR, though it does not explicitly name alternatives like hud_income_limits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when FMR data is needed and even states its purpose (Section 8 voucher amounts), but it does not provide explicit guidance on when to choose this over alternatives, nor does it mention when not to use it. The usage context is clear but not elaborated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hud_income_limitsA
Read-onlyIdempotent

Get HUD Income Limits for a county, metro area, or entire state. Shows Very Low, Extremely Low, and Low income thresholds by household size (1-8 persons). Used for affordable housing eligibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFiscal year (e.g. 2024). Defaults to current year.
stateNoTwo-letter state code for state-wide income limits
entity_idNoCounty FIPS or CBSA code (get from hud_list_counties)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds scope and output content, but no behavioral caveats beyond what annotations and schema imply.

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?

Three concise sentences with the operation first, followed by output detail and a use case. No filler, though the final sentence is broad rather than actionable.

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 read-only lookup with fully documented optional parameters, the description covers scope and output shape. There is no output schema, so a note on the returned record structure would improve completeness, but the description is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already well documented. The description's mention of county/metro/state maps to state and entity_id, but adds no syntax or provenance details beyond the schema, justifying the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource, 'Get HUD Income Limits,' and narrows scope to county, metro area, or state. It adds output specifics (Very Low, Extremely Low, Low thresholds by household size), but it never names sibling tools such as hud_fair_market_rents, so differentiation is implicit rather than explicit.

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?

'Used for affordable housing eligibility' gives a clear use-case context, but the description does not specify when to prefer this over hud_fair_market_rents or the HUD list helpers, and it offers no exclusions. Guidance is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hud_list_countiesA
Read-onlyIdempotent

List counties in a state with their FIPS codes. Use FIPS codes as entity_id in hud_fair_market_rents and hud_income_limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesTwo-letter state code (e.g. CA, TX, NY)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful behavioral detail that the output is a list of counties with FIPS codes, and that these FIPS codes are meant to be used as entity_id in other tools. However, it doesn't describe pagination, ordering, or whether all counties are returned at once.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the core function, and the second sentence provides crucial cross-tool guidance. The description is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one well-documented parameter and annotations covering safety, the description is nearly complete. It explains the purpose, the output content, and how the output connects to other tools. The only minor gap is not describing the exact output format or whether the list is sorted, but this is not critical 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 100% and the single parameter 'state' is well-described in the schema as a two-letter state code. The description adds the context that the state parameter is used to filter counties, but doesn't add much beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists counties in a state with their FIPS codes, which is a specific verb and resource. It also distinguishes itself from sibling tools by explaining how the FIPS codes are used as entity_id in related HUD tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when you need county FIPS codes for a state to use in hud_fair_market_rents and hud_income_limits. It doesn't explicitly exclude alternatives, but the sibling list shows related HUD tools like hud_list_states and hud_list_metro_areas, and the description's mention of FIPS codes as entity_id gives enough guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hud_list_metro_areasA
Read-onlyIdempotent

List metropolitan/CBSA areas. CBSA codes can be used as entity_id in HUD tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful fact that returned codes are entity_id values for HUD tools, but it does not disclose other behavioral details such as output fields or whether the list is 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?

Two sentences, no wasted words, and the core action is front-loaded. The second sentence earns its place by connecting the output to downstream HUD tool usage.

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 parameterless list endpoint, the description is mostly complete: it states what is listed and why the output matters. It could be marginally clearer about what fields are returned, but the CBSA-code-as-entity_id note largely compensates for the missing output schema.

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 there is nothing for the description to explain beyond what the empty schema already communicates. The baseline for zero parameters is 4, and the description appropriately does not invent unnecessary parameter guidance.

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 ('List') and identifies the resource ('metropolitan/CBSA areas'), and it adds a valuable cross-tool note that CBSA codes serve as entity_id values. It does not explicitly distinguish this from sibling HUD list tools like hud_list_states or hud_list_counties, but the scope is clear enough from the name and content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when this tool is useful: when an agent needs CBSA codes to pass as entity_id into other HUD tools. It does not mention when to avoid it or name alternatives, but for a simple zero-parameter list tool the use case is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hud_list_statesA
Read-onlyIdempotent

List all U.S. states with their HUD state codes. Use these codes with other HUD tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that the output contains state names plus HUD codes, but does not disclose details like response format, pagination, or territory inclusion. This is adequate for a simple read-only list but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the second sentence adds practical value by explaining how the codes should be used downstream.

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 zero-parameter reference tool, the description covers what is returned and why it matters, with annotations covering safety and idempotence. It could be more explicit about whether territories or DC are included and what the response shape looks like, but those are minor gaps for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so there is nothing for the description to explain. Baseline for zero-parameter tools is 4; no additional parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and names the exact resource ('all U.S. states with their HUD state codes'). It is clearly distinguishable from sibling tools like hud_list_counties and hud_list_metro_areas because it focuses specifically on states.

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 that the codes are for use with other HUD tools, giving an agent clear downstream context. It does not name alternative lookup tools or exclusion conditions, but for a zero-parameter reference tool this level of guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_datasetsA
Read-onlyIdempotent

List all 53 U.S. Treasury Fiscal Data API datasets and their 181 endpoints. Returns dataset name, data table name, API endpoint path, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety and mutability profile. The description adds value by specifying the exact return structure (dataset name, data table name, API endpoint path, description) and the quantitative scope (53 datasets, 181 endpoints), which goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero redundancy. The primary action and resource are front-loaded, and the second sentence lists the exact return fields. Every word earns its place; no filler or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only listing tool with no output schema, the description provides all necessary information: what it lists, the scope, and what it returns. An agent has everything needed to call it correctly, and the annotations cover the safety profile. No gaps exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is trivially complete (100% coverage). The baseline for 0 parameters is 4, and the description correctly adds no parameter-specific details since none exist. There is nothing for the description to clarify about 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 states a specific verb (list), a specific resource (all 53 U.S. Treasury Fiscal Data API datasets), and the exact output fields (dataset name, table name, endpoint path, description). It clearly distinguishes itself from the many sibling tools by being the Treasury-specific catalog listing tool, leaving no ambiguity about what it does.

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 clearly implies its use case (obtaining an overview of all Treasury datasets and endpoints) but does not explicitly mention when to choose this over alternatives like search_datasets or get_endpoint_fields. It offers no when-not guidance, though the purpose is unambiguous enough that an agent can infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_contributionsA
Read-onlyIdempotent

Search campaign contributions made by lobbyists — shows which lobbyists donated to which politicians. Required under the LDA to disclose political contributions by registered lobbyists.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoResults per page (default 20)
filing_yearNoYear: 2020-2026
lobbyist_nameNoIndividual lobbyist name
registrant_nameNoLobbying firm name

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds that it shows the relationships between lobbyists and politicians, which clarifies the kind of result, but it does not disclose any additional behavioral traits such as pagination limits, rate limits, or response format. This aligns with the calibration example where read-only annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The primary purpose is front-loaded, and the legal relevance is stated in the second sentence. Every word contributes to understanding the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only search tool with four optional parameters, full schema coverage, and no output schema. The description provides enough to understand what it does and differentiates it from the lobbying family. It could mention that it returns a list or that no parameters are required, but given the read-only, open-world annotations and the simplicity of the tool, it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are documented in the schema. The description does not add any meaning beyond what the schema provides; it only restates the general subject. Per the calibration rule, when schema coverage is high, a baseline of 3 is appropriate, and the description adds nothing extra.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (search) and resource (campaign contributions made by lobbyists) and specifies the output ('which lobbyists donated to which politicians'). It distinguishes this tool from the lobbying family (lobbying_search, lobbying_registrants, etc.) by focusing specifically on campaign contributions, not general filings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context (used to disclose political contributions under LDA) and implies it is for contribution lookups, but it does not explicitly mention when to use this tool versus the similar lobbying tools. No alternatives are named, and there are no exclusions stated, leaving some ambiguity for an agent deciding between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_detailA
Read-onlyIdempotent

Get full detail on a specific lobbying filing — shows every issue lobbied, specific bills mentioned, and lobbyist names. Use the filing UUID from lobbying_search results.

ParametersJSON Schema
NameRequiredDescriptionDefault
filing_uuidYesFiling UUID from lobbying_search results

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive behavior. The description adds meaningful behavioral content by specifying the output scope: all issues lobbied, specific bills, and lobbyist names. This goes beyond the structured annotations and helps the agent anticipate the response, especially since no output schema is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence front-loads the primary purpose and output contents; the second provides the essential input source. Every clause 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?

For a one-parameter, read-only detail endpoint, the description is complete: it states what the tool returns, what input is needed, and where that input comes from. The absence of an output schema is mitigated by explicitly naming the three key content categories an agent should expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the single filing_uuid parameter is already documented as 'Filing UUID from lobbying_search results.' The description repeats this same guidance without adding new constraints, formats, or domain rules, so it meets the baseline but adds no 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 uses a specific verb ('Get full detail') and a specific resource ('a specific lobbying filing'), then enumerates what is included: every issue lobbied, specific bills mentioned, and lobbyist names. This distinguishes it clearly from search or list-oriented siblings like lobbying_search and lobbying_registrants.

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 explicit sequencing guidance: use the filing UUID from lobbying_search results. This tells an agent when and with what input to call the tool. It does not explicitly name alternatives or exclusions, which keeps it a step below the strongest possible guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_lobbyistsB
Read-onlyIdempotent

Search individual lobbyists by name or firm. Find specific people who lobby Congress and which firms they work for.

ParametersJSON Schema
NameRequiredDescriptionDefault
firmNoLobbying firm name: 'Akin Gump', 'K Street'
nameNoLobbyist name (partial match): 'Smith', 'Johnson'
page_sizeNoResults per page (default 20)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the description does not need to restate safety. It adds a hint about output (which firms they work for) but does not disclose pagination behavior, result limits, or any other operational details. This is acceptable given the strong annotation coverage, but the description adds minimal extra 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 two short sentences with no wasted words. The primary action and target are front-loaded, and the second sentence clarifies the output intent. Every phrase contributes to understanding.

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 three optional parameters and no output schema, the description adequately conveys the purpose and expected result (finding lobbyists and their firms). It does not mention pagination or potential large result sets, but given the simplicity and the absence of an output schema, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with all three parameters (firm, name, page_size) having descriptions. The tool description mentions 'by name or firm', which maps to the name and firm parameters, but does not add any new meaning or format details beyond the schema. Per the rubric, a baseline of 3 is appropriate when schema already documents parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and the resource 'individual lobbyists', and specifies the search dimensions (by name or firm). It differentiates from siblings like lobbying_registrants (which likely targets firms) by emphasizing individuals. However, it does not explicitly name any sibling tools, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as lobbying_search or lobbying_registrants. It does not state any exclusions or conditions, leaving the agent to infer usage from the 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.

lobbying_registrantsB
Read-onlyIdempotent

Search lobbying firms and organizations registered to lobby Congress.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRegistrant name: 'Amazon', 'Pfizer', 'National Rifle Association'
page_sizeNoResults per page (default 20)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that it searches registrants, which is a scoping detail, but doesn't disclose behavior like partial matching, pagination limits, or what fields are returned. With annotations covering the main behavioral traits, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the verb and resource. It's concise and to the point, with no wasted words. It could add a bit more context, but for its length it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with one required parameter and full schema coverage, the description is mostly adequate. However, there is no output schema, and the description doesn't mention what the response contains (e.g., registrant details, addresses, totals). An agent might not know what to expect from the result, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds no extra meaning beyond the schema; it doesn't clarify fuzzy matching, case sensitivity, or how page_size interacts with results. Baseline 3 is correct when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search') and resource ('lobbying firms and organizations registered to lobby Congress'). It clearly distinguishes from sibling tools like lobbying_search, lobbying_detail, and lobbying_lobbyists by focusing on registrants. However, it doesn't explicitly name a sibling or contrast itself, so it's clear but not fully differentiated.

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: search by registrant name. It doesn't explicitly state when to use this tool versus lobbying_search or lobbying_lobbyists, nor does it provide exclusions. The context of 'registered to lobby Congress' gives some situational guidance, but no explicit alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_achievement_levelsA
Read-onlyIdempotent

Get the percentage of students at each NAEP achievement level: Below Basic, Basic, Proficient, Advanced. THIS IS THE KEY LITERACY/NUMERACY METRIC — shows what % of students can read/do math at grade level. Example: '37% of 4th graders scored Below Basic in reading' comes from this data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear: '2022', '2019'. Default: most recent
gradeYesGrade: 4, 8, or 12. Math: 4,8 only. Economics/TEL/Music: 8 or 12 only.
subjectYesSubject: 'reading', 'math', 'science', 'writing', 'civics', 'history', 'geography', 'economics', 'tel', 'music'. Aliases accepted.
variableNo'TOTAL' (default), 'SDRACE' (race), 'GENDER', 'SLUNCH3' (poverty)
jurisdictionNo'NP' (national, default), or state codes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds interpretive context (returns percentages for the four achievement levels, with a concrete example), but it does not disclose output shape, pagination, or subject/grade restrictions beyond what the schema already states.

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: a clear functional sentence, an emphasis line, and a helpful example. The all-caps sentence is somewhat promotional but still conveys the metric's importance 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?

With a rich schema and safety annotations, the description is largely sufficient for a basic call: it specifies the output type (percentages per achievement level) and gives a concrete interpretation. It does not explain optional filters like variable or jurisdiction, but the schema already documents those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented. The description adds no new parameter-level guidance, though its example ('37% of 4th graders scored Below Basic in reading') indirectly ties grade and subject to the output.

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 states a specific verb ('Get') and resource ('percentage of students at each NAEP achievement level'), enumerating the four levels. It is clearly distinct from siblings like naep_scores, but it does not explicitly name the alternative or contrast itself with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use case ('key literacy/numeracy metric', 'what % of students can read/do math at grade level') and a concrete example, but it never says when to prefer this tool over plausible siblings such as naep_scores, naep_compare_years, or naep_compare_states. Usage is implied rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_available_variablesA
Read-onlyIdempotent

List available independent variables for a NAEP subject, cohort, and year. Use this to discover what demographic/survey variables are available before querying scores. Returns variable names (Varname), short labels, and long labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsYesComma-separated years: '2022' or '2019,2022'
cohortYesCohort: 1 (grade 4/age 9), 2 (grade 8/age 13), 3 (grade 12/age 17)
subjectYesSubject: 'reading', 'math', 'science', etc. Aliases accepted.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the return format (variable names, short labels, long labels), which is useful context beyond annotations. It doesn't contradict annotations and adds value about output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences, front-loaded with the primary action and followed by usage guidance and return details. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple discovery tool with 3 required params and no output schema, the description adequately explains what it returns (variable names and labels). It lacks details like pagination or number of results, but that's minor for this purpose. Annotations cover safety, and the description covers purpose and return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (years, cohort, subject) already documented in the schema. The description does not add additional meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (available independent variables for a NAEP subject, cohort, and year). It also clarifies its role as a discovery step before querying scores, which differentiates it from sibling tools like naep_scores or naep_compare_groups.

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 instructs to use this tool before querying scores ('Use this to discover what demographic/survey variables are available before querying scores.'), giving clear context. However, it does not mention alternatives or when not to use it, so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_compare_groupsA
Read-onlyIdempotent

Compare NAEP scores across demographic groups (race, gender, poverty) with significance testing. Shows achievement gaps between groups (e.g., White vs Black, Male vs Female, eligible vs not eligible for free lunch).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear: '2022'. Default: most recent
gradeYesGrade: 4, 8, or 12. Math: 4,8 only. Economics/TEL/Music: 8 or 12 only.
subjectYesSubject: 'reading', 'math', 'science', 'writing', 'civics', 'history', 'geography', 'economics', 'tel', 'music'. Aliases accepted.
variableYes'SDRACE' (race gap), 'GENDER' (gender gap), 'SLUNCH3' (poverty gap), 'IEP' (disability gap), 'LEP' (ELL gap)
jurisdictionNo'NP' (default), or state codes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior, so the description's addition of 'significance testing' and 'achievement gaps' provides valuable behavioral context beyond annotations. It does not discuss rate limits or auth, but these are not critical for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The purpose is front-loaded, and the examples are concise and directly relevant. Every word contributes to understanding the tool's function.

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 conveys the core functionality and output concept (achievement gaps) but does not specify the exact return structure or fields. Given no output schema, a bit more detail on the output could be helpful, but the tool is straightforward and the description is adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters are documented in the schema. The description adds examples like 'White vs Black' and 'Male vs Female', which clarify the meaning of the 'variable' parameter, but this is marginal since the schema already lists the allowed values with descriptions. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares NAEP scores across demographic groups with significance testing, and gives concrete examples of gaps. It distinguishes itself from sibling tools like naep_compare_years and naep_compare_states by focusing on demographic comparisons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (for comparing groups) but does not explicitly mention alternatives or when not to use it. It lacks exclusions or guidance on choosing between this and other NAEP comparison tools, so an agent must infer usage from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_compare_statesA
Read-onlyIdempotent

Compare NAEP scores across states/jurisdictions with significance testing. Shows which states score significantly higher or lower than others. Example: Compare Massachusetts vs Mississippi reading scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear: '2022'. Default: most recent
gradeYesGrade: 4, 8, or 12. Math: 4,8 only. Economics/TEL/Music: 8 or 12 only.
subjectYesSubject: 'reading', 'math', 'science', 'writing', 'civics', 'history', 'geography', 'economics', 'tel', 'music'. Aliases accepted.
variableNo'TOTAL' (default), 'SDRACE', 'GENDER'
jurisdictionsYesComma-separated jurisdiction codes: 'NP,CA,TX,MS,MA' or 'NP,NY'

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it's a safe, read-only operation. The description adds useful behavioral context by stating that the tool performs significance testing and shows which states are significantly higher or lower. This goes beyond the annotations and informs the agent about the nature of the output. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the core purpose and includes a concrete example. Every sentence adds value: the first defines what it does, the second explains the output, and the example illustrates the input. This is a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main use case, and the annotations handle safety. The schema fully documents parameters, and the description explains the significance testing aspect. There is no output schema, but the description gives enough context about what the agent can expect (comparison results with significance). It does not mention limitations like which subjects are available for which grades, but that is in the schema. Overall, it is complete for a comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – every parameter (year, grade, subject, variable, jurisdictions) has a description. The tool description itself does not add additional parameter semantics; it only gives an example using 'reading' and 'Massachusetts vs Mississippi', which is not semantic detail beyond what the schema already provides. With full schema coverage, the baseline is 3, and the description does not exceed it.

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: comparing NAEP scores across states/jurisdictions with significance testing. It specifies the action (compare), the resource (NAEP scores across states), and the distinguishing feature (significance testing). The example (Massachusetts vs Mississippi reading) reinforces the purpose and helps an agent understand the use case. This differentiates it from siblings like naep_scores (which likely just returns scores) or naep_compare_years (comparing years).

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 state-to-state comparisons via the example, but it does not explicitly state when to use this tool versus alternatives like naep_compare_groups (comparing demographic groups) or naep_compare_years (comparing years). There is no 'use this for X, not for Y' guidance. The example gives a hint, but the lack of explicit exclusions or alternatives makes the usage guidance only implied, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_compare_yearsA
Read-onlyIdempotent

Compare NAEP scores across assessment years with significance testing. Shows whether score changes between years are statistically significant. Great for tracking the COVID learning loss and recovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
gradeYesGrade: 4, 8, or 12. Math: 4,8 only. Economics/TEL/Music: 8 or 12 only.
yearsYesComma-separated years to compare: '2022,2019' or '2022,2019,2017'
subjectYesSubject: 'reading', 'math', 'science', 'writing', 'civics', 'history', 'geography', 'economics', 'tel', 'music'. Aliases accepted.
variableNo'TOTAL' (default), 'SDRACE', 'GENDER', 'SLUNCH3'
jurisdictionNo'NP' (default), or state codes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it 'shows whether score changes between years are statistically significant,' which is the key behavioral output, but does not detail significance thresholds, methods, or any quirks. It contributes modest context beyond annotations, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each with a distinct role: core operation, clarifying output, and motivating use case. The main verb and resource appear in the first two wordscd5905. No filler, no repetition of schema fields, and the structure is 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?

For a read-only comparison tool with a clear description and complete parameter documentation, the essentials are all present. It could arguably add a note on output formatting (e.g., whether p-values or confidence intervals are returned), but that is not required for selection or invocation. The sibling set includes similar NAEP tools, so a bit more differentiation would raise this to a 5, but 4 is still strong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the input schema (e.g., 'years' format, 'subject' aliases, defaults for 'variable' and 'jurisdiction'). The tool description itself adds no additional parameter guidance, which is acceptable given complete schema coverage. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific verb ('Compare') and a precise resource ('NAEP scores across assessment years'), and further specifies the distinguishing value-add: significance testing. This clearly separates it from siblings like naep_scores (single-year data) and naep_compare_states (comparison by state) without requiring schema inspection.

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 a concrete, well-known use case ('Great for tracking the COVID learning loss and recovery'), which tells the agent when to select this tool. It does not explicitly name alternative tools or exclusions, but the context is clear enough to route an agent toward this vs. a single-year score tool. A small deduction for not explicitly mentioning 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.

naep_gap_variable_jurisdictionA
Read-onlyIdempotent

Compare how achievement gaps between demographic groups differ across states. Example: Is the poverty gap in math bigger in Mississippi than Massachusetts? Returns innerdiff1 (group gap for focal jurisdiction), innerdiff2 (group gap for target), and the gap between them.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear: '2022'. Default: most recent.
gradeYesGrade: 4, 8, or 12.
subjectYesSubject: 'reading', 'math', 'science', etc. Aliases accepted.
variableYesNon-TOTAL variable with 2+ categories: 'SDRACE', 'GENDER', 'SLUNCH3'
jurisdictionsYes2+ jurisdiction codes comma-separated: 'MA,MS' or 'NP,CA,TX'

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds behavioral context by explaining the return values (innerdiff1, innerdiff2, and the gap), which is helpful but not deep. It doesn't disclose how jurisdictions are ordered (focal vs target) or any data limitations, so it adds moderate value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (three sentences) and front-loads the purpose, then gives a concrete example, and finally outlines outputs. The example is valuable but could be trimmed slightly; still, it is efficient and structured well.

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 its complexity (5 params, no output schema). It defines the outputs, gives an example, and the schema covers all parameters. Minor gaps like ordering of jurisdictions or handling of multiple years are not critical. Given the annotations and schema, this is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are fully documented in the schema. The description names the key parameter 'jurisdictions' implicitly via the example and the output fields, but it doesn't add much beyond the schema. It clarifies that the variable must be non-TOTAL with 2+ categories, which aligns with the schema's description, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: comparing achievement gaps across states for demographic groups. It uses a concrete example ('Is the poverty gap in math bigger in Mississippi than Massachusetts?') and specifies the output fields (innerdiff1, innerdiff2, and the gap between them), making it distinct from siblings like naep_gap_year_jurisdiction or naep_gap_variable_years which track gaps over time or across years.

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 by giving an example, but it does not explicitly state when to use this tool versus alternatives like naep_compare_states or naep_compare_groups. It lacks exclusions or alternative recommendations, so an agent must infer from the tool's focus on cross-jurisdiction gap comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_gap_variable_yearsA
Read-onlyIdempotent

Compare how achievement gaps between demographic groups change over time. Example: Is the racial achievement gap in reading getting bigger or smaller since 2017? Returns innerdiff1 (group gap for focal year), innerdiff2 (group gap for target year), and the gap between them.

ParametersJSON Schema
NameRequiredDescriptionDefault
gradeYesGrade: 4, 8, or 12.
yearsYes2+ years comma-separated: '2022,2019' or '2022,2017'
subjectYesSubject: 'reading', 'math', 'science', etc. Aliases accepted.
variableYesNon-TOTAL variable with 2+ categories: 'SDRACE', 'GENDER', 'SLUNCH3'
jurisdictionNo'NP' (default), or state/district code

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, non-destructive, idempotent nature of the tool, so the description does not need to repeat that. It adds useful behavioral context by specifying exactly what is returned: the group gap for the focal year, the group gap for the target year, and the gap between them.

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: a purpose statement, one illustrative example, and a compact list of returned values. It is front-loaded with the main purpose and contains no filler, though the example and return list could arguably be merged.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does well to name the returned fields and give a concrete example. However, it leaves ambiguity about how the 'years' parameter maps to focal vs target year and how to interpret the sign of the final difference, and it provides no guidance for choosing among the sibling NAEP gap/compare tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all five parameters (100% coverage), so the baseline is 3. The description adds the 'focal year' / 'target year' interpretation and a demographic-group framing, but it does not clarify whether the first comma-separated year is focal or target, leaving some ordering ambiguity.

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 operation: comparing achievement gaps between demographic groups over time, and it enumerates the returned values (innerdiff1, innerdiff2, and the difference between them). It does not explicitly distinguish itself from sibling NAEP tools such as naep_compare_years or naep_gap_variable_jurisdiction, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example question ('Is the racial achievement gap in reading getting bigger or smaller since 2017?') implies when the tool should be used, but the description never states when not to use it or names an alternative sibling tool. Usage context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_gap_year_jurisdictionA
Read-onlyIdempotent

Compare how score changes between years differ across jurisdictions. Example: Did the COVID learning loss hit California harder than Massachusetts? Returns innerdiff1 (year gap for focal jurisdiction), innerdiff2 (year gap for target), and the gap between them.

ParametersJSON Schema
NameRequiredDescriptionDefault
gradeYesGrade: 4, 8, or 12.
yearsYesExactly 2 years comma-separated: '2022,2019'
subjectYesSubject: 'reading', 'math', 'science', etc. Aliases accepted.
variableNo'TOTAL' (default), 'SDRACE', 'GENDER', 'SLUNCH3'
jurisdictionsYes2+ jurisdiction codes comma-separated: 'CA,MA' or 'NP,TX'

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds value by disclosing the return elements (innerdiff1, innerdiff2, and the gap), which are not visible from the schema. It could be stronger about edge cases, like jurisdiction ordering or multi-jurisdiction 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 definition is compact: purpose in the first sentence, a concrete example second, and a return-value explanation third. No redundant or repeated schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and no output schema, the description does a good job covering the interpretative layer (what the output means). Remaining gaps are minor: it does not explain how multiple jurisdictions beyond two are processed or what exactly 'focal' refers to in the parameter order.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds helpful conceptual language (focal vs. target jurisdiction) but does not map those concepts to specific parameter positions or add details beyond the schema.

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 states a clear action — compare how score changes between years differ across jurisdictions — and provides a concrete real-world example. It does not explicitly name sibling tools to disambiguate, so it falls slightly short of full sibling differentiation.

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 example ('Did the COVID learning loss hit California harder than Massachusetts?') gives clear contextual guidance on when to use the tool. It does not explicitly mention when-not-to-use it or offer alternative tool names, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naep_scoresA
Read-onlyIdempotent

Get NAEP test scores (Nation's Report Card) — the gold standard for measuring U.S. student achievement. Returns average scale scores by subject, grade, state, and demographic group.

Subjects: 'reading', 'math', 'science', 'writing', 'civics', 'history', 'geography', 'economics', 'tel', 'music' Grades: 4, 8, 12 (math: 4,8 only; economics/tel/music: 8 or 12 only) Variables: 'TOTAL' (all students), 'SDRACE' (race), 'GENDER', 'SLUNCH3' (school lunch/poverty), 'PARED' (parent education) Jurisdiction: 'NP' (national public), or state codes ('CA', 'TX', 'NY', 'MS')

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoAssessment year: '2022', '2019', '2017'. Default: most recent. Use 'Current' for latest. Append R2 for non-accommodated: '2019R2'.
gradeYesGrade: 4, 8, or 12. Math: 4,8 only. Economics/TEL/Music: grade 8 or 12 only.
subjectYesSubject: 'reading', 'math', 'science', 'writing', 'civics', 'history', 'geography', 'economics', 'tel', 'music'. Aliases: 'mathematics', 'ela', 'us history', 'social studies', 'econ', 'technology'
subscaleNoOverride the default composite subscale. E.g. math: 'MRPS1' (numbers), 'MRPS3' (geometry). See reference for all codes.
variableNo'TOTAL' (default), 'SDRACE' (race), 'GENDER', 'SLUNCH3' (poverty), 'PARED' (parent ed), 'IEP' (disability), 'LEP' (English learners). Crosstab: 'SDRACE+GENDER'
stat_typeNoStatistic type: 'MN:MN' (Average scale score (mean)), 'RP:RP' (Row percent), 'ALC:BB' (% Below Basic (cumulative)), 'ALC:AB' (% At or Above Basic (cumulative)), 'ALC:AP' (% At or Above Proficient (cumulative)), 'ALC:AD' (% At Advanced (cumulative)), 'ALD:BA' (% At Basic (discrete)), 'ALD:PR' (% At Proficient (discrete)), ... (15 total)
jurisdictionNo'NP' (national public, default), or state/district codes: 'CA', 'TX', 'XN' (NYC), 'XC' (Chicago). Comma-separate for multiple.
categoryindexNoFilter specific categories. E.g. for SDRACE: '1' (White), '2' (Black), '3' (Hispanic). For crosstab: '1+1,1+2' (White/Male, White/Female)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds that it returns average scale scores, but no information about pagination, rate limits, or output structure. It does not contradict annotations but provides minimal additional behavioral detail.

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 compact paragraph with bullet-like lines for subjects, grades, variables, and jurisdictions. It front-loads the purpose and includes all key info without excessive verbosity. Slightly long but appropriate for the tool's complexity.

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 complex tool with 8 parameters and no output schema, the description covers the main query dimensions (subject, grade, variable, jurisdiction) and mentions subscale and stat_type indirectly via schema. It doesn't explain how to combine parameters for complex queries, but the schema does. Given the complexity, it is quite complete, though it could mention crosstabs and provide examples.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 8 parameters with descriptions, so baseline is 3. The tool description provides a summary of valid subjects, grades, variables, and jurisdictions, which is helpful for quick reference but largely redundant. It adds aliases and crosstab examples that are also present in the schema, offering marginal extra 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 retrieves NAEP test scores and lists the key dimensions (subject, grade, variable, jurisdiction). It distinguishes itself from specialized siblings like naep_compare_years or naep_achievement_levels by focusing on raw score retrieval. The phrase 'gold standard' adds context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs. the many specialized NAEP siblings. The description implies it is the primary tool for raw scores but does not state exclusions or alternatives, leaving an agent to infer the appropriate choice among similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_car_seat_stationsA
Read-onlyIdempotent

Find car seat inspection stations near a location. Search by ZIP code, state, or geographic coordinates. Car seat inspection stations help parents verify proper installation.

Example: state='CA', or zip='90210', or lat=30.18 + long=-96.39 + miles=50

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude for geo search
zipNoZIP code (e.g. '90210')
longNoLongitude for geo search
milesNoSearch radius in miles (default 25, used with lat/long)
stateNoTwo-letter state code (e.g. 'CA', 'TX')

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering the safety profile. The description adds the search methods and example but does not describe response format, pagination, or any edge cases. It provides some behavioral context beyond annotations but not extensive.

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 plus an example, with the core purpose front-loaded. Every sentence adds value: purpose, search methods, context, and example. 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?

For a simple lookup tool with no output schema, the description is sufficient. It explains the search modes and gives an example. It could mention precedence when multiple search parameters are given, but that is not essential for a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already cover all parameters with 100% coverage, so baseline is 3. The description adds the grouping of parameters (ZIP, state, or coordinates) and a concrete example, clarifying usage semantics beyond what the schema alone provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds car seat inspection stations near a location, with explicit search methods (ZIP, state, coordinates). It distinguishes itself from sibling tools like nhtsa_recalls and nrel_fuel_stations by specifying the resource 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 explicitly lists search modes (ZIP, state, or lat/long) and provides an example with concrete values. It does not explicitly say when not to use it or mention alternatives, but the intended usage is clear from the context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_complaint_detailA
Read-onlyIdempotent

Get a specific complaint by its ODI number. ODI numbers are in complaint search results (e.g. 11184030).

ParametersJSON Schema
NameRequiredDescriptionDefault
odi_numberYesODI complaint number (e.g. 11184030)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds only that ODI numbers are in search results—this is parameter sourcing, not behavior. It doesn't disclose response format, error handling, or any side effects beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The purpose is front-loaded, and the second sentence clarifies parameter sourcing with an example. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter detail fetch with annotations covering safety, the description is nearly complete. It lacks an explicit note on the return value, but 'Get a specific complaint' implies the complaint details. Minor gap for error conditions, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and includes an example. The description adds context that ODI numbers are found in search results, which helps the agent locate the parameter value, going beyond the schema description.

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 gets a specific complaint by ODI number, using a specific verb and resource. It doesn't explicitly contrast with sibling tools like nhtsa_complaints, but the 'specific' qualifier implies distinction.

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 notes that ODI numbers come from complaint search results, which implies usage when you already have an ODI number. However, it doesn't explicitly state when to prefer this over alternatives or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_complaintsA
Read-onlyIdempotent

Search NHTSA vehicle complaints by make, model, and model year. All three parameters are required by the NHTSA API. Use nhtsa_models to find valid models for a make.

Example: make='tesla', model='model 3', model_year=2023

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesVehicle make: 'toyota', 'ford', 'tesla'
modelYesVehicle model: 'camry', 'f-150', 'model 3'
model_yearYesModel year

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, non-mutating operation. The description adds that all three parameters are required, which is a practical constraint. However, it does not describe potential response size, pagination, or error behavior (e.g., invalid model names), which would be valuable context. With annotations covering the safety profile, the description provides some but not extensive behavioral detail.

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, front-loaded with the purpose, and includes an illustrative example. Every sentence contributes: the main purpose, the requirement for all parameters, a pointer to the sibling tool for model validation, and a clear example. This is efficient and well-structured, with no 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?

The tool is a simple search with three parameters, all documented. The description covers the essential usage constraints (all required, use nhtsa_models) and provides an example. There is no output schema, so the description does not need to explain return values, but it could mention that the response is a list of complaints or any limits. Overall, it is adequately complete for an agent to call it correctly, with minor room for improvement on response expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides descriptions for all three parameters (coverage 100%), including example values for make and model. The description adds a concrete example for model_year and clarifies that all three are required. It also gives an example of valid values ('tesla', 'model 3', 2023), which is helpful but not substantially beyond the schema's examples. Since the schema does the heavy lifting, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search NHTSA vehicle complaints by make, model, and model year.' It identifies a specific verb ('search'), resource ('NHTSA vehicle complaints'), and the key parameters. It distinguishes from siblings like 'nhtsa_recalls' and 'nhtsa_safety_ratings' by focusing on complaints, and it references sibling 'nhtsa_models' for validation, aiding differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that all three parameters are required by the NHTSA API, which is a clear usage constraint. It also instructs agents to use 'nhtsa_models' to find valid models for a make, providing alternative guidance. However, it does not explicitly state when not to use this tool or compare it with other complaint-related tools like 'nhtsa_complaint_detail', which could be relevant for retrieving details of a specific complaint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_decode_vinA
Read-onlyIdempotent

Decode a Vehicle Identification Number (VIN) to get specifications. Returns make, model, year, engine, body class, drive type, plant info. VINs are 17 characters.

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYesVehicle Identification Number (17 characters)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the VIN length constraint (17 characters) and lists the output fields, which is useful. However, it does not disclose potential failure modes (e.g., invalid VINs, partial decodes, or NHTSA API limitations) beyond the schema's min/max length.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler. The first sentence states the action, the second lists expected outputs, and the third provides the key input constraint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with full schema coverage and safety annotations, the description is nearly complete. It could mention that the NHTSA API may return partial data for invalid or incomplete VINs, but the minLength=11 in the schema already hints at partial VIN support. Overall, an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the vin parameter. The description reinforces that VINs are 17 characters, which matches the schema's maxLength, but adds no new semantic detail beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool decodes a VIN and lists the specific output fields (make, model, year, engine, body class, drive type, plant info). It is distinct from sibling NHTSA tools like nhtsa_recalls or nhtsa_safety_ratings, which address different queries.

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 it (when you have a VIN and want vehicle specifications) but does not explicitly state when not to use it or name alternatives. Sibling tools like nhtsa_recalls or nhtsa_complaints are not mentioned, so an agent must infer the boundary from the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_makesA
Read-onlyIdempotent

List vehicle makes for a model year that have recalls or complaints. Use issue_type='r' for recalls, 'c' for complaints.

Example: model_year=2024, issue_type='r'

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_typeYes'r' for recalls, 'c' for complaints
model_yearYesModel year

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds that it returns makes associated with recalls or complaints but does not disclose pagination, ordering, or potential limitations. Given the annotations, this level is adequate 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 extremely concise: two short sentences plus an example. It leads with the core purpose and packs usage guidance efficiently without any 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 list endpoint with two parameters and no output schema, the description covers the essential behavior and provides a practical example. It doesn't describe response format or limits, but those are not critical for understanding how to 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?

Schema description coverage is 100%, so both parameters are already documented. The description re-emphasizes the issue_type values and provides an example, which adds minor clarity but does not introduce new semantic depth beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists vehicle makes for a model year based on issue type, using specific verb 'List'. It distinguishes itself by focusing on makes with recalls/complaints, though it does not explicitly name any sibling tool. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit parameter usage ('Use issue_type=\'r\' for recalls, \'c\' for complaints') and a concrete example. However, it does not clarify when to choose this tool over related tools like nhtsa_models or nhtsa_recalls, so there's a slight gap in alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_modelsA
Read-onlyIdempotent

List vehicle models for a make and year that have recalls or complaints. Or list all models for a make from the vPIC database (omit issue_type).

Example: make='tesla', model_year=2024, issue_type='r'

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesVehicle make: 'toyota', 'ford', 'tesla'
issue_typeNo'r' for recalls, 'c' for complaints. Omit for general model list.
model_yearNoModel year (optional for vPIC lookup)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the distinction between filtered and unfiltered lists, but does not disclose return format, pagination, or any other behavioral caveats. With annotations covering safety, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences plus a helpful example. The purpose is front-loaded, and every word adds information. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (list of models), the description covers the inputs and the two modes. It does not describe the output format (e.g., list of model strings), but since there is no output schema and the tool is straightforward, this is a minor gap. Annotations handle safety, so overall it is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all three parameters, so baseline is 3. The description adds value by explaining the meaning of issue_type ('r' for recalls, 'c' for complaints), clarifying that omitting it yields the general list, and providing a concrete example that ties parameters together. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific action (list vehicle models) with clear distinction between two modes (filtered by issue_type or all models). The example makes it concrete. It is clearly differentiated from sibling tools like nhtsa_makes (makes) and nhtsa_model_years (years) by focusing on models.

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 an example and explains when to omit issue_type to get the general vPIC list. It doesn't explicitly state when to avoid this tool or name alternatives, but the purpose is clear enough. It could mention that for recall details one would use nhtsa_recalls, but that's implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_model_yearsA
Read-onlyIdempotent

List model years that have recalls or complaints in the NHTSA database. Use issue_type='r' for recalls (1949–present), 'c' for complaints. Useful for discovering available data before querying.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_typeYes'r' for recalls, 'c' for complaints

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by specifying the date range for recalls (1949–present) and framing the tool as a discovery step. It doesn't contradict annotations and adds useful details beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words: the purpose is front-loaded, usage instructions follow, and a practical note about discovery is included. The structure is logical and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, no output schema, and annotations covering safety, the description is complete. It explains what it returns (model years), how to use it (issue_type), and when to use it (before querying). Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% since the issue_type parameter already has a description ('r' for recalls, 'c' for complaints). The description adds extra semantic value by specifying the date range for recalls (1949–present), which is not in the schema. This goes beyond the baseline of 3 for fully covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'List model years that have recalls or complaints in the NHTSA database.' This is specific (verb: list, resource: model years, scope: recalls/complaints) and distinct from sibling tools like nhtsa_makes and nhtsa_models. It also adds the purpose of discovery before querying, making the intent unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs how to use the parameter (issue_type='r' for recalls, 'c' for complaints) and states it is 'Useful for discovering available data before querying.' This implies using it as a preliminary step before other NHTSA queries, but it does not name specific alternatives or exclusions. Still, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_recall_detailA
Read-onlyIdempotent

Get recall details by NHTSA campaign number. Campaign numbers look like '23V838000' or '12V176000'. Returns full recall information including affected vehicles, summary, consequence, and remedy.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_numberYesNHTSA campaign number (e.g. '23V838000', '12V176000')

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by specifying the return content (affected vehicles, summary, consequence, remedy), which is useful behavioral context. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary purpose, then examples and return contents. No fluff, every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple detail-lookup tool with a single parameter, annotations covering safety, and no output schema, the description provides sufficient guidance. It explains what the tool does, the input format, and what it returns. An agent can correctly invoke it with just the campaign number. No missing critical information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a description for campaign_number with examples, so schema coverage is 100%. The description's examples ('23V838000', '12V176000') essentially repeat the schema's examples, adding little new meaning. Baseline of 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get recall details') and the resource ('NHTSA campaign number'), and provides concrete examples of valid campaign number formats. This distinguishes it from the sibling nhtsa_recalls (which searches for recalls) and nhtsa_complaint_detail (which handles complaints).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: you need a specific campaign number to retrieve details. However, it does not explicitly mention when to use this tool over nhtsa_recalls or when not to use it. It would benefit from saying 'use this when you have a campaign number; to find one, use nhtsa_recalls'. The usage guidance is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_recallsA
Read-onlyIdempotent

Search NHTSA vehicle recalls by make, model, and model year. All three parameters are required by the NHTSA API. Use nhtsa_models to find valid models for a make, or nhtsa_recall_detail for a specific campaign.

Example: make='tesla', model='model 3', model_year=2024

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesVehicle make: 'toyota', 'ford', 'tesla', 'honda'
modelYesVehicle model: 'camry', 'f-150', 'model 3', 'civic'
model_yearYesModel year: 2020, 2023, 2024

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint). The description adds the API requirement that all parameters are mandatory, but does not disclose other behavioral aspects such as response format or error handling. Given the annotation coverage, a 3 is appropriate – it adds some value but not deep 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 concise (two sentences plus an example) and front-loaded with the purpose. It avoids redundancy and places the key information first. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, the schema fully documents parameters, and annotations cover safety. The description does not mention what the return payload looks like, but for a straightforward search tool this is not a critical omission. It is complete enough for an agent to call it correctly with the required parameters and example.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains each parameter. The description restates that all three are required (already in schema) and provides a concrete example, which adds a bit of practical value. However, it does not go beyond the schema in explaining parameter semantics, so a baseline 3 is fitting.

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 a specific action ('Search NHTSA vehicle recalls') with a clear resource and parameters. It also names alternative sibling tools (nhtsa_models, nhtsa_recall_detail), effectively distinguishing this tool from them. An agent can immediately understand what this tool does.

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 states that all three parameters are required and provides guidance on when to use sibling tools: nhtsa_models to find valid models and nhtsa_recall_detail for a specific campaign. This gives clear conditions for selecting this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_safety_rating_detailA
Read-onlyIdempotent

Get detailed NHTSA 5-star safety ratings for a specific vehicle variant. Requires a VehicleId from nhtsa_safety_ratings search results. Returns crash test ratings, rollover risk, and safety technology assessments.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicle_idYesVehicleId from safety ratings search (e.g. 19950)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true owning that this is read-only. The description adds that it requires a VehicleId and returns crash ratings, rollover risk, and safety technology assessments, which is useful behavioral context. It doesn't discuss edge cases like invalid IDs or error handling, but annotations cover the read-only aspect well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff, and the key prerequisite is front-loaded. It clearly and efficiently conveys all necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with a clear schema and read-only annotations, the description is fairly complete. It explains what data is returned and the dependency on search results. However, it doesn't describe the output structure or any pagination, but given it's a detail retrieval tool, the description is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a description for vehicle_id (VehicleId from safety ratings search) which is clear and covers the parameter, as schema description coverage is 100%. The description reinforces the dependency, so the parameter semantics are adequately explained by the schema, with the description adding no new detail beyond the requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves detailed NHTSA 5-star safety ratings for a specific vehicle variant, distinguishing it from the sibling nhtsa_safety_ratings which likely lists ratings. It names the resource and specific data types returned, which is clear.

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 that a VehicleId from nhtsa_safety_ratings search results is required, providing clear context for when to use this tool. It doesn't explicitly compare with siblings, but the dependency is clear. However, it doesn't mention when not to use it or alternatives, which is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nhtsa_safety_ratingsA
Read-onlyIdempotent

Search NHTSA 5-star safety ratings (NCAP) by make, model, and year. Returns vehicle variants with VehicleId. Use the VehicleId with nhtsa_safety_rating_detail.

Ratings: 5 stars = highest, 1 star = lowest. Data from 1990 to present.

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesVehicle make: 'honda', 'toyota', 'ford'
modelYesVehicle model: 'civic', 'camry', 'f-150'
model_yearYesModel year

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds the data range (1990 to present) and that it returns vehicle variants with VehicleId, but does not disclose output structure, pagination, or error behavior. Since annotations cover the key behavioral traits, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The main purpose is front-loaded, followed by a crucial pointer to the detail tool and the rating scale/date range. Each 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?

Given there is no output schema, the description should explain what the response looks like in more detail. It mentions VehicleId and variants but not the full set of fields or whether multiple variants are expected. For a search tool with three required parameters, this is minimal but functional.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the parameter descriptions are merely examples ('honda', 'toyota', 'ford'). The description does not add formatting, case-sensitivity, or value constraints beyond the schema. It only repeats the parameter names, so it adds minimal value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches NHTSA 5-star safety ratings by make, model, and year, and explicitly mentions the return of VehicleId and the companion tool nhtsa_safety_rating_detail, distinguishing it from sibling tools like recalls or complaints.

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 directly instructs to use the VehicleId with nhtsa_safety_rating_detail, providing a clear follow-up action. However, it doesn't explicitly state when to avoid this tool or when alternatives like nhtsa_recalls might be more appropriate, though the mention of the detail tool implies a search-then-detail workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nih_projects_by_agencyA
Read-onlyIdempotent

Get project counts by NIH institute/center for a fiscal year. Shows which institutes fund the most research: NCI (cancer), NIAID (infectious diseases), etc. Useful for understanding NIH budget allocation across disease areas.

ParametersJSON Schema
NameRequiredDescriptionDefault
agenciesNoSpecific agency codes to check (default: top 25)
fiscal_yearYesFiscal year: 2024

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds that it returns project counts (not project details) and provides examples of agencies, but does not disclose any additional behavioral traits like the default top-25 agencies or pagination. Given the annotations, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences: the first states the core function, the second gives illustrative examples, and the third provides a use case. There is no fluff or repetition, and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the purpose, output type, and use case. It does not mention that the agencies parameter is optional or that it defaults to the top 25, but that information is present in the schema description. For a simple read-only aggregate tool with two parameters and no output schema, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (fiscal_year and agencies both have descriptions). The description adds semantic context for agency codes (e.g., NCI for cancer, NIAID for infectious diseases) but does not explain how to use the parameters beyond what the schema already provides. This is a minimal addition above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'project counts', and the scope 'by NIH institute/center for a fiscal year'. It also provides concrete examples of the output (NCI, NIAID) and ties it to a use case (understanding NIH budget allocation). This is specific enough to distinguish it from other NIH tools like nih_search_projects, which focus on individual projects rather than aggregate counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a use case ('useful for understanding NIH budget allocation across disease areas') but does not explicitly state when to use this tool over alternatives such as nih_search_projects or nih_spending_by_category. There is no mention of when not to use it or any exclusions, so the agent has to infer its role from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nih_search_projectsA
Read-onlyIdempotent

Search NIH-funded research projects by text, disease area, investigator, institution, state, agency, spending category, grant type, and funding amount. Returns project number, title, PI, organization, award amount, agency, activity code, and dates. Use to find research grants for any disease, track institutional funding, or identify PIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoFree-text search in titles, abstracts, and terms: 'breast cancer', 'CRISPR', 'opioid'
limitNoResults per page (default 10, max 50)
offsetNoStarting offset for pagination
pi_nameNoPrincipal investigator name (partial match): 'Fauci', 'Collins'
agenciesNoNIH institute codes: 'NCI' (National Cancer Institute), 'NHLBI' (National Heart, Lung, and Blood Institute), 'NIDDK' (National Institute of Diabetes and Digestive and Kidney Diseases), 'NINDS' (National Institute of Neurological Disorders and Stroke), 'NIA' (National Institute on Aging), 'NIAID' (National Institute of Allergy and Infectious Diseases), 'NIGMS' (National Institute of General Medical Sciences), 'NIMH' (National Institute of Mental Health), ... (32 total)
org_namesNoOrganization names (wildcard): ['JOHNS HOPKINS'], ['STANFORD']
org_statesNoState abbreviations: ['CA','NY'], ['TX']
sort_fieldNoSort by: 'award_amount', 'project_start_date', 'fiscal_year'
sort_orderNoSort order
fiscal_yearsNoFiscal years: [2024] or [2020,2021,2022,2023,2024]
activity_codesNoGrant types: 'R01' (Research Project Grant (most common independent investigator grant)), 'R21' (Exploratory/Developmental Research Grant (smaller, high-risk)), 'R43' (SBIR Phase I (Small Business Innovation Research)), 'R44' (SBIR Phase II), 'P01' (Research Program Project Grant (multi-investigator)), 'P30' (Center Core Grant), 'P50' (Specialized Center), 'U01' (Research Project Cooperative Agreement), ... (20 total)
covid_responseNoCOVID funding: ['All'], ['C3'] (CARES Act), ['C6'] (American Rescue Plan)
award_amount_maxNoMaximum award amount in dollars
award_amount_minNoMinimum award amount in dollars
funding_mechanismNoMechanism codes: 'RG' (Research Grants), 'PC' (Research Centers), 'CT' (Clinical Trial or Study Cooperative Agreement), 'TN' (Research Training (Individual and Institutional)), 'CR' (Research Career Programs), 'SB' (Small Business Awards (SBIR/STTR)), 'OT' (Other Transactions)
exclude_subprojectsNoExclude subprojects for cleaner counts (default: true)
spending_categoriesNoRCDC category IDs: [27]=Cancer, [7]=Alzheimer's, [41]=Diabetes, [93]=Opioids, [60]=HIV/AIDS

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description does not need to restate it. It does add the expected return columns, but it does not disclose pagination behavior, response limits, error/empty-result semantics, or any rate-limit note. The bar is lower given the annotations, but there is room for more operational 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 front-loaded and each sentence is generally useful: purpose in sentence 1, returned fields in sentence 2, example use cases in sentence 3. The third sentence partially repeats the first one (e.g., 'disease area' vs 'any disease', 'institutional funding' vs 'investigator/funding'), introducing some mild redundancy, but the overall structure remains clean and compact.

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 17 parameters are fully documented in the input schema, the output fields are defined in the description despite the lack of an output schema, and the annotations cover the safety/path profile. The description only lacks a minimal query example and a note about default pagination behavior, which can be inferred from the highly documented limit/offset 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 100% and each parameter already has both type, default/limits, and examples in the input schema. The description's mention of search facets merely re-aggregates what the schema already documents with more detail, so the Freeform text adds little semantic value 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 begins with a specific verb and resource: 'Search NIH-funded research projects' and lists the key filter dimensions (text, disease area, PI, institution, state, agency, spending category, grant type, funding amount). It also enumerates the return fields, which immediately distinguishes it from sibling tools like nih_search_publications and nih_spending_by_category.

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 concrete use cases in the final sentence: 'find research grants for any disease, track institutional funding, or identify PIs.' However, it does not explicitly name alternative tools or define when an agent should choose a sibling search, 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.

nih_search_publicationsA
Read-onlyIdempotent

Search for publications linked to NIH-funded projects. Search by PubMed IDs (PMIDs), application IDs, or core project numbers. Returns PMID and linked project number.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (default 10)
pmidsNoPubMed IDs: [33298401, 33105091]
offsetNoStarting offset for pagination
appl_idsNoApplication IDs
core_project_numsNoCore project numbers: ['R01AG060942']

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the read-only, non-destructive, idempotent safety profile. The description adds the return behavior ('Returns PMID and linked project number') but does not go beyond that; no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It front-loads the core purpose, then gives the identifier types and return contract, making it easy for an agent to process.

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?

It is adequate for a simple read-only search tool, and it names the return fields even though there is no output schema. However, all parameters are optional and the description does not clarify whether at least one identifier must be supplied or whether results are a list, which could matter at invocation time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already has a description, so this dimension is a baseline 3. The description paraphrases the allowed identifier types but does not clarify whether parameters may be combined or whether at least one filter is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource ('Search for publications linked to NIH-funded projects') and enumerates the key search inputs (PMIDs, application IDs, core project numbers). This clearly differentiates it from the sibling nih_search_projects.

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 a clear context: it is the tool to use when searching for NIH-tied publications by identifiers. It does not explicitly name an alternative or state when not to use it, but the publication-focused wording provides enough directional guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nih_spending_by_categoryA
Read-onlyIdempotent

Get NIH project counts and estimated funding for a disease/research area across fiscal years. Uses RCDC spending categories with an agency-based fallback for more accurate counts. Common category IDs: 27=Cancer, 7=Alzheimer's, 41=Diabetes, 60=HIV/AIDS, 93=Opioids, 30=Cardiovascular, 85=Mental Health, 38=COVID-19, 118=Stroke, 92=Obesity. Note: For the most reliable counts by disease area, also try nih_projects_by_agency with the relevant institute.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYesRCDC spending category ID: 27=Cancer, 7=Alzheimer's, 41=Diabetes, 60=HIV/AIDS, 93=Opioids
fiscal_yearsYesFiscal years to compare: [2020,2021,2022,2023,2024]

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description only needs to add behavioral context. It adds the RCDC-category mechanism, an agency-based fallback, and the output (project counts and estimated funding), matching the read-only safety profile and adding useful details beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with no filler. The core purpose comes first, the mechanism and accuracy caveat follows, and the helpful category-ID list and sibling routing are placed at the end. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the small parameter count, full schema coverage, and strong annotations, the description covers the essential usage context: what the tool returns, how category selection works, and a relevant alternative. The lack of an output schema is acceptable because the description names the return content, so an agent has enough to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters and even repeats the first five category IDs. The description adds a few additional common category IDs beyond the schema and frames the purpose of category_id, but it does not materially deepen parameter meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Get NIH project counts and estimated funding for a disease/research area across fiscal years.' It also clarifies the mechanism (RCDC spending categories) and distinguishes the tool from the sibling nih_projects_by_agency by pointing to that alternative for more reliable counts by disease area.

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 practical selection guidance: this tool provides category-based counts and funding across fiscal years, with a fallback approach for accuracy. It explicitly suggests nih_projects_by_agency when the most reliable counts by disease area are needed. However, it does not explicitly state when not to use this tool or enumerate other alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

noaa_climate_dataA
Read-onlyIdempotent

Get climate observations (temperature, precipitation, snow, wind) from NOAA. Requires dataset ID + date range. Optionally filter by station or location.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax observations (default 1000)
end_dateYesEnd date YYYY-MM-DD
dataset_idYesDataset: GHCND=daily, GSOM=monthly, GSOY=annual
start_dateYesStart date YYYY-MM-DD
station_idNoStation ID, e.g. 'GHCND:USW00094728' (Central Park, NYC)
datatype_idNoData type: TMAX, TMIN, TAVG, PRCP, SNOW, SNWD, AWND
location_idNoLocation ID, e.g. 'FIPS:36' (NY state)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds that it returns observations and mentions filter options, which is useful but does not disclose potential pagination limits or rate constraints. Given the annotations, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero redundancy. The purpose is front-loaded and the optional filters are stated efficiently.

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?

No output schema exists, but the description states it returns observations and lists the data types. The required parameters and optional filters are clear. Minor gaps like pagination behavior are not critical given the read-only nature and schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description reinforces the required dataset ID and date range but adds no additional syntax or format details beyond the schema. Baseline 3 applies since the schema handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves climate observations (temperature, precipitation, snow, wind) from NOAA, distinguishing it from sibling tools like noaa_stations, noaa_locations, and noaa_datasets. The verb 'Get' and specific resource are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description specifies required inputs (dataset ID + date range) and optional filters (station/location), giving clear context for invocation. It does not explicitly mention alternatives like noaa_stations for finding station IDs, but the usage is straightforward and self-contained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

noaa_datasetsA
Read-onlyIdempotent

List available NOAA climate datasets (GHCND daily, GSOM monthly, GSOY annual, normals, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true, idempotentHint true, and destructiveHint false, so the safe read-only nature is covered. The description adds the cataloging behavior and sample dataset categories, but does not mention response shape, pagination, or possible large result sets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with concrete examples and no filler. Every word contributes to understanding the tool's purpose.

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 parameterless catalog-listing tool with annotations covering safety and idempotency, the description is complete. No output schema exists, but the description makes the result type obvious: a list of available NOAA climate datasets.

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?

There are zero parameters and schema coverage is 100%, so there is no parameter burden for the description to carry. The description adequately explains what will be listed.

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 a specific verb ('List'), a clear resource ('available NOAA climate datasets'), and gives concrete examples (GHCND daily, GSOM monthly, GSOY annual, normals). This distinguishes it from sibling tools like noaa_stations, noaa_locations, and noaa_climate_data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a discovery use case for available NOAA datasets, but it does not explicitly say when to use this tool versus noaa_climate_data or other NOAA siblings. There is no guidance on prerequisites or follow-up steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

noaa_locationsA
Read-onlyIdempotent

Search NOAA location IDs (states, cities, countries) for use with other NOAA tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
categoryNoLocation category: ST=states, CITY, CNTRY=countries, CLIM_REG=climate regions
dataset_idNoFilter by dataset, e.g. 'GHCND'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral traits (e.g., pagination, rate limits, return format), so it provides minimal value beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, information-dense sentence with zero wasted words. It conveys the purpose and the relationship to other tools succinctly, front-loading the key action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with all optional parameters and no output schema, the description is nearly complete. It states what it returns (location IDs) and its purpose. It lacks explicit guidance on result format or how to interpret returns, but this is minor for a search tool where the primary function is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all three parameters with descriptions, including enum values for category. The tool description itself adds little beyond the schema, merely restating examples ('states, cities, countries') that map to the category enum. Baseline 3 is appropriate given 100% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a specific resource ('NOAA location IDs'), and the entity types (states, cities, countries). It clearly distinguishes the tool's purpose from siblings like noaa_stations and noaa_datasets by focusing on location IDs, and explicitly notes they are for use with other NOAA tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage ('for use with other NOAA tools') but does not explicitly state when to choose this tool over alternatives, nor does it mention any exclusions. It gives a clear context but lacks direct routing to specific use cases or comparative guidance against siblings like noaa_stations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

noaa_stationsB
Read-onlyIdempotent

Search for NOAA weather stations by location or dataset. Use location IDs like FIPS:36 (New York), FIPS:06 (California), CITY:US360019 (NYC).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
dataset_idNoe.g. 'GHCND', 'GSOM'
location_idNoe.g. 'FIPS:36' (NY), 'FIPS:06' (CA)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is read-only, idempotent, non-destructive, and open-world. The description adds the scoping constraint that results are filtered by location or dataset, plus useful location ID format examples, but does not disclose return shape, pagination, or default behavior beyond what annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The purpose is front-loaded in the first sentence, and the second sentence gives practical examples that directly help an agent choose inputs.

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 small optional parameter set and strong annotations, the description is mostly adequate. However, with no output schema, it does not clarify what station fields will be returned or how location_id and dataset_id interact when both are supplied, leaving some ambiguity for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all parameters at 100%, so the baseline is 3. The description adds value by providing concrete location_id examples ('FIPS:36', 'FIPS:06', 'CITY:US360019') and clarifying the intended filtering dimensions, going slightly beyond the schema's generic examples.

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 states a clear action ('Search') and resource ('NOAA weather stations'), with the filter dimensions 'by location or dataset.' It does not explicitly differentiate from sibling tools like noaa_locations or noaa_datasets, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided about when to use this tool instead of related NOAA/NWS station tools. The examples imply that location IDs are valid inputs, but there are no explicit conditions, exclusions, or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_fuel_stationsA
Read-onlyIdempotent

Search for EV charging stations, hydrogen stations, biodiesel, CNG, and other alternative fuel stations. Covers all U.S. alt fuel infrastructure. Filter by state, zip, fuel type, radius.

Fuel types: 'ELEC' (EV), 'HY' (hydrogen), 'CNG' (natural gas), 'LPG' (propane), 'BD' (biodiesel), 'E85' (ethanol)

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZIP code to search near
limitNoMax results (default 20)
stateNoTwo-letter state code: 'CA', 'TX', 'NY'
radiusNoSearch radius in miles from zip (default 25)
statusNoStation status: 'E' (Open (available)), 'P' (Planned (not yet open)), 'T' (Temporarily unavailable)
fuel_typeNoFuel type: 'ELEC' (Electric), 'E85' (Ethanol (E85)), 'CNG' (Compressed Natural Gas), 'LPG' (Propane (LPG)), 'BD' (Biodiesel (B20 and above)), 'HY' (Hydrogen), 'LNG' (Liquefied Natural Gas), 'RD' (Renewable Diesel)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is fully covered. The description adds scope context ('Covers all U.S. alt fuel infrastructure') but no additional behavioral traits such as rate limits, data freshness, or response shape. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the action and resource. The second sentence gives useful filter keywords. The fuel-type list is somewhat redundant with the schema and incomplete, but it remains a quick-reference aid rather than a major source of bloat.

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 read-only search tool with fully documented parameters and strong annotations, the description is largely complete. The only notable omission is that there is no output schema and the description does not describe the response format, though this is not critical for basic invocation. Overall, the agent has enough to call and filter correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented with types, enums, and descriptions. The description's fuel-type list partially duplicates the schema enum but omits LNG and RD; it adds no meaningful syntax or format details beyond the schema. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a concrete resource ('alternative fuel stations'), and a clear scope ('Covers all U.S. alt fuel infrastructure'). It also lists the fuel types covered, making it easy to distinguish from the sibling NREL tools (nrel_utility_rates, nrel_solar) and all other data sources.

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 ('Search for... alternative fuel stations') but provides no explicit guidance about when to prefer it over alternatives or when not to use it. No sibling alternatives are named, leaving the agent to infer based on tool names and semantics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_solarA
Read-onlyIdempotent

Get solar energy resource data for any U.S. location — monthly and annual solar irradiance. Shows potential for solar panels at a given location.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude
lonYesLongitude

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the specific data returned (monthly and annual irradiance) and the use case (solar panel potential), which is useful but does not detail response format, units, or any limits. It adds some context beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, with the core action front-loaded in the first sentence and a clarifying use case in the second. No wasted words, and the structure is logical: what it does, then why it matters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no output schema), and annotations cover safety. The description tells what it returns (irradiance, potential) but lacks specifics like units or response structure. Without an output schema, more detail would be helpful, but the description is adequate for a straightforward lookup tool, though not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (lat and lon both have descriptions). The description adds minimal parameter insight—just 'any U.S. location' implying coordinates—but does not specify format (e.g., decimal degrees) or bounds. Since the schema already documents the parameters, the description adds little beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: retrieving solar energy resource data (monthly and annual irradiance) for U.S. locations. It distinguishes from sibling NREL tools (fuel stations, utility rates) by focusing on solar irradiance and panel potential. The verb 'get' and specific resource make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage—if you need solar irradiance data, use this tool—but does not explicitly contrast with alternatives like nrel_fuel_stations or nrel_utility_rates. No when-not guidance is provided, leaving the agent to infer the appropriate context from the resource type alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_utility_ratesB
Read-onlyIdempotent

Get residential, commercial, and industrial electricity rates for any U.S. location. Provide latitude/longitude to get the local utility and their rates ($/kWh).

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude (e.g. 40.7128 for NYC, 34.0522 for LA)
lonYesLongitude (e.g. -74.0060 for NYC, -118.2437 for LA)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds limited value. It does add that rates are expressed in $/kWh and covers utility identification, but it does not disclose behaviors like response format, rate tiers, or handling of non-U.S. inputs.

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 only two sentences and gets straight to the point, front-loading the main action and resource. It has no filler, although it could be even stronger by explicitly naming sibling alternatives in the second sentence, but it still earns a high score for efficiency.

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 2-parameter read-only tool with a clear schema and no output schema, the description gives enough to initiate a call but does not specify return value shape, rate tiers, or failure cases for invalid locations. It is adequate but could be more complete for a production-grade tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (lat, lon) have clear descriptions with examples. The description adds the U.S. scope and the output unit ($/kWh), but it mostly repeats what the schema already states, so it only slightly exceeds the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a clear resource (residential, commercial, and industrial electricity rates), and a scope (any U.S. location via lat/long). This distinguishes it from related siblings like nrel_fuel_stations or nrel_solar, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context (provide latitude/longitude to get utility rates) but does not explicitly state when to choose this tool over siblings like other nrel tools or eia_electricity, nor does it mention 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.

nws_alertA
Read-onlyIdempotent

Get a single NWS alert by its URN (e.g. 'urn:oid:2.49.0.1.840…'). Use the id from nws_alerts_active; full URLs are also accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAlert URN from nws_alerts_active (e.g. 'urn:oid:2.49.0.1.840…')

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to repeat safety. It adds the useful detail about accepting full URLs, which is beyond annotations. However, no additional behavioral context like response count or error cases is provided, but given the annotations, 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?

Two sentences with zero waste. The core purpose and the critical usage guidance (use id from nws_alerts_active, accept full URLs) are front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with a clear schema and rich annotations, the description covers necessary usage. It doesn't explain the return format, but since there is no output schema, the agent might expect a general alert object; however, given the simplicity and the sibling nws_alerts_active, this is not a blocking gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description repeats the format. The only added value is clarifying that full URLs are accepted, which the schema doesn't specify. This is a small increment above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('a single NWS alert by its URN'), and clarifies it is the detail counterpart to nws_alerts_active. The purpose is 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?

Explicitly instructs to use the `id` from nws_alerts_active, and notes that full URLs are also accepted, which is critical for the agent to know the input format.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_alerts_activeA
Read-onlyIdempotent

Get currently-active NWS weather alerts (tornado warnings, flood watches, winter storm advisories, etc.) filtered by area (state), zone, or point. Pass at most one of area/zone/point. Severity and urgency filters are optional. Without a geographic filter this returns ALL active U.S. alerts (often hundreds) — capped to limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNoTwo-letter state/territory code (e.g. 'CA', 'TX', 'PR')
zoneNoForecast zone ID (e.g. 'CAZ006')
limitNoMax alerts to return (default 50)
pointNo'lat,lon' string (e.g. '38.89,-77.04')
statusNo
urgencyNo
severityNo
message_typeNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate the safe, read-only nature of the tool. The description adds important behavioral context beyond the annotations: with no geographic filter, all active U.S. alerts are returned and the result is capped by `limit`. It doesn't describe output shape or error behavior, but the additional context is valuable and non-contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences cover the purpose, filter constraints, and the all-alerts caveat. Every sentence contributes unique information and there is no fluff or redundant restatement of the schema.

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 read-only list tool, the description provides enough to invoke it correctly, including the expensive unfiltered query case. Missing details like the response shape and the precise default behavior for status/message_type are minor because the annotations cover safety and the core purpose is more fully stated.

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 50%, and the description partially compensates by adding the crucial 'at most one of area/zone/point' constraint and explaining the optional severity/urgency relationship. However, it doesn't explain status or message_type, two parameters with enums but no descriptions, so the semantic guidance remains 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 states a specific verb and resource: 'Get currently-active NWS weather alerts' with examples and three geographic filter modes. It is clear that this tool is about active alerts only, distinguishing it from sibling tools like nws_alert and nws_alert_types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage guidance: pass at most one of area/zone/point, severity and urgency are optional, and omitting a geographic filter returns all active U.S. alerts. It falls short of a 5 because it doesn't explicitly tell the agent when to choose this tool over an alternative like nws_alert or nws_forecast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_alert_typesA
Read-onlyIdempotent

List all valid NWS alert event types (e.g. 'Tornado Warning', 'Flood Watch'). Reference data — cached aggressively.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that it is reference data cached aggressively, which is useful context about performance and freshness. This goes slightly beyond the annotations but does not disclose potential limitations or exact response format. With annotations covering the main behavioral traits, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately states the purpose, provides examples, and adds a note on caching. It is front-loaded and every word earns its place with zero waste.

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 reference-list tool with no parameters and no output schema, the description is fully complete. It tells the agent what the tool returns (a list of valid alert types), gives examples, and notes caching behavior. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to explain. The schema is fully covered (vacuously), and the description adds nothing about parameters because there are none. Per the rubric, 0 params warrants a baseline of 4, and the description does not need to compensate.

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 all valid NWS alert event types with concrete examples ('Tornado Warning', 'Flood Watch'). It is a specific verb-resource combination that distinguishes it from siblings like nws_alerts_active or nws_alert, which deal with actual alerts rather than the type vocabulary.

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 labels it 'Reference data' and notes aggressive caching, which implies it is meant for obtaining a canonical list of alert types, likely for validation or filter parameters in other NWS tools. However, it does not explicitly state when to use this versus alternatives, nor does it mention that it provides values for the alert_type parameter elsewhere. Usage guidance is implied but not made explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_forecastA
Read-onlyIdempotent

Get the 7-day NWS forecast for a lat/lon. Returns ~14 periods (Today / Tonight / Tomorrow / Tomorrow Night / …) with temperature, wind, precipitation probability, and a detailed text forecast. Forecasts use US units (°F, mph).

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees (e.g. 38.8894)
lonYesLongitude in decimal degrees (e.g. -77.0352)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful output context by naming the period structure (~14 periods), the included fields (temperature, wind, precipitation probability, text), and the units (°F, mph), which is valuable beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences front-load the core capability and pack in return-period details, fields, and units with 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description thoughtfully discloses the main return structure, content, and units. It doesn't address invalid coordinates or response edge cases, but for a simple read-only 2-parameter tool this is near-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents both lat and lon with ranges and examples, so the description's 'lat/lon' mention adds no new parameter semantics. With 100% schema coverage, the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Get the 7-day NWS forecast' identifies a specific action and resource, and the clarifying details about ~14 day/night periods distinguish it clearly from hourly or zone-based forecast siblings. The tool's scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for point-based daily forecasts through '7-day' and 'lat/lon', but it does not explicitly state when to use this tool instead of nws_forecast_hourly, nws_zone_forecast, or nws_observation_latest. No exclusions or alternative guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_forecast_hourlyA
Read-onlyIdempotent

Get the hourly forecast (next ~156 hours / ~6.5 days) for a lat/lon. Each period is one hour with temperature, wind, precip probability, and short forecast. Large response — consider nws_forecast for daily summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees (e.g. 38.8894)
lonYesLongitude in decimal degrees (e.g. -77.0352)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While the annotations already communicate read-only, idempotent, and non-destructive behavior, the description adds useful detail: the period length, the forecast horizon, the included fields (temperature, wind, precip probability, short forecast), and the large response warning. This goes beyond the annotations by setting expectations for response size and content.

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 and immediately states what the tool returns, the time range, the content of each period, and the alternative for a lighter response. Every word adds value, and the information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description compensates by listing the forecast fields and the risk of a large payload, which is enough for a caller. It does not specify units, timezone, or pagination, but for this simple lat/lon lookup the description satisfies selection and basic invocation needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage for the two parameters ('lat' and 'lon') with descriptions, bounds, and examples. The tool description does not add new parameter-specific meaning, but given the schema is fully self-descriptive, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the specific verb ('Get'), resource ('hourly forecast'), and required inputs (lat/lon). It also distinguishes this tool from its nearest sibling by emphasizing the hourly granularity and ~156-hour horizon, which is concrete and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear alternative by saying 'Large response — consider nws_forecast for daily summaries,' which tells users when another tool may be better suited. It does not fully spell out all the conditions under which the hourly tool should or should not be used, but it gives enough directional guidance for an agent to make the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_glossaryA
Read-onlyIdempotent

Get the full NWS weather glossary (term → definition). Useful for explaining technical terms in forecasts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds the 'full' scope and the term→definition structure, which is useful but not extensive. It doesn't mention any limitations like size or pagination, but for a simple retrieval this is adequate given the strong annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The primary action and resource are front-loaded, and the use case is stated second. Every word earns its place, making it easy to scan and understand.

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 parameterless, read-only tool with no output schema, the description covers what it does and when to use it. The term→definition hint gives an agent a sense of the return structure. Nothing essential is missing for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is trivially 100%. With no parameters to document, the description doesn't need to add parameter meaning. The description's mention of 'full' and the output format is sufficient context for a parameterless call, matching the baseline for 0 params.

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 a clear verb ('Get') and resource ('the full NWS weather glossary') with a specific output format ('term → definition'). It is distinct from all sibling tools, which focus on forecasts, alerts, or observations, so an agent can immediately recognize its 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?

It gives a concrete use case: 'Useful for explaining technical terms in forecasts.' This tells an agent when to reach for this tool, and there are no direct alternatives among siblings for a glossary. It doesn't explicitly state exclusions, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_observation_latestA
Read-onlyIdempotent

Get the latest observation from an NWS observation station (e.g. 'KDCA' for Reagan National Airport). Returns SI units: temperature/dewpoint in °C, wind speed in km/h, pressure in Pa, visibility in m.

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesStation identifier (e.g. 'KDCA', 'KLAX'). Find via nws_stations_near.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by specifying the SI unit system (temperature in °C, wind in km/h, pressure in Pa, visibility in m), which is not in the annotations or schema. This helps the agent interpret the response correctly.

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, no fluff. The first sentence states the core function with an example; the second lists the return units. Every word earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one parameter and no output schema, the description is nearly complete. It covers what the tool does, what the parameter means, and what units the response uses. It doesn't describe the full response structure, but with no output schema and a simple observation payload, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the station_id parameter. The description adds a concrete example ('KDCA' for Reagan National Airport) and clarifies the format, which is helpful. It also references nws_stations_near for finding valid IDs, adding routing value 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 states a specific verb ('Get'), a specific resource ('latest observation from an NWS observation station'), and gives concrete examples ('KDCA', 'KLAX'). It clearly distinguishes this from sibling tools like nws_forecast or nws_stations_near by focusing on the latest observation at a station.

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 it: when you need the latest observation from a specific station. It also points to nws_stations_near in the parameter description for finding station IDs, which is a helpful routing hint. It doesn't explicitly state when not to use it (e.g., for forecasts), but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_point_infoA
Read-onlyIdempotent

Resolve a lat/lon to its NWS forecast gridpoint, office, time zone, forecast zone, county zone, and nearest radar station. Useful for debugging or when you need the zone ID for nws_zone_forecast. Most callers can skip this and use nws_forecast directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees (e.g. 38.8894)
lonYesLongitude in decimal degrees (e.g. -77.0352)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds useful context beyond that: what the resolved payload is intended for (feeding zone IDs into nws_zone_forecast) and the semantic outputs an agent should expect. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the first states function and outputs, the second gives use cases, the third routes to the common alternative. The key scoping claim is front-loaded ahead of the alternative routing. Zero 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 two-parameter, read-only lookup with full schema coverage and strong annotations, the description is complete. With no output schema present, the description compensates by enumerating exactly what the response contains (gridpoint, office, time zone, zones, radar), so an agent knows what to expect when calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — lat and lon each carry units, decimal-degree examples, and min/max bounds, all with ranges. The description adds no parameter-level detail beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb plus resource ('Resolve a lat/lon') and enumerates the exact output set: gridpoint, office, time zone, forecast zone, county zone, and nearest radar station. It also names the sibling it is distinct from ('use nws_forecast directly'), so an agent can disambiguate without opening any schema.

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?

Gives explicit when-to-use guidance ('Useful for debugging or when you need the zone ID for nws_zone_forecast') and explicit when-not-to-use guidance ('Most callers can skip this and use nws_forecast directly'). It names the exact alternative tool and the condition that selects it, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_stations_nearA
Read-onlyIdempotent

List NWS observation stations near a lat/lon. Use the resulting stationIdentifier with nws_observation_latest.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees (e.g. 38.8894)
lonYesLongitude in decimal degrees (e.g. -77.0352)
limitNoMax stations to return

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the reading behavior and the stationIdentifier handoff, but does not mention distance radius, sorting, pagination, or response shape. That is acceptable given the annotations, but adds only modest behavioral detail.

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: the first front-loads the action and resource criterion, and the second gives the next-step instruction. There is no filler or redundant restatement of the schema.

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 low-complexity read-only lookup with fully documented parameters and safety annotations, the description is nearly complete. The only real gap is not explaining what 'near' means in terms of radius, ordering, or 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 100%, so the schema fully documents lat, lon, and limit with examples and ranges. The description does not add parameter-specific meaning beyond the schema, making baseline 3 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 states a specific verb and resource ('List NWS observation stations near a lat/lon') and a clear scope. It also names the downstream relationship to nws_observation_latest, which helps distinguish this lookup tool from other NWS station 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 explicitly says to feed the resulting stationIdentifier into nws_observation_latest, giving concrete usage direction. It does not state when not to use the tool or name alternatives, but the intended context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_zone_forecastA
Read-onlyIdempotent

Get the public text-based forecast for an NWS forecast zone (e.g. 'CAZ006'). Find the zone ID via nws_point_info.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesForecast zone ID, e.g. 'CAZ006', 'DCZ001'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety burden is covered. The description adds that the forecast is public, text-based, and zone-scoped. It doesn't describe response shape or format details, but for a read-only lookup 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?

Two tight sentences: purpose first, prerequisite second. No filler or redundant restatement of the schema.

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 one-parameter read-only forecast lookup, the description covers purpose, parameter source, and output nature. It could mention alternatives like nws_forecast for point-based forecasts, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents zone_id with a description and example (100% coverage). The description adds the useful hint that the zone ID can be found via nws_point_info, but it doesn't need to compensate for any schema gap.

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?

States a specific verb ('Get'), resource ('NWS forecast zone'), and output type ('public text-based forecast'). The example zone ID and pointer to nws_point_info reinforce scope. It doesn't explicitly contrast with sibling forecast tools, but the zone-scoped text forecast is distinct enough.

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 instructs the agent to obtain the zone ID via nws_point_info, giving a clear prerequisite and routing cue. It doesn't enumerate when to prefer this over nws_forecast or nws_forecast_hourly, but the context is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_by_companyA
Read-onlyIdempotent

Get payment summary data grouped by pharmaceutical/device company (all years combined). Shows total amounts and number of payments per company.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of companies to return (default 20)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that data is aggregated across all years, which is useful behavioral context. However, it does not disclose pagination behavior, sorting, or whether the limit parameter caps results at 50.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the aggregation detail is concise. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one parameter and no output schema, the description is mostly adequate. However, it does not mention what fields the response contains beyond 'total amounts and number of payments', nor does it clarify whether the limit parameter is required or how results are ordered. These are minor gaps given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single limit parameter, so the schema already documents it. The description does not add meaning beyond the schema, but with full coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns payment summary data grouped by company, with total amounts and payment counts. It distinguishes itself from sibling tools like open_payments_by_physician and open_payments_by_hospital by specifying the grouping dimension (company) and the aggregation level (all years combined).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for company-level payment summaries but does not explicitly state when to prefer this over open_payments_search, open_payments_summary, or open_payments_top. It does not mention exclusions or alternatives, though the grouping by company is clear enough to infer the use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_by_hospitalA
Read-onlyIdempotent

Get payments grouped by teaching hospital. Shows total pharma payments to teaching hospitals — useful for identifying institutional conflicts of interest.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of hospitals (default 20)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, open-world, and non-destructive behavior, so the description's additional context about aggregating total pharma payments by teaching hospital is useful but not required. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first states the operation and output, the second adds the aggregated value and use case. The description earns its place and is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one optional parameter and no output schema, the description adequately states the output and purpose, while annotations cover safety semantics. Minor details such as result sorting or exact response fields are absent but not critical for this simple aggregate 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 only parameter, limit, is already fully described in the schema as 'Number of hospitals (default 20)', giving 100% schema coverage. The tool description adds no parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('payments grouped by teaching hospital'), clearly defining what the tool returns. The grouping by teaching hospital distinguishes it from sibling open_payments tools such as open_payments_by_physician or open_payments_by_company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a use case ('useful for identifying institutional conflicts of interest') that implies when to use the tool. However, it does not explicitly mention alternatives or state when not to use this tool versus the many other open_payments breakdown tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_by_physicianA
Read-onlyIdempotent

Get payments grouped by individual physician across all years. Pre-aggregated totals — shows how much each doctor received from pharma overall.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of physicians (default 20)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description doesn't need to repeat those. It adds context about pre-aggregation and the all-years scope, which goes beyond the schema. It doesn't mention pagination or response structure, but for a simple aggregate with a single limit parameter, 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?

Two short sentences with zero filler. The core purpose is front-loaded, and the second sentence clarifies the output nature. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description adequately conveys what the tool returns (physician-level totals). It could mention that the response is a list of physicians with amounts, but given the pre-aggregated nature and the sibling tools, it's sufficiently complete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the only parameter (limit), with a clear description and default/maximum. The description doesn't add extra semantics to the limit parameter, but it does provide context that results are grouped and aggregated. Baseline 3 is appropriate when the schema already documents the parameter fully.

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?

States a specific verb (Get) and resource (payments grouped by individual physician), and explicitly notes it's pre-aggregated totals. This distinguishes it from siblings like open_payments_by_company, by_hospital, and by_specialty, which group by different entities. The description makes the tool's intent 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 clarifies that results are pre-aggregated across all years, implying this is for overall physician totals rather than detailed payment records. It doesn't explicitly mention alternatives like open_payments_search for granular data or open_payments_top_doctors for ranked lists, but the grouping and aggregation scope are clear enough to infer when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_by_specialtyA
Read-onlyIdempotent

Get national payment totals and averages by medical specialty. Shows which specialties receive the most pharma money — cardiologists, orthopedic surgeons, psychiatrists, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of specialties (default 30)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the scope 'national' and the aggregation level, which is useful but not deep behavioral disclosure (e.g., no mention of pagination, response format, or any caveats). The added value over annotations is moderate.

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, no wasted words. The main purpose is stated first, followed by a clarifying example. It is appropriately concise and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description is mostly sufficient. It conveys the output concept ('totals and averages') but does not detail the exact fields or data structure. For a list-type tool, this is acceptable, but a bit more detail on the response format would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the only parameter 'limit' with description 'Number of specialties (default 30)' and constraints. The description does not add any extra meaning about how the limit affects results (e.g., sorting or truncation). With 100% schema coverage, the baseline of 3 applies; the description adds nothing beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact action: 'Get national payment totals and averages by medical specialty.' It provides specific examples (cardiologists, orthopedic surgeons, psychiatrists) that make the purpose vivid and distinct from sibling tools like open_payments_by_company or open_payments_by_physician. The verb 'Get' plus the resource 'payment totals and averages by medical specialty' is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: if you need specialty-level payment aggregates, this is the tool. However, it does not explicitly contrast with alternatives like open_payments_top or open_payments_by_company, nor does it say when not to use it. An agent would infer the use case but without explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_ownershipB
Read-onlyIdempotent

Search Open Payments OWNERSHIP data — doctors with ownership or investment stakes in pharma/device companies. The deepest form of conflict of interest. Shows which doctors have financial interests in the companies whose products they prescribe.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (auto-discovers latest if omitted)
limitNoMax results (default 20)
stateNoTwo-letter state: 'CA', 'WA'
doctorNoDoctor last name
companyNoCompany name: 'Pfizer', 'Johnson & Johnson'

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description does not need to restate that. It adds domain context—what ownership data represents—and clarifies that the results show financial interests rather than merely payments. However, it does not disclose operational behavior such as result shape, pagination, or how undefined parameters behave, though the annotations lower the burden here.

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 three concise sentences with the core action and subject front-loaded. The phrase 'The deepest form of conflict of interest' is slightly editorial but adds useful context without bloating the text. Overall, every sentence earns its place, though it is not as taut as a two-sentence version could be.

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 core subject matter is clearly explained, and all parameters are documented in the schema. However, with no output schema and many closely related Open Payments sibling tools, the description would benefit from explicitly addressing relationship to alternatives and what the returned data contains beyond 'financial interests.' It is adequate but not complete for full agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all five parameters. The description adds no additional parameter-level meaning, but none is needed; all parameters are self-explanatory in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search') and a precise resource ('Open Payments OWNERSHIP data') with clear scope: doctors with ownership/investment stakes in pharma/device companies. The framing 'deepest form of conflict of interest' and 'financial interests in the companies whose products they prescribe' clearly distinguishes this ownership-focused tool from the broader open_payments_search and other sibling Open Payments tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to choose this tool over siblings such as open_payments_search, open_payments_by_company, open_payments_by_physician, or open_payments_summary. The description implies this is for ownership/investment data but does not say 'use this when...' or name alternatives, which is a meaningful gap given the large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_researchA
Read-onlyIdempotent

Search Open Payments RESEARCH payment data — grants, clinical research funding from pharma to doctors. Separate from general payments. Shows research funding amounts, sponsors, and principal investigators.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (auto-discovers latest if omitted)
limitNoMax results (default 20)
stateNoTwo-letter state: 'CA', 'WA'
doctorNoDoctor last name: 'Smith'
companyNoCompany name: 'Pfizer', 'Novo Nordisk'

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds that the tool 'shows research funding amounts, sponsors, and principal investigators,' which previews the response content. It does not disclose additional behavioral traits such as pagination or auto-year behavior, but that is not necessary given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences and front-loads the core purpose. The middle sentence is a useful disambiguation, and the final sentence previews output fields. Slight redundancy ('research payment data' followed by 'grants, clinical research funding') prevents a top score.

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 search tool with five optional parameters and no output schema, the description provides enough orientation: what it searches, how it differs from general payments, and what the results show. Parameter details are fully covered by the schema, and annotations cover safety. It could name the exact general-payments sibling, but this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all five parameters. The description does not add parameter-specific semantics beyond the schema, such as format or interaction. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with 'Search Open Payments RESEARCH payment data,' a specific verb and resource, and immediately clarifies the scope: grants and clinical research funding from pharma to doctors. It also contrasts with general payments, which helps an agent distinguish this from the broader Open Payments search tools. However, it does not name the specific sibling (e.g., open_payments_search), so differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Separate from general payments' gives useful context that this tool should be chosen for research/grants rather than general Open Payments data. But there is no explicit when-to-use/when-not-to-use statement or named alternative. An agent must infer that open_payments_search is the general counterpart.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_summaryA
Read-onlyIdempotent

Get national-level Open Payment totals and averages across all years. Shows how much money flows from pharma to doctors nationally.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by specifying the scope (national, all years) and the nature of the data (totals and averages). It does not describe output format or potential limitations, but given the annotations and simple summary nature, it provides 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?

Two sentences, front-loaded with the primary purpose, and no redundant information. Every word earns its place, making it highly efficient and clear.

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 no-parameter, read-only summary tool, the description covers the key aspects: what it does, the scope, and the type of data returned. It lacks explicit mention of output structure or field names, but since there is no output schema, this is a minor gap. The tool is simple enough that an agent can infer expected results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter information because none exist; it is not required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves national-level Open Payment totals and averages across all years, and explains its significance (money flow from pharma to doctors). It is specific and distinguishes this from sibling tools by emphasizing 'national-level' and 'across all years', differentiating it from more granular tools like open_payments_by_company or open_payments_by_physician.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a national summary but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions. With many Open Payments sibling tools, explicit routing guidance would be helpful, but the national scope provides some implied context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_topA
Read-onlyIdempotent

Find the HIGHEST pharma payments to doctors — sorted by amount descending.\nUse this to find the biggest consulting fees, royalties, and speaking fees in a state or specialty.\nSupports sorting by payment amount — unlike the basic search which returns results in default order.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (auto-discovers latest)
limitNoNumber of top results (default 20)
stateNoTwo-letter state: 'WA', 'CA', 'TX'
doctorNoDoctor last name
companyNoCompany name: 'Pfizer', 'Stryker', 'Medtronic'
specialtyNoSpecialty: 'Orthopaedic', 'Cardio', 'Neurology'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already assert readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds behavioral detail beyond annotations by specifying that results are sorted by amount descending and that it returns the highest payments, which informs call 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?

Three tight sentences: first states the core behavior, second gives concrete use cases, third differentiates from the sibling. No filler or repeated schema information; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 optional parameters and no output schema, the description covers main intent and use case, and clearly distinguishes from its closest sibling. It does not explicitly mention limit defaults or response shape, but the schema handles defaults and the tool's simple top-N nature makes this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with every parameter already documented (year, limit, state, doctor, company, specialty). The description mentions 'state or specialty' and 'pharma payments' but adds no new parameter syntax or semantics beyond what the schema provides, meriting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource: 'Find the HIGHEST pharma payments to doctors — sorted by amount descending.' It clearly distinguishes itself from the 'basic search' sibling by advertising the sorting feature, so an agent knows exactly what this tool uniquely does.

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 concrete use cases: 'find the biggest consulting fees, royalties, and speaking fees in a state or specialty.' Explicitly contrasts with the basic search that returns default order. Missing only exclusions for other siblings like open_payments_by_company, but the stated context is sufficient for typical selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_top_doctorsA
Read-onlyIdempotent

Find the HIGHEST-PAID doctors by TOTAL payments received — aggregates all individual payments per doctor. Groups by doctor and sums all their payments, sorted by total descending. This is the key tool for finding doctors with the biggest pharma relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (auto-discovers latest)
limitNoNumber of top doctors (default 20)
stateNoTwo-letter state: 'WA', 'CA', 'TX'
companyNoCompany name: 'Pfizer', 'Stryker'
specialtyNoSpecialty: 'Orthopaedic', 'Cardio', 'Neurology'

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context beyond that: it aggregates all individual payments per doctor, groups by doctor, and sorts by total descending. This clarifies the data transformation the tool performs, which is valuable for an agent deciding between this and other payment tools.

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?

Three sentences, each immediately useful: the goal, the aggregation algorithm, and the primary use case. It is front-loaded with the most important action. The last sentence is slightly promotional but still helps usage selection. No wasted sentences or redundant schema 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?

For a five-parameter aggregate tool with no output schema, the description gives a solid conceptual model but does not explain whether state/company/specialty filters are applied before aggregation, nor describe the returned fields. It is adequate but has clear gaps around filter semantics and output shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured schema already explains year, limit, state, company, and specialty. The description adds only the conceptual ranking/filtering context and does not explain how each parameter interacts with the aggregation. Baseline 3 applies as the schema carries the parameter-heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Find the HIGHEST-PAID doctors by TOTAL payments received', and explains the aggregation logic (groups by doctor, sums payments, sorts descending). It succeeds in distinguishing this from lower-level search tools like open_payments_search, though it does not explicitly call out sibling alternatives such as open_payments_top or open_payments_by_physician.

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 select this tool: 'key tool for finding doctors with the biggest pharma relationships.' This orients an agent to the intended use case. However, it does not mention when not to use it or name specific alternatives, leaving some routing ambiguity among the many open_payments_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_fiscal_dataA
Read-onlyIdempotent

Query the U.S. Treasury Fiscal Data API. Supports field selection, filtering, sorting, and pagination.

Filter operators: eq (equal), gt, gte, lt, lte, in. Example filter: 'record_date:gte:2024-01-01' Example sort: '-record_date' (descending) Multiple filters: 'country_currency_desc:in:(Canada-Dollar,Mexico-Peso),record_date:gte:2024-01-01'

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoComma-separated list of fields to sort by. Prefix with '-' for descending. Example: '-record_date'
fieldsNoComma-separated list of field names to return. If omitted, all fields are returned. Example: 'record_date,tot_pub_debt_out_amt'
filterNoFilter expression. Format: field:operator:value. Multiple: field1:op1:val1,field2:op2:val2. Example: 'record_date:gte:2024-01-01,security_type_desc:eq:Treasury Bills'
endpointYesThe API endpoint path, e.g. '/v2/accounting/od/debt_to_penny'
page_sizeNoNumber of records per page (1-10000). Default: 100
page_numberNoPage number (1-indexed). Default: 1

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it documents the filter operator set, sort syntax, and pagination behavior. It doesn't mention rate limits or response format, but the annotations carry the safety burden and the description adds meaningful query semantics.

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 with the core purpose, followed by the most important syntax details. Every sentence earns its place: the first sentence states the resource and capabilities, the second lists operators, and the remaining lines give concrete examples. No filler or repetition of schema 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?

For a query tool with 100% schema coverage and read-only annotations, the description is nearly complete. It covers the query capabilities, filter syntax, sort syntax, and pagination. It doesn't explain the return format, but there is no output schema and the tool is a generic API query wrapper, so the description's coverage of input semantics is the critical part. Minor gap: no mention of how to discover valid field names or endpoint paths beyond the endpoint parameter example.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters with examples. The description adds value by showing the filter operator syntax and multi-filter composition, which complements the schema's individual parameter examples. However, the description doesn't add meaning beyond what the schema provides for most parameters, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries the U.S. Treasury Fiscal Data API and enumerates the supported operations: field selection, filtering, sorting, and pagination. It distinguishes itself from sibling tools by naming the specific API source, which is unique among the many generic query tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete usage context by explaining the filter operators, sort syntax, and multi-filter format with examples. It doesn't explicitly state when to use this tool versus alternatives, but the specificity of the Treasury API and the detailed query syntax make the intended use case clear. It lacks explicit exclusions or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regulations_comment_detailA
Read-onlyIdempotent

Get detailed information for a specific public comment by its comment ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentIdYesComment ID (e.g. 'HHS-OCR-2018-0002-5313')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds no additional behavioral details such as error behavior, return fields, or rate limits, but it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler; the action and the required parameter are both front-loaded. Every word contributes to the tool's purpose.

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 one-parameter, read-only detail tool, the description plus schema and annotations are sufficient for an agent to select and invoke it correctly. No output schema exists, but 'detailed information' is an adequate expectation for a detail endpoint; documenting specific return fields would be a nice-to-have rather than a necessity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the single commentId parameter, including a concrete example format, so schema coverage is 100%. The description only restates that the ID is a comment ID and contributes no new semantic information 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 pairs a specific verb ('Get') with a clear resource ('detailed information for a specific public comment') and identifies the exact selection key ('comment ID'). This clearly differentiates it from sibling search tools like regulations_search_comments, which find comments rather than return one comment's detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by its comment ID' implies the tool is appropriate when a specific comment ID is already known and full detail is needed. However, it does not explicitly reference sibling tools such as regulations_search_comments or state when not to use this tool, leaving usage guidance 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.

regulations_docket_detailA
Read-onlyIdempotent

Get detailed information for a specific regulatory docket by its docket ID (e.g. 'EPA-HQ-OAR-2003-0129').

ParametersJSON Schema
NameRequiredDescriptionDefault
docketIdYesDocket ID (e.g. 'EPA-HQ-OAR-2003-0129')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safe read-only nature is covered. The description adds no additional behavioral context beyond the basic 'get' operation, but it does not contradict the annotations. With annotations present, a neutral score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-formed sentence with the core purpose, resource type, and an illustrative example. 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?

For a simple one-parameter read-only detail tool with annotations covering safety, the description provides enough context: it names the resource, the input, and the action. It remains somewhat vague about what 'detailed information' contains, but no output schema is required and this is a common detail-endpoint pattern.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents docketId with an example, so the schema coverage is 100%. The description repeats the example format rather than adding meaning beyond the schema, placing it at the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get detailed information'), the resource ('regulatory docket'), and the required input ('docket ID') with a concrete example. This distinguishes it from the sibling regulations_search_dockets (search-oriented) and regulations_document_detail (document-level).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a docket ID is already known, but it does not explicitly mention when not to use it or point to alternatives like regulations_search_dockets for discovering dockets. The usage context is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regulations_document_detailB
Read-onlyIdempotent

Get detailed information for a specific regulatory document by its document ID (e.g. 'FDA-2009-N-0501-0012').

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesDocument ID (e.g. 'FDA-2009-N-0501-0012', 'EPA-HQ-OAR-2021-0208-0001')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds little beyond that—it says 'detailed information' but doesn't disclose response structure, pagination, or any special behaviors. With annotations covering safety, the description's contribution is minimal but not contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no filler. It front-loads the action and resource, then provides the input method and an example. Every word serves a purpose, and it is appropriately concise for a tool with one parameter.

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 detail-retrieval tool with one parameter and annotations covering safety, the description is nearly complete. It doesn't explain what 'detailed information' includes, but without an output schema, that is acceptable. The main gap is the lack of a pointer to how to obtain the document ID, which would improve context but is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, so the schema fully documents documentId. The description repeats an example that is already present in the schema's parameter description, adding no new meaning. Since schema handles semantics, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and object ('detailed information for a specific regulatory document') and specifies the input method ('by its document ID'). It distinguishes from sibling search tools implicitly by focusing on a specific ID, though it doesn't name alternatives. The verb and resource are precise, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It implies the agent must already have a document ID (likely from a search tool), but it doesn't state that condition or mention that regulations_search_documents is the appropriate companion for finding IDs. No when-to-use or when-not-to-use context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regulations_search_commentsA
Read-onlyIdempotent

Search for public comments on federal regulations. Filter by keyword, agency, docket, or date. Shows what the public said about proposed rules.

Sort: 'postedDate' (asc) or '-postedDate' (desc, newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order (default: newest first)
agencyIdNoAgency abbreviation: 'EPA', 'FDA', 'DOL'
docketIdNoDocket ID to get comments for a specific rulemaking
pageSizeNoResults per page (max 250, default 25)
pageNumberNoPage number (1-based)
searchTermNoKeyword search in comments
postedDateGeNoComments posted on or after date: '2024-01-01'
postedDateLeNoComments posted on or before date: '2024-12-31'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it explains the sort options ('postedDate' asc/desc, newest first) and the default sort behavior. It also clarifies the semantic meaning of the date filters (posted on/after, posted on/before). This goes beyond the annotations and helps the agent understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the core purpose, the second lists filters, the third provides the sort syntax. Every sentence earns its place, and the sort information is presented clearly with examples.

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 search tool with 8 optional parameters and no output schema, the description covers the essential usage: what it searches, how to filter, and how to sort. It doesn't mention pagination defaults (pageSize default 25) or the fact that all parameters are optional, but the schema covers those. The description is complete enough 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters. The description adds a bit of context by grouping filters ('keyword, agency, docket, or date') and explaining the sort order, but it doesn't add significant meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for public comments on federal regulations, with a specific verb ('Search'), resource ('public comments on federal regulations'), and scope ('Filter by keyword, agency, docket, or date'). It also distinguishes itself from sibling tools like regulations_search_documents and regulations_comment_detail by focusing on comments and noting what the public said about proposed rules.

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 this tool: when searching for public comments on regulations, with filter options. It doesn't explicitly name alternatives or exclusions, but the sibling list includes regulations_search_documents and regulations_comment_detail, and the description's focus on comments implies the distinction. It could be improved by explicitly saying 'use regulations_comment_detail for a single comment' or similar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regulations_search_docketsB
Read-onlyIdempotent

Search for regulatory dockets — organizational folders containing related rules, comments, and documents. Each docket represents a rulemaking or non-rulemaking action by a federal agency.

Sort: 'title', '-title'.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order
agencyIdNoAgency abbreviation: 'EPA', 'FDA', 'DOL', 'HHS'. Comma-separate for multiple: 'EPA,FDA'
pageSizeNoResults per page (max 250, default 25)
docketTypeNoDocket type
pageNumberNoPage number (1-based)
searchTermNoKeyword search (e.g. 'clean air', 'food safety')

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful domain context (dockets represent rulemaking/non-rulemaking actions) but does not disclose any additional behavioral traits such as pagination behavior, return format, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise: three sentences that define the resource and mention sort options. The first sentence front-loads the purpose. The third sentence on sorting is slightly redundant with the schema enum, but not excessive.

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 moderate complexity (6 optional params, no output schema), the description explains what dockets are but omits details about result structure, how to combine filters, or how this search relates to the sibling document/comment search tools. Annotations cover safety, so the description is adequate but not complete for a full understanding of expected results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has adequate documentation. The description repeats the sort enum values ('title', '-title') but does not add new semantic meaning beyond what the schema provides. It does not elaborate on how parameters combine or any additional constraints.

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 a specific verb and resource ('Search for regulatory dockets') and defines what dockets are (folders containing rules, comments, documents). However, it does not explicitly differentiate itself from sibling tools like regulations_search_documents or regulations_search_comments, so an agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention that this searches at the docket level, while sibling tools search documents/comments, or when to use regulations_docket_detail subsequently. Usage is only implied by the tool name and the definition of dockets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regulations_search_documentsA
Read-onlyIdempotent

Search for federal regulatory documents — proposed rules, final rules, and supporting materials. Filter by agency, docket, date, or keyword. Complements Federal Register data with rulemaking context.

Document types: 'Proposed Rule', 'Rule', 'Supporting & Related Material', 'Other'. Sort: 'postedDate' (asc) or '-postedDate' (desc, newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order
agencyIdNoAgency abbreviation: 'EPA', 'FDA', 'DOL', 'HHS', 'DOT', 'OSHA'
docketIdNoDocket ID (e.g. 'EPA-HQ-OAR-2003-0129')
pageSizeNoResults per page (max 250, default 25)
pageNumberNoPage number (1-based)
postedDateNoExact date: '2024-01-15'
searchTermNoFull-text search keyword (e.g. 'water quality', 'emissions')
documentTypeNoDocument type: 'Proposed Rule' (Proposed Rule), 'Rule' (Final Rule), 'Supporting & Related Material' (Supporting & Related Material), 'Other' (Other)
postedDateGeNoPosted on or after date: '2024-01-01'
postedDateLeNoPosted on or before date: '2024-12-31'

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, covering safety and idempotency. The description adds context about complementing Federal Register data and lists document types/sort options, which is extra behavioral context. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two sentences of purpose and a brief list of document types and sort options. It is front-loaded with the core purpose and does not include unnecessary fluff, though the list of document types and sorts is somewhat redundant with the schema.

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 10 optional parameters and no output schema, the description provides enough guidance: it states what can be filtered, lists document types and sort options, and gives context on how it complements Federal Register. Pagination and defaults are covered in the schema, so the description is sufficiently complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 10 parameters are already documented in the schema. The description repeats document types and sort options but does not add deeper semantic meaning beyond what the schema provides. It slightly reinforces the filter dimensions but does not compensate for anything missing.

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 searches for federal regulatory documents (proposed rules, final rules, supporting materials) and lists filter dimensions. It differentiates from siblings like regulations_search_comments and regulations_search_dockets by specifying 'documents' and noting it complements Federal Register data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on what the tool is used for and mentions it complements Federal Register data, implying when it might be preferred. It does not explicitly state when not to use it or name alternatives, but the purpose is clear enough for an agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scorecard_compareA
Read-onlyIdempotent

Compare specific colleges side-by-side on cost, graduation rate, earnings, and debt. Provide school names to search and compare.

ParametersJSON Schema
NameRequiredDescriptionDefault
schoolsYesComma-separated school names to compare: 'Harvard,MIT,Stanford' or 'Ohio State,Michigan'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds modest behavioral context by naming the exact comparison dimensions (cost, graduation rate, earnings, debt), but doesn't disclose output format, result limits, or data source behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the first front-loads the core purpose with specific metrics, the second gives the input requirement. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only comparison tool with full annotation coverage and a fully documented schema, the description is nearly complete. The listed comparison dimensions hint at the return content since there's no output schema. Minor gap: no mention of how many schools can be compared or the result format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the schema already documents the schools parameter with concrete format examples ('Harvard,MIT,Stanford'). The description only echoes 'Provide school names' without adding format, delimiters, or edge-case semantics beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('compare') with a specific resource ('specific colleges') and scope ('side-by-side on cost, graduation rate, earnings, and debt'). This clearly distinguishes it from the other scorecard siblings (scorecard_search, scorecard_top, scorecard_query) whose purposes are find/rank/query rather than direct comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Provide school names to search and compare' implies the usage context — you should already have specific schools in mind rather than needing discovery. However, it never names alternatives or states when NOT to use it (e.g., scorecard_search for finding schools, scorecard_top for rankings), leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scorecard_queryA
Read-onlyIdempotent

Advanced College Scorecard query with custom field filters and ranges.

Filter examples:

  • 'latest.admissions.admission_rate.overall__range=0..0.10' (schools with <10% admission rate)

  • 'latest.cost.tuition.in_state__range=..5000' (tuition under $5K)

  • 'school.degrees_awarded.predominant=3' (bachelor's-granting)

  • 'latest.earnings.10_yrs_after_entry.median__range=80000..' (high-earning graduates)

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort: 'latest.earnings.10_yrs_after_entry.median:desc'
filtersYesSemicolon-separated filter params: 'school.state=CA;latest.admissions.admission_rate.overall__range=0..0.20;school.degrees_awarded.predominant=3'
per_pageNoResults per page (default 20)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds filter syntax and range semantics, which is helpful but not behavioral disclosure about side-effects, pagination, or limitations. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One-sentence purpose followed by four bullet examples, each self-explanatory. No wasted words, front-loaded, and easy to scan. Ideal size for the 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?

For a 3-parameter query tool with no output schema, the description plus schema adequately cover the main usage (custom filters/ranges). The filter examples are critical and well-covered. It lacks explicit description of response format, but annotations and schema handle the rest sufficiently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics for the filters parameter through multiple examples explaining range syntax and dotted field paths, going beyond the schema's single example. It does not mention sort, but the schema already documents it with an example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Advanced College Scorecard query with custom field filters and ranges' – a specific verb, resource, and distinctive capability. It is clear but does not explicitly differentiate from sibling tools like scorecard_search, though the 'Advanced' qualifier hints at the distinction.

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 filter examples imply usage scenarios (e.g., low admission rates, low tuition, bachelor's-granting, high earnings), but there is no explicit statement of when to use this tool versus scorecard_search, scorecard_compare, or scorecard_top. No exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scorecard_topA
Read-onlyIdempotent

Get top-ranked colleges by earnings, graduation rate, or lowest cost. Rankings: 'earnings' (highest median pay 10yr after entry), 'graduation' (highest completion rate), 'expensive' (highest tuition)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoFilter to state: 'CA', 'NY', 'TX'
rankingYesRanking metric
per_pageNoNumber of schools (default 20)
ownershipNo1=Public, 2=Private nonprofit, 3=Private for-profit

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds context on ranking semantics but does not disclose other behavioral aspects such as pagination, result limits, or data source details. It does not contradict the annotations, so a 3 is appropriate for adding some value beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with two sentences that front-load the primary purpose and then detail the ranking metrics. Every word earns its place, with no redundancy or irrelevant 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?

For a straightforward tool with four parameters, no output schema, and comprehensive annotations, the description is sufficiently complete. It explains the ranking meanings and implies the return of top-ranked institutions. Minor gaps like default ordering or result limits are not critical given the tool's simplicity and the annotations covering safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with descriptions for all parameters. The description significantly enriches the 'ranking' parameter by explaining what each enum value means (earnings, graduation, expensive), which the schema does not provide. This added meaning goes beyond the basic parameter name and justifies a score above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get top-ranked colleges by earnings, graduation rate, or lowest cost.' It also clarifies the ranking metrics (e.g., 'earnings' means highest median pay 10 years after entry). However, it does not explicitly distinguish itself from sibling tools like scorecard_search or scorecard_compare, which weakens differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention any selection criteria or contrast with the other scorecard tools, leaving the agent to infer that this is for ranked lists rather than detailed searches or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_datasetsA
Read-onlyIdempotent

Search for Treasury Fiscal Data datasets and endpoints by keyword. Searches across all 53 datasets (181 endpoints) by name, table name, endpoint path, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe keyword or phrase to search for (case-insensitive). Examples: 'debt', 'exchange rate', 'gold', 'auction'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false), so the description need not restate those traits. It adds useful scope context (the 53-dataset/181-endpoint universe and match targets) but says nothing about result format, pagination, ranking, or empty-result behavior. No contradiction with the annotations, and the added value is moderate but not deep.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The primary verb-resource pair is front-loaded in the first sentence, and the second sentence delivers scope and match-target details. Every clause carries information an agent needs; nothing is redundant with the schema or annotations.

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 one-parameter read-only search tool with full schema coverage and a complete annotation set, the description provides everything needed to invoke it correctly. The only gap: it doesn't hint at the result shape (e.g., that results are matching dataset/endpoint references suitable for feeding into query_fiscal_data), which would aid workflow chaining. This is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the query parameter is fully documented with type, case-insensitivity, and concrete examples ('debt', 'exchange rate', 'gold', 'auction'). Per the baseline for high schema coverage, the description earns a 3. It adds mild value by enumerating the fields the keyword matches against (name, table name, endpoint path, description), which is context 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?

States a specific verb ('Search'), a precise resource ('Treasury Fiscal Data datasets and endpoints'), and the searchable dimensions ('name, table name, endpoint path, and description'). The scope quantification ('all 53 datasets (181 endpoints)') is concrete and distinguishes this discovery tool from data-retrieval siblings like query_fiscal_data and structural tools like list_datasets and get_endpoint_fields.

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?

Usage is implied rather than explicit: the scope statement makes clear this is the discovery entry point for the Treasury Fiscal Data API, which routes an agent toward it before query_fiscal_data or get_endpoint_fields. However, it never names alternatives or states when not to use it, leaving the routing decision to inference. A short 'use query_fiscal_data for actual data retrieval' note would have pushed this to a 4 or 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sec_company_conceptA
Read-onlyIdempotent

Get the full reported history of a single XBRL financial concept for one company. Faster and smaller than sec_company_financials when you only need one metric's time series (e.g. quarterly revenue for 10 years).

Common concepts: Revenues, NetIncomeLoss, Assets, Liabilities, StockholdersEquity, EarningsPerShareBasic, CashAndCashEquivalentsAtCarryingValue.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYes10-digit CIK number (e.g. '0000320193' for Apple). Leading zeros optional.
conceptYesXBRL concept tag, e.g. 'Revenues', 'NetIncomeLoss', 'Assets'
taxonomyNoXBRL taxonomy (default us-gaap)us-gaap

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior, so the description does not need to restate safety. It adds useful context about returning the full reported history and being faster/smaller, but does not describe output shape, pagination, or data limits. This is adequate but not richer than expected.

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 brief and front-loaded with the core purpose. The scoping and performance guidance appears immediately, followed by a compact list of common concepts. Every sentence adds value without 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?

For a simple, well-annotated read-only tool, the description covers purpose, scope, alternative routing, example concepts, and parameter hints. The lack of an output schema is acceptable because the description itself clearly frames what the tool returns: the full reported history time series.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter has a meaningful description, including example values for cik and concept. The description adds a list of common concept values which is helpful, but the schema already carries most of the semantic weight.

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: 'Get the full reported history of a single XBRL financial concept for one company.' It clearly distinguishes this tool from the sibling sec_company_financials and sec_concept_across_companies by narrowing scope to one company and one concept.

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 names the alternative, sec_company_financials, and gives the exact condition for choosing this tool: 'when you only need one metric's time series.' This is a clear when-to-use instruction with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sec_company_financialsA
Read-onlyIdempotent

Get financial data (revenue, net income, assets, etc.) from SEC XBRL filings for a company. Returns standardized financial data extracted from 10-K and 10-Q filings.

Requires CIK number. Use sec_company_search to look up filings first.

Common XBRL concepts: Revenues, NetIncomeLoss, Assets, Liabilities, StockholdersEquity, EarningsPerShareBasic, CashAndCashEquivalentsAtCarryingValue

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYes10-digit CIK number (e.g., '0000320193' for Apple)
metricNoSpecific XBRL concept to retrieve (e.g., 'Revenues', 'NetIncomeLoss', 'Assets'). Omit to get a summary of available key metrics.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description need not repeat that. It adds value by specifying the data source (10-K/10-Q) and listing common XBRL concepts, helping the agent understand what to expect. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, starting with the core function. The separate notes on CIK and common concepts are organized logically and avoid redundancy. Slightly verbose with the concept list, but each part 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?

While the description covers the main purpose and usage, it lacks details about the return structure (e.g., periods, units, formatting). Since there's no output schema, this gap could hinder an agent from correctly interpreting results. It also doesn't mention potential edge cases like missing data for a CIK.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented. The description enhances this by providing a concrete CIK example and listing common metric values, and by noting that omitting metric returns a summary. This adds practical meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves financial data from SEC XBRL filings for a company, listing example metrics (revenue, net income, assets) and mentioning 10-K/10-Q sources. It distinguishes itself from sibling tools by emphasizing it's for a specific company via CIK, though it doesn't explicitly contrast with sec_company_concept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly requires a CIK and directs users to sec_company_search for lookups, establishing a clear workflow. It also explains the optional metric parameter and the summary behavior, giving practical guidance. However, it doesn't mention when to prefer this over sec_company_concept, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sec_concept_across_companiesA
Read-onlyIdempotent

Compare a single XBRL financial concept across ALL reporting companies for one period (SEC frames API). The most powerful cross-company tool: rank every filer by revenue, net income, assets, etc. in one call.

PERIOD FORMAT:

  • 'CY2023' — full calendar year (use for flow concepts: Revenues, NetIncomeLoss)

  • 'CY2023Q1' — single quarter (duration)

  • 'CY2023Q4I' — instantaneous / point-in-time (use for balance-sheet concepts: Assets, Liabilities, StockholdersEquity)

UNITS: 'USD' (default), 'shares', 'USD-per-shares' (for EarningsPerShareBasic).

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit of measure: USD, shares, USD-per-sharesUSD
limitNoMax companies to return (default 25)
orderNoSort by value: desc (largest first) or ascdesc
periodYesCalendar period: 'CY2023', 'CY2023Q1', or instantaneous 'CY2023Q4I'
conceptYesXBRL concept tag, e.g. 'Revenues', 'NetIncomeLoss', 'Assets'
taxonomyNoXBRL taxonomy (default us-gaap)us-gaap

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context by explaining the period semantics (duration vs. instantaneous) and unit conventions, which are not apparent from the schema alone. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but well-organized with clear headings for PERIOD FORMAT and UNITS. It front-loads the core purpose and then delivers essential usage details. Every sentence contributes value without redundancy, though it could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description covers the key invocation details: period formatting rules, unit options, and common use cases. It does not describe return structure or pagination, but the schema covers limit and order. Given the complexity of XBRL concepts, this is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are documented. The description adds practical meaning with concrete examples for period formats and units, clarifying the distinction between flow and point-in-time concepts. This goes beyond the schema's basic descriptions and helps the agent construct valid requests.

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 a single XBRL concept across all reporting companies for one period, naming the SEC frames API. It positions itself as the most powerful cross-company tool and gives concrete examples (revenue, net income, assets), making its purpose unmistakable and distinct from sibling tools like sec_company_concept or sec_company_financials.

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 explicit guidance on period formats (CY2023, CY2023Q1, CY2023Q4I) with usage notes for flow vs. instantaneous concepts, and specifies units. It does not explicitly name alternative tools to avoid, but the cross-company vs. single-company distinction is implied. The guidance is clear enough for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usa_agency_overviewA
Read-onlyIdempotent

Get an overview of a federal agency's spending, including budgetary resources and obligations.

Common codes: '097' (DOD), '075' (HHS), '069' (Treasury), '089' (DOE), '012' (USDA), '015' (Justice), '036' (VA), '070' (DHS), '080' (NASA)

ParametersJSON Schema
NameRequiredDescriptionDefault
agency_codeYesToptier agency code. Common: '097' (DOD), '075' (HHS), '069' (Treasury), '089' (DOE), '036' (VA), '070' (DHS), '080' (NASA), '091' (Education), '016' (Labor)
fiscal_yearNoFiscal year (default: current)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the overview includes 'budgetary resources and obligations', which provides useful context about the data scope. However, it does not disclose any other behaviors such as output format, pagination, or whether it aggregates by fiscal year. Given the rich annotations, the description adds moderate value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose, and the second provides common codes. It is front-loaded with the core action and contains no fluff or redundant phrases. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two parameters and rich annotations, the description is largely sufficient. It states the purpose and provides example codes to help the agent choose agency_code. While it does not describe the output schema (there is none), the term 'overview' implies a summary of spending. The lack of explicit guidance on when to use this tool versus siblings is a minor gap, but overall the description covers the essential context needed to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% because both parameters have descriptions. The agency_code parameter description lists common codes, and fiscal_year is described as 'Fiscal year (default: current)'. The main description also lists common codes, but the schema's list is more extensive (including '091' and '016'), making the description's list redundant. The description does not add new semantic information beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides an overview of a federal agency's spending, including budgetary resources and obligations. The verb 'get an overview' and resource 'federal agency's spending' are specific. It does not explicitly differentiate from sibling tools like usa_spending_by_agency, but the term 'overview' implies a high-level summary, which is a reasonable distinction. The purpose is unambiguous enough for an agent to know what it does.

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 common agency codes to help with parameter input, but it does not explain when to use this tool versus alternatives. There is no mention of when not to use it or what distinguishes it from usa_spending_by_agency, usa_spending_by_award, or other spending tools. The implied usage is 'when you need an overview', but no explicit guidance or exclusions are given, which is a gap given the large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usa_spending_by_agencyB
Read-onlyIdempotent

Get total federal spending broken down by awarding agency. Shows which agencies are spending the most.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of agencies (default: 20)
stateNoTwo-letter state code, e.g. 'CA', 'TX'
keywordNoKeyword to filter spending
award_typeNoAward type filter
fiscal_yearNoFiscal year (default: current)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral context that results are aggregated by agency and ranked by spending amount, which is useful. However, it does not disclose details like whether the data is limited to a default fiscal year, how the 'limit' parameter affects ranking, or whether the keyword filter applies to agency names or spending categories. With annotations covering safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core function is front-loaded, and the second sentence clarifies the output's interpretation. It is appropriately sized for a simple aggregation tool, though it could have used the space to add usage guidance or parameter interaction details.

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 read-only aggregation tool with no output schema, the description is adequate but not complete. It explains what the tool returns at a high level, but an agent would benefit from knowing the default fiscal year behavior, whether results are sorted descending by spending, and how the optional filters (state, keyword, award_type) affect the aggregation. The annotations cover safety, but the lack of output schema and parameter interaction details leaves some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds no additional meaning beyond what the schema provides, such as how parameters interact (e.g., whether state and keyword are combined with AND or OR, or how award_type affects the aggregation). Baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('total federal spending broken down by awarding agency'), and clarifies the output's meaning ('Shows which agencies are spending the most'). It is clear on its own, though it does not explicitly distinguish itself from the sibling tools like usa_spending_by_award or usa_spending_by_state. The name itself is fairly descriptive, and the description adds enough to understand the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for agency-level spending analysis but provides no explicit guidance on when to choose this tool over alternatives such as usa_spending_by_award, usa_spending_by_state, or usa_spending_by_recipient. The context signals show many sibling tools in the same domain, so the lack of explicit routing or exclusions leaves the agent to infer the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usa_spending_by_awardA
Read-onlyIdempotent

Search federal spending awards (contracts, grants, loans, direct payments). Filter by keyword, agency, recipient, date range, award type, and amount.

Award type groups: 'contracts', 'grants', 'loans', 'direct_payments'. Or use codes: 'A,B,C,D' (contracts), '02,03,04,05' (grants), '07,08' (loans), '06,10' (direct payments)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
limitNoResults per page (default: 25)
stateNoTwo-letter state code, e.g. 'CA', 'TX'
agencyNoAwarding agency name, e.g. 'Department of Defense'
keywordNoKeyword to search across award descriptions and recipient names
end_dateNoEnd date YYYY-MM-DD (default: today)
recipientNoRecipient/company name to search for
award_typeNoAward type filter
max_amountNoMaximum award amount in dollars
min_amountNoMinimum award amount in dollars
sort_fieldNoSort by: 'Award Amount' (default), 'Recipient Name', 'Start Date', 'End Date'
start_dateNoStart date YYYY-MM-DD (default: current FY). Earliest: 2007-10-01

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, non-destructive, and idempotent behavior, so the description's added value is the award type codes (A,B,C,D etc.) and the distinction between named groups and codes. This is beyond what annotations provide and helps the agent construct accurate queries. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two paragraphs: the first states the core purpose and filters, the second explains award type codes. It is efficient with no fluff, though the second paragraph could be structured as a list for readability. Overall, it is concise and front-loaded with the primary purpose.

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 12 optional parameters and no output schema, the description covers the main use cases and filter options. It doesn't explicitly mention the return format (e.g., fields like award amount, recipient name), but that is somewhat implied by the tool name and filter descriptions. The lack of explicit return details is a minor gap, but the description is sufficient for an agent to start using 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 schema has 100% description coverage for all 12 parameters, so the baseline is 3. However, the description adds the mapping from award type names to internal codes (e.g., '02,03,04,05' for grants), which is not present in the schema's enum. This extra semantic information compensates and pushes the score to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches federal spending awards and lists the major filters (keyword, agency, recipient, date range, award type, amount). The phrase 'awards (contracts, grants, loans, direct payments)' is specific and distinguishes it from sibling tools like usa_spending_by_agency or usa_spending_by_state, which aggregate rather than return individual awards.

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 lists the filterable dimensions, which implicitly tells the agent when to use this tool (when a granular award search is needed). It does not explicitly mention alternatives or when not to use it, but the context of sibling tools (by_agency, by_state, by_recipient) makes the purpose clear. A 4 because the context is provided but exclusions are not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usa_spending_by_recipientA
Read-onlyIdempotent

Get the top recipients (companies, organizations) of federal spending. Use state and agency filters to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recipients (default: 25)
stateNoTwo-letter state code, e.g. 'CA', 'TX'
agencyNoAwarding agency name, e.g. 'Department of Energy'
award_typeNoAward type filter
fiscal_yearNoFiscal year (default: current)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds minimal extra behavioral context beyond stating it 'gets' data. It does not mention response format, ordering, or any limitations. Since annotations cover the risk aspects, a 3 is appropriate given the low additional value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the verb and resource and immediately mentions the key usage hint. It is efficiently written, though it could include a bit more context without becoming 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?

For a read-only list tool with no output schema, the description provides sufficient context: it explains what is returned (top recipients) and how to refine (state/agency). It does not detail ranking criteria or response structure, but given the simplicity and annotations, the essentials are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents all 5 parameters with descriptions, achieving 100% coverage. The description reinforces usage of 'state' and 'agency' filters but does not add new semantic information beyond the schema. Baseline 3 is appropriate since the schema is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'top recipients (companies, organizations) of federal spending'. It is specific and distinct from the sibling tools by name, though it does not explicitly differentiate itself from them. The mention of filters adds clarity, but the purpose is still clear.

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 advises to 'Use state and agency filters to narrow results', which provides useful usage context. However, it does not explicitly state when to prefer this tool over siblings like usa_spending_by_state or usa_spending_by_agency, nor does it mention any exclusions or alternatives. The guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usa_spending_by_stateA
Read-onlyIdempotent

Get federal spending by state or territory. Shows total awards and per-capita spending.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoTwo-letter state code (e.g. 'CA'). Omit for all states.
fiscal_yearNoFiscal year (default: most recent)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the tool returns total awards and per-capita spending, but does not disclose data freshness, update frequency, or any other behavioral quirks. With annotations present, this is adequate but not exceptionally informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the main action and expected output, with no redundant phrases or unnecessary details. Every word contributes to the agent's understanding.

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 two-parameter, read-only tool with annotations and a complete schema, the description covers the essential purpose and output metrics. However, since there is no output schema and the response structure is not detailed beyond the two metrics, it is not fully comprehensive.

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?

Both parameters are fully described in the input schema, including the two-letter state code example and the default for fiscal_year. The description does not add extra meaning beyond the schema, so it meets the baseline of 3 for high schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('federal spending by state or territory'), and clarifies the output ('total awards and per-capita spending'). This clearly distinguishes it from sibling USAspending tools like usa_spending_by_award, usa_spending_by_agency, and usa_spending_by_recipient, which focus on different dimensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the sibling USAspending tools (by_award, by_agency, by_recipient, over_time). The description does not mention any exclusions, alternatives, or criteria for selection, leaving the agent to infer the right choice from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usa_spending_over_timeA
Read-onlyIdempotent

Get federal spending aggregated by time period (monthly, quarterly, or fiscal year). Useful for identifying trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoTime grouping (default: month)
stateNoTwo-letter state code, e.g. 'CA', 'TX'
agencyNoFilter to specific agency name
keywordNoKeyword to filter spending
end_dateNoEnd date YYYY-MM-DD (default: today)
award_typeNoAward type filter
start_dateNoStart date YYYY-MM-DD (default: 3 years ago)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the core aggregation-by-time-period behavior but no additional behavioral context such as response format, pagination, or rate limits. With annotations carrying most of the burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no fluff. The action is front-loaded, and the second sentence adds a legitimate use case. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only aggregation tool with 7 fully documented parameters, no required parameters, and no output schema, the description plus schema is sufficient. The absence of return-value details is acceptable given the tool's simplicity, though a quick note about the expected time-series response shape would be a minor improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — every parameter (group, state, agency, keyword, end_date, award_type, start_date) has a description, and two parameters have enums. The tool description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('federal spending aggregated by time period'), and clearly differentiates from sibling tools like usa_spending_by_award or usa_spending_by_state by emphasizing temporal aggregation rather than breakdowns by award, agency, state, or recipient. The grouping options (monthly, quarterly, fiscal year) are explicitly stated.

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 says 'Useful for identifying trends,' which implies a use case, but it provides no explicit guidance on when to choose this tool over the sibling spending tools (e.g., usa_spending_by_agency, query_fiscal_data) and does not mention when not to use it. Usage is only implied, not explicitly directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usda_ag_queryA
Read-onlyIdempotent

Custom query to USDA NASS QuickStats — any combination of filters. Max 50,000 records. Use usda_ag_count first for large queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear
freq_descNoANNUAL, MONTHLY, WEEKLY
sector_descNoCROPS, ANIMALS & PRODUCTS, ECONOMICS, ENVIRONMENTAL
source_descNoSURVEY or CENSUS
state_alphaNoState code: IA, IL, CA or US for national
agg_level_descNoNATIONAL, STATE, COUNTY
commodity_descNoCommodity: CORN, WHEAT, CATTLE, etc.
statisticcat_descNoAREA PLANTED, PRODUCTION, YIELD, PRICE RECEIVED, INVENTORY

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds a concrete behavioral limit, "Max 50,000 records," which is not encoded in the schema and is valuable for agents expecting unbounded results.

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 with no filler. The core purpose is front-loaded, and the record limit plus count-first guidance are delivered immediately.

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 flexible query tool with eight optional parameters and no output schema, the description provides the critical limit and a size-control strategy. It does not mention result format, pagination behavior, or whether at least one filter is expected, leaving some ambiguity for agents invoking it blindly.

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 100%, so the eight parameters are already well documented in the input schema. The description adds little parameter-specific meaning beyond "any combination of filters," which does not elaborate on valid combinations or dependencies.

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 states a specific verb and resource: "Custom query to USDA NASS QuickStats" and emphasizes flexibility with "any combination of filters." This clearly differentiates it from more specialized USDA siblings like usda_crop_data and usda_prices, though it doesn't name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one practical usage rule: "Use usda_ag_count first for large queries." However, it does not explain when to choose this tool over the specialized USDA datasets, nor does it mention the referenced usda_ag_count tool in the sibling list, making that guidance less actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usda_crop_dataA
Read-onlyIdempotent

Get crop production data — area planted, harvested, production, yield. Commodities: CORN, SOYBEANS, WHEAT, COTTON, RICE, SORGHUM

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (omit for all recent years)
stateNoState code: IA, IL, CA, TX. Omit for national
categoryNoPRODUCTION (default), AREA PLANTED, AREA HARVESTED, YIELD
commodityYesCrop name: CORN, SOYBEANS, WHEAT, COTTON, RICE

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds domain details (commodities, metrics) but no additional behavioral context like pagination, rate limits, or response format. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact lines with the core purpose front-loaded, followed by a concise list of metrics and commodities. Every word earns its place, no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only tool with 100% schema coverage and safety annotations, the description, when combined with the schema, gives an agent enough to invoke it correctly. Minor gaps like return value structure are mitigated by the simple nature of the data and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents all four parameters. The description reiterates category values and commodity names, adding the valid commodity SORGHUM not listed in the schema's commodity description builders. However, it provides no deeper semantic context beyond what the schema already offers.

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 a specific verb ('Get'), a clear resource ('crop production data'), and enumerates the metrics (area planted, harvested, production, yield). It clearly distinguishes itself from USDA siblings like usda_livestock and usda_prices by focusing on crop production.

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 its use case through content (crop data) but provides no explicit guidance on when to prefer this tool over alternatives such as usda_livestock or usda_prices. No exclusions or comparison to siblings are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usda_livestockB
Read-onlyIdempotent

Get livestock data — inventory, slaughter, production. Commodities: CATTLE, HOGS, CHICKENS, MILK, EGGS

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear
stateNoState code. Omit for national
categoryNoINVENTORY, PRODUCTION, SALES
commodityYesCATTLE, HOGS, CHICKENS, MILK, EGGS

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that the operation is read-only, idempotent, and non-destructive, so no safety disclosure is needed. The description adds little behavioral context beyond what the schema lists, and it introduces a misleading 'slaughter' category that conflicts with the schema's valid categories; it also says nothing about output shape, defaults, or state/national behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences that front-load the core action and then give the exact commodity scope. There is no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a fully described schema and strong read-only annotations, an agent can assemble a valid request (commodity is required; year, state, and category are optional). It is still only minimally complete because it does not describe what the returned records look like, does not distinguish itself from usda_prices/usda_ag_query, and contains the slaughter/SALES discrepancy.

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?

Since schema description coverage is 100%, the schema already documents all four parameters and the description does not add semantic value. Worse, the description's category list ('slaughter') does not match the schema's category description (SALES), which could lead an agent to supply an invalid category value.

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 and resource ('Get livestock data') and enumerates data categories and commodities, making it clear this is the USDA livestock-oriented tool rather than crop or price tools. It does not explicitly compare itself with siblings like usda_prices or usda_ag_query, and the 'slaughter' category clashes with the schema's SALES value, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage 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—when livestock inventory, slaughter, or production figures are requested—and it scopes commodities to cattle, hogs, chickens, milk, and eggs. It never states exclusions or points to alternatives such as usda_prices or usda_ag_query, so routing among the many USDA siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usda_pricesB
Read-onlyIdempotent

Get prices received by farmers for agricultural commodities. Works for any commodity: CORN, WHEAT, SOYBEANS, CATTLE, MILK, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear
stateNoState code. Omit for national average
commodityYesAny commodity: CORN, WHEAT, SOYBEANS, CATTLE, HOGS, MILK

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds no behavioral context such as authentication, rate limits, response size, or pagination. It only restates scope, so while it does not contradict the annotations, it adds minimal behavioral value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The primary purpose is front-loaded, and the second sentence provides useful commodity examples. No redundancy or extraneous detail.

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 3-parameter read-only tool, the description is adequate but has gaps. There is no output schema, and the description does not explain the return value format, units, default year, or what the state parameter expects (e.g., code vs. name). It is functional but incomplete for an agent needing to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: each parameter (commodity, year, state) already has a description. The tool description adds 'any commodity' and example values (CORN, WHEAT, SOYBEANS, CATTLE, MILK), which is some extra context but not substantial. Since the schema carries the parameter semantics, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get prices received by farmers for agricultural commodities.' It is specific and distinguishes the tool from broad USDA datasets, but it does not explicitly differentiate itself from the sibling tools usda_crop_data, usda_livestock, or usda_ag_query, so it lacks overt sibling differentiation.

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 gives no guidance on when to use this tool versus alternatives. It only broadens scope with 'Works for any commodity' but does not mention exclusions, prerequisites, or when to prefer a sibling tool. This leaves the agent to infer usage from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_daily_water_dataA
Read-onlyIdempotent

Get USGS daily value water data (historical daily averages). Unlike real-time instantaneous values, these are aggregated daily means — better for trend analysis. Parameter codes: 00060=discharge (cfs), 00065=gage height (ft), 00010=water temp (°C).

ParametersJSON Schema
NameRequiredDescriptionDefault
sitesNoUSGS site number(s): '01646500'
end_dtNoEnd date: '2024-12-31'
periodNoISO 8601 duration: 'P30D' (default), 'P90D', 'P365D'
start_dtNoStart date: '2024-01-01' (overrides period)
state_cdNoTwo-letter state code: 'CA', 'TX'
parameter_cdNoParameter code: '00060' (discharge), '00065' (gage height). Default: 00060

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds context about aggregated daily means being better for trend analysis, but does not disclose other behaviors like default date range, rate limits, or how sites are specified (single vs multiple).

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 key distinction from real-time data. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 parameters, no required, no output schema), the description explains the data type, parameter codes, and date behavior. It might benefit from mentioning how to specify multiple sites or the response format, but those are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. The description adds some value by explaining the meaning of parameter codes (e.g., 00060=discharge) and the significance of start_dt overriding period, but the schema already provides examples and 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 returns USGS daily value water data, contrasting with real-time data, and lists parameter codes. It distinguishes this from sibling tools like usgs_water_data (which may be real-time) and usgs_water_statistics (statistics, not daily values).

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 the tool is for historical daily averages, useful for trend analysis, and implies not for real-time data. However, it does not explicitly mention when to use alternatives like usgs_water_data or usgs_water_statistics, nor does it list exclusions beyond the real-time contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_earthquake_countA
Read-onlyIdempotent

Count earthquakes matching criteria without fetching full details. Useful for statistics: 'How many M5+ earthquakes occurred in 2024?'

ParametersJSON Schema
NameRequiredDescriptionDefault
endtimeNoEnd date: '2024-12-31'
latitudeNoCenter latitude for radius search
longitudeNoCenter longitude for radius search
starttimeNoStart date: '2024-01-01'
maxradiuskmNoSearch radius in km
maxmagnitudeNoMaximum magnitude
minmagnitudeNoMinimum magnitude

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it returns a count rather than full details, which is a behavioral trait beyond annotations. It does not contradict any annotation and gives an important expectation about the response type.

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 with zero filler. It front-loads the core purpose ('Count earthquakes matching criteria') and then gives a practical example. No redundant or vague wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a count tool with no output schema, the description conveys that it returns a count and gives a concrete usage scenario. It does not mention required parameter groups (e.g., date range vs. radius), but since all parameters are optional and the schema provides descriptions, this is not a critical omission. The tool is simple enough that this description suffices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 7 parameters are individually documented in the schema. The description adds a usage example (M5+) that references minmagnitude but does not clarify parameter combinations or constraints beyond the schema. Given high schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Count') and resource ('earthquakes'), and immediately differentiates from full-detail retrieval by noting it works 'without fetching full details.' This clearly distinguishes it from the sibling usgs_earthquakes, which presumably returns detailed records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete use case ('How many M5+ earthquakes occurred in 2024?') and implies a distinction from fetching full details. It does not explicitly name alternative tools or when not to use it, but the context and example make the intended usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_earthquakesA
Read-onlyIdempotent

Search for earthquakes by magnitude, location, date range, and more. Returns magnitude, location, depth, time, alert level, tsunami risk, and felt reports. Magnitude scale: 2.5+ felt by people, 4.0+ moderate, 5.0+ significant, 7.0+ major.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20, max 200)
endtimeNoEnd date ISO format: '2024-12-31'
orderbyNoSort order (default: time)
latitudeNoCenter latitude for radius search
longitudeNoCenter longitude for radius search
starttimeNoStart date ISO format: '2024-01-01'
alertlevelNoPAGER alert level: 'green' (Limited impact — no damage expected), 'yellow' (Regional impact — some damage possible), 'orange' (National/international impact — significant damage likely), 'red' (Massive impact — extensive damage and casualties expected)
maxradiuskmNoSearch radius in km (requires lat/lon)
maxmagnitudeNoMaximum magnitude
minmagnitudeNoMinimum magnitude (e.g. 4.0, 5.0, 6.0)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that the tool is read-only, idempotent, open-world, and non-destructive. The description adds context about return fields (magnitude, location, depth, time, alert level, tsunami risk, felt reports) and magnitude scale interpretation, which is useful. However, it does not disclose potential rate limits, pagination behavior, or response volume, which could matter for heavy queries. Since annotations cover safety, the description is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each carrying useful information: the search scope, the return fields, and the magnitude scale context. It is not bloated and gets to the point quickly. The magnitude scale is front-loaded near the end, which is a sensible structural choice. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (10 optional parameters, all documented) and a rich annotations set (readOnly, idempotent, openWorld), the description covers the essential aspects: what it does, what it returns, and how to interpret magnitude thresholds. It lacks details on potential API limitations, such as default date ranges or result count limits, but the schema covers the 'limit' parameter. Overall, the description is sufficiently complete for an agent to call it correctly for typical queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning all 10 parameters are already described in the schema. The description adds the magnitude scale guidance (2.5+ felt, etc.), which helps infer the meaning of minmagnitude/maxmagnitude. However, for other parameters like latitude/longitude/maxradiuskm, the description adds nothing beyond the schema. The schema is comprehensive, so this is a standard 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 states a specific verb ('Search for earthquakes') and resource ('earthquakes'), along with key query dimensions (magnitude, location, date range). It clearly distinguishes the search function from sibling tools like usgs_earthquake_count and usgs_significant, which serve different purposes (counting, listing significant earthquakes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the purpose and provides meaningful magnitude scale context, which helps agents decide if this tool is appropriate for a query (e.g., if the user asks for earthquakes felt by people, the agent knows to set minmagnitude=2.5). However, it does not explicitly mention when to choose an alternative tool, such as usgs_earthquake_count for counts, or mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_significantA
Read-onlyIdempotent

Get significant earthquakes from the past 30 days (typically M4.5+ or felt/damaging events). Quick way to see the latest notable seismic activity worldwide.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the description does not need to restate those. It adds useful behavioral context about time range and magnitude threshold, but says nothing about response format, limits, or pagination. This is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, each earning its place. The core function and criteria are front-loaded, and no filler or redundant restatement of annotations or schema is present.

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 zero-parameter, read-only tool, the description is largely sufficient: it states the data source, time window, and magnitude criteria. A minor gap is that it does not describe the shape of the returned earthquake data, but the tool's simple nature makes this a small omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description needs no parameter-level detail; it instead explains the fixed filter (past 30 days, M4.5+/felt/damaging), which is the only semantic information an agent needs.

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 names a specific verb and resource ('Get significant earthquakes'), defines the time window ('past 30 days'), and adds concrete selection criteria ('typically M4.5+ or felt/damaging events'). This clearly distinguishes it from the general usgs_earthquakes sibling by focusing on notable/filtered events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Quick way to see the latest notable seismic activity worldwide' gives clear context for when this tool is appropriate: when the user wants a summary of significant recent events. It does not explicitly name alternatives or exclusions, but the selection criteria and 'quick way' framing effectively imply the choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_water_dataA
Read-onlyIdempotent

Get real-time water data (streamflow, gage height, temperature) from USGS monitoring sites. 13,000+ stations nationwide. Parameter codes: 00060=discharge (cfs), 00065=gage height (ft), 00010=water temp (°C). Query by site ID, state, county, or hydrologic unit code (HUC).

ParametersJSON Schema
NameRequiredDescriptionDefault
sitesNoUSGS site number(s), comma-separated: '01646500' or '01646500,01647000'
end_dtNoEnd date: '2024-01-31'
periodNoISO 8601 duration: 'P1D' (1 day, default), 'P7D' (7 days), 'P30D' (30 days)
start_dtNoStart date: '2024-01-01' (overrides period)
state_cdNoTwo-letter state code: 'CA', 'TX', 'NY'
parameter_cdNoParameter code: '00060' (discharge), '00065' (gage height), '00010' (temp). Default: 00060

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds useful behavioral context by listing station count (13,000+) and defining parameter codes with units, which are not in the annotations. It does not contradict annotations, and it enriches the agent's understanding of scope.

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 with no redundancy. It front-loads the core purpose, then provides concrete details (parameter codes, units, query options) in a compact, scannable format. Every sentence earns its place, and there is no padding.

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 6 optional parameters, no output schema, and safety covered by annotations. The description explains data types and units but omits response format or any guidance on required filters (all params optional, so querying all 13,000+ stations could be possible but is not addressed). The misleading county/HUC reference also detracts from completeness, leaving the agent with some ambiguity about how to structure a valid query.

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 100% (each parameter has its own description), so the baseline is 3. The description repeats parameter code definitions already in the schema, but also claims query support for 'county, or hydrologic unit code (HUC)' while the schema only exposes sites and state_cd — no county or HUC parameters exist. This introduces a misleading dimension and fails to compensate for the schema's coverage, so it scores below baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get) and resource (real-time water data from USGS monitoring sites), and lists the specific data types (streamflow, gage height, temperature). It distinguishes itself from siblings like usgs_daily_water_data and usgs_water_statistics by specifying 'real-time', making its 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 for real-time water data and mentions query dimensions (site, state, county, HUC), but it does not explicitly exclude alternatives or state when to prefer this tool over usgs_daily_water_data or usgs_water_statistics. The distinction is clear from context but not spelled out, 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.

usgs_water_sitesC
Read-onlyIdempotent

Search for USGS water monitoring sites by state, county, or hydrologic unit. Site types: ST=stream, GW=groundwater, LK=lake, SP=spring.

ParametersJSON Schema
NameRequiredDescriptionDefault
state_cdNoTwo-letter state code: 'CA', 'TX'
county_cdNoCounty FIPS code
site_typeNoSite type: ST (stream), GW (groundwater), LK (lake), SP (spring)

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the description is not burdened with that. However, the description mentions 'hydrologic unit' as a filter, but the input schema has no parameter for it, which is misleading. It also does not disclose behavior like pagination, default results when no params are given, or the nature of the output. This mismatch and omission detract from transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no unnecessary fluff. It front-loads the search purpose and then lists site types. However, the site type list is redundant with the schema, so a more streamlined description might have omitted it. Still, it is concise and readable.

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?

With no output schema, the description should explain what the tool returns (e.g., a list of site records with identifiers and coordinates) and clarify that all parameters are optional. It does not mention default behavior when no filters are given, nor does it clarify the missing hydrologic unit parameter. For a search tool with three optional params, this is incomplete.

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 input schema covers all three parameters with descriptions, including the site type enum. The description merely repeats the schema's site type mapping and adds a misleading mention of hydrologic unit. Since schema coverage is 100%, the description adds no new meaning and even introduces confusion, so it falls below the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for USGS water monitoring sites with filters by state, county, or site type. It lists specific site type codes, which helps identify the resource. However, it does not explicitly differentiate from sibling tools like usgs_water_data or usgs_daily_water_data, which likely retrieve data for these sites rather than metadata.

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?

There is no guidance on when to use this tool versus alternatives. The description does not mention that this is for site metadata lookup, nor does it state when not to use it or what other tools might be more appropriate. This leaves the agent to infer usage based solely on the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_water_statisticsA
Read-onlyIdempotent

Get period-of-record streamflow statistics for a USGS site — for each day of the year, the min/mean/max and p05–p95 percentiles across ALL years on record. Answers 'is the current flow historically high or low for this date?' — far more analytically useful than raw readings for drought/flood context. Parameter codes: 00060=discharge (cfs, default), 00065=gage height (ft). Optionally filter to a specific month/day.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNoFilter to a specific day of month (requires month; daily report only)
monthNoFilter to a specific month (1-12)
sitesYesUSGS site number(s), comma-separated: '01646500'
parameter_cdNoParameter code: '00060' (discharge, default), '00065' (gage height)
stat_report_typeNoStatistic granularity (default daily = per day-of-year)daily

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations: it aggregates statistics across ALL years on record, computes percentiles, and optionally filters by month/day. This enriches the agent's understanding of the operation without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-organized: it opens with the core purpose, then a practical use-case note, then parameter specifics. Every sentence adds value—no filler. The structure front-loads the most important information and keeps the parameter details at the end, making it 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?

Given the tool's complexity (5 parameters, no output schema), the description covers the essential aspects: the statistics returned, the aggregation scope, the use case, and the key parameter options. It does not describe the exact output format, but that may be acceptable without an output schema. The description is adequate for an agent to correctly invoke the tool, though a bit more detail on return structure would push it to a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter already has a description. The tool description adds value by explaining parameter codes (00060=discharge, 00065=gage height) and noting that month/day filtering is optional. It also clarifies that the default stat_report_type is daily, which aligns with the schema. This goes beyond the schema's basic descriptions, earning a score above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: retrieving period-of-record streamflow statistics for a USGS site, including min/mean/max and p05-p95 percentiles per day-of-year. It goes beyond a generic verb+resource by specifying the exact statistics and the aggregation across all years. It also distinguishes itself from raw readings, which is a useful differentiator among siblings like usgs_water_data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly frames the use case: 'is the current flow historically high or low for this date?' and notes it is 'far more analytically useful than raw readings for drought/flood context.' This provides a clear scenario for when to use this tool. However, it does not explicitly mention when not to use it or name alternatives among the many USGS siblings, so it stops short of a full when/when-not comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_application_assignmentsA
Read-onlyIdempotent

Get assignment (ownership transfer) records for a patent application. Shows conveyance type, assignor, assignee, and dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
application_numberYesApplication number

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), lowering the burden. The description adds slight behavioral context by listing the returned fields, but it does not disclose pagination, limits, ordering, or any caveats about assignment record availability.

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 short, front-loaded sentences deliver the action and the key output fields without filler, repetition, or unnecessary detail. Every phrase contributes meaning.

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 one-parameter, read-only tool, the description is reasonably complete: it names the input and the main output fields. However, it omits the expected format of application_number and says nothing about response cardinality or ordering, and there is no output schema to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the only required parameter, so the schema already documents application_number. The description adds no format, example, or further semantics for the parameter, which makes the baseline 3 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 states a specific verb and resource: 'Get assignment (ownership transfer) records for a patent application.' It also names the distinguishing output fields (conveyance type, assignor, assignee, dates), which separates it from siblings like uspto_application_details, uspto_application_continuity, and uspto_application_transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context: when assignment/ownership-transfer records are needed for a patent application. It does not explicitly name alternatives or state when not to use this tool, leaving the agent to infer routing from sibling names rather than receiving direct guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_application_continuityA
Read-onlyIdempotent

Get continuity (parent/child application chain) data for a patent application. Shows parent applications (continuations, divisionals, CIPs) and child applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
application_numberYesApplication number

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool is safe and non-destructive. The description adds the detail that it shows parent and child applications, which is useful context beyond annotations, but it doesn't disclose anything about data completeness, potential missing chain links, or required numeric 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?

Two sentences that are direct and informative. It front-loads the main purpose and clearly explains the output. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, no output schema), the description is adequate. However, it would benefit from a note on the expected input format (e.g., serial number with leading zeros) and possibly what to do if no continuity data is found. But overall, it is reasonably complete for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the only parameter 'application_number' is fully documented. The description implicitly indicates this is an application number, but it does not provide additional format or example. Baseline 3 is appropriate given full schema coverage.

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 states a specific verb ('Get') and resource ('continuity data for a patent application'), and clarifies what it shows (parent and child applications). It does not explicitly differentiate from sibling tools like 'uspto_application_details' or 'uspto_application_assignments', but the focus on continuity is distinct.

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 it is used when you need continuity data for an application, but it does not explicitly state when to use alternatives such as 'uspto_application_details' for general details or 'uspto_application_assignments' for assignments. There is no when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_application_detailsA
Read-onlyIdempotent

Get full patent application data by application number. Returns all metadata including filing date, grant date, status, inventors, applicant, patent number, type, and prosecution details.

ParametersJSON Schema
NameRequiredDescriptionDefault
application_numberYesApplication number (e.g. '14412875'). For PCT, use encoded format (e.g. 'PCTUS0719317')

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by enumerating the fields returned (filing date, grant date, status, inventors, applicant, patent number, type, prosecution details), which is behavioral in that it tells the agent what to expect in the response. This goes beyond the annotations, which say nothing about output content. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core action ('Get full patent application data by application number') and then lists the key data fields. There is no fluff or redundant wording. Every part earns its place, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description serves as the primary guide for what the response will contain. It lists a comprehensive set of fields (filing date, grant date, status, inventors, applicant, patent number, type, prosecution details), which is sufficient for an agent to understand the tool's purpose and expected result. The description is complete for a simple lookup tool, with no obvious gaps like error handling or pagination that would be necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description for application_number is already detailed, including examples and PCT encoding instructions (e.g., '14412875' and 'PCTUS0719317'). The description adds no additional parameter semantics beyond restating that the tool operates by application number. With 100% schema coverage, the baseline of 3 applies; the description does not compensate or add new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Get full patent application data by application number.' It specifies the resource (patent application) and the key identifier (application number), and lists the types of metadata returned (filing date, grant date, status, inventors, etc.). This distinguishes it from siblings like uspto_search_applications (search vs. retrieve) and other application-specific tools (continuity, assignments, transactions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have an application number and want comprehensive details, but it does not explicitly state when not to use it or mention alternatives. For example, it doesn't say 'For searching by other criteria, use uspto_search_applications' or 'For continuity data, use uspto_application_continuity.' The guidance is implicit rather than explicit, so it earns a mid-range score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_application_documentsA
Read-onlyIdempotent

List documents filed in a patent application (office actions, amendments, drawings, etc.). Filter by document code or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNoOfficial date to (yyyy-MM-dd)
date_fromNoOfficial date from (yyyy-MM-dd)
document_codesNoComma-separated document codes e.g. 'WFEE' (fee worksheet), 'SRFW,SRNT' (search forward/notice)
application_numberYesApplication number

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate the safety profile. It adds the filtering behaviors, but does not describe pagination, return shape, or whether it returns document metadata versus full content. No contradiction exists between description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with the primary purpose front-loaded and filter capability stated in the second sentence. There is no filler, repetition, or unnecessary detail; every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity — one required application_number parameter and three optional filters — the description plus fully described schema are enough for an agent to invoke it correctly. The description does not mention return values or pagination, but annotations already cover the read-only and idempotent nature, and the listing semantics are clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, including a comma-separated example for document_codes and date format hints for date_from and date_to. The description only summarizes these filters at a high level, adding no new format or meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and object: 'List documents filed in a patent application,' and it gives concrete examples of what those documents are (office actions, amendments, drawings). This makes it clear the tool returns documents associated with an application, which differentiates it from the application-detail, transaction, and assignment siblings, though no sibling is explicitly named.

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 intended use — retrieving patent application documents and filtering them by code or date — but it does not explicitly state when to use this tool over related siblings such as uspto_application_transactions or uspto_application_details. The usage signal is present but left to inference rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_application_transactionsA
Read-onlyIdempotent

Get transaction (prosecution history) events for a patent application. Shows office actions, responses, examiner actions, and status changes with dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
application_numberYesApplication number

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by naming the kinds of events returned and the presence of dates, without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first states the action and resource, the second summarizes the returned content. It is front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, one-required-parameter, read-only lookup, the description is adequate: it identifies the input and sketches the returned event categories and dates. There is no output schema, so mentioning ordering, pagination, or exact response structure would add completeness, but the current description is sufficient for an agent to select and call 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 covers the single parameter fully with a description of 'Application number', so there is little burden on the prose description. The description only repeats that the target is a patent application and gives no extra formatting or normalization hints, but this is acceptable for such a simple one-parameter interface.

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 ('Get ... events') and a defined resource ('patent application'), then lists the event types returned. The phrase 'prosecution history' plus the enumerated event categories clearly distinguish this tool from sibling USPTO tools like application_documents, application_details, and application_continuity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: use this tool when you need prosecution-history transactions such as office actions, responses, examiner actions, and status changes. It does not explicitly name alternatives or say when not to use it, but the domain-specific examples make the intended use unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_petition_decisionsB
Read-onlyIdempotent

Search USPTO petition decisions - petitions for extension of time, revival, suspension, etc. Search by applicant name, decision type, technology center, date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query - e.g. 'firstApplicantName:BRANT*', 'decisionTypeCodeDescriptionText:Denied'
sortNoSort as 'field order' - e.g. 'petitionMailDate desc'
limitNoResults per page (default 25)
fieldsNoFields to include in response
offsetNoStarting position (default 0)
filtersNoArray of filters as 'field value' - e.g. ['technologyCenter 3600', 'businessEntityStatusCategory Small']
range_filtersNoArray of range filters as 'field from:to' - e.g. ['petitionMailDate 2021-01-01:2025-01-01']

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description doesn't need to restate safety. It adds context about the types of petitions covered, which is useful, but doesn't disclose response format, pagination behavior, or rate limits. Since annotations cover the core behavior, a neutral score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose ('Search USPTO petition decisions') before listing search dimensions. It avoids unnecessary words and is easy to scan. A slightly more structured layout (e.g., bullet points) might improve readability, but it is still well within acceptable length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (7 optional parameters, no output schema) and existing annotations, the description covers the core function and search dimensions. However, it does not help distinguish this from the very similar sibling uspto_ptab_decisions, nor does it clarify whether results include decision text or only metadata. For a search tool with this level of complexity, it is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured schema already documents all seven parameters. The description mentions searchable dimensions (applicant name, decision type, technology center, date range) that map to q, filters, and range_filters, but it doesn't add syntax or format details beyond what the schema provides. Baseline 3 is correct because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches USPTO petition decisions, names the verb 'Search', and specifies the resource. It lists concrete petition types (extension of time, revival, suspension) and search dimensions (applicant name, decision type, technology center, date range), making the purpose unmistakable. It doesn't explicitly differentiate from the sibling uspto_ptab_decisions, but the name and subject matter are distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for finding petition decisions, but does not explicitly state when to choose this tool over alternatives like uspto_ptab_decisions or uspto_search_applications. It gives examples of search fields but no guidance on when to use this vs. other USPTO tools. No exclusions or alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_ptab_decisionsA
Read-onlyIdempotent

Search PTAB trial decisions. Find institution decisions, final written decisions, and other PTAB rulings. Search by trial type, outcome, patent owner, grant date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query - e.g. 'trialMetaData.trialTypeCode:IPR AND patentOwnerData.groupArtUnitNumber:2884'
sortNoSort as 'field order'
limitNoResults per page (default 25)
fieldsNoFields to include in response
offsetNoStarting position (default 0)
filtersNoArray of filters as 'field value' - e.g. ['trialMetaData.trialTypeCode IPR']
range_filtersNoArray of range filters as 'field from:to' - e.g. ['respondentData.grantDate 2023-01-01:2024-12-31']

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat safety. It adds the search scope (institution decisions, final written decisions, other rulings) which is useful but not behavioral beyond that. No mention of pagination, result limits, or response format, though the schema covers limit/offset. The description adds some value but does not significantly expand behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core action is front-loaded ('Search PTAB trial decisions'), followed by specific types of rulings and search dimensions. Every word earns its place; it is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no output schema, and read-only annotations, the description covers the primary purpose and search dimensions. It does not explain query syntax (e.g., field names like 'trialMetaData.trialTypeCode'), but the schema provides examples. It also omits pagination behavior, but that is in the schema. Overall, the description is sufficient for an agent to understand what the tool does and roughly how to use it, with gaps that are minor given the schema's completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already described. The description lists high-level search dimensions (trial type, outcome, patent owner, grant date range) that map to fields used in queries, but does not add syntax or format details beyond the schema. Since the schema already documents each parameter, the description adds marginal semantic value, consistent with a baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search PTAB trial decisions.' It specifies the resource (PTAB decisions) and the action (search), and distinguishes it from sibling tools like uspto_ptab_proceedings (which handles proceedings) and uspto_petition_decisions (petition decisions). It also lists search dimensions (trial type, outcome, patent owner, grant date range), making the scope explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (for PTAB decisions) but does not explicitly contrast it with alternatives like uspto_ptab_proceedings or uspto_petition_decisions. It lacks guidance on when NOT to use it or how to choose between similar tools. Since the purpose is clear, an agent could infer usage, but explicit exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_ptab_proceeding_detailsA
Read-onlyIdempotent

Get details for a specific PTAB trial proceeding by trial number (e.g. 'IPR2025-01319').

ParametersJSON Schema
NameRequiredDescriptionDefault
trial_numberYesTrial number (e.g. 'IPR2025-01319')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, and non-destructive nature, so the description doesn't need to restate that. It adds no extra behavioral context like what fields are returned or any error handling, which is acceptable for a simple fetch but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence with an example, no filler. The essential information is front-loaded and immediately actionable.

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 only one required parameter, no output schema, and annotations covering safety, the description is sufficient to guide a call. It doesn't explain what 'details' includes, but that's not necessary for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes the trial_number parameter (100% coverage), so the baseline is 3. The description adds a concrete example ('IPR2025-01319') that clarifies the expected format, providing marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves details for a specific PTAB trial proceeding identified by trial number, with an example. This distinguishes it from list/search tools like uspto_ptab_proceedings, which would not take a specific trial number.

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 the tool is used when you have a trial number and want detailed information, but it does not explicitly mention when not to use it or point to alternative tools. There is no explicit routing guidance relative to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_ptab_proceedingsA
Read-onlyIdempotent

Search PTAB (Patent Trial and Appeal Board) trial proceedings - IPR, PGR, CBM, and derivation proceedings. Search by trial number, patent owner, petitioner, technology center, status, or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query - e.g. 'trialMetaData.trialTypeCode:IPR', 'patentOwnerData.patentOwnerName:Apple'
sortNoSort as 'field order' - e.g. 'patentOwnerData.technologyCenterNumber desc'
limitNoResults per page (default 25)
fieldsNoFields to include in response
offsetNoStarting position (default 0)
filtersNoArray of filters as 'field value' - e.g. ['trialMetaData.trialTypeCode IPR', 'patentOwnerData.technologyCenterNumber 3700']
range_filtersNoArray of range filters as 'field from:to' - e.g. ['trialMetaData.petitionFilingDate 2023-01-01:2024-12-31']

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the safety profile is covered. The description adds useful scope by listing the proceeding types included, but it does not describe the response format, pagination behavior, or any API quirks. With annotations carrying the safety burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and resource, then lists the searchable dimensions. It has zero filler and every phrase 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 exposes 7 optional parameters with full schema documentation, and the annotations cover the safety profile. Yet with no output schema, the description does not clarify what the search returns (list structure, fields, or how it relates to the detail tool). This is a noticeable but not crippling gap for a straightforward search API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description lists searchable attributes (trial number, patent owner, etc.) which loosely map to q/filters/range_filters, but it does not add meaning beyond what the schema examples already provide (e.g., field syntax). No extra credit is warranted.

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 a specific verb ('Search') and resource ('PTAB trial proceedings') and enumerates the proceeding types (IPR, PGR, CBM, and derivation). However, it does not explicitly distinguish itself from the sibling tool uspto_ptab_proceeding_details, though the names and plural/singular distinction imply a search-list versus detail relationship.

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 signals that this is the tool for searching proceedings and lists the common search fields (trial number, patent owner, etc.). It does not mention when not to use it or point to alternatives such as uspto_ptab_proceeding_details for a specific proceeding, leaving usage context to implication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uspto_search_applicationsA
Read-onlyIdempotent

Search USPTO patent applications using ODP query syntax (POST). The q param supports opensearch DSL: boolean (AND/OR/NOT), wildcards (* ?), exact phrases (""), field:value, ranges ([from TO to]), comparisons (>=600). Filters narrow results by field value. Range filters narrow by date/number range. All params are optional -- an empty search returns recent applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query - e.g. 'applicationMetaData.applicationTypeLabelName:Utility', 'applicationNumberText:14412875', free text 'machine learning', or 'applicationMetaData.filingDate:[2024-01-01 TO 2024-12-31]'
sortNoSort as 'field order' - e.g. 'applicationMetaData.filingDate desc'. Default: filingDate desc. Text fields cannot be sorted.
limitNoResults per page (default 25)
facetsNoFields to aggregate - e.g. ['applicationMetaData.applicationTypeLabelName', 'applicationMetaData.applicationStatusCode']. Text fields not supported.
fieldsNoFields to include in response - e.g. ['applicationNumberText', 'applicationMetaData.patentNumber', 'applicationMetaData.filingDate']. Omit for all fields. Supports wildcards like '*Date*'.
offsetNoStarting position (default 0)
filtersNoArray of filters as 'field value1,value2' strings - e.g. ['applicationMetaData.applicationTypeCode UTL,DES', 'applicationMetaData.entityStatusData.businessEntityStatusCategory Small']. Each entry adds an AND-combined filter; multiple values within a filter act as OR.
range_filtersNoArray of range filters as 'field from:to' strings - e.g. ['applicationMetaData.grantDate 2020-01-01:2024-12-31', 'applicationMetaData.applicationStatusCode 150:200']. Valid for date and number fields only.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds behavioral details beyond annotations: it mentions the POST method, the supported DSL operators, and that an empty search returns recent applications. This provides useful context without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It front-loads the purpose and method, then breaks down the query syntax and parameter behaviors in a logical order. Every sentence adds value, and there is no 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 complex tool with 8 optional parameters and no output schema, the description covers the query syntax, filters, range filters, and optionality. It does not explicitly state the response format (e.g., that it returns a list of applications), but this is largely implied by 'search' and the presence of pagination params. Minor gap but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions and examples for each parameter. The description adds extra meaning by explaining the q parameter's DSL syntax (boolean, wildcards, phrases, ranges, comparisons) and clarifying that filters narrow by field value while range filters narrow by date/number. This supplements the schema and helps agents construct valid queries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'Search', the resource 'USPTO patent applications', and the query method (POST with ODP syntax). It clearly distinguishes this tool from sibling tools like uspto_application_details by indicating it is a search operation rather than a detail lookup.

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 it (for searching applications) and notes that all parameters are optional, returning recent applications on empty search. It doesn't explicitly contrast with sibling tools (e.g., uspto_application_details), but the purpose is clear enough that an agent can infer it is the search tool rather than a detail fetcher.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wb_compareA
Read-onlyIdempotent

Compare a World Bank indicator across multiple countries. Great for 'How does US compare to...' questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
countriesYesSemicolon-separated ISO2 codes: 'US;GB;DE;JP;CN'
indicatorYesIndicator code
date_rangeNoYear range: '2015:2024'. Default: last 5 years

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already cover read-only, idempotent, non-destructive behavior, so the description does not need to repeat those. However, the description adds no additional behavioral context such as output shape, result structure, or date-range behavior beyond what the schema already implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately short and front-loaded with the main purpose in the first sentence and a natural language trigger in the second. Every sentence earns its place without 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?

Given the low tool complexity, complete parameter documentation, and rich annotations, the description is nearly sufficient for an agent to select the tool correctly. The only missing context is a description of the return shape, but nothing critical blocks correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of the parameters, including semicolon-separated ISO2 codes and the default date range, so the baseline of 3 applies. The description adds no parameter-level detail beyond what the schema already provides.

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 states a clear verb and resource: compare a World Bank indicator across multiple countries, and the 'Great for...' framing makes the purpose unmistakable. It does not explicitly distinguish itself from sibling tools like wb_indicator or wb_countries, but the cross-country comparison scope is specific enough on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete trigger example, 'How does US compare to...' questions, so an agent knows when this tool is the right choice. It could be stronger by explicitly naming alternatives or saying when not to use it, but the stated use case is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wb_countriesA
Read-onlyIdempotent

List World Bank countries with region, income level, and capital city.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint false), so the description doesn't need to restate that. It adds value by specifying the content of the list (region, income level, capital city), but it does not disclose any additional behaviors like sorting, pagination, or filtering. Since the tool has no parameters, this is minimal but adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the action and resource. Every word adds value, with 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?

For a simple, parameterless listing tool with rich annotations covering safety, the description is complete. It clearly states what the tool returns and is sufficient for an agent to invoke it correctly without needing additional details.

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?

There are zero parameters and the schema has full coverage (vacuously). Per the rubric, a baseline of 4 is given for zero-parameter tools. The description adds no parameter information, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' with the resource 'World Bank countries' and specifies the attributes returned (region, income level, capital city). It is distinct from siblings like wb_search (which searches for specific data) and wb_topics (which lists topics), so an agent can easily differentiate it.

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 its use case: when you need a list of countries with those attributes. However, it does not explicitly mention when not to use it or provide alternatives like wb_search or wb_compare. Given the sibling names, the context is clear but not explicit, so it earns a 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wb_indicatorA
Read-onlyIdempotent

Get a World Bank indicator for a country. Popular: NY.GDP.MKTP.CD (GDP), SP.DYN.LE00.IN (life expectancy), SH.XPD.CHEX.PC.CD (health spend/capita), SL.UEM.TOTL.ZS (unemployment)

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoISO2 code: US, GB, DE, JP, CN. Default: US
indicatorYesIndicator code, e.g. 'NY.GDP.MKTP.CD'
date_rangeNoYear range: '2015:2024' or single year '2024'. Default: last 10 years

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which covers the safety profile, so the description does not need to restate those. The description adds little behavioral context beyond the basic fetch semantics and does not mention return format or date-range behavior, but there is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, followed by a terse list of useful indicator examples. Every sentence earns its place with no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with three documented parameters, the description is minimally adequate, but there is no output schema and the description does not explain what the response looks like. An agent might not know whether the result is a single value, a time series, or a formatted table, which is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes all three parameters, so the baseline is 3, but the description adds real value by mapping common indicator codes to human-readable concepts (GDP, life expectancy, health spend, unemployment). This gives the agent concrete, usable parameter examples that the schema does not provide.

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 states a specific verb ('Get'), resource ('World Bank indicator'), and scope ('for a country'), which is clear and distinct from generic names. However, it does not explicitly differentiate this tool from sibling tools like wb_compare or wb_search, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage 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 fetching a known indicator for a country and the popular examples hint at common use cases, but it does not state when to prefer it over alternatives or when not to use it. There is no mention of wb_search for finding indicators or wb_compare for multi-country comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wb_referenceA
Read-onlyIdempotent

Get World Bank classification lookup tables: regions, income levels, or lending types. Use the resulting codes to filter wb_countries-style queries (e.g. income level 'LIC' = low income).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesWhich classification to list

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds semantic context (e.g., LIC = low income) and the intent of the returned codes, which is beyond the annotations, but it does not detail return format or pagination—minor given the simple lookup nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with active verbs and zero filler. The first sentence states the core purpose, and the second explains the downstream use case. Information is front-loaded and immediately usable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one enum parameter and no output schema, the description covers the purpose, the accepted values, and the practical application of the results. The agent has enough to decide when to call it and how to use the returned codes. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the enum parameter 100%, so the baseline is 3. The description adds meaning by enumerating the allowed values (regions, income levels, lending types) and by providing a concrete example of how the parameter value maps to a filter code used in wb_countries queries. This exceeds the schema's simple 'Which classification to list'.

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 a specific verb and resource: 'Get World Bank classification lookup tables' and enumerates the three categories. It also gives a concrete example (LIC = low income) and connects to wb_countries-style filtering, which clearly separates it from sibling tools like wb_search/wb_indicator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: to obtain classification codes for filtering wb_countries-style queries. It does not explicitly name alternative tools or state when not to use it, but the downstream use case is specific enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wb_sourcesA
Read-onlyIdempotent

Browse World Bank data source databases. With no source_id, lists all ~70 sources (World Development Indicators, Doing Business, International Debt Statistics, etc.). With a source_id, lists every indicator in that database.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idNoSource ID to list its indicators (e.g. '2' = World Development Indicators). Omit to list all sources.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: the ~70 sources count and the fact that providing source_id changes the output from sources to indicators. However, it doesn't disclose details like pagination, response format, or what happens with an invalid source_id, which would be valuable for a browse tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The primary purpose is front-loaded, and the conditional behavior is explained efficiently. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple browse tool with one optional parameter, the description is nearly complete. It explains both modes and gives a concrete example. The only minor gap is the lack of detail about the response shape or error behavior, but given the tool's simplicity and the annotations covering safety, this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter. The description adds a concrete example ('2' = World Development Indicators) and clarifies the omit-vs-provide behavior, which is helpful. However, since the schema already covers the parameter fully, the description's added value is modest, warranting the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Browse') and a clear resource ('World Bank data source databases'), and explicitly distinguishes the two modes: listing all ~70 sources when source_id is omitted, or listing every indicator in a specific database when source_id is provided. This makes the tool's purpose unambiguous and differentiates it from siblings like wb_indicator, wb_compare, and wb_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use the tool (to browse sources or indicators) and explains the two invocation modes. It doesn't explicitly name alternative tools or state when not to use it, but the context is clear enough for an agent to select it appropriately among the World Bank siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wb_topicsA
Read-onlyIdempotent

Browse World Bank indicators by theme. With no topic_id, lists all 21 topics (Agriculture, Health, Climate Change, Education, etc.). With a topic_id, lists every indicator under that topic — the best way to discover indicators for a subject without keyword guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idNoTopic ID to list its indicators (e.g. '8' = Health). Omit to list all topics.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond these: it explains that omitting topic_id yields a list of all 21 topics, while providing topic_id yields indicators under that topic. This dual-mode behavior is not inferable from the schema alone and is valuable for the agent. It does not mention pagination, return format, or error handling, but given the simplicity and annotation coverage, 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?

Two concise sentences with no redundant wording. The first sentence immediately states the purpose, and the second explains the two modes with concrete examples. All information is front-loaded and every word earns its place. No filler or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description is complete. It explains what the tool returns in both modes ('lists all 21 topics' and 'lists every indicator under that topic'), provides example topics, and frames its usage. The annotations cover safety and idempotency. There is no missing information that would prevent an agent from calling this 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 schema description already explains the topic_id parameter with an example ('8' = Health) and says to omit it to list all topics. The tool description reinforces this by explaining the two modes and listing example topics (Agriculture, Health, Climate Change, Education). This adds practical context about valid values and the parameter's presence/absence semantics, going slightly beyond the schema. Since schema coverage is 100%, the description adds value by clarifying behavior but not entirely necessary, hence a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Browse World Bank indicators by theme.' It specifies two behaviors based on the optional topic_id parameter, listing all topics or indicators under a topic. This distinguishes it from related siblings like wb_search (which implies keyword-based discovery) and wb_indicator (which likely retrieves specific indicators). The phrase 'without keyword guessing' directly contrasts with search-oriented tools, 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 on when to use the tool: to discover indicators by theme, especially when the user doesn't know exact keywords. It explicitly describes the two modes (with and without topic_id) and frames it as 'the best way to discover indicators for a subject.' However, it does not explicitly name alternative tools (e.g., wb_search) for cases where a keyword is known, though it strongly implies this. Slightly more explicit guidance would warrant a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 173 tool updatesv2026.9.14
    • Changedbts_border_crossings1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedbts_transport_stats1 field changed
      • addedInput schema / properties / limit / default
        Added value: +24
    • Changedcalc_contract_rates1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +100
    • Changedcalc_search_rates1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +20
    • Changedcdc_birth_indicators1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_causes_of_death1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_covid1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_death_rates_historical1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_disability1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_drug_overdose1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_life_expectancy1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_mortality_rates1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_nutrition_obesity1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_places_city1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_places_health1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcdc_query1 field changed
      • addedInput schema / properties / limit / default
        Added value: +1000
    • Changedcdc_weekly_deaths1 field changed
      • addedInput schema / properties / limit / default
        Added value: +200
    • Changedcensus_search_variables1 field changed
      • addedInput schema / properties / max_results / default
        Added value: +20
    • Changedclear_cache1 field changed
      • changedInput schema / properties / source / description
        Previous value: -"Module name to clear: bea, bls, bts, cdc, census, cfpb, clinical-trials, cms, college-scorecard, congress, doj-news, dol, eia, epa, epa-aqs, fbi, fda, fdic, fec, federal-register, fema, fred, govinfo, gsa-calc, hud, naep, nhtsa, nih, noaa, nrel, open-payments, regulations, sec, senate-lobbying, treasury, usaspending, usda-fooddata, usda-nass, usgs, uspto, world-bank. Omit for all."New value: +"Module name to clear: bea, bls, bts, cdc, census, cfpb, clinical-trials, cms, college-scorecard, congress, doj-news, dol, eia, epa, epa-aqs, fbi, fda, fdic, fec, federal-register, fema, fred, govinfo, gsa-calc, hud, naep, nhtsa, nih, noaa, nrel, nws, open-payments, regulations, sec, senate-lobbying, treasury, usaspending, usda-fooddata, usda-nass, usgs, uspto, world-bank. Omit for all."
    • Changedclinical_trials_by_location1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +10
    • Changedclinical_trials_search2 fields changed
      • addedInput schema / properties / page_size / default
        Added value: +10
      • changedInput schema / properties / status / description
        Previous value: -"Trial status. Pipe-delimited for multiple: 'RECRUITING' (Currently recruiting participants), 'NOT_YET_RECRUITING' (Approved but not yet recruiting), 'ACTIVE_NOT_RECRUITING' (Ongoing but no longer recruiting), 'COMPLETED' (Trial has concluded), 'ENROLLING_BY_INVITATION' (Recruiting by invitation only), ... (14 total)"New value: +"Trial status. Pass an array for multiple, e.g. [\"RECRUITING\",\"ACTIVE_NOT_RECRUITING\"]. Valid: 'RECRUITING' (Currently recruiting participants), 'NOT_YET_RECRUITING' (Approved but not yet recruiting), 'ACTIVE_NOT_RECRUITING' (Ongoing but no longer recruiting), 'COMPLETED' (Trial has concluded), 'ENROLLING_BY_INVITATION' (Recruiting by invitation only), ... (14 total)"
    • Changedcms_hospitals1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcms_nursing_homes1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcms_query1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcongress_amendment_amendments1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcongress_amendment_cosponsors1 field changed
      • addedInput schema / properties / limit / default
        Added value: +250
    • Changedcongress_amendments1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_bill_actions1 field changed
      • addedInput schema / properties / limit / default
        Added value: +100
    • Changedcongress_bill_amendments1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcongress_bill_cosponsors2 fields changed
      • addedInput schema / properties / limit / default
        Added value: +250
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "updateDate+asc",
        +  "updateDate+desc"
        +]
    • Changedcongress_bill_related1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcongress_bill_subjects1 field changed
      • addedInput schema / properties / limit / default
        Added value: +100
    • Changedcongress_bill_titles1 field changed
      • addedInput schema / properties / limit / default
        Added value: +100
    • Changedcongress_bound_congressional_record1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_bills1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_full_profile1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedcongress_committee_house_communications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_meetings1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_nominations_for_committee1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_prints1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_reports1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_reports_for_committee1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committee_senate_communications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_committees1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcongress_congressional_record1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_crs_reports1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_daily_congressional_record1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_hearings1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_house_communications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_house_requirement_matching_communications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_house_requirements1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_house_votes1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_info1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_member_bills1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_nomination_nominees1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_nominations1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_recent_laws1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_search_bills2 fields changed
      • addedInput schema / properties / limit / default
        Added value: +20
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "updateDate+asc",
        +  "updateDate+desc"
        +]
    • Changedcongress_search_members1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changedcongress_senate_communications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_senate_votes1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_summaries_search2 fields changed
      • addedInput schema / properties / limit / default
        Added value: +20
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "updateDate+asc",
        +  "updateDate+desc"
        +]
    • Changedcongress_treaties1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedcongress_treaty_partitioned_actions1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changeddol_osha_accident_injuries1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeddol_osha_accidents1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeddol_osha_inspections1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeddol_osha_violations1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeddol_ui_claims_national1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeddol_ui_claims_state1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeddol_whd_enforcement1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedepa_enforcement1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedepa_facilities1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedepa_rcra1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedfda_animal_events1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_approved_drugs1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_covid_serology1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_510k1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_classification1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_enforcement1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_events1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_pma1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_recalls1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_registrations1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_device_udi1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_drug_counts1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_drug_events1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_drug_labels1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_drug_ndc1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_drug_recalls1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_drug_shortages1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_food_adverse_events1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_food_recalls1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_historical_docs1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_nsde1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_substance1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_tobacco_problems1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfda_unii1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changedfdic_deposits1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedfdic_failures1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedfdic_financials1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedfdic_history1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedfdic_search_institutions1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedfdic_summary1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedfec_committee_disbursements1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Addedfec_independent_expenditures
    • Addedfec_individual_contributions
    • Addedfec_outside_spending_by_candidate
    • Changedfec_search_candidates1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Changedfec_search_committees1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Changedfec_top_candidates1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Changedfema_disaster_declarations1 field changed
      • addedInput schema / properties / top / default
        Added value: +50
    • Changedfema_housing_assistance1 field changed
      • addedInput schema / properties / top / default
        Added value: +50
    • Changedfema_public_assistance1 field changed
      • addedInput schema / properties / top / default
        Added value: +50
    • Changedfema_query1 field changed
      • addedInput schema / properties / top / default
        Added value: +50
    • Changedfooddata_list1 field changed
      • addedInput schema / properties / pageSize / default
        Added value: +25
    • Changedfooddata_search1 field changed
      • addedInput schema / properties / pageSize / default
        Added value: +25
    • Changedfr_executive_orders1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Changedfr_presidential_documents1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Addedfr_public_inspection
    • Changedfr_search_rules1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Addedfr_suggested_searches
    • Changedfred_search1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedfred_series_data3 fields changed
      • changedInput schema / properties / frequency / description
        Previous value: -"d, w, bw, m, q, sa, a"New value: +"d=daily, w=weekly, bw=biweekly, m=monthly, q=quarterly, sa=semiannual, a=annual"
      • addedInput schema / properties / frequency / enum
        Added value: +[
        +  "d",
        +  "w",
        +  "bw",
        +  "m",
        +  "q",
        +  "sa",
        +  "a"
        +]
      • addedInput schema / properties / limit / default
        Added value: +1000
    • Changedgovinfo_cbo_reports1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +10
    • Changedgovinfo_search1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +10
    • Changedlobbying_contributions1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +20
    • Changedlobbying_lobbyists1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +20
    • Changedlobbying_registrants1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +20
    • Changedlobbying_search1 field changed
      • addedInput schema / properties / page_size / default
        Added value: +20
    • Changednih_search_projects1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changednih_search_publications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +10
    • Changednoaa_climate_data1 field changed
      • addedInput schema / properties / limit / default
        Added value: +1000
    • Changednoaa_locations1 field changed
      • addedInput schema / properties / limit / default
        Added value: +50
    • Changednoaa_stations1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changednrel_fuel_stations1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Addednws_alert
    • Addednws_alert_types
    • Addednws_alerts_active
    • Addednws_forecast
    • Addednws_forecast_hourly
    • Addednws_glossary
    • Addednws_observation_latest
    • Addednws_point_info
    • Addednws_stations_near
    • Addednws_zone_forecast
    • Changedopen_payments_by_company1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_by_hospital1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_by_physician1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_by_specialty1 field changed
      • addedInput schema / properties / limit / default
        Added value: +30
    • Changedopen_payments_ownership1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_research1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_search1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_top1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedopen_payments_top_doctors1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedscorecard_query1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Changedscorecard_search1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Changedscorecard_top1 field changed
      • addedInput schema / properties / per_page / default
        Added value: +20
    • Addedsec_company_concept
    • Addedsec_concept_across_companies
    • Changedusa_spending_by_agency1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Changedusa_spending_by_award1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedusa_spending_by_recipient1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changedusgs_earthquakes1 field changed
      • addedInput schema / properties / limit / default
        Added value: +20
    • Addedusgs_water_statistics
    • Changeduspto_petition_decisions1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeduspto_ptab_decisions1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeduspto_ptab_proceedings1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Changeduspto_search_applications1 field changed
      • addedInput schema / properties / limit / default
        Added value: +25
    • Addedwb_reference
    • Changedwb_search1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 30,
        +  "description": "Max indicators to return",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Addedwb_sources
    • Addedwb_topics
  2. 324 tool updatesv2026.4.11
    • Changedbea_dataset_info1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_fixed_assets1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_gdp_by_industry1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_gdp_by_state1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_gdp_national1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_input_output1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_international_investment1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_international_transactions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_intl_services_trade1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_multinational_enterprises1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_nipa_underlying_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_personal_income1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbea_underlying_gdp_by_industry1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbls_cpi_breakdown1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbls_employment_by_industry1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbls_search_series1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbls_series_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbts_border_crossings1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbts_transport_stats1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcalc_contract_rates1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcalc_search_rates1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcalc_suggest1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_birth_indicators1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_causes_of_death1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_covid1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_death_rates_historical1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_disability1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_drug_overdose1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_life_expectancy1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_mortality_rates1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_nutrition_obesity1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_places_city1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_places_health1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_query1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcdc_weekly_deaths1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcensus_population1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcensus_query1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcensus_search_variables1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcfpb_complaint_aggregations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcfpb_complaint_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcfpb_complaint_trends1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcfpb_search_complaints1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcfpb_state_complaints1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcfpb_suggest_company1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedclear_cache1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedclinical_trials_by_location
    • Changedclinical_trials_detail3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fields
        Added value: +{
        +  "description": "Pipe-separated fields to return: 'NCTId|BriefTitle|EligibilityModule'. Omit for full study.",
        +  "type": "string"
        +}
      • changedInput schema / properties / nct_id / description
        Previous value: -"ClinicalTrials.gov ID: 'NCT06000000'"New value: +"ClinicalTrials.gov NCT ID: 'NCT06000000'"
    • Addedclinical_trials_enums
    • Addedclinical_trials_field_sizes
    • Addedclinical_trials_field_values
    • Addedclinical_trials_metadata
    • Addedclinical_trials_results
    • Changedclinical_trials_search19 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / agg_filters
        Added value: +{
        +  "description": "Aggregation filters: 'results:with,sex:f,healthy:y'",
        +  "type": "string"
        +}
      • addedInput schema / properties / filter_advanced
        Added value: +{
        +  "description": "Essie expression filter: 'AREA[MinimumAge]RANGE[MIN,18 years]'",
        +  "type": "string"
        +}
      • changedInput schema / properties / intervention / description
        Previous value: -"Drug, device, or procedure name: 'pembrolizumab', 'insulin'"New value: +"Drug, device, or procedure: 'pembrolizumab', 'insulin'"
      • addedInput schema / properties / lead_sponsor
        Added value: +{
        +  "description": "Lead sponsor name only (not collaborators): 'National Cancer Institute'",
        +  "type": "string"
        +}
      • changedInput schema / properties / location / description
        Previous value: -"State or country: 'California', 'United States', 'Germany'"New value: +"Location search: 'California', 'Germany', 'Mayo Clinic'"
      • addedInput schema / properties / outcomes
        Added value: +{
        +  "description": "Outcome measure search: 'overall survival', 'HbA1c'",
        +  "type": "string"
        +}
      • changedInput schema / properties / page_size / description
        Previous value: -"Results per page (default 10, max 50)"New value: +"Results per page (default 10, max 100)"
      • changedInput schema / properties / page_size / maximum
        Previous value: -50New value: +100
      • changedInput schema / properties / page_size / minimum
        Previous value: --9007199254740991New value: +0
      • addedInput schema / properties / page_token
        Added value: +{
        +  "description": "Pagination token from previous response",
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Sort field: '@relevance', 'LastUpdatePostDate', 'EnrollmentCount:desc'",
        +  "type": "string"
        +}
      • changedInput schema / properties / sponsor / description
        Previous value: -"Sponsor/funder: 'Pfizer', 'NIH', 'Moderna'"New value: +"Sponsor/collaborator: 'Pfizer', 'NIH', 'Moderna'"
      • addedInput schema / properties / status / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "RECRUITING",
        +      "NOT_YET_RECRUITING",
        +      "ACTIVE_NOT_RECRUITING",
        +      "COMPLETED",
        +      "ENROLLING_BY_INVITATION",
        +      "SUSPENDED",
        +      "TERMINATED",
        +      "WITHDRAWN",
        +      "AVAILABLE",
        +      "NO_LONGER_AVAILABLE",
        +      "TEMPORARILY_NOT_AVAILABLE",
        +      "APPROVED_FOR_MARKETING",
        +      "WITHHELD",
        +      "UNKNOWN"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "enum": [
        +        "RECRUITING",
        +        "NOT_YET_RECRUITING",
        +        "ACTIVE_NOT_RECRUITING",
        +        "COMPLETED",
        +        "ENROLLING_BY_INVITATION",
        +        "SUSPENDED",
        +        "TERMINATED",
        +        "WITHDRAWN",
        +        "AVAILABLE",
        +        "NO_LONGER_AVAILABLE",
        +        "TEMPORARILY_NOT_AVAILABLE",
        +        "APPROVED_FOR_MARKETING",
        +        "WITHHELD",
        +        "UNKNOWN"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / status / description
        Previous value: -"Trial status: 'RECRUITING' (Currently recruiting participants), 'NOT_YET_RECRUITING' (Approved but not yet recruiting), 'ACTIVE_NOT_RECRUITING' (Ongoing but no longer recruiting), 'COMPLETED' (Trial has concluded), 'ENROLLING_BY_INVITATION' (Recruiting by invitation only), ... (9 total)"New value: +"Trial status. Pipe-delimited for multiple: 'RECRUITING' (Currently recruiting participants), 'NOT_YET_RECRUITING' (Approved but not yet recruiting), 'ACTIVE_NOT_RECRUITING' (Ongoing but no longer recruiting), 'COMPLETED' (Trial has concluded), 'ENROLLING_BY_INVITATION' (Recruiting by invitation only), ... (14 total)"
      • removedInput schema / properties / status / enum
        Removed value: -[
        -  "RECRUITING",
        -  "NOT_YET_RECRUITING",
        -  "ACTIVE_NOT_RECRUITING",
        -  "COMPLETED",
        -  "ENROLLING_BY_INVITATION",
        -  "SUSPENDED",
        -  "TERMINATED",
        -  "WITHDRAWN",
        -  "AVAILABLE"
        -]
      • removedInput schema / properties / status / type
        Removed value: -"string"
      • addedInput schema / properties / study_id
        Added value: +{
        +  "description": "Study ID search: 'NCT04852770' or org study ID",
        +  "type": "string"
        +}
      • addedInput schema / properties / titles
        Added value: +{
        +  "description": "Title/acronym search: 'KEYNOTE', 'SPRINT'",
        +  "type": "string"
        +}
    • Addedclinical_trials_size_stats
    • Changedclinical_trials_stats3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / condition / description
        Previous value: -"Disease, condition, or drug name: 'breast cancer', 'semaglutide', 'Alzheimer Disease'"New value: +"Disease, condition, or drug name: 'breast cancer', 'semaglutide'"
      • changedInput schema / properties / search_as_drug / description
        Previous value: -"Set true to search as drug/intervention instead of condition (use for drug names like 'semaglutide', 'pembrolizumab')"New value: +"Set true to search as drug/intervention instead of condition (for drug names like 'semaglutide')"
    • Changedcms_hospitals2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / required
        Removed value: -[
        -  "dataset"
        -]
    • Changedcms_nursing_homes2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / required
        Removed value: -[
        -  "dataset"
        -]
    • Changedcms_query1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcms_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcode_mode1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_amendment_amendments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_amendment_cosponsors1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_amendment_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_amendment_text1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_amendments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_actions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_amendments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_committees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_cosponsors1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_full_profile1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_related1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_subjects1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_summaries1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_text1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_titles1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bill_votes1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_bound_congressional_record1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_bills1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_details_by_congress1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_full_profile1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_house_communications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_meeting_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_meetings1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_nominations_for_committee1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_print_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_print_text1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_prints1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_report_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_report_text1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_reports1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_reports_for_committee1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committee_senate_communications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_committees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_congressional_record1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_crs_report_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_crs_reports1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_daily_congressional_record1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_hearing_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_hearings1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_house_communication_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_house_communications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_house_requirement_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_house_requirement_matching_communications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_house_requirements1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_house_votes1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_info1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_law_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_member_bills1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_member_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_member_full_profile1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_nomination_committees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_nomination_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_nomination_full_profile1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_nomination_hearings1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_nomination_nominees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_nominations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_recent_laws1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_search_bills1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_search_members1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_senate_communication_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_senate_communications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_senate_votes1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_summaries_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_treaties1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_treaty_committees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_treaty_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_treaty_full_profile1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_treaty_partitioned_actions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcongress_treaty_partitioned_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddoj_blog_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddoj_blog_entries1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddoj_press_release_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddoj_press_releases1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_osha_accident_injuries1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_osha_accidents1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_osha_inspections1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_osha_violations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_ui_claims_national1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_ui_claims_state1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddol_whd_enforcement1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedeia_electricity1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedeia_natural_gas1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedeia_petroleum1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedeia_state_energy1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedeia_total_energy1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_air_quality1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_aqs_daily1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_aqs_monitors1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_drinking_water1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_enforcement1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_facilities1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_facility_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_greenhouse_gas1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_rcra1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_superfund1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_toxic_releases1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepa_uv_index1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_agencies1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_arrest_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_crime_summarized1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_expanded_homicide1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_expanded_property1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_hate_crime1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_law_enforcement_employees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_lesdc1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_nibrs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfbi_use_of_force1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_animal_events1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_approved_drugs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_count1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_covid_serology1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_510k1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_classification1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_enforcement1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_events1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_pma1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_recalls1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_registrations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_device_udi1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_drug_counts1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_drug_events1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_drug_labels1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_drug_ndc1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_drug_recalls1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_drug_shortages1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_food_adverse_events1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_food_recalls1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_historical_docs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_nsde1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_substance1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_tobacco_problems1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfda_unii1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfdic_deposits1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfdic_failures1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfdic_financials1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfdic_history1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfdic_search_institutions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfdic_summary1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfec_candidate_financials1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfec_committee_disbursements1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfec_committee_financials1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfec_search_candidates1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfec_search_committees1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfec_top_candidates1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfema_disaster_declarations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfema_housing_assistance1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfema_public_assistance1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfema_query1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfema_regions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfooddata_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfooddata_list1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfooddata_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfr_agencies1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfr_document_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfr_executive_orders1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfr_presidential_documents1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfr_search_rules1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfred_release_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfred_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfred_series_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfred_series_info1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_endpoint_fields1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgovinfo_bill_text1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgovinfo_cbo_reports1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgovinfo_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedhud_fair_market_rents1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedhud_income_limits1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedhud_list_counties1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedhud_list_metro_areas1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedhud_list_states1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_datasets1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlobbying_contributions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlobbying_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlobbying_lobbyists1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlobbying_registrants1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlobbying_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_achievement_levels1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_available_variables1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_compare_groups1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_compare_states1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_compare_years1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_gap_variable_jurisdiction1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_gap_variable_years1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_gap_year_jurisdiction1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednaep_scores1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addednhtsa_car_seat_stations
    • Addednhtsa_complaint_detail
    • Changednhtsa_complaints7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / make / description
        Previous value: -"Vehicle make (e.g. 'honda', 'toyota', 'ford', 'tesla')"New value: +"Vehicle make: 'toyota', 'ford', 'tesla'"
      • changedInput schema / properties / model / description
        Previous value: -"Vehicle model (e.g. 'civic', 'camry', 'f-150', 'model 3')"New value: +"Vehicle model: 'camry', 'f-150', 'model 3'"
      • changedInput schema / properties / model_year / description
        Previous value: -"Model year (e.g. 2020, 2023)"New value: +"Model year"
      • addedInput schema / properties / model_year / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / model_year / minimum
        Added value: +-9007199254740991
      • changedInput schema / properties / model_year / type
        Previous value: -"number"New value: +"integer"
    • Changednhtsa_decode_vin2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / vin / description
        Previous value: -"Vehicle Identification Number (VIN), 11-17 characters"New value: +"Vehicle Identification Number (17 characters)"
    • Addednhtsa_makes
    • Addednhtsa_model_years
    • Changednhtsa_models7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / issue_type
        Added value: +{
        +  "description": "'r' for recalls, 'c' for complaints. Omit for general model list.",
        +  "enum": [
        +    "r",
        +    "c"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / make / description
        Previous value: -"Vehicle make (e.g. 'honda', 'toyota', 'ford')"New value: +"Vehicle make: 'toyota', 'ford', 'tesla'"
      • changedInput schema / properties / model_year / description
        Previous value: -"Optional model year filter"New value: +"Model year (optional for vPIC lookup)"
      • addedInput schema / properties / model_year / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / model_year / minimum
        Added value: +-9007199254740991
      • changedInput schema / properties / model_year / type
        Previous value: -"number"New value: +"integer"
    • Addednhtsa_recall_detail
    • Changednhtsa_recalls7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / make / description
        Previous value: -"Vehicle make (e.g. 'honda', 'toyota', 'ford', 'tesla')"New value: +"Vehicle make: 'toyota', 'ford', 'tesla', 'honda'"
      • changedInput schema / properties / model / description
        Previous value: -"Vehicle model (e.g. 'civic', 'camry', 'f-150', 'model 3')"New value: +"Vehicle model: 'camry', 'f-150', 'model 3', 'civic'"
      • changedInput schema / properties / model_year / description
        Previous value: -"Model year (e.g. 2020, 2023)"New value: +"Model year: 2020, 2023, 2024"
      • addedInput schema / properties / model_year / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / model_year / minimum
        Added value: +-9007199254740991
      • changedInput schema / properties / model_year / type
        Previous value: -"number"New value: +"integer"
    • Addednhtsa_safety_rating_detail
    • Changednhtsa_safety_ratings7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / make / description
        Previous value: -"Vehicle make: 'honda', 'toyota', 'ford', 'tesla'"New value: +"Vehicle make: 'honda', 'toyota', 'ford'"
      • changedInput schema / properties / model / description
        Previous value: -"Vehicle model: 'civic', 'camry', 'f-150', 'model 3'"New value: +"Vehicle model: 'civic', 'camry', 'f-150'"
      • changedInput schema / properties / model_year / description
        Previous value: -"Model year: 2020, 2023, 2024"New value: +"Model year"
      • addedInput schema / properties / model_year / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / model_year / minimum
        Added value: +-9007199254740991
      • changedInput schema / properties / model_year / type
        Previous value: -"number"New value: +"integer"
    • Changednih_projects_by_agency1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednih_search_projects1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednih_search_publications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednih_spending_by_category1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednoaa_climate_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednoaa_datasets1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednoaa_locations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednoaa_stations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednrel_fuel_stations1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednrel_solar1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changednrel_utility_rates1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_by_company1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_by_hospital1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_by_physician1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_by_specialty1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_ownership1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_research1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_summary1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_top1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedopen_payments_top_doctors1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedquery_fiscal_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregulations_comment_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregulations_docket_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregulations_document_detail1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregulations_search_comments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregulations_search_dockets1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregulations_search_documents1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscorecard_compare1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscorecard_query1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscorecard_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscorecard_top1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsearch_datasets1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsec_company_financials1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsec_company_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsec_filing_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusa_agency_overview1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusa_spending_by_agency1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusa_spending_by_award1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusa_spending_by_recipient1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusa_spending_by_state1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusa_spending_over_time1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusda_ag_query1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusda_crop_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusda_livestock1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusda_prices1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusgs_daily_water_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusgs_earthquake_count1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusgs_earthquakes1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusgs_significant1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusgs_water_data1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedusgs_water_sites1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_application_assignments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_application_continuity1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_application_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_application_documents1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_application_transactions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_petition_decisions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_ptab_decisions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_ptab_proceeding_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_ptab_proceedings1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeduspto_search_applications1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedwb_compare1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedwb_countries1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedwb_indicator1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedwb_search1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  3. 311 tool updatesv2026.3.9
    • First observedbea_dataset_info
    • First observedbea_fixed_assets
    • First observedbea_gdp_by_industry
    • First observedbea_gdp_by_state
    • First observedbea_gdp_national
    • First observedbea_input_output
    • First observedbea_international_investment
    • First observedbea_international_transactions
    • First observedbea_intl_services_trade
    • First observedbea_multinational_enterprises
    • First observedbea_nipa_underlying_detail
    • First observedbea_personal_income
    • First observedbea_underlying_gdp_by_industry
    • First observedbls_cpi_breakdown
    • First observedbls_employment_by_industry
    • First observedbls_search_series
    • First observedbls_series_data
    • First observedbts_border_crossings
    • First observedbts_transport_stats
    • First observedcalc_contract_rates
    • First observedcalc_search_rates
    • First observedcalc_suggest
    • First observedcdc_birth_indicators
    • First observedcdc_causes_of_death
    • First observedcdc_covid
    • First observedcdc_death_rates_historical
    • First observedcdc_disability
    • First observedcdc_drug_overdose
    • First observedcdc_life_expectancy
    • First observedcdc_mortality_rates
    • First observedcdc_nutrition_obesity
    • First observedcdc_places_city
    • First observedcdc_places_health
    • First observedcdc_query
    • First observedcdc_weekly_deaths
    • First observedcensus_population
    • First observedcensus_query
    • First observedcensus_search_variables
    • First observedcfpb_complaint_aggregations
    • First observedcfpb_complaint_detail
    • First observedcfpb_complaint_trends
    • First observedcfpb_search_complaints
    • First observedcfpb_state_complaints
    • First observedcfpb_suggest_company
    • First observedclear_cache
    • First observedclinical_trials_detail
    • First observedclinical_trials_search
    • First observedclinical_trials_stats
    • First observedcms_hospitals
    • First observedcms_nursing_homes
    • First observedcms_query
    • First observedcms_search
    • First observedcode_mode
    • First observedcongress_amendment_amendments
    • First observedcongress_amendment_cosponsors
    • First observedcongress_amendment_details
    • First observedcongress_amendment_text
    • First observedcongress_amendments
    • First observedcongress_bill_actions
    • First observedcongress_bill_amendments
    • First observedcongress_bill_committees
    • First observedcongress_bill_cosponsors
    • First observedcongress_bill_details
    • First observedcongress_bill_full_profile
    • First observedcongress_bill_related
    • First observedcongress_bill_subjects
    • First observedcongress_bill_summaries
    • First observedcongress_bill_text
    • First observedcongress_bill_titles
    • First observedcongress_bill_votes
    • First observedcongress_bound_congressional_record
    • First observedcongress_committee_bills
    • First observedcongress_committee_details
    • First observedcongress_committee_details_by_congress
    • First observedcongress_committee_full_profile
    • First observedcongress_committee_house_communications
    • First observedcongress_committee_meeting_details
    • First observedcongress_committee_meetings
    • First observedcongress_committee_nominations_for_committee
    • First observedcongress_committee_print_details
    • First observedcongress_committee_print_text
    • First observedcongress_committee_prints
    • First observedcongress_committee_report_details
    • First observedcongress_committee_report_text
    • First observedcongress_committee_reports
    • First observedcongress_committee_reports_for_committee
    • First observedcongress_committee_senate_communications
    • First observedcongress_committees
    • First observedcongress_congressional_record
    • First observedcongress_crs_report_details
    • First observedcongress_crs_reports
    • First observedcongress_daily_congressional_record
    • First observedcongress_hearing_details
    • First observedcongress_hearings
    • First observedcongress_house_communication_details
    • First observedcongress_house_communications
    • First observedcongress_house_requirement_details
    • First observedcongress_house_requirement_matching_communications
    • First observedcongress_house_requirements
    • First observedcongress_house_votes
    • First observedcongress_info
    • First observedcongress_law_details
    • First observedcongress_member_bills
    • First observedcongress_member_details
    • First observedcongress_member_full_profile
    • First observedcongress_nomination_committees
    • First observedcongress_nomination_details
    • First observedcongress_nomination_full_profile
    • First observedcongress_nomination_hearings
    • First observedcongress_nomination_nominees
    • First observedcongress_nominations
    • First observedcongress_recent_laws
    • First observedcongress_search_bills
    • First observedcongress_search_members
    • First observedcongress_senate_communication_details
    • First observedcongress_senate_communications
    • First observedcongress_senate_votes
    • First observedcongress_summaries_search
    • First observedcongress_treaties
    • First observedcongress_treaty_committees
    • First observedcongress_treaty_details
    • First observedcongress_treaty_full_profile
    • First observedcongress_treaty_partitioned_actions
    • First observedcongress_treaty_partitioned_details
    • First observeddoj_blog_detail
    • First observeddoj_blog_entries
    • First observeddoj_press_release_detail
    • First observeddoj_press_releases
    • First observeddol_osha_accident_injuries
    • First observeddol_osha_accidents
    • First observeddol_osha_inspections
    • First observeddol_osha_violations
    • First observeddol_ui_claims_national
    • First observeddol_ui_claims_state
    • First observeddol_whd_enforcement
    • First observedeia_electricity
    • First observedeia_natural_gas
    • First observedeia_petroleum
    • First observedeia_state_energy
    • First observedeia_total_energy
    • First observedepa_air_quality
    • First observedepa_aqs_daily
    • First observedepa_aqs_monitors
    • First observedepa_drinking_water
    • First observedepa_enforcement
    • First observedepa_facilities
    • First observedepa_facility_detail
    • First observedepa_greenhouse_gas
    • First observedepa_rcra
    • First observedepa_superfund
    • First observedepa_toxic_releases
    • First observedepa_uv_index
    • First observedfbi_agencies
    • First observedfbi_arrest_data
    • First observedfbi_crime_summarized
    • First observedfbi_expanded_homicide
    • First observedfbi_expanded_property
    • First observedfbi_hate_crime
    • First observedfbi_law_enforcement_employees
    • First observedfbi_lesdc
    • First observedfbi_nibrs
    • First observedfbi_use_of_force
    • First observedfda_animal_events
    • First observedfda_approved_drugs
    • First observedfda_count
    • First observedfda_covid_serology
    • First observedfda_device_510k
    • First observedfda_device_classification
    • First observedfda_device_enforcement
    • First observedfda_device_events
    • First observedfda_device_pma
    • First observedfda_device_recalls
    • First observedfda_device_registrations
    • First observedfda_device_udi
    • First observedfda_drug_counts
    • First observedfda_drug_events
    • First observedfda_drug_labels
    • First observedfda_drug_ndc
    • First observedfda_drug_recalls
    • First observedfda_drug_shortages
    • First observedfda_food_adverse_events
    • First observedfda_food_recalls
    • First observedfda_historical_docs
    • First observedfda_nsde
    • First observedfda_substance
    • First observedfda_tobacco_problems
    • First observedfda_unii
    • First observedfdic_deposits
    • First observedfdic_failures
    • First observedfdic_financials
    • First observedfdic_history
    • First observedfdic_search_institutions
    • First observedfdic_summary
    • First observedfec_candidate_financials
    • First observedfec_committee_disbursements
    • First observedfec_committee_financials
    • First observedfec_search_candidates
    • First observedfec_search_committees
    • First observedfec_top_candidates
    • First observedfema_disaster_declarations
    • First observedfema_housing_assistance
    • First observedfema_public_assistance
    • First observedfema_query
    • First observedfema_regions
    • First observedfooddata_detail
    • First observedfooddata_list
    • First observedfooddata_search
    • First observedfr_agencies
    • First observedfr_document_detail
    • First observedfr_executive_orders
    • First observedfr_presidential_documents
    • First observedfr_search_rules
    • First observedfred_release_data
    • First observedfred_search
    • First observedfred_series_data
    • First observedfred_series_info
    • First observedget_endpoint_fields
    • First observedgovinfo_bill_text
    • First observedgovinfo_cbo_reports
    • First observedgovinfo_search
    • First observedhud_fair_market_rents
    • First observedhud_income_limits
    • First observedhud_list_counties
    • First observedhud_list_metro_areas
    • First observedhud_list_states
    • First observedlist_datasets
    • First observedlobbying_contributions
    • First observedlobbying_detail
    • First observedlobbying_lobbyists
    • First observedlobbying_registrants
    • First observedlobbying_search
    • First observednaep_achievement_levels
    • First observednaep_available_variables
    • First observednaep_compare_groups
    • First observednaep_compare_states
    • First observednaep_compare_years
    • First observednaep_gap_variable_jurisdiction
    • First observednaep_gap_variable_years
    • First observednaep_gap_year_jurisdiction
    • First observednaep_scores
    • First observednhtsa_complaints
    • First observednhtsa_decode_vin
    • First observednhtsa_models
    • First observednhtsa_recalls
    • First observednhtsa_safety_ratings
    • First observednih_projects_by_agency
    • First observednih_search_projects
    • First observednih_search_publications
    • First observednih_spending_by_category
    • First observednoaa_climate_data
    • First observednoaa_datasets
    • First observednoaa_locations
    • First observednoaa_stations
    • First observednrel_fuel_stations
    • First observednrel_solar
    • First observednrel_utility_rates
    • First observedopen_payments_by_company
    • First observedopen_payments_by_hospital
    • First observedopen_payments_by_physician
    • First observedopen_payments_by_specialty
    • First observedopen_payments_ownership
    • First observedopen_payments_research
    • First observedopen_payments_search
    • First observedopen_payments_summary
    • First observedopen_payments_top
    • First observedopen_payments_top_doctors
    • First observedquery_fiscal_data
    • First observedregulations_comment_detail
    • First observedregulations_docket_detail
    • First observedregulations_document_detail
    • First observedregulations_search_comments
    • First observedregulations_search_dockets
    • First observedregulations_search_documents
    • First observedscorecard_compare
    • First observedscorecard_query
    • First observedscorecard_search
    • First observedscorecard_top
    • First observedsearch_datasets
    • First observedsec_company_financials
    • First observedsec_company_search
    • First observedsec_filing_search
    • First observedusa_agency_overview
    • First observedusa_spending_by_agency
    • First observedusa_spending_by_award
    • First observedusa_spending_by_recipient
    • First observedusa_spending_by_state
    • First observedusa_spending_over_time
    • First observedusda_ag_query
    • First observedusda_crop_data
    • First observedusda_livestock
    • First observedusda_prices
    • First observedusgs_daily_water_data
    • First observedusgs_earthquake_count
    • First observedusgs_earthquakes
    • First observedusgs_significant
    • First observedusgs_water_data
    • First observedusgs_water_sites
    • First observeduspto_application_assignments
    • First observeduspto_application_continuity
    • First observeduspto_application_details
    • First observeduspto_application_documents
    • First observeduspto_application_transactions
    • First observeduspto_petition_decisions
    • First observeduspto_ptab_decisions
    • First observeduspto_ptab_proceeding_details
    • First observeduspto_ptab_proceedings
    • First observeduspto_search_applications
    • First observedwb_compare
    • First observedwb_countries
    • First observedwb_indicator
    • First observedwb_search

TDQS

B3.1/5.0

Scored across 345 tools

Disambiguation2/5

The tool set spans dozens of agencies and domains, and while many tools are domain-specific, there are numerous overlapping tools within domains (e.g., congress_bill_details vs congress_bill_full_profile, epa_air_quality vs epa_aqs_daily, fda_device_enforcement vs fda_device_recalls, nhtsa_recalls vs nhtsa_recall_detail, multiple 'search' vs 'query' tools). The sheer scale and redundant 'full profile' convenience tools create significant ambiguity about which tool to select.

Naming Consistency3/5

Most tools follow a consistent agency_prefix + noun + verb pattern (e.g., congress_search_bills, fda_drug_events, nws_forecast), but there are notable deviations: 'code_mode' and 'clear_cache' break the pattern, some tools use inconsistent verb placement (e.g., 'search_datasets' vs 'list_datasets' vs 'get_endpoint_fields'), and the 'full_profile' tools mix conventions. Overall readable but not uniform.

Tool Count1/5

345 tools is an extreme count for a single MCP server. Even though it aggregates many government data sources, the server would be far more usable split into per-agency servers. The count is far beyond what an agent can effectively navigate, and many tools are redundant convenience wrappers.

Completeness3/5

The server covers an impressively broad range of government data domains, and many domains have reasonable search/detail coverage. However, completeness is uneven: some domains have deep coverage (Congress, FDA, EPA) while others are thin (e.g., only a few CDC tools, no update/delete operations since this is read-only data). The 'query' tools partially fill gaps, but the overall surface is more broad than systematically complete.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides access to 7 free government and open data APIs including NOAA weather, US Census demographics, NASA imagery, World Bank economics, Data.gov, and EU Open Data through 22 specialized tools, with most requiring no API keys.
    22
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Query 20 structured datasets from AI agents — healthcare providers (9M NPI records), SEC EDGAR filings, PACER federal courts, USPTO patents and trademarks, OFAC sanctions screening, crypto whale wallets, DeFi liquidation signals, Polymarket smart money, economic indicators (FRED/BLS), federal contracts, NOAA weather, and OTC shell risk scoring. Pay per query, no subscriptions
    75
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    The most comprehensive keyless federal-data MCP server. 36 tools for SAM.gov + USAspending + Federal Register + eCFR + Grants.gov. No API key, no registration, no signup. Works in Claude Desktop, Claude Code, Codex CLI, Cursor, Continue, Gemini CLI, and any MCP-aware host.
    6
    152
    497 npm
    8
    MIT