LiveDataLink
Server Details
294 public-data tools across 60 domains; source freshness varies. Free tier.
- Status
- Healthy
- Uptime
- 100.0% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- blackboxfoundry/livedatalink
- GitHub Stars
- 0
- Server Listing
- LiveDataLink
TDQS
Scored across 381 tools
The set contains many overlapping cross-source synthesis tools, e.g. resolve_entity, entity_resolve, entity_dossier, company_trust_check, counterparty_risk_score, kyb_aml_evidence_case_file, and issuer_diligence_dossier all target similar company-diligence questions with subtle boundary differences. Similarly, recall_screen, cpsc_recall_search, fda_drug_recalls, product_liability_screen, and company_complaint_profile overlap on product-safety/consumer-risk workflows. With 381 tools, an agent faces high misselection risk despite generally detailed individual descriptions.
Tool names are overwhelmingly lowercase snake_case, with no camelCase or chaotic mixing. Domain-prefix conventions vary (e.g. census_, fdic_, fbi_cde_, weather_current, stock_quote), but the style is still broadly predictable and readable. Minor deviations such as some tools having no domain prefix keep this from a 5.
381 tools is an extreme mismatch for a coherent tool set, far beyond the typical 3-15 well-scoped tools. Even with group-filtering tools like list_tool_groups and search_available_datasets, the full surface is too large for reliable agent selection. This is the server's most severe coherence problem.
The surface spans 82 data domains and includes search, lookup, history, comparison, and synthesis patterns across most areas, so obvious lifecycle gaps are limited for a read-only data-retrieval server. Some domains are thinner or demo-only, notably property/parcel coverage, and a few source limitations remain, which prevents a perfect score. Overall coverage is unusually broad rather than incomplete.
Available Tools
381 toolsaffordable_housing_refinance_evidence_packARead-onlyIdempotentInspect
Return a source-linked, state-level evidence pack for official HUD FHA maturity records and HUD LIHTC year-15 screening signals in one date window. Use this for affordable-housing debt or timing diligence. The two source sets are not silently property-matched because FHA's public workbook lacks a street-address key; results never claim a refinance opportunity, contact, valuation, or affordability expiration.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | Yes | ||
| end_date | Yes | Inclusive YYYY-MM-DD window end. | |
| start_date | Yes | Inclusive YYYY-MM-DD window start. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description is free to add higher-value context — and it does: the two source sets are not silently property-matched because FHA's workbook lacks a street-address key, and results make no refinance/contact/valuation/affordability-expiration claims. That is unusually candid about analytical limitations and non-claims.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the deliverable front-loaded and the caveats second; nothing is filler. Slightly heavy clause packing, but every clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, no-output-schema composite tool, the description covers scope, source composition, and explicit non-claims. It leaves pagination/limit behavior and the shape of the returned pack unstated, but the core decision inputs are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% (start_date, end_date, response_format documented; state and limit bare). The description reinforces the state-level and date-window framing but adds no syntax, default, or meaning for the undocumented 'limit' parameter or any new detail beyond the schema. Baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and composite resource ('return a source-linked, state-level evidence pack') and names both underlying source sets (HUD FHA maturity records, HUD LIHTC year-15 signals) plus the scope (one date window). An agent can distinguish this composite pack from the sibling single-source tools hud_fha_maturity_search and hud_lihtc_year15_radar 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this for affordable-housing debt or timing diligence' gives an intended use case, which is more than nothing. However it never names the narrower siblings (hud_fha_maturity_search, hud_lihtc_year15_radar) or states when to prefer them over this combined pack, so the routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
air_qualityARead-onlyIdempotentInspect
Get current air quality data for any location. Returns US AQI index, PM2.5, PM10, ozone, NO2, SO2, and CO levels with health category rating. Use this for 'what's the air quality?', 'is it safe to go outside?', 'pollution levels', 'AQI in Los Angeles', 'should I wear a mask?', 'is there smoke in the air?', or any air quality or pollution question.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | City, zip code, or place name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as read-only, idempotent, open-world, and non-destructive. The description adds behavioral detail by stating the response includes a health category rating and specific pollutant levels, which helps the agent set expectations about live, current measurements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and return data, then gives a practical set of example queries. The list of query phrasings is slightly redundant near the end, but overall it is crisp and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with strong annotations and a complete schema, the description covers what data is returned and the kinds of questions it answers. It does not discuss data freshness, units, or coverage limitations, but 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single 'location' parameter as 'City, zip code, or place name' with 100% coverage. The description's examples reinforce that location can be a place name like Los Angeles, but it does not add 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a clear resource ('current air quality data'), and enumerates the exact data returned (US AQI, PM2.5, PM10, ozone, NO2, SO2, CO, health category). It is immediately distinguishable from weather, health, or pollution-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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit natural-language triggers ('what's the air quality?', 'is it safe to go outside?', 'AQI in Los Angeles') and states to use it for 'any air quality or pollution question.' It does not name alternatives or exclusion cases, but the guidance is clear enough for an agent to select this tool confidently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_health_reportARead-onlyIdempotentInspect
One-call financial-health read for a US bank or savings institution. Give a bank name or an FDIC certificate (CERT) number. Joins FDIC BankFind institution + financials (total assets, deposits, net income, return on assets/equity, active-vs-failed status) with the CFPB Consumer Complaint Database (complaint volume and top complaint products for the matched company) into a HEALTHY / STABLE / WATCH / FAILED read with the numbers behind it. FDIC is the primary signal; CFPB complaint data is best-effort and degrades gracefully if the bank's complaint records cannot be matched. Useful for picking a sponsor/partner bank, treasury counterparty checks, or deposit-safety questions. Informational, not a rating or advice.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | No | Bank or savings institution name (e.g. 'JPMorgan Chase Bank', 'Cross River Bank'). Use the full legal name for best matching. | |
| cert | No | Optional FDIC certificate (CERT) number for an exact institution match, used instead of a name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/idempotent annotations already covering safety, the description adds behavioral nuance beyond structured data: 'FDIC is the primary signal; CFPB complaint data is best-effort and degrades gracefully if the bank's complaint records cannot be matched,' plus the explicit 'not a rating or advice' boundary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose, and each sentence pulls weight (data sources, output, fallback, use cases). It loses a point for restating parameter guidance already present in the schema, making it slightly longer than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still communicates the returned read's contents: the category label, underlying financial metrics, complaint volume/products, and graceful degradation. The use-case and disclaimer sentences close the remaining selection and invocation questions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both params and the full-legal-name matching tip. The description's 'bank name or FDIC certificate (CERT) number' reinforces the one-of relationship but adds little beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('financial-health read'), a specific resource ('US bank or savings institution'), and concrete output categories (HEALTHY/STABLE/WATCH/FAILED). The explicit FDIC + CFPB join distinguishes it from sibling FDIC-only and CFPB-only tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases (sponsor/partner bank selection, treasury counterparty checks, deposit-safety questions) and frames the tool as a one-call read, which implies when it is appropriate. However, it never names alternatives or says when-not-to-use it, so the guidance is clear but not fully exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bea_compare_statesARead-onlyIdempotentInspect
Compare one official BEA SASUMMARY annual indicator across 2–8 requested states (or the United States) for an exact year. Returns values sorted high-to-low, exact unit, missing-value evidence, GeoFIPS, source hash, and attribution. Use this for 'compare 2024 Texas and California GDP', 'which of these states had higher 2023 per-capita income?', or 'compare regional price levels'. It does not rank all states unless they are explicitly supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Four-digit calendar year. Hosted source coverage is reported in every response. | |
| indicator | Yes | Supported indicator slug/name or BEA SASUMMARY line code; examples: gdp, real_gdp, personal_income, per_capita_personal_income, regional_price_parities, total_employment. | |
| geographies | Yes | Two to eight distinct state selectors. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: output is sorted high-to-low, includes exact unit, missing-value evidence, GeoFIPS, source hash, and attribution. It does not disclose rate limits or the 2–8 boundary's behavior at the edges, but it goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action before examples and the scope caveat. Each sentence earns its place, though the enumeration of return fields is slightly list-like rather than tightly worded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and it does list key output fields (sorted values, unit, missing-value evidence, GeoFIPS, source hash, attribution). Combined with full schema coverage and read-only annotations, an agent has what it needs; only edge-case parameter behavior (e.g., duplicate/over-8 selectors) is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents year, indicator (with example slugs), geographies, and response_format. The description restates the 2–8 state constraint and names example indicators, adding marginal value but no new syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Compare) and resource (one official BEA SASUMMARY annual indicator across 2–8 requested states) for an exact year, and it bounds scope with 'It does not rank all states unless they are explicitly supplied.' This differentiates it from trend/profile siblings without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three concrete usage examples ('compare 2024 Texas and California GDP', 'which of these states had higher 2023 per-capita income?', 'compare regional price levels') make the intended call pattern obvious, and the closing sentence defines a scope limit. However, it never names an alternative sibling (e.g., bea_state_economic_trend) or states when to prefer one, so it falls short of explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bea_search_state_indicatorsARead-onlyIdempotentInspect
Search the 15 indicators in LiveDataLink's self-hosted official BEA SASUMMARY annual state snapshot. Returns canonical indicator names, definitions, units, exact coverage, pagination, evidence hash, and attribution. Use this for 'what BEA state measures are hosted?', 'find regional price parity', or to resolve an indicator before a history call. Scope is the compact annual state summary, not the full BEA API or industry detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results. Default 20. | |
| query | No | Optional words matched against indicator name, definition, and unit. | |
| offset | No | Results to skip. Default 0. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds real value beyond them by enumerating the returned payload (canonical names, definitions, units, coverage, pagination, evidence hash, attribution) and pinning the data scope to a compact annual snapshot of 15 indicators. It does not mention auth or rate limits, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and scope, followed by concrete use cases and the boundary statement. Dense but every clause carries information; the first sentence is long yet not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining returns, and it does list the payload fields. Scope boundaries are explicit. It falls short of a 5 only because pagination mechanics and the meaning of the 'evidence hash' are not explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all four parameters documented (limit, query, offset, response_format), so the baseline is 3. The description adds only marginal meaning beyond the schema, hinting that the query matches names/definitions/units and that pagination exists, but gives no syntax or format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (the 15 indicators in LiveDataLink's self-hosted official BEA SASUMMARY annual state snapshot), and the second half of the description explicitly bounds the scope against the full BEA API and industry detail. This lets an agent distinguish it from siblings like bea_state_economic_history or bea_compare_states without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger questions ('what BEA state measures are hosted?', 'find regional price parity') and names the downstream workflow it feeds ('resolve an indicator before a history call'). It also states when not to use it ('not the full BEA API or industry detail'), which is rare and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bea_state_economic_historyARead-onlyIdempotentInspect
Return bounded annual history for one official BEA SASUMMARY state or U.S. indicator. Includes exact value, unit, state GeoFIPS, pagination, source update date, evidence hash, and attribution. Use this for 'Texas real GDP since 2018', 'California per-capita income history', or 'US employment by year'. Published aggregate annual estimates only; BEA can revise prior vintages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum years. Default 20. | |
| offset | No | Years to skip. Default 0. | |
| end_year | No | Four-digit calendar year. Hosted source coverage is reported in every response. | |
| geography | Yes | State name, USPS abbreviation, 5-digit state-summary GeoFIPS, or United States/US. | |
| indicator | Yes | Supported indicator slug/name or BEA SASUMMARY line code; examples: gdp, real_gdp, personal_income, per_capita_personal_income, regional_price_parities, total_employment. | |
| start_year | No | Four-digit calendar year. Hosted source coverage is reported in every response. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/open-world profile, so the bar is lower, and the description adds real value: it enumerates returned fields (value, unit, GeoFIPS, pagination, source update date, evidence hash, attribution) and discloses the revision caveat ('BEA can revise prior vintages'). That revision behavior is a genuine behavioral trait beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by return contents and then three illustrative examples. Every sentence carries information; only minor tightening is possible around the example list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description does well to list return fields and revision behavior. It is incomplete on two points an agent needs: how to choose this over bea_state_economic_trend, and how the year-range filters relate to the limit/offset pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only light framing ('bounded', 'state GeoFIPS', 'unit') that the schema already carries, and it does not clarify how limit/offset interact with start_year/end_year.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Return") and resource ("bounded annual history for one official BEA SASUMMARY state or U.S. indicator"), making the operation clear. It does not differentiate from sibling BEA tools such as bea_state_economic_trend, which reads as an overlapping concept, so an agent cannot disambiguate by description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The concrete example queries ("Texas real GDP since 2018", "US employment by year") give implied usage context, and the scope note ('Published aggregate annual estimates only') bounds the domain. However, no when-not guidance or named alternatives are given, so the split against bea_state_economic_trend, bea_state_economic_profile, and bea_compare_states 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.
bea_state_economic_profileARead-onlyIdempotentInspect
Build a compact official BEA annual economic profile for one state or the United States across all 15 hosted SASUMMARY indicators: GDP, income, consumer spending, per-capita measures, regional price levels, and jobs. Each value carries its own year and unit because source update calendars differ. Use this for 'BEA profile for North Carolina', 'state GDP income jobs packet', or as the BEA leg of a regional market brief combined with Census, BLS, SBA, FDIC, or housing data. Aggregate estimates only; not a forecast or investment recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| geography | Yes | State name, USPS abbreviation, 5-digit state-summary GeoFIPS, or United States/US. | |
| as_of_year | No | Four-digit calendar year. Hosted source coverage is reported in every response. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/openWorld/non-destructive, so the bar is lower. The description still adds genuinely useful conduct: mixed vintages ('Each value carries its own year and unit because source update calendars differ') and the scope disclaimer ('Aggregate estimates only; not a forecast or investment recommendation'). It does not explain response payload shape, but that is a minor omission here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and scope, then the vintage caveat, then usage examples and disclaimers. Every sentence carries information, though the indicator enumeration is somewhat list-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the return-value burden and does so at a useful level (15 indicators, per-value year/unit, aggregate-only). The main missing element is explicit routing against its BEA siblings, which prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so geography, as_of_year, and response_format are already documented in the schema. The description corroborates the geography scope ('one state or the United States') but adds no format or constraint detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Build') plus resource ('official BEA annual economic profile') and an explicit scope ('one state or the United States across all 15 hosted SASUMMARY indicators'). It is clear what the tool returns, but it never names or distinguishes itself from the four sibling BEA tools (bea_state_economic_history, bea_state_economic_trend, bea_compare_states, bea_search_state_indicators), so an agent must infer which BEA tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrases ('BEA profile for North Carolina', 'state GDP income jobs packet') and positions the tool as a component of a regional market brief alongside Census/BLS/SBA/FDIC data. It stops short of stating when NOT to use it or which BEA sibling to prefer for time-series or comparison needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bea_state_economic_trendARead-onlyIdempotentInspect
Calculate prior-observation and exact five-year changes for one official BEA SASUMMARY state indicator. Returns component observations, absolute and percent changes, five-year CAGR when meaningful, units, vintage evidence, and caveats. Use this for 'five-year Florida GDP trend', 'how has Ohio employment changed?', or 'California real per-capita income growth'. The optional as-of year prevents future observations from entering a historical calculation.
| Name | Required | Description | Default |
|---|---|---|---|
| geography | Yes | State name, USPS abbreviation, 5-digit state-summary GeoFIPS, or United States/US. | |
| indicator | Yes | Supported indicator slug/name or BEA SASUMMARY line code; examples: gdp, real_gdp, personal_income, per_capita_personal_income, regional_price_parities, total_employment. | |
| as_of_year | No | Four-digit calendar year. Hosted source coverage is reported in every response. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower; the description still adds real context by disclosing the return payload (component observations, absolute/percent changes, CAGR, units, vintage evidence, caveats) and the temporal-safety role of as_of_year. This goes beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core verb and resource, then returns, then use cases and the as-of caveat. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what comes back, covers all four parameters, and supplies invocation examples, making it largely self-sufficient. The one gap is sibling routing: an agent choosing between this and bea_state_economic_history gets no explicit guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description earns an extra point by explaining the semantic intent of as_of_year ('prevents future observations from entering a historical calculation'), which the schema only weakly hints at. It adds no syntax beyond the schema for the other three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Calculate prior-observation and exact five-year changes for one official BEA SASUMMARY state indicator') and enumerates the returned components, so the agent knows exactly what computation this performs. It does not name the adjacent siblings (bea_state_economic_history, bea_state_economic_profile, bea_compare_states), so differentiation is left to inference from the 'trend/change' framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three concrete invocation examples ('five-year Florida GDP trend', 'how has Ohio employment changed?', 'California real per-capita income growth') give clear context for when this tool applies. It stops short of stating when NOT to use it or naming an alternative sibling for profile/history lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beneficial_owner_screenARead-onlyIdempotentInspect
One-call KYB/AML ownership-chain sanctions screen: answers the real question 'is anyone in this company's ownership chain sanctioned?', not just 'is the top-level name on a list?'. Give a company name or a 20-character LEI; the tool maps the ownership structure via GLEIF (keyless CC0 reference data) - the subject entity, its ULTIMATE parent (top of the chain), and its reported direct subsidiaries, capped at about 15 entities so a broad group stays bounded - then SCREENS each entity in that set against the local sanctions/watchlist matcher (OFAC SDN / EU / UN / BIS), the same first-party matcher company_trust_check uses. Returns the mapped ownership structure, a per-entity CLEAR / HIT result (each hit naming the matched list entry, source, and score), and an overall verdict: CLEAR (no entity matched) vs HITS-FOUND (at least one entity in the chain matched). This catches a sanctioned parent or subsidiary that screening only the counterparty name would miss - the exposure beneficial-ownership rules target. Best-effort: if GLEIF hops fail the subject is still screened; if the sanctions binding is unavailable the screen is noted as unavailable, never silently passed. Only relationships an entity self-reports to GLEIF are shown. A name match is not proof of identity and must be cleared. Informational public-record synthesis, not legal, compliance, or sanctions-clearance advice.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | No | Optional exact 20-character LEI code to anchor the ownership chain directly (e.g. '5493006MHB84DD0ZWV18'). Overrides a name search. | |
| company | No | Company / organization name (e.g. 'Alphabet Inc.', 'JPMorgan') or a 20-character LEI code. Provide this or 'lei'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/openWorld/idempotent annotations: it discloses the GLEIF mapping approach, the ~15 entity cap, the sanctions sources screened, best-effort failure behavior, that only self-reported GLEIF relationships are shown, and that name matches are not proof of identity. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, the description is dense with non-redundant information and every sentence earns its place: purpose, method, scope, failure behavior, return contents, and caveats. The core value proposition is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains what the tool returns: mapped ownership structure, per-entity CLEAR/HIT results with matched list entry/source/score, and an overall verdict. It also covers edge cases like GLEIF failure and unavailable sanctions binding, making it practically complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents both parameters. The description adds meaningful semantics on top: the LEI must be 20 characters, an LEI can be supplied via either field, and the lei parameter overrides a name search. This helps the agent disambiguate parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: a one-call KYB/AML ownership-chain sanctions screen. It clearly frames the real question being answered and distinguishes itself from a simple top-level-name list check, which separates it from related screening and lookup tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when this tool is valuable: when ownership-chain exposure must be caught beyond screening only the counterparty name. It references the same matcher as company_trust_check and notes GLEIF-based mapping, giving useful context, though it does not explicitly enumerate sibling alternatives or state hard 'do not use when' conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bls_indicatorARead-onlyIdempotentInspect
US labor & price statistics from the Bureau of Labor Statistics by friendly name. Available: unemployment_rate, labor_force_participation, employment_population_ratio, cpi, cpi_less_food_energy, nonfarm_payrolls, avg_hourly_earnings, avg_weekly_hours, ppi_final_demand. Returns a monthly time series. Keyless official BLS data.
| Name | Required | Description | Default |
|---|---|---|---|
| end_year | No | End year (optional; defaults to current year). | |
| indicator | No | Indicator name, one of: unemployment_rate, labor_force_participation, employment_population_ratio, cpi, cpi_less_food_energy, nonfarm_payrolls, avg_hourly_earnings, avg_weekly_hours, ppi_final_demand. | |
| start_year | No | Start year (optional; defaults to ~3 years back). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds real value beyond that: it discloses the return shape (a monthly time series) and the authentication posture (keyless, official BLS data), both of which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the capability statement comes first and the operational details (indicator list, return shape, keyless access) follow compactly. Minor redundancy between the indicator list here and in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does state that a monthly time series is returned, plus that no key is required. It omits units/seasonal-adjustment conventions, which would be helpful for a statistics tool, but nothing critical to calling it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the indicator list and the start/end year defaults are already documented in the schema. The description repeats the indicator enumeration but adds no syntax, unit, or frequency detail beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (US labor & price statistics from BLS) and enumerates the nine friendly indicator names, making the scope concrete. It does not explicitly name the nearest sibling (bls_series) or explain how the friendly-name lookup differs from a series-ID lookup, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not guidance and no named alternative, despite several overlapping siblings (bls_series, fred_quick_indicator, fred_observations) that an agent must choose between. The indicator list implies usage but does not help the agent route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bls_seriesARead-onlyIdempotentInspect
Fetch any BLS time series by its raw series ID (e.g. 'LNS14000000' for the unemployment rate, or a state/industry series). For when you know the exact BLS series ID.
| Name | Required | Description | Default |
|---|---|---|---|
| end_year | No | End year (optional). | |
| series_id | Yes | BLS series ID, e.g. 'LNS14000000'. | |
| start_year | No | Start year (optional). |
TDQS
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 safety profile is well covered. The description adds only that the series ID is raw and gives examples; it omits behavior such as default date ranges, return format, or how start_year/end_year affect the fetched time series.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences with no wasted words. The core capability and usage condition are 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with rich annotations, the description covers what the tool does and when to use it. However, because there is no output schema, it should ideally explain what the fetched time series returns or how start_year/end_year defaults work, leaving a moderate completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description's mention of 'raw series ID' and example IDs adds slight meaning beyond the schema, but it does not elaborate on start_year or end_year semantics, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Fetch any BLS time series by its raw series ID.' It distinguishes the tool's input mode from likely siblings by emphasizing exact 'raw series ID' usage and provides concrete examples such as 'LNS14000000'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use the tool: 'For when you know the exact BLS series ID.' However, it does not name an alternative for when the exact ID is unknown, such as a search or indicator-based sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_detailsARead-onlyIdempotentInspect
Get full catalog metadata for a single book by its Project Gutenberg id (title, authors, subjects, languages, copyright, download count, and whether its full text is indexed here).
| Name | Required | Description | Default |
|---|---|---|---|
| gutenberg_id | Yes | Project Gutenberg ebook id, e.g. 84 (Frankenstein). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds real value by enumerating what is returned (title, authors, subjects, languages, copyright, download count, full-text index status), which matters since 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with an enumerated parenthetical; every clause earns its place and nothing is repeated or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-record lookup with annotations covering safety and a description enumerating the return fields, an agent has what it needs despite the absence of an output schema. Only the lack of sibling routing keeps it from the top band.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already names and exemplifies the id ('84 (Frankenstein)'). The description's 'Project Gutenberg id' adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get full catalog metadata') and resource ('a single book by its Project Gutenberg id'), and enumerates the returned fields, which implicitly separates it from the search and full-text siblings. It does not explicitly name a sibling it is not, so it falls just short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'single book by its Project Gutenberg id' conveys the usage context (a known-id metadata lookup) but offers no explicit when-to-use/no-use guidance and never points to book_search or book_get_text as alternatives. Minimum viable context only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_fulltext_searchARead-onlyIdempotentInspect
Search INSIDE the indexed corpus of top public-domain books for a phrase or keywords and get back the matching passages, each with the book title, author, and a snippet around the match. This is the headline feature: agents can find where a passage appears across great books. Optionally restrict to one book by gutenberg_id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum passages to return (default 10, max 50). | |
| query | Yes | Phrase or keywords to find inside the books, e.g. 'it was the best of times', 'whale'. | |
| gutenberg_id | No | Optional: restrict the search to a single indexed book by its Gutenberg id. |
TDQS
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 fully covered. The description adds that results are snippets (passages) rather than full books and describes the returned fields, which is useful, but doesn't discuss ranking, matching mode, or corpus size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and result format. The phrase 'This is the headline feature' is slightly promotional but still informative about prominence. No wasted words overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param read-only search with full schema coverage and no output schema, the description covers purpose, scope, result shape, and the one optional filter. It stops short of explaining matching behaviour or ranking, which would have made it fully self-sufficient, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, limit (with default/max), and gutenberg_id. The description repeats the gutenberg_id restriction without adding syntax or semantics beyond the schema, matching the baseline for fully documented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search), scope (inside indexed public-domain corpus), and resource (books), plus the return shape (matching passages with title, author, snippet). Distinguishes itself from siblings like book_search (metadata) and book_get_text (full text of one book) by emphasizing in-text phrase search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that it finds where a passage appears across great books and that gutenberg_id optionally restricts to one book. It doesn't explicitly name book_search or book_get_text as alternatives, but the search-vs-fetch distinction is clear enough to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_get_textARead-onlyIdempotentInspect
Return the full text of an indexed book by Gutenberg id, paginated by passage. Use from_seq + max_passages to page through it. For books in the catalog that are NOT indexed locally, returns the public gutenberg.org plain-text URL so the agent can fetch it directly.
| Name | Required | Description | Default |
|---|---|---|---|
| from_seq | No | Passage index to start from (0-based, default 0). | |
| gutenberg_id | Yes | Project Gutenberg ebook id. | |
| max_passages | No | Maximum passages to return per call (default 40, max 200). |
TDQS
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 fully covered. The description adds real behavioral value beyond them: it is paginated by passage and falls back to returning a public URL for un-indexed books. However it never says what a 'passage' is, whether a total count is returned, or how the agent knows paging is exhausted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, front-loaded with the core action before the paging instruction and the fallback caveat. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does explain the two possible return shapes (paginated passage text or a gutenberg.org URL), which is the critical thing an agent needs. It stops short of explaining pagination termination or passage granularity, a minor gap for a paged-text tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with defaults and min/max bounds documented for all three parameters, so the schema does the heavy lifting and a 3 is the baseline. The description reinforces the paging contract (from_seq + max_passages) but adds no syntax or semantic detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the full text of an indexed book by Gutenberg id') and carves out the indexed-vs-catalog scope. It does not name the closely related siblings (book_fulltext_search, book_details) that an agent might otherwise pick, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says to use from_seq + max_passages to page through the text, which is parameter usage rather than tool selection. It does give one genuine routing condition ('for books NOT indexed locally, returns the gutenberg.org URL'), but never says when to prefer this over book_fulltext_search or book_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_searchARead-onlyIdempotentInspect
Search the full Project Gutenberg catalog (~78,500 public-domain books) live via Gutendex by title / author / subject keyword, with optional author, subject, and language filters. Ranked by keyword relevance then download popularity. Returns each book's Gutenberg id, title, author(s), language, and download count. Use book_fulltext_search to search inside the locally indexed top books.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Title / author / subject keyword, e.g. 'frankenstein', 'sherlock holmes', 'astronomy'. | |
| author | No | Optional author-name fragment, e.g. 'Shelley', 'Twain'. | |
| subject | No | Optional subject fragment, e.g. 'Science fiction', 'Detective'. | |
| language | No | Optional language code filter, e.g. 'en', 'fr'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely useful context beyond that: it is a live external call against Gutendex, results are ranked by keyword relevance then download popularity, and it discloses the returned fields. It stops short of mentioning rate limits or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: scope, ranking/return behavior, and the sibling routing. Front-loaded with the core action and the discriminating alternative placed last, which is the right order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the returned fields (Gutenberg id, title, author(s), language, download count), and covers source, ranking, and sibling disambiguation. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including limit's default/max) are already documented in the schema. The description's mention of title/author/subject keyword and the optional author/subject/language filters largely restates that. Baseline 3 is appropriate when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the full Project Gutenberg catalog ... by title / author / subject keyword') with scope (~78,500 books) and source (Gutendex). It explicitly distinguishes itself from the sibling book_fulltext_search, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (book_fulltext_search) and the condition that selects it ('to search inside the locally indexed top books'). This is an explicit when/when-not split, so the agent knows which of the two book tools to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_statusARead-onlyIdempotentInspect
Report the books store status: the catalog is served live via Gutendex (78,000+ books), plus the local D1 indexed-corpus counts (books with full text indexed, total indexed passages, last refresh timestamp).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 profile. The description adds meaningful behavioral context beyond annotations by clarifying that the catalog is served live via Gutendex and that the D1 counts are local indexed-corpus statistics, including the last refresh timestamp. This helps the agent understand what data source and freshness semantics to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose ('Report the books store status') before listing the key data components. Every element adds value: data source, scale, indexed-corpus metrics, and refresh timestamp. There is 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status-reporting tool, the description is complete. It tells the agent what to expect in the response: live catalog availability, indexed corpus counts, total passages, and last refresh timestamp. No output schema is present, but the description compensates well by outlining the return categories. No additional context seems necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There are no parameter semantics to explain, and the description appropriately focuses on the output content instead. Because there is no input schema burden, the description does not need to compensate for undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Report') and a clear resource ('books store status'), then enumerates exactly what the status contains: live Gutendex catalog, local D1 indexed-corpus counts, and last refresh timestamp. This clearly distinguishes it from sibling book tools like book_search, book_details, and book_fulltext_search, which operate on individual books or search results rather than the store's health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to use when an agent needs a high-level status or health summary of the books store, rather than specific book content. However, there is no explicit when-to-use guidance, no mention of when not to use it, and no reference to alternative sibling tools. The usage intent is clear enough but left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bounce_scannerARead-onlyIdempotentInspect
Screen one or more US tickers for a mean-reversion 'bounce' setup on daily bars: price near support (recent pivot low) or the moving average, RSI oversold and turning up, a bullish latest candle, and volume at/above its recent average. Returns per-symbol {isBounce, score 0-100, reasons, price, rsi, distanceToSupportPct, supportLevel}. ALL thresholds are tunable inputs (rsi_threshold, ma_period, proximity_pct, lookback_days) so calibration is a parameter change. HEURISTIC signal for research, not investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | A single ticker (e.g. 'AAPL'). Use this or `symbols`. | |
| symbols | No | Multiple tickers to scan (max 15). | |
| ma_period | No | Simple moving-average period used as a dynamic support reference (default 50). | |
| lookback_days | No | Trailing daily bars to analyze (default 180). | |
| proximity_pct | No | How close (percent) price must be to support/MA to count as 'near' (default 3). | |
| rsi_threshold | No | RSI(14) must be at or below this to qualify as oversold (default 35). |
TDQS
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 real value beyond them: it declares the signal is a heuristic for research rather than advice, discloses that it runs on daily bars, and enumerates the returned fields (score 0-100, reasons, etc.) in the absence of an output schema. It does not mention data-source freshness or rate limits, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the screening purpose, followed by the criteria, return shape, tunability, and disclaimer in four tight sentences. The parenthetical list of tunable params is mildly redundant with the schema, but every sentence carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the per-symbol return fields. It covers purpose, criteria, tunable inputs, output shape, and the heuristic caveat, and annotations handle the safety profile. An agent has everything needed to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a baseline of 3 applies. The description goes further by framing all four threshold inputs (rsi_threshold, ma_period, proximity_pct, lookback_days) as the tuning surface, telling the agent that calibration is achieved by parameter change rather than implying fixed behavior. It does not restate defaults or ranges, which the schema already supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (screen) and resource (US tickers on daily bars) and enumerates the exact conditions defining a 'bounce' (proximity to support/MA, oversold turning-up RSI, bullish candle, above-average volume). This is distinguishable from siblings like candlestick_signals or support_resistance_levels, which surface raw components rather than a combined screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Screen one or more US tickers', 'HEURISTIC signal for research, not investment advice') and the criteria make clear when a symbol would qualify, but it never states when to prefer this tool over candlestick_signals, support_resistance_levels, or stock_quote. No explicit alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bts_transport_border_activity_packARead-onlyIdempotentInspect
Combine every available official BTS crossing measure for one land-border port into a provenance-backed current-versus-prior activity evidence pack. Keeps trucks, trains, buses, vehicles, passengers, and pedestrians separate while reporting window totals, completeness, and percent change. Use this for 'build a border activity pack for Laredo', 'what changed at Otay Mesa?', or a logistics/corridor briefing. It never fabricates a total across incompatible measures and is not a congestion or wait-time measure.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Exact BTS four-digit port code or an unambiguous U.S. land-border port name. Search first when needed. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| trailing_months | No | Months per current/prior comparison window. Default 12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds real context beyond that: measures are kept separate by mode, output includes window totals, completeness, and percent change, and it guarantees it never fabricates a total across incompatible measures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first defines the output, the second defines the composition and metrics, the third gives usage triggers and boundaries. The core purpose is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value burden and does so reasonably (window totals, completeness, percent change, per-mode separation). Minor gaps remain on the exact shape of the pack and how prior-window defaults resolve, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents port, response_format, and trailing_months with types, bounds, and defaults. The description adds no parameter-level detail (e.g., how trailing_months interacts with the current/prior windows), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (combine) and resource (every available official BTS crossing measure for one land-border port) and names the deliverable (a provenance-backed current-versus-prior activity evidence pack). The 'for one land-border port' scope and the aggregate-measures framing distinguish it from the sibling search/compare/trend tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggering examples ('build a border activity pack for Laredo', 'what changed at Otay Mesa?', logistics/corridor briefing) and a negative boundary ('not a congestion or wait-time measure'). It does not explicitly route to the sibling alternatives (bts_transport_search_ports, bts_transport_compare_ports, bts_transport_border_trend), so the when-not-this guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bts_transport_border_trendARead-onlyIdempotentInspect
Return a bounded monthly history for one official BTS land-border port and one consistent crossing measure from the self-hosted snapshot. Includes exact month, crossing count, stable port identity, pagination, source hash, and provenance. Use this for 'monthly truck crossings at Laredo', 'pedestrian crossings at San Ysidro since 2023', or a reproducible port-volume chart. Counts inbound crossing events, not unique vehicles or people.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Exact BTS four-digit port code or an unambiguous U.S. land-border port name. Search first when needed. | |
| limit | No | Maximum monthly observations. Default 24. | |
| offset | No | Observations to skip. Default 0. | |
| measure | Yes | Official BTS crossing measure. Measures have different units and must not be added together. | |
| end_month | No | Calendar month in YYYY-MM format. | |
| start_month | No | Calendar month in YYYY-MM format. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real behavioral detail beyond that — data comes from a 'self-hosted snapshot', results are bounded and paginated, and each row carries a source hash and provenance for reproducibility. The most valuable addition is the unit caveat: counts are inbound crossing events, not unique vehicles or people, which prevents a common misinterpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core operation before the examples and the unit caveat. Every sentence contributes, though the example list is slightly long relative to the amount of new information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so: exact month, crossing count, stable port identity, pagination, source hash, provenance. Combined with the usage examples and the counting-semantics caveat, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum and format notes for measure, month patterns, and pagination bounds, so the schema does the heavy lifting and a 3 is the baseline. The description adds only the consistency constraint ('one consistent crossing measure') and the notion of a bounded window, which is marginally useful but largely restates the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Return a bounded monthly history for one official BTS land-border port and one consistent crossing measure') and scopes it tightly to a single port plus a single measure. That scoping implicitly contrasts with compare_ports and search_ports, but no sibling is named outright, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete invocation contexts ('monthly truck crossings at Laredo', 'pedestrian crossings at San Ysidro since 2023', a reproducible port-volume chart), which tells the agent when this tool fits. It never states when to prefer bts_transport_compare_ports or bts_transport_border_activity_pack instead, so there is 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_transport_compare_portsARead-onlyIdempotentInspect
Compare two to eight U.S. land-border ports on one consistent official BTS crossing measure over a shared rolling window. Ranks ports by current count and returns prior-window count, reported-month completeness, percent change, exact window, stable port codes, and provenance. Use this for 'compare truck crossings at Laredo, El Paso, and Otay Mesa' or 'which selected Canada-border port has more train crossings?'. It does not compare wait times, outbound flows, or cargo value.
| Name | Required | Description | Default |
|---|---|---|---|
| ports | Yes | Two to eight exact four-digit port codes or unambiguous port names. | |
| measure | Yes | Official BTS crossing measure. Measures have different units and must not be added together. | |
| end_month | No | Calendar month in YYYY-MM format. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| trailing_months | No | Months per current/prior comparison window. Default 12. |
TDQS
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 real value beyond that: it discloses ranking behavior, that a prior-window count and reported-month completeness are returned, and that port codes are stable and provenance is included — meaningful for a tool with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: action and scope first, then returned fields, then usage examples and exclusions. Front-loaded and free of redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the return contents (prior-window count, completeness, percent change, window, codes, provenance). Scope, usage, and exclusions are all present, leaving nothing essential missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the schema already spells out the ports count bounds, the measure enum, and the trailing_months window. The description adds conceptual meaning beyond the schema by framing the window as a shared rolling current/prior comparison, tying trailing_months and end_month to a concrete comparison model.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare), resource (U.S. land-border ports), and scope (two to eight ports, one BTS measure, shared rolling window). Clear and unambiguous, but it never names its closest siblings (bts_transport_border_trend, bts_transport_search_ports), so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides two concrete invocation examples ('compare truck crossings at Laredo, El Paso, and Otay Mesa') and explicit exclusions ('does not compare wait times, outbound flows, or cargo value'). Strong when/when-not guidance, though it does not point to the alternative tool to use instead for those excluded cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bts_transport_search_portsARead-onlyIdempotentInspect
Search U.S. land-border ports in LiveDataLink's self-hosted official BTS Border Crossing Entry snapshot. Returns stable four-digit port codes, state, Canada/Mexico border, coordinates, available crossing measures, coverage, pagination, and source provenance. Use this for 'find the Laredo border port code', 'which Arizona ports have truck crossings?', or to resolve a port before a trend call. Inbound land ports only; not wait times or outbound traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ports. Default 20. | |
| query | No | Port name, state, or exact four-digit port code. | |
| state | No | Exact state name, such as Texas or New York. | |
| border | No | Optional official BTS border label. | |
| offset | No | Ports to skip. Default 0. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world. The description goes beyond them by disclosing the returned fields (port codes, coordinates, measures, coverage, pagination, provenance) and the inbound-only scope constraint. It doesn't cover rate limits or auth given the self-hosted snapshot, but it adds meaningful context over the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: purpose/source, return payload, and use cases with exclusions. The return-field enumeration is a touch long but each element is informative. Overall tight with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully compensates by listing the return fields, coverage, pagination, and provenance. Combined with annotations covering the safety profile and a fully documented input schema, an agent has nearly everything needed; only filter-combination semantics are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with per-field descriptions (limit, query, state, border, offset, response_format), so the schema already carries parameter meaning. The description adds only indirect hints via examples ('Laredo', 'Arizona') and doesn't specify query format or how filters combine. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (U.S. land-border ports) with the exact data source, and distinguishes scope with 'Inbound land ports only; not wait times or outbound traffic.' An agent can separate it from the sibling border tools (trend, compare_ports, activity_pack) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers concrete when-to-use triggers in quotes ('find the Laredo border port code', 'which Arizona ports have truck crossings?') and wraps the workflow ('resolve a port before a trend call'), plus an explicit exclusion for wait times and outbound traffic. It stops short of naming the actual sibling alternatives (e.g., bts_transport_compare_ports), so routing is implied rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
candlestick_signalsARead-onlyIdempotentInspect
Detect classic candlestick patterns on a ticker's recent daily bars: hammer, inverted hammer, bullish/bearish engulfing, doji, morning/evening star, and shooting star. Returns each detected pattern with {pattern, date, direction (bullish/bearish/neutral), barIndex}. HEURISTIC pattern detection with conservative default thresholds; for research, not investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | US ticker (e.g. 'MSFT'). | |
| lookback_days | No | Trailing daily bars to scan for patterns (default 60). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower; the description adds genuinely new context by disclosing that detection is HEURISTIC with conservative default thresholds and that output is not investment advice. It also spells out the returned fields (pattern, date, direction, barIndex), which goes beyond the annotations. Rate limits or latency are not mentioned, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and scope, then return shape, then caveat. The pattern enumeration is long but useful for matching a user's request; nothing is padded, though the sentence is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description compensates by naming the returned fields, and it discloses the heuristic nature and disclaimer. With annotations covering the safety profile and the schema covering both parameters, the definition is complete enough to invoke correctly; only the absence of usage routing against siblings is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so symbol and lookback_days are already fully documented in the schema (including the default of 60 and the 5-400 range). The description adds only the vague phrase 'recent daily bars', so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (detect) and resource (classic candlestick patterns) scoped to a ticker's recent daily bars, and enumerates the exact patterns covered. This clearly separates it from sibling tools like support_resistance_levels, iv_analytics, or stock_history, which do different technical work on the same instrument.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by 'on a ticker's recent daily bars' and the research disclaimer, but no explicit when-to-use, when-not, or alternative is named (e.g., no routing versus other technical-analysis siblings). An agent can infer intent but gets no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cargo_crateARead-onlyIdempotentInspect
Look up a Rust crate on crates.io: latest version, description, total downloads, repository, and homepage. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Crate name, e.g. 'serde'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds 'Keyless' to clarify that no authentication is required, which is valuable operational context. It also lists the response content, partially compensating for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words. The lookup target and returned fields are front-loaded, and the 'Keyless' note is a concise, useful addition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only lookup with no output schema, this description is complete: it identifies the source platform, the input semantics, the returned fields, and the authentication requirement. Nothing critical is missing 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single 'name' parameter with an example. Schema description coverage is 100%, so the baseline is 3. The description adds context by specifying 'Rust crate' and 'crates.io', but it does not materially deepen parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Look up a Rust crate on crates.io', which clearly distinguishes it from sibling package lookup tools like npm_package and pypi_package. It also enumerates the exact returned fields, so an agent knows 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the context for use: any time a Rust crate's metadata from crates.io is needed. It does not explicitly name alternatives or exclusions, but the platform and language are explicit enough to guide selection among package-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
carrier_monitor_recheckARead-onlyIdempotentInspect
Recheck an existing carrier snapshot and identify meaningful changes since the previous check. Accepts a DOT/MC/name plus the prior result or snapshot as previous_snapshot, then compares authority, identity, insurance summary, BASIC alerts, crashes, out-of-service indicators, safety rating, and verdict. Returns unchanged/changed status, a severity, field-level changes, and the next reviewer action. Store the returned current_snapshot in your own system and call this on a schedule; LiveDataLink does not silently retain customer watchlists.
| Name | Required | Description | Default |
|---|---|---|---|
| mc | No | MC/MX number without the prefix. | |
| dot | No | USDOT number (preferred). | |
| name | No | Carrier legal name when DOT/MC is unavailable. | |
| format | No | Report format. Defaults to markdown. | |
| previous_snapshot | No | Prior carrier_vetting result or JSON snapshot returned by an earlier call. |
TDQS
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 genuinely non-structured behavior: it discloses that LiveDataLink does not retain customer watchlists, so the caller must persist the snapshot and drive the schedule itself — important state-management context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then comparison scope, then operational guidance. Every sentence carries distinct load with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully covers return values (unchanged/changed status, severity, field-level changes, next reviewer action) and the persistence/scheduling workflow. Nothing an agent needs to invoke or chain this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by clarifying the snapshot lifecycle: DOT/MC/name are the lookup inputs and previous_snapshot is the prior carrier_vetting result or JSON snapshot returned by an earlier call, which explains how the param relates to the tool's output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Recheck an existing carrier snapshot') and the exact comparison intent ('identify meaningful changes since the previous check'). This distinguishes it from the initial-vetting siblings like carrier_vetting_score by framing it as a diff against a prior snapshot, and it enumerates the compared fields, so an agent knows precisely 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context ('call this on a schedule' after storing a snapshot) and implies the prerequisite that a prior result must exist as previous_snapshot. It does not explicitly name a sibling as the alternative for initial vetting, but the operating context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
carrier_vetting_batchARead-onlyIdempotentInspect
Vet a batch of up to 10 US motor carriers by USDOT number in one workflow call. Returns one GO/CAUTION/NO-GO result per carrier, source coverage and failures, key authority/insurance/safety signals, and an export in markdown (default), JSON, or CSV. Use this to screen a broker's candidate list or lane roster; each carrier is evaluated independently so one missing or unavailable record does not hide the others. This is an analytical aid, not a substitute for direct FMCSA verification.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format. Defaults to markdown. | |
| dot_numbers | Yes | 1-10 USDOT numbers. A comma-separated string is also accepted for agent convenience. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive, and openWorld, so the bar is lower; the description still adds real value by disclosing the per-carrier verdict scheme, source coverage and failure reporting, and the analytical-aid disclaimer. It doesn't describe rate limits or latency, but the added context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then returns, then usage, then disclaimer. Each sentence carries distinct information and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so fully (per-carrier verdict, coverage, failures, signals, export formats). Parameters are covered by the schema and safety by annotations, so 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters are fully documented there ('1-10 USDOT numbers,' format enum with default). The description merely restates the 10-carrier cap and the format options, adding no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Vet), resource (batch of up to 10 US motor carriers by USDOT number), and outcome (GO/CAUTION/NO-GO). The 'batch' and 'in one workflow call' framing implicitly distinguishes it from single-carrier siblings like carrier_vetting_score, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: 'screen a broker's candidate list or lane roster,' plus a useful caveat that each carrier is evaluated independently so one failure doesn't hide others. It does not name an alternative tool or state explicit when-not-to-use conditions, 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.
carrier_vetting_evidence_packARead-onlyIdempotentInspect
Produce an auditable Carrier Vetting Pack for a freight broker. Resolve a US motor carrier by USDOT, MC, or legal name, then return the GO/CAUTION/NO-GO verdict, the exact FMCSA authority/insurance/safety evidence, sanctions/court/federal-award checks, source coverage and failures, retrieval timestamp, primary-source links, and a broker follow-up checklist. This is the evidence-first companion to carrier_vetting_score: use it when a human reviewer needs to save or forward the record. It is an analytical aid, not a substitute for direct FMCSA insurance and authority verification.
| Name | Required | Description | Default |
|---|---|---|---|
| mc | No | MC/MX number without the prefix. | |
| dot | No | USDOT number (preferred exact identifier). | |
| name | No | Legal carrier name when DOT/MC is unavailable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuine value beyond them: it discloses that source coverage and failures are surfaced, that a retrieval timestamp is included, and that the output is advisory rather than authoritative. It does not detail pagination or size limits, but for a read-only pack tool this is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first sentence, with the alternative-tool routing at the end. The middle output enumeration is a dense comma-separated list, but each item is substantive and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no required parameters, the description carries the burden of explaining what comes back - and it does: verdict, evidence, sanctions/court/federal-award checks, source coverage and failures, timestamp, primary-source links, and a follow-up checklist. It also flags the authority limitation. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents mc, dot and name, including that dot is the 'preferred exact identifier'. The description's 'Resolve a US motor carrier by USDOT, MC, or legal name' merely restates those fields, adding no format or precedence detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Produce an auditable Carrier Vetting Pack for a freight broker'), names the resolution keys, and enumerates the concrete outputs (GO/CAUTION/NO-GO verdict, FMCSA evidence, sanctions checks). It explicitly differentiates itself from sibling carrier_vetting_score as the 'evidence-first companion'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (carrier_vetting_score) and the exact condition that selects this tool: 'use it when a human reviewer needs to save or forward the record.' It also states the exclusions - it is 'an analytical aid, not a substitute for direct FMCSA insurance and authority verification.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
carrier_vetting_scoreARead-onlyIdempotentInspect
Vet a US motor carrier (trucking company) for a freight-brokerage review, in one call. Give a USDOT number, MC number, or carrier name. Joins FMCSA public safety data (operating authority, insurance on file, crash and out-of-service history vs the national average, safety rating, and CSA BASIC indicators where FMCSA publishes them) with sanctions screening (OFAC/UN/EU/BIS on the carrier's legal name), federal-court litigation history (CourtListener), and USAspending federal awards. Returns a GO / CAUTION / NO-GO decision-support result with reasons and the underlying fields. NO-GO is triggered by a sanctions match or lack of active operating authority; CAUTION by published BASIC alerts, fatal crashes, missing required liability insurance, high out-of-service rates, litigation, or an unavailable source. This is an analytical aid, not a substitute for your own carrier-onboarding checks.
| Name | Required | Description | Default |
|---|---|---|---|
| mc | No | MC (motor carrier) number, without the 'MC-' prefix. Used if no DOT number is given. | |
| dot | No | USDOT number of the carrier (most precise). Example: 76830. | |
| name | No | Carrier legal name, used if no DOT/MC number is given. The top FMCSA name match is vetted; prefer a DOT number for an exact carrier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/idempotent/openWorld), while the description adds substantial behavioral detail: the exact NO-GO and CAUTION trigger conditions, how unavailable sources are handled, and an explicit 'analytical aid, not a substitute' disclaimer. This is rich disclosure well beyond what the structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, but it is front-loaded (purpose, then inputs, then data sources, then decision rules, then disclaimer) and every sentence carries information. It is on the longer side but the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains the return shape (GO/CAUTION/NO-GO plus reasons and underlying fields) and enumerates the contributing data sources. For a multi-source analytical tool with annotations already covering safety, 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.
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 dot, mc, and name with precedence rules. The description only restates that any of the three identifiers may be given and adds no syntax or precedence detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: 'Vet a US motor carrier (trucking company) for a freight-brokerage review, in one call.' This clearly distinguishes it from sibling aggregators like carrier_vetting_evidence_pack and carrier_vetting_batch, and from raw-data tools like fmcsa_carrier_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context (freight-brokerage carrier onboarding) and notes it accepts DOT, MC, or name, plus 'in one call' implying it consolidates several lookups. It does not, however, explicitly name when to prefer siblings such as carrier_vetting_batch or the raw fmcsa_* lookups over this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
caselaw_case_detailsARead-onlyIdempotentInspect
Get full metadata for a single case by its CAP id (name, citations, court, jurisdiction, decision date, reporter location, and the source URL for its full text).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | CAP case id, e.g. 11301409 (Brown v. Board of Education). |
TDQS
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 usefully signals that only metadata plus a source URL is returned (full text lives elsewhere), but it says nothing about not-found behavior, rate limits, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the verb, key, and return fields; the parenthetical field list is compact and every element earns its place. No preamble or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned metadata fields, including the full-text source URL. It is nearly complete for a single-entity lookup; only edge-case behavior (invalid/unknown id) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, including a worked example (11301409, Brown v. Board of Education), so the schema carries the semantics. The description only restates 'by its CAP id' and adds no format or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (full metadata for a single case) and enumerates exactly which fields are returned, so the agent knows the payload shape before calling. It does not explicitly name or contrast the caselaw_search / caselaw_opinion_text siblings, which is the only thing keeping 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: use this when you already hold a CAP id and need the case's metadata. There is no explicit 'when not to use', no pointer to caselaw_search for finding an id or caselaw_opinion_text for the body, and no prerequisite that a CAP id must first be resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
caselaw_citation_lookupARead-onlyIdempotentInspect
Resolve a reporter citation (e.g. '347 U.S. 483', '347 U. S. 483', '384 U.S. 436') to the case it identifies. Matches official and parallel citations. Returns the case metadata including its CAP id for use with caselaw_opinion_text.
| Name | Required | Description | Default |
|---|---|---|---|
| citation | Yes | A reporter citation, e.g. '347 U.S. 483'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior, so the description only needs to add value beyond that. It adds useful behavioral detail: it matches official and parallel citations, tolerates citation variants like '347 U. S. 483', and returns metadata including the CAP id. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry the full necessary meaning: purpose, input examples, matching behavior, output, and downstream use. There is no filler, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the description is complete: it says what input is expected, what matching behavior occurs, what the return value contains, and how the result connects to caselaw_opinion_text. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single citation parameter with an example, and coverage is 100%. The description enriches the parameter meaning by providing additional format examples and explicitly stating that official and parallel citations are matched, which helps the agent understand acceptable inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Resolve a reporter citation ... to the case it identifies.' It also clarifies that it matches official and parallel citations and returns metadata with a CAP id. It does not explicitly distinguish itself from similar siblings like court_citation_resolver or caselaw_search, though the downstream link to caselaw_opinion_text helps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the intended use case: when an agent has a reporter citation and needs the case identity and CAP id for further caselaw operations. It names the downstream sibling caselaw_opinion_text but does not state when-not-to-use alternatives such as caselaw_search, 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.
caselaw_opinion_textARead-onlyIdempotentInspect
Fetch the full opinion text of a case on demand by its CAP id. Text is retrieved live from the public-domain CAP static mirror (not stored), and includes each opinion (majority, dissent, concurrence) with its author. Use max_chars to bound the response.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | CAP case id (from caselaw_search / caselaw_citation_lookup). | |
| max_chars | No | Maximum total characters of opinion text (default 50000, max 500000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld and non-destructive, so the bar is lower, and the description adds real value beyond them: text is fetched live from the public-domain CAP static mirror and is not stored, and the return includes per-opinion authorship. It stops short of noting any rate limits or pagination/truncation behavior beyond max_chars.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the core purpose front-loaded and no filler; the source-of-data and max_chars details are usefully appended. Tight and well-ordered, though the id-source note partially duplicates the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-shape burden and does so by describing the opinion set and authorship, plus the live-fetch/not-stored nature of the data. For a simple two-param read tool this is nearly complete, missing only explicit truncation behavior when max_chars is exceeded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both params (id source, max_chars default 50000 / max 500000). The description's 'Use max_chars to bound the response' and id-origin mention are consistent but add little 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch the full opinion text of a case') keyed to the CAP id, and clarifies it returns each opinion (majority, dissent, concurrence) with author. The 'full text' framing implicitly distinguishes it from caselaw_case_details/caselaw_search, but it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'On demand' and the id-source note (from caselaw_search / caselaw_citation_lookup) hint at the workflow, and 'Use max_chars to bound the response' gives a practical cue. However, there is no explicit when-to-use-vs-alternative guidance for choosing this over caselaw_case_details, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
caselaw_searchARead-onlyIdempotentInspect
Search US court opinions (Caselaw Access Project, public domain) by case name / keyword, court, jurisdiction, and decision-date range. Returns matching case metadata with CAP ids and citations. Use caselaw_opinion_text with a returned id to read the full opinion. Note: v1 index covers the U.S. Reports reporter (official US Supreme Court reporter).
| Name | Required | Description | Default |
|---|---|---|---|
| court | No | Optional court-name fragment, e.g. 'Supreme Court'. | |
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Case name or keyword, e.g. 'Brown Board Education', 'Miranda'. | |
| end_date | No | Optional ISO date upper bound (YYYY-MM-DD). | |
| start_date | No | Optional ISO date lower bound (YYYY-MM-DD). | |
| jurisdiction | No | Optional jurisdiction fragment, e.g. 'United States'. |
TDQS
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 genuinely useful non-structured context: the v1 index only covers the U.S. Reports reporter, a material scope limitation, plus a summary of what is returned (metadata with CAP ids and citations).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose and filters, then the follow-up action, then the scope caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating the return shape (case metadata with CAP ids and citations) and the critical index-coverage limitation. Combined with annotations and a fully documented schema, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are documented with examples and bounds in the schema itself. The description names the filter dimensions but adds no syntax, format, or combination rules 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search US court opinions) and enumerates the filterable dimensions (case name/keyword, court, jurisdiction, date range). It also distinguishes itself from the sibling caselaw_opinion_text, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative and the condition for using it: 'Use caselaw_opinion_text with a returned id to read the full opinion.' That is clear routing, though there is no explicit when-not-to-use guidance or mention of the other caselaw siblings (case_details, citation_lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_dataset_queryARead-onlyIdempotentInspect
Generic SoQL query against any data.cdc.gov dataset. Use this when none of the curated tools fit. Accepts a 4x4 Socrata ID and a where-clause. SoQL reference: https://dev.socrata.com/docs/queries/
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| order | No | SoQL order clause (e.g. 'date DESC') | |
| where | No | SoQL where clause (e.g. "state='Texas' AND year=2024") | |
| select | No | SoQL select clause (default '*') | |
| dataset | Yes | Socrata 4x4 dataset ID (e.g. 'muzy-jte6') |
TDQS
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 and network profile is covered. The description adds the SoQL reference link and the pass-through nature, but says nothing about rate limits, error behavior on invalid dataset IDs, or result shape beyond the schema's limit cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, then the usage condition, then the reference link. Efficient, though the SoQL URL sentence is a mild redundancy given the schema already names SoQL clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic fallback query tool, the description plus 100%-covered schema and read-only annotations give an agent everything needed to invoke it correctly. No output schema exists, and the description needn't explain return values for a raw SoQL pass-through.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including limit default/cap and example clauses) are already documented in the schema. The description only restates that a 4x4 Socrata ID and a where-clause are accepted, adding essentially nothing beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (query) and resource (any data.cdc.gov dataset) and explicitly positions itself as the generic fallback against the many curated cdc_* siblings. An agent can tell it apart from the curated tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this when none of the curated tools fit" gives a clear conditional that routes the agent here only as a fallback. It stops short of naming specific curated alternatives, but the alternative category is explicit and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_drug_overdose_deathsARead-onlyIdempotentInspect
CDC drug overdose deaths by state and indicator (9j2v-jamp). 12-month rolling counts. Useful for opioid/fentanyl/stimulant policy research and treatment-program siting.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| indicator | No | Drug class (e.g. 'Opioids (T40.0-T40.4,T40.6)', 'Synthetic opioids, excl. methadone (T40.4)') | |
| state_name | No | Full state name |
TDQS
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 externally. The description adds genuine context by disclosing the 12-month rolling aggregation and the underlying dataset, but says nothing about whether counts are provisional/final, coverage limits, or result volume behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short fragments, purpose and source first, dataset ID second, use case last. There is no filler, though the closing research-framing sentence is the weakest-earning element rather than core invocation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only query tool with a four-hint annotation block, fully described parameters, and no output schema to explain. The description supplies the dataset, the aggregation window, and the analytic niche, which is everything an agent needs 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.
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 limit, indicator, and state_name, including an indicator value example. The description's mention of 'by state and indicator' confirms the slicing dimensions but adds no syntax or accepted-value detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (CDC drug overdose deaths), the two dimensions it is sliced by (state and indicator), the source dataset ID (9j2v-jamp), and the metric form (12-month rolling counts). It does not explicitly distinguish itself from close siblings such as cdc_weekly_deaths_by_state or the generic cdc_dataset_query, which keeps it out of 5 territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for opioid/fentanyl/stimulant policy research and treatment-program siting' gives an audience and a downstream use, implying when the tool applies. However, it never states when NOT to use it, nor points to the sibling that should be used instead (e.g. cdc_dataset_query or cdc_weekly_deaths_by_state), so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_excess_deaths_covidARead-onlyIdempotentInspect
CDC excess deaths associated with COVID-19 (xkkf-xrst). Modeled expected vs observed deaths by state and week. Used to estimate true pandemic impact beyond reported COVID deaths.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| state | No | Full state name (e.g. 'Texas') or 'United States' | |
| outcome | No | Outcome (e.g. 'All causes', 'All causes, excluding COVID-19') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, so safety is covered. The description adds genuinely useful context beyond that: the data is modeled (not raw counts) and comes from a specific CDC dataset id, which matters when interpreting the numbers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the resource and its scope, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with full schema coverage and no output schema, the description covers source, granularity (state and week), and interpretation caveat (modeled estimates). Only the return shape/columns are left unstated, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with limit, state, and outcome all documented in-schema including examples. The description adds nothing about parameter semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific dataset (CDC excess deaths, dataset id xkkf-xrst) and its scope: modeled expected vs observed deaths by state and week. That is enough to separate it from cdc_weekly_deaths_by_state and cdc_leading_causes_of_death, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence ('Used to estimate true pandemic impact beyond reported COVID deaths') implies an analytical use case, but there is no explicit when-to-use guidance, no prerequisites, and no named alternative for raw death counts versus excess-death estimates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_flu_surveillanceBRead-onlyIdempotentInspect
CDC FluView state-level influenza surveillance (vh55-3he6). Returns weekly ILI (influenza-like illness) activity levels per state.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| season | No | Flu season (e.g. '2023-24') | |
| statename | No | Full state name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the upstream dataset identifier (vh55-3he6) and the grain of the return data, but says nothing about default result size, filtering defaults, or rate/coverage caveats beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the source and the interpretation of ILI both front-loaded; nothing is wasted. It is merely brief rather than richly informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-optional-parameter read-only lookup, the description names the source, the grain, and the returned metric, and the annotations cover safety while the schema covers inputs. Since no output schema exists, the one-line return summary is doing the necessary work; only seasonal or geographic coverage limits are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, season, and statename are already documented in the schema. The description restates the state-level grain but adds no syntax, format, or default guidance beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific source (CDC FluView), a specific scope (state-level), and the specific returned metric (weekly ILI activity levels per state), which lets an agent distinguish it from siblings like cdc_weekly_deaths_by_state or cdc_vaccination_coverage. It stops short of explicitly naming those alternatives, so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no routing to or away from sibling CDC tools. The agent must infer applicability purely from the topical subject matter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_leading_causes_of_deathARead-onlyIdempotentInspect
NCHS leading causes of death by state (bi63-dtpu). Returns total deaths and age-adjusted death rates per cause per state per year. Useful for chronic disease + injury mortality research.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Year | |
| limit | No | Max rows (default 50) | |
| state | No | Full state name or 'United States' | |
| cause_name | No | Cause name (e.g. 'Heart disease', 'Cancer', 'Suicide') |
TDQS
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 fully covered. The description adds the return shape ('total deaths and age-adjusted death rates per cause per state per year'), which is genuinely useful given there is no output schema, but it says nothing about pagination, defaults, or coverage limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and scope front-loaded and no filler. The dataset ID parenthetical is compact and useful rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the right thing by sketching the returned measures, and all four parameters are documented in the schema. It is nearly complete; the main gap is any note on row limits or how age-adjusted rates should be interpreted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (year, limit, state, cause_name) are already documented with examples. The description only echoes the filtering dimensions ('per cause per state per year') and adds no syntax, allowed-value, or default 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('NCHS leading causes of death by state') and even cites the source dataset ID (bi63-dtpu), which clearly distinguishes it from cdc_drug_overdose_deaths, cdc_flu_surveillance, and cdc_weekly_deaths_by_state. It stops short of explicitly naming which sibling to prefer for adjacent mortality questions, so it is clear but not sibling-routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing phrase 'Useful for chronic disease + injury mortality research' implies a use case but gives no when-to-use vs when-not guidance and names no alternative. For a query tool with several CDC siblings, the routing burden is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_outbreak_reportsBRead-onlyIdempotentInspect
CDC NORS foodborne / waterborne / enteric outbreak reports (iezt-77pi). Returns outbreak date, state, etiology, illnesses, hospitalizations, deaths, and implicated food/exposure.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Outbreak year | |
| limit | No | Max rows (default 50) | |
| state | No | Full state name | |
| etiology | No | Causative agent (e.g. 'Salmonella', 'Norovirus', 'E. coli') |
TDQS
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 fully covered without the description. The description adds real value by enumerating the returned fields, which matters since no output schema exists. It does not mention pagination, row limits, or coverage/recency of the underlying dataset, so it stays at minimum-viable on behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler: the first identifies the dataset and covered report categories, the second lists return fields. Everything is front-loaded and each clause carries information an agent would otherwise have to open the schema or a data dictionary to obtain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the second sentence's field list is exactly the compensating detail needed, and the annotations cover mutability and idempotency. For a simple read-only filterable dataset query with fully documented parameters, this is close to complete; only dataset coverage/recency and pagination behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents all four parameters (year, limit with default 50 and 1-1000 bounds, state as full name, etiology with examples). The description's mention of date, state, etiology and exposure adds naming color but no semantics beyond what the schema already states, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (CDC NORS foodborne/waterborne/enteric outbreak reports) with a dataset identifier, which distinguishes it from the generic cdc_dataset_query and from unrelated cdc_* siblings like cdc_flu_surveillance or cdc_drug_overdose_deaths. It also enumerates the returned columns, so the agent knows exactly what the tool yields. The only weakness is that no sibling is named explicitly as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as cdc_dataset_query or the other cdc_* tools, and no prerequisites or exclusions are given. Usage can only be inferred from the resource name. The agent is left to guess whether this is the canonical path for outbreak data or a fallback to a generic CDC query tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_vaccination_coverageARead-onlyIdempotentInspect
COVID-19 vaccination coverage by US county (8xkx-amqh). Returns booster + primary series percentages over time. Useful for public-health gap analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| recip_state | No | Two-letter state code (e.g. 'CA') | |
| recip_county | No | County name |
TDQS
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. With no output schema, the description earns credit by disclosing return content (booster + primary series percentages over time), which the structured fields do not provide. It stops short of mentioning pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the resource and scope, then the return content and a use case. Little waste; the cryptic dataset id is the only slightly opaque element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small read-only query tool with full parameter coverage, safe annotations and no output schema, the description supplies enough return-content context to call it competently. Only the absence of guidance on choosing it over sibling CDC tools leaves a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, recip_state and recip_county are already fully documented in the schema. The description mentions 'US county' but adds no format or filtering semantics beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (COVID-19 vaccination coverage) and scope (by US county), which clearly separates it from CDC siblings like cdc_flu_surveillance or cdc_drug_overdose_deaths. The unexplained dataset id '(8xkx-amqh)' and noun-phrase phrasing keep it just short of ideal, but an agent knows exactly what data this returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for public-health gap analysis' implies a use case but gives no explicit when-to-use, when-not-to-use, or comparison against the many sibling CDC/health tools or the generic cdc_dataset_query. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cdc_weekly_deaths_by_stateARead-onlyIdempotentInspect
CDC weekly provisional deaths by state and cause (NCHS dataset muzy-jte6). Returns all-cause and selected-cause death counts per state per ISO week. Useful for excess-mortality and respiratory-disease seasonality analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Year (e.g. 2024) | |
| cause | No | Cause category (e.g. 'All Cause', 'COVID-19 (U071, Multiple Cause of Death)', 'Influenza and pneumonia') | |
| limit | No | Max rows (default 50) | |
| state | No | Full state name or 'United States' for national. Default 'United States'. |
TDQS
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 meaningful context beyond them: the data is 'provisional' (subject to revision) and reported at ISO-week granularity, plus what the response contains. It stops short of noting pagination/row-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the resource and source dataset, then return shape, then use case. No filler or repetition; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly summarizes the return values and notes provisional status. Given rich annotations and full schema coverage, it is nearly complete; the main gap is lack of differentiation from the crowded set of CDC death/cause siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so year, cause, limit, and state are all documented in the schema itself. The description adds only that counts are per state and per ISO week, which is marginal value over the structured fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource ('CDC weekly provisional deaths by state and cause'), identifies the source dataset (NCHS muzy-jte6), and states the return shape. It is clear, but does not differentiate itself from close siblings like cdc_excess_deaths_covid or cdc_leading_causes_of_death, which an agent would need help distinguishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers a use case ('excess-mortality and respiratory-disease seasonality analysis'), which implies when the tool is relevant. However, it gives no explicit when-not-to-use guidance and does not route the agent to any of the many overlapping CDC siblings, leaving selection largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
census_businessARead-onlyIdempotentInspect
Business establishments, employment, and annual payroll from County Business Patterns. Optional NAICS industry filter. Used for industry research, competitive intel, supply chain analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| msa | No | 5-digit Metropolitan Statistical Area code. Required for msa level. | |
| year | No | ACS 5-year endpoint year (default 2023). | |
| zcta | No | 5-digit ZIP Code Tabulation Area. Required for zcta level. | |
| level | Yes | Geography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'. | |
| naics | No | Optional NAICS 2017 industry code (2 to 6 digits). E.g. '23' for Construction, '54' for Professional Services. | |
| place | No | Census place FIPS (city). Required for place level. | |
| state | No | 2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels. | |
| tract | No | 6-digit census tract code. Use '*' for all tracts in a county. | |
| county | No | 3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint) already declare this is a safe, repeatable, read-only remote lookup, so the description needn't restate safety. The description adds that NAICS filtering is optional, but does not disclose return format, pagination, data vintage beyond the year param, or any CBP-specific caveats. With annotations carrying the safety profile, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses: data source, optional filter, use cases. No filler, no repeated schema content, and the core resource is front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter geographic data tool with 100% schema coverage and no output schema, the description covers what the data is but is thin on return shape and level/param interplay. An agent can probably call it correctly from the schema alone, but the description doesn't add much beyond the source name and use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (msa, year, zcta, level, naics, place, state, tract, county) is fully documented in the schema. The description only reinforces that the NAICS filter is optional, adding no syntax, format, or level-dependency detail beyond the schema. Baseline 3 applies 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb-less but specific resource statement: 'Business establishments, employment, and annual payroll from County Business Patterns.' An agent knows exactly what data is returned. It does not name a sibling tool (e.g., census_commute_employment or census_income_housing) to differentiate the dataset, but the CBP source naming is specific enough to distinguish it from generic census tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three use-case tags ('industry research, competitive intel, supply chain analysis') imply when this tool is applicable. However, there is no explicit guidance on when to choose this over census_commute_employment, census_demographics, or cost_of_doing_business_index, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
census_commute_employmentBRead-onlyIdempotentInspect
Labor force, unemployment, commute times, public transit usage, work-from-home rates for a US geography. Used for site selection, workforce analysis, commercial real estate.
| Name | Required | Description | Default |
|---|---|---|---|
| msa | No | 5-digit Metropolitan Statistical Area code. Required for msa level. | |
| year | No | ACS 5-year endpoint year (default 2023). | |
| zcta | No | 5-digit ZIP Code Tabulation Area. Required for zcta level. | |
| level | Yes | Geography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'. | |
| place | No | Census place FIPS (city). Required for place level. | |
| state | No | 2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels. | |
| tract | No | 6-digit census tract code. Use '*' for all tracts in a county. | |
| county | No | 3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the entire safety profile. The description adds no behavioral context beyond that – nothing about defaults, return shape, or the conditional geography requirements. It contributes only metric scope, which is purpose rather than behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the metric list, no filler. It could be tighter still since the second sentence is effectively a use-case list, but overall it reads efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, only one required, and no output schema, the description is adequate but thin: it does not explain the level-dependent parameter requirements or what the returned figures look like. The rich schema compensates for parameter gaps, but a data-returning tool with no output schema leaves the agent guessing about response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters (level enum, state/county/tract/msa/place/zcta codes, year default) are fully documented in the schema itself. The description references 'a US geography' but adds no syntax, hierarchy, or dependency detail beyond what the schema already provides, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific data families (labor force, unemployment, commute times, transit usage, work-from-home) and the resource (US geography), so an agent understands it retrieves ACS commute/employment metrics. However, it never distinguishes itself from close siblings like census_demographics or census_income_housing, leaving the agent to infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three use cases (site selection, workforce analysis, commercial real estate) imply when the tool is relevant, but no alternatives are named and no when-not guidance is given. The agent must infer routing among the many census_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
census_demographicsARead-onlyIdempotentInspect
Race, ethnicity, and age breakdown for a US geography. Returns counts for white, black, Asian, AIAN, NHPI, other, two-or-more, plus Hispanic/Latino total and median age. Source: ACS 5-year.
| Name | Required | Description | Default |
|---|---|---|---|
| msa | No | 5-digit Metropolitan Statistical Area code. Required for msa level. | |
| year | No | ACS 5-year endpoint year (default 2023). | |
| zcta | No | 5-digit ZIP Code Tabulation Area. Required for zcta level. | |
| level | Yes | Geography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'. | |
| place | No | Census place FIPS (city). Required for place level. | |
| state | No | 2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels. | |
| tract | No | 6-digit census tract code. Use '*' for all tracts in a county. | |
| county | No | 3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower. The description adds value beyond them by disclosing the data provenance ('Source: ACS 5-year'), which tells the agent these are 5-year estimates, and by enumerating the returned demographic fields 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the subject/scope statement, followed by the concrete returned fields and the source. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the prose enumeration of returned counts and median age is genuinely necessary and present, and the source/vintage is disclosed. The main gap is that the hierarchical geography-level mechanics (which level pairs with which code parameter) are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters (level, state, county, tract, place, msa, zcta, year) are already documented in the schema, including which are required per level. The description adds no parameter-level detail beyond that, so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (race, ethnicity, age breakdown) and scope (US geography), plus the data source, so an agent can tell it apart from census_population or census_income_housing by subject matter. It does not, however, explicitly name or contrast any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of alternatives such as census_population for total counts or census_geography_lookup for resolving place names. The requirement to supply a geography level is only implicit in the phrase 'for a US geography'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
census_geography_lookupARead-onlyIdempotentInspect
Look up Census FIPS codes by name. Supports state name or 2-letter code, ZIP code (5 digits), and (for state) substring matching. Use this to find the FIPS codes needed by other census_* tools.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Optional filter: state, county, zcta, place. | |
| limit | No | Max matches (default 10). | |
| query | Yes | Free-text: state name ('Texas'), state code ('TX'), or 5-digit ZIP ('77301'). |
TDQS
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 fully covered. The description adds some behavior (substring matching applies only to state) but says nothing about return format or match ranking, so it adds modest value on top of the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the core action is front-loaded and the usage routing comes second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, annotation-covered lookup with no output schema, the description is nearly sufficient: it conveys what is returned (FIPS codes) and how to supply input. The only gap is lack of detail on output shape, which is minor given the tool's narrow scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, level, and limit. The description restates the accepted query formats (state name, 2-letter code, 5-digit ZIP) and adds that substring matching is state-only, which is marginal beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up Census FIPS codes by name') and clearly positions itself against the many census_* data siblings by framing itself as the code-resolution prerequisite. An agent can tell what it does and where it sits in the family 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to reach for it: 'Use this to find the FIPS codes needed by other census_* tools,' which gives a clear call condition and dependency role. It stops short of naming exclusions or when-not-to-use, but the intended context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
census_income_housingARead-onlyIdempotentInspect
Median household income, per capita income, housing units, owner vs renter occupancy, median home value, median gross and contract rent for a US geography. Used for real estate AI, market analysis, location-based pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| msa | No | 5-digit Metropolitan Statistical Area code. Required for msa level. | |
| year | No | ACS 5-year endpoint year (default 2023). | |
| zcta | No | 5-digit ZIP Code Tabulation Area. Required for zcta level. | |
| level | Yes | Geography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'. | |
| place | No | Census place FIPS (city). Required for place level. | |
| state | No | 2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels. | |
| tract | No | 6-digit census tract code. Use '*' for all tracts in a county. | |
| county | No | 3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels. |
TDQS
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 fully covered by structured data. The description adds practical value by enumerating the returned measures, but says nothing about data vintage/ACS coverage caveats, rate limits, or suppression of small geographies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the actual data measures in the first sentence, which is the most useful part. The trailing sentence about 'real estate AI' is weakly informational but short enough not to bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carrying the enumerated metric list is valuable for telling the agent what it will receive. With 8 parameters and a geography-hierarchy requirement, and annotations covering the safety semantics, this is reasonably complete, though geography-level prerequisites and data vintage are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with per-parameter docs and an enum for 'level', so the schema already carries parameter semantics. The description adds no parameter-level detail (e.g. how level conditions the required msa/zcta/place/county params), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource set (median household income, per capita income, housing units, occupancy, home value, rents) for 'a US geography', so an agent knows exactly what data comes back. It does not, however, name or distinguish itself from overlapping siblings such as realestate_home_values, realestate_rents, or census_demographics, which an agent would have to resolve by trial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Used for real estate AI, market analysis, location-based pricing' implies a usage context, so the intent is inferable. But it gives no when-to-use/when-not guidance and never mentions the closely overlapping census and realestate siblings, leaving selection ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
census_populationARead-onlyIdempotentInspect
Get total population for a US geography (state, county, ZIP/ZCTA, city, census tract, MSA, or national). Returns total, male, female, and median age. Used for market sizing, location intelligence, demographic analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| msa | No | 5-digit Metropolitan Statistical Area code. Required for msa level. | |
| year | No | ACS 5-year endpoint year (default 2023). | |
| zcta | No | 5-digit ZIP Code Tabulation Area. Required for zcta level. | |
| level | Yes | Geography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'. | |
| place | No | Census place FIPS (city). Required for place level. | |
| state | No | 2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels. | |
| tract | No | 6-digit census tract code. Use '*' for all tracts in a county. | |
| county | No | 3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds useful return-field information (total, male, female, median age) but omits behavioral caveats important for census data, such as ACS vintage or margin-of-error limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero waste; the key capability and return fields are front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given eight parameters, no output schema, and annotations that cover read-only semantics, the description does a good job of stating purpose and return fields. It leaves some gaps on data vintage and limitations, but the schema handles parameter-level detail adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, including the level enum and required identifiers. The description lists geography types that map to the enum but adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get total population for a US geography') and enumerates supported geography levels. It clearly describes what it returns (total, male, female, median age), but does not differentiate itself from closely related siblings such as census_demographics or census_business.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Used for market sizing, location intelligence, demographic analysis' implies usage contexts, but there is no explicit when-to-use / when-not-to-use guidance and no named alternative to route between this and the other census_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cfpb_complaint_aggregationsARead-onlyIdempotentInspect
Aggregate complaint counts by a single facet (product, issue, company, state, company_response, or submitted_via). Useful for ranking companies by complaint volume or finding the most common issue categories.
| Name | Required | Description | Default |
|---|---|---|---|
| facet | Yes | Field to aggregate by | |
| company | No | Optional company filter |
TDQS
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 results are aggregate counts by a single facet, but it does not disclose output structure, limits, sorting, or other behavioral nuances. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: it opens with a precise statement of what the tool does, enumerates the facet options, and closes with relevant use cases. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only aggregation tool with a complete schema and safety annotations, the description is largely sufficient: it names the facets, describes the output concept (aggregate counts), and gives practical use cases. Since there is no output schema, a slightly more explicit description of the response shape or ordering would make it fully complete, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters fully, including an enum for facet and a description for company, so schema coverage is 100%. The description reinforces the meaning of the facet parameter by listing valid values and stating the use cases, but it does not add substantial semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Aggregate complaint counts') and enumerates the exact allowed facets, making the tool's function immediately clear. It is clearly distinguishable from sibling tools like cfpb_complaint_detail, cfpb_search_complaints, and cfpb_complaint_trends because it focuses on single-facet aggregation rather than individual records, search, or time trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete use cases ('ranking companies by complaint volume' and 'finding the most common issue categories'), which gives useful context for when to invoke it. However, it does not explicitly mention alternatives or exclusion conditions, such as when to prefer cfpb_complaint_trends or cfpb_search_complaints instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cfpb_complaint_detailARead-onlyIdempotentInspect
Fetch a single CFPB complaint by complaint_id. Returns the full record including narrative if consented.
| Name | Required | Description | Default |
|---|---|---|---|
| complaint_id | Yes | CFPB complaint ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful context beyond annotations by disclosing that the full record includes the narrative only 'if consented,' which is a meaningful behavioral caveat for a complaint detail endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The main action and resource are front-loaded, and the conditional narrative detail is stated efficiently in the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-ID lookup tool with safe annotations, the description is largely complete: it names the required parameter, the return type ('full record'), and a key conditional field ('narrative if consented'). It does not describe error/not-found behavior, but that is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already described as 'CFPB complaint ID.' The tool description adds no additional format, source, or lookup semantics beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Fetch'), a specific resource ('a single CFPB complaint'), and the lookup key ('complaint_id'). It also distinguishes itself from sibling search/aggregation tools by emphasizing 'single' and 'full record'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear usage context: use this when you have a complaint_id and need the full individual record. It does not explicitly name alternatives or when-not-to-use conditions, so it falls short of a 5, but the intended use is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cfpb_complaint_trendsARead-onlyIdempotentInspect
Time-series trends of complaint volume. lens=overview shows total complaints over time; lens=product shows by product; lens=company shows by company; lens=issue shows by issue. Interval can be month, quarter, or year.
| Name | Required | Description | Default |
|---|---|---|---|
| lens | Yes | Trend dimension | |
| product | No | Filter to a specific product | |
| sub_lens | No | Optional sub-dimension | |
| trend_depth | No | Top N to track (default 5) | |
| trend_interval | No | Time bucket size | |
| date_received_max | No | YYYY-MM-DD upper bound | |
| date_received_min | No | YYYY-MM-DD lower bound |
TDQS
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 fully covered. The description adds no behavioral context such as data freshness or rate limits, which is acceptable given the annotation coverage but leaves the definition at a minimum viable level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences that are front-loaded with purpose and then enumerate lens and interval options. Every sentence earns its place with no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema and rich schema descriptions, the description covers the core lens semantics and interval choices. It omits details about date-range filters and trend_depth, but those are documented in the schema, so the description is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are documented. The description goes beyond the schema by explaining what each lens value shows (overview, product, company, issue), which adds meaningful semantic context for the required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Time-series trends of complaint volume.' It clearly distinguishes the tool's purpose, but does not differentiate it from siblings such as cfpb_complaint_aggregations or cfpb_state_complaints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains lens options and interval choices, but gives no guidance on when to use this tool versus alternatives. There is no mention of appropriate contexts, exclusions, or sibling tools to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cfpb_search_complaintsARead-onlyIdempotentInspect
Search the CFPB Consumer Complaint Database (4M+ complaints submitted against financial companies since 2011). Filter by free-text term, company, product, state, date range, and narrative-presence. Returns complaint metadata plus public narratives when available.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Pagination offset (default 0) | |
| size | No | Page size (default 25, max 100) | |
| state | No | Two-letter state code | |
| company | No | Exact company name (use cfpb_suggest_company for fuzzy matching) | |
| product | No | CFPB product category (e.g. 'Credit reporting', 'Mortgage', 'Debt collection') | |
| search_term | No | Free-text search across all complaint fields | |
| has_narrative | No | Only complaints with consumer narratives | |
| date_received_max | No | YYYY-MM-DD upper bound | |
| date_received_min | No | YYYY-MM-DD lower bound |
TDQS
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 genuine value beyond that: the dataset scope (4M+ complaints since 2011) and the return content (metadata plus public narratives when available), which helps the agent anticipate partial narrative coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste: purpose and dataset scope first, filter dimensions and return content second. Front-loaded and appropriately sized for a search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of return-value explanation and does so adequately ('complaint metadata plus public narratives when available'). Combined with 100% schema coverage of all 9 parameters, an agent has what it needs; only pagination semantics are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description echoes the filter dimensions (free-text, company, product, state, date range, narrative-presence) without adding syntax, format, or default details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (CFPB Consumer Complaint Database) with scale context (4M+ complaints since 2011). It does not differentiate itself from close siblings like cfpb_complaint_aggregations, cfpb_complaint_trends, or cfpb_complaint_detail, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates the filterable dimensions, which implies how the tool is used, but gives no explicit when-to-use or when-not guidance and names no alternative for aggregation, trend, or single-complaint retrieval. Usage 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.
cfpb_state_complaintsARead-onlyIdempotentInspect
Complaint counts and percentages per US state, with optional product filter and date range. Useful for state-level financial-consumer risk maps.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Optional product filter | |
| date_received_max | No | YYYY-MM-DD upper bound | |
| date_received_min | No | YYYY-MM-DD lower bound |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds that the output consists of counts and percentages per state, but it does not clarify what the percentages are relative to, how missing states are handled, or how date-range bounds behave. This is acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the core function and output, and the second provides a concrete use case. Every phrase 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.
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 gives a reasonable high-level understanding of return values and filters. However, it does not specify the output structure, whether all states are always returned, or how this tool differs from nearby CFPB siblings, leaving some ambiguity for an agent navigating a large tool catalog.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents product, date_received_max, and date_received_min. The description only restates that there is an optional product filter and date range without adding deeper semantics such as allowed product values or date-format constraints beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning complaint counts and percentages per US state, with optional product and date filters. This is specific enough to distinguish it from generic complaint search tools, though it doesn't explicitly name or differentiate from sibling aggregation tools like cfpb_complaint_aggregations or cfpb_complaint_trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers a clear use case ('state-level financial-consumer risk maps'), which implies when this tool is appropriate. However, it gives no explicit guidance on when not to use it or which sibling tool to prefer for other aggregation styles, such as national or time-series breakdowns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cfpb_suggest_companyARead-onlyIdempotentInspect
Auto-complete company names. Returns up to 10 suggestions matching the partial input. Use the results as exact values for cfpb_search_complaints' company parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Partial company name |
TDQS
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 behavioral details beyond that: it returns up to 10 suggestions, matches partial input, and produces values suitable for a specific sibling parameter. This is useful context, though it does not reveal ordering, matching rules, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core behavior and result limit are front-loaded, and the downstream usage note is concise and actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter autocomplete tool with strong safety annotations and no output schema, the description provides the essential return-value information (up to 10 suggestions) and integration guidance. It is nearly complete; minor details like whether suggestions are full names or formatted strings could be added, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter 'text' as 'Partial company name' with 100% coverage. The description reinforces the partial-input concept but adds little 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('auto-complete company names') and resource ('company names'), and specifies the output behavior (up to 10 suggestions matching partial input). It also distinguishes itself by pointing to its intended downstream consumer, cfpb_search_complaints, so an agent can tell it apart from complaint-search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: use this tool to generate exact values for cfpb_search_complaints' company parameter. This effectively tells the agent when and why to use the tool, though it does not explicitly state when not to use it or name alternative suggestion/fuzzy-match tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cftc_cot_compareARead-onlyIdempotentInspect
Compare the latest reported CFTC COT position for two to eight contract markets using one consistent report family, scope, and trader category. Returns stable market codes, exact dates, long/short/net positions, open interest, ranking, and provenance. Use this for 'compare managed-money positioning in oil, gold, and copper' or 'which selected market has the largest commercial net position?'. It compares published aggregates only and does not recommend trades.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Futures-only or futures-and-options-combined view. Defaults to futures_only, except CIT (combined only). | |
| markets | Yes | Two to eight exact CFTC contract codes or unambiguous names. | |
| category | Yes | A category valid for the selected report_type. | |
| report_type | Yes | CFTC report family. Categories differ by family; use search or the evidence pack to discover available families. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behavior. The description adds a genuine boundary the annotations cannot express: it compares published aggregates only and does not recommend trades, plus it enumerates returned fields (codes, dates, long/short/net, open interest, ranking, provenance) 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the verb, resource, and cardinality in the first sentence, then use cases, then the boundary. Four sentences with no filler; the return-field enumeration is justified because no output schema is provided, though it is the longest and least critical clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope, cardinality, cross-parameter coupling, example intents, return contents, and an advisory boundary. With no output schema, the description takes on the job of describing results and does so; nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic coupling beyond the schema: all compared markets must share one consistent report family, scope, and trader category, which explains why report_type/category are single scalars applied across the array rather than per-market. It also restates the 2-8 bound as a hard constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and resource (latest reported CFTC COT position) with an explicit cardinality bound (two to eight contract markets). This cleanly separates it from the sibling cftc_cot_latest (single market) and cftc_cot_history (time series) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete triggering scenarios ('compare managed-money positioning in oil, gold, and copper', 'which selected market has the largest commercial net position?'), which tells the agent exactly what class of question this answers. It does not, however, explicitly name alternative tools or state when not to use it (e.g. for a single market, use cftc_cot_latest).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cftc_cot_evidence_packARead-onlyIdempotentInspect
Combine all hosted official CFTC COT report-family and scope views available for one contract market into a single provenance-backed evidence pack. Surfaces open interest and the largest absolute reported category net for each view while explicitly preserving incompatible family classifications. Use this for 'build a COT evidence pack for gold' or 'show every CFTC positioning lens for crude oil'. Designed for research synthesis; not real-time data, a forecast, or trading advice.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Exact CFTC contract market code or contract name. Search first when the name is ambiguous. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds real behavioral value beyond that: it discloses that all hosted views are aggregated together, that incompatible family classifications are explicitly preserved, that output is provenance-backed, and that the data is not real-time. No misleading claims.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core operation and followed by output contents, usage examples, and caveats. Every sentence carries information, though the middle sentence about preservation of family classifications is dense and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the pack's contents and its provenance framing, plus a clear data-freshness caveat. It is nearly complete for a two-parameter read-only aggregation tool; only explicit routing versus sibling COT tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (market, response_format) are fully documented with constraints and enum values. The description only implies the single-market scope but adds no syntax or format guidance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (combine) and resource (all hosted official CFTC COT report-family and scope views) scoped to one contract market, and describes the output contents (open interest, largest absolute category net, preserved family classifications). It distinguishes itself from single-view siblings by emphasizing aggregation of 'all ... views,' but never names the concrete alternatives (cftc_cot_latest, cftc_cot_history, cftc_cot_compare), so differentiation is inferred 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete invocation examples ('build a COT evidence pack for gold', 'show every CFTC positioning lens for crude oil') and states the framing ('designed for research synthesis') plus exclusions ('not real-time data, a forecast, or trading advice'). It gives clear context for use but does not explicitly say when to prefer this over the sibling single-view tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cftc_cot_historyARead-onlyIdempotentInspect
Return a bounded weekly history for one CFTC contract market, report family, scope, and trader category from the self-hosted official snapshot. Includes long, short, spreading, net, changes, percentages, open interest, pagination, source ids, and provenance. Use this for 'managed money net positions in crude oil over time', 'commercial gold COT history', or a reproducible positioning chart. Report-family categories are enforced; not trading advice.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum weekly observations. Default 20. | |
| scope | No | Futures-only or futures-and-options-combined view. Defaults to futures_only, except CIT (combined only). | |
| market | Yes | Exact CFTC contract market code or contract name. Search first when the name is ambiguous. | |
| offset | No | Observations to skip. Default 0. | |
| category | Yes | Family-specific category: noncommercial/commercial; producer_merchant_processor_user/swap_dealer/managed_money/other_reportables; dealer_intermediary/asset_manager_institutional/leveraged_funds/other_reportables; or noncommercial_ex_cit/commercial_ex_cit/commodity_index_trader. | |
| end_date | No | Optional latest report date, YYYY-MM-DD. | |
| start_date | No | Optional earliest report date, YYYY-MM-DD. | |
| report_type | Yes | CFTC report family. Categories differ by family; use search or the evidence pack to discover available families. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real context beyond that: the payload fields returned (long, short, spreading, net, changes, percentages, open interest, source ids, provenance), the bounded nature of the history, the enforcement of report-family categories, and a 'not trading advice' caveat. No auth or rate-limit detail, but that is a minor gap given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core verb and resource, then payload contents, then usage examples. The middle field-list is somewhat dense but each item is informative. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing the return payload (net, open interest, provenance, pagination). Combined with 100% schema coverage and annotations covering safety, an agent has nearly everything needed; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across 9 parameters, so the schema already documents market, report_type, category, scope, limit/offset, dates and response_format in detail. The description restates the filtering dimensions in prose ('report family, scope, and trader category') without adding syntax or format guidance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Return a bounded weekly history for one CFTC contract market, report family, scope, and trader category.' The time-series framing implicitly separates it from cftc_cot_latest and cftc_cot_compare, but neither sibling is named, so an agent must infer the boundary from the tool names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete use cases are supplied ('managed money net positions in crude oil over time', 'commercial gold COT history', 'a reproducible positioning chart'), which clearly signals when this tool applies. However, there is no explicit when-not or routing statement toward cftc_cot_latest/compare/search, so the agent gets 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.
cftc_cot_latestARead-onlyIdempotentInspect
Return the latest available official CFTC COT position snapshot for one contract market across every hosted report family and scope. Includes open interest, long/short/spreading positions, net arithmetic, percentages, trader counts when published, exact report date, source record ids, and provenance. Use this for 'latest managed-money positioning in crude oil' or 'show current COT categories for gold'. It describes delayed aggregate positions, not a trade signal or recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Exact CFTC contract market code or contract name. Search first when the name is ambiguous. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 genuinely useful behavioral context beyond that: it enumerates the returned content (open interest, long/short/spreading, net arithmetic, percentages, trader counts, report date, provenance) and warns that these are delayed aggregate positions, not a trade signal. This exceeds the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by a compact enumeration of returned fields and a closing caveat. Every sentence carries weight, though the returned-field list is fairly dense and could be trimmed, keeping it just short of optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what is returned, and annotations cover the safety profile, so an agent has enough to invoke correctly. The main gap is the absence of explicit routing among the four cftc_cot_* siblings, which would round out completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the response_format enum is fully documented in the schema, so the description need not carry parameter detail. It adds no further param syntax or format nuance, which is the correct baseline-3 situation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (latest official CFTC COT position snapshot for one contract market), with the word 'latest' implicitly distinguishing it from the cftc_cot_history sibling. It does not explicitly name or contrast with the sibling tools (compare, history, evidence_pack), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two concrete usage examples ('latest managed-money positioning in crude oil', 'show current COT categories for gold') give clear positive context for when to call it. However, with four closely related cftc_cot_* siblings, there is no explicit when-not-to-use or routing to the alternative (e.g., history vs compare). Usage is implied rather than fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cftc_cot_search_marketsARead-onlyIdempotentInspect
Search contract markets in LiveDataLink's self-hosted official CFTC Commitments of Traders snapshot. Returns stable CFTC contract market codes, names, commodity/exchange labels, available report families and scopes, latest date, pagination, and snapshot provenance. Use this for 'find the CFTC code for gold', 'which COT markets cover crude oil?', or to resolve an identifier before a history call. Aggregate US futures and options markets only; not quotes or prices.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum markets. Default 20. | |
| query | No | Commodity, contract, exchange, or exact contract market code. | |
| scope | No | Futures-only or futures-and-options-combined view. Defaults to futures_only, except CIT (combined only). | |
| offset | No | Markets to skip. Default 0. | |
| report_type | No | CFTC report family. Categories differ by family; use search or the evidence pack to discover available families. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description contributes real context beyond that: it identifies the source as a self-hosted official CFTC snapshot, mentions snapshot provenance and pagination in the return, and states the scope restriction. It stops short of detail on how the snapshot is refreshed or how provenance is exposed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and scope, then the return inventory, then usage examples and the boundary clause. The return list is long but each item is informative, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns, and it does so thoroughly (codes, names, commodity/exchange labels, report families, scopes, latest date, pagination, provenance). Combined with a fully documented 6-param schema and complete annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum values and defaults, so the schema carries the parameter burden and the baseline is 3. The description adds only thematic context ('available report families and scopes'), not syntax or format guidance beyond what is already documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (CFTC contract markets) bounded to a self-hosted official COT snapshot, and enumerates exactly what is returned (codes, names, labels, report families, scopes, latest date). It also carves out the boundary ('aggregate US futures and options markets only; not quotes or prices'), separating it from price/quote siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use examples ('find the CFTC code for gold', 'which COT markets cover crude oil?') and names the workflow position ('resolve an identifier before a history call'), routing the agent toward cftc_cot_history. The 'not quotes or prices' clause functions as an explicit when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chemical_hazardsARead-onlyIdempotentInspect
Return the public GHS (Globally Harmonized System) hazard classification for a chemical from the NIH/NLM PubChem database (keyless, public-domain data). Given a chemical name or PubChem CID, it resolves the compound and returns the GHS signal word (Danger/Warning) and the list of GHS hazard statements (e.g. 'H302: Harmful if swallowed'). If PubChem has no GHS classification on file for the compound, that is reported gracefully. This is informational public GHS classification data, not regulatory guidance or a safety data sheet - verify against an official SDS before handling any chemical.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A chemical name (e.g. 'acetone', 'aspirin') or a numeric PubChem CID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive; description adds data source, keyless access, graceful missing-data behavior, and a caveat that results are not an SDS. This complements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each containing only necessary information: what it returns, how missing data is handled, and a safety caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup, the description covers input format, output content, missing-data behavior, and usage caveat. No important operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description covers the single 'query' parameter 100%, so baseline is 3. The description repeats the name-or-CID input form but adds no new parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return), resource (GHS hazard classification), and source (PubChem). The description explicitly names the outputs (signal word and hazard statements), making its purpose unmistakable and distinct from a generic chemical_lookup sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Does not name an alternative tool, but clearly frames the use case: retrieving public GHS classification data from PubChem. It adds a boundary condition with the SDS disclaimer, telling the agent this is informational and not regulatory guidance, though it doesn't explicitly route to alternates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chemical_lookupARead-onlyIdempotentInspect
Resolve a chemical name (e.g. 'aspirin', 'caffeine') or a PubChem CID to its core identity and physical properties using the NIH/NLM PubChem public database (keyless, public-domain data). Returns the PubChem Compound ID (CID), IUPAC systematic name, molecular formula, molecular weight (g/mol), and the canonical SMILES structure string. Use it to disambiguate a substance and obtain a stable CID join key for further chemistry or safety lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A chemical name (e.g. 'aspirin', 'sodium chloride') or a numeric PubChem CID (e.g. '2244'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds valuable context about the NIH/NLM PubChem public database, keyless access, public-domain data, and the stability of the returned CID. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: what it resolves, what it returns, and when to use it. The action is front-loaded and there is no filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with rich annotations and no output schema, the description fully covers the return fields, data source, access model, and primary use case. An agent has sufficient information to select and correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter and already explains that query accepts a chemical name or numeric PubChem CID. The description repeats those examples but adds no parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Resolve') and a clear resource: chemical names or PubChem CIDs to identity and physical properties. It lists the concrete return fields, making the tool's scope unambiguous. This clarity separates it from sibling chemical_hazards, which is focused on hazard data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it to disambiguate a substance and obtain a stable CID join key for further chemistry or safety lookups. It does not name an alternative sibling tool or give when-not-to-use conditions, so it falls just short of complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clinical_site_selectorARead-onlyIdempotentInspect
One-call clinical-trial-activity + local-specialist-availability read for a medical condition in a US geography - the question a trial sponsor, CRO, or site-feasibility analyst asks before choosing where to run a study. Joins three keyless public sources: ClinicalTrials.gov (exact count of RECRUITING trials for the condition, scoped to the geography and compared to the national total, plus the top lead sponsors and phase mix from the recruiting sample), the NPPES NPI Registry (local specialist availability - how many providers carry a specialty taxonomy relevant to the condition in the area, across physicians and NPs/PAs/pharmacists/RNs in the field), and optionally US Census ACS population context for the state (needs a Census key; degrades gracefully). The condition is mapped to a provider specialty heuristically; pass an explicit 'specialty' to override. Returns a readable brief with a headline banding trial activity (HIGH/MODERATE/LOW/NONE) and specialist availability. A source that fails is noted, not fatal. INFORMATIONAL research / site-feasibility synthesis, NOT medical advice or a directive to enroll in any trial.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city to further localize the trial-location and provider search (e.g. 'Houston'); use with state. | |
| state | No | Optional 2-letter US state to scope trial and provider counts (e.g. 'TX'). Omit for a national read. | |
| condition | Yes | Medical condition / disease to evaluate (e.g. 'melanoma', 'type 2 diabetes', 'Alzheimer disease'). | |
| specialty | No | Optional NPPES specialty taxonomy keyword to override the condition-to-specialty mapping (e.g. 'Cardiology', 'Endocrinology'). |
TDQS
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 description only needs to add behavior beyond those. It does: it names the three keyless sources, explains exact recruiting counts vs. national totals, describes the heuristic condition-to-specialty mapping with an explicit override, notes graceful Census-key degradation, and states that source failures are non-fatal. This is strong behavioral disclosure with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first clause front-loads the core purpose, and the rest is information-dense rather than padded: sources, outputs, failure behavior, and caveats all earn their place. The source enumeration is slightly run-on, but there is no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a complex three-source data aggregation, the description still explains what the agent will receive, including a readable brief with HIGH/MODERATE/LOW/NONE trial-activity banding and specialist availability. It also covers source-failure handling, the Census key prerequisite, and the informational-not-medical-advice boundary, making it complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: condition is heuristically mapped to a provider specialty, specialty overrides that mapping, city/state scope the trial and provider search, and the Census component is optional and needs a key. This helps an agent choose and combine parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific composite verb+resource: a one-call read of clinical-trial activity plus local specialist availability for a medical condition in a US geography. It clearly identifies the audience and decision context, and it is distinguishable from siblings like trials_search, npi_search_provider, and census_population because it is explicitly a combined site-feasibility synthesis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear and concrete usage context: trial sponsors, CROs, or site-feasibility analysts deciding where to run a study. It does not explicitly name excluded cases or alternatives such as 'use trials_search for raw trial data,' but the intended situation is strongly implied and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cms_home_health_searchBRead-onlyIdempotentInspect
Search Medicare-certified home health agencies from CMS Home Health Compare. Returns agency name, address, services offered, and quality ratings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25) | |
| state | No | Two-letter state code (e.g. 'CA', 'NY') | |
| offset | No | Pagination offset (default 0) | |
| name_contains | No | Partial provider name match |
TDQS
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 the upstream source (CMS Home Health Compare) and, notably, the returned fields — useful context given there is no output schema. It says nothing about result caps, pagination limits, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action front-loaded and the payload description second. Nothing is repeated from the schema or the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description's enumeration of returned fields (name, address, services, quality ratings) is exactly what an agent needs to judge result usefulness. The remaining gap is that optional filtering behaviour and pagination semantics across limit/offset are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, offset, state, name_contains) are already documented with format and defaults. The description adds no parameter-level detail, which is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Search Medicare-certified home health agencies from CMS Home Health Compare") and enumerates the returned data. The phrase "home health agencies" implicitly separates it from sibling cms_hospice_search, cms_hospital_search, and cms_nursing_home_search, but it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool returns but gives no when-to-use guidance, no exclusions, and no routing to the clearly related CMS siblings. An agent choosing among the four cms_*_search tools gets no help from the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cms_hospice_searchARead-onlyIdempotentInspect
Search Medicare-certified hospice agencies from CMS Hospice Compare. Returns provider name, address, ownership, and quality measures.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25) | |
| state | No | Two-letter state code (e.g. 'CA', 'NY') | |
| offset | No | Pagination offset (default 0) | |
| name_contains | No | Partial provider name match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds value by disclosing the returned fields (provider name, address, ownership, quality measures), which matters since there is no output schema, though it omits pagination behavior and any rate/auth caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core action and data source front-loaded before the return-field list. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filterable search tool with full schema coverage and safety annotations, the description supplies the one thing structured fields do not: the shape of the results. It stops short of describing result volume/pagination interaction, but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all four parameters (limit, state, offset, name_contains) documented in the schema itself. The description adds no filter syntax, format, or combination semantics beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (Medicare-certified hospice agencies) plus the data source (CMS Hospice Compare). The resource noun cleanly distinguishes it from the sibling cms_home_health_search, cms_hospital_search, and cms_nursing_home_search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope (Medicare-certified hospice agencies, from CMS Hospice Compare) implies when the tool is useful, but there is no explicit when-to-use guidance, no exclusions, and no mention of how to choose between this and the parallel CMS search tools. Usage must be inferred from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cms_hospital_searchBRead-onlyIdempotentInspect
Search Medicare-certified hospitals from the CMS Hospital General Information dataset. Returns facility name, address, ownership type, emergency-services flag, and CMS overall star rating (1-5). Filter by state, city, and partial facility-name match.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City name (case-insensitive) | |
| limit | No | Max results (default 25) | |
| state | No | Two-letter state code (e.g. 'CA', 'NY') | |
| offset | No | Pagination offset (default 0) | |
| name_contains | No | Partial provider name match |
TDQS
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 fully covered. The description adds the upstream data source and the returned attribute set (ownership type, emergency-services flag, star rating 1-5), which is genuine added context for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with no filler; the purpose and scope lead, and the filter capabilities follow. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates returned fields, and annotations carry the safety profile. Only minor gaps remain — no pagination behavior or dataset-vintage notes — for a five-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mirrors the schema's filter dimensions (state, city, partial name) without adding syntax, defaults, or matching semantics (e.g., how partial matching behaves, case sensitivity, pagination interaction).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Search Medicare-certified hospitals from the CMS Hospital General Information dataset.' The resource is specific enough that an agent can distinguish it from cms_home_health_search, cms_hospice_search, and cms_nursing_home_search by facility type, though the description never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no alternatives — despite three obvious parallel CMS facility tools in the toolset. 'Filter by state, city, and partial facility-name match' is a restatement of filter dimensions rather than routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cms_nursing_home_searchBRead-onlyIdempotentInspect
Search Medicare-certified nursing homes from CMS Nursing Home Compare. Returns name, address, ownership, certification status, total beds, and quality measures.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25) | |
| state | No | Two-letter state code (e.g. 'CA', 'NY') | |
| offset | No | Pagination offset (default 0) | |
| name_contains | No | Partial provider name match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, open-world search, so the safety profile is covered. The description adds the useful scope qualifier 'Medicare-certified' and lists return fields, but says nothing about pagination behavior, rate limits, or result completeness — a 3 with annotations carrying the safety burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and source. No filler, though the return-field list is somewhat boilerplate given no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a read-only search whose annotations and full schema coverage carry the load. However, with no output schema and no usage/exclusion guidance, an agent can't distinguish this from the hospital/hospice CMS searches without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for limit, state, offset, and name_contains. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Search) and resource (Medicare-certified nursing homes) and states the data source (CMS Nursing Home Compare), plus enumerates returned fields. It doesn't differentiate from siblings, though the cms_* family names make the resource self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling cms_hospital_search / cms_home_health_search alternatives. The agent must infer that this tool covers nursing homes specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_accreditationARead-onlyIdempotentInspect
Current institutional accreditation status, accreditor, and (when published by DAPIP) last action date and programmatic accreditations.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes | IPEDS UNITID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds the useful caveat that last action date and programmatic accreditations are included only when published by DAPIP, giving the agent awareness that these fields may be absent. This is helpful context but not extensive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler. It front-loads the core purpose ('Current institutional accreditation status') and packs the additional fields and DAPIP caveat efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the description covers what data will be returned and the key condition under which some fields are available. Nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter unit_id is already fully described in the schema as 'IPEDS UNITID' (100% schema description coverage). The description does not add further parameter details, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (institutional accreditation) and enumerates the returned data: status, accreditor, last action date, and programmatic accreditations. It does not use an explicit verb like 'gets' or 'returns,' but the intent is unmistakable and it is distinct from sibling college_* tools that focus on search, metrics, or outcomes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus related siblings such as college_search, college_metrics, or college_compare. There are no explicit when-to-use conditions, exclusions, or alternative tool names, so an agent must infer suitability from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_compareBRead-onlyIdempotentInspect
Side-by-side comparison of 2-5 schools across cost, outcomes, and admissions metrics. Pass UNITIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_ids | Yes | Array of 2-5 IPEDS UNITIDs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds no behavioral context beyond that, and in fact the '2-5 schools' limit merely restates the schema's minItems/maxItems rather than disclosing behavior such as what happens with invalid UNITIDs or partial data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the comparison scope, and zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names what is compared (cost, outcomes, admissions), giving the agent a sense of the response. It is nearly complete for a simple one-parameter comparison tool, missing only return-shape details like metric granularity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented parameter (2-5 IPEDS UNITIDs), so the baseline is 3. 'Pass UNITIDs' adds no syntax, format, or source information beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (side-by-side comparison) and resource (schools) plus the metric categories covered, which separates it from single-school siblings like college_metrics or college_demographics. It does not explicitly name the sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Pass UNITIDs' implies UNITIDs must already be known, hinting that a lookup step precedes this call, but there is no explicit when-to-use guidance or reference to college_search as the way to obtain IDs. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_demographicsARead-onlyIdempotentInspect
Student-body demographics for one school: race/ethnicity, gender, age (under/over 25), and geographic origin (in-state, out-of-state, foreign).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes | IPEDS UNITID. |
TDQS
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 what demographic dimensions are included, but it does not disclose behavior around missing data, invalid unit IDs, or the response format. This is acceptable given the strong 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose ('Student-body demographics for one school') and then compactly lists the demographic categories. Every word contributes meaning, with no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter lookup tool with rich annotations and no output schema, this description is largely complete: it names the school identifier, the single-school scope, and the demographic dimensions returned. It does not detail formatting or data source, but these are minor gaps for such a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter, unit_id, with a description 'IPEDS UNITID.' The tool description does not add significant parameter-level detail, but none is needed since the schema fully documents the parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as student-body demographics for a single school and enumerates the specific demographic categories covered (race/ethnicity, gender, age, geographic origin). It distinguishes itself from sibling tools like college_compare or college_trends through the 'for one school' scope, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one school' implies this tool is for retrieving a single institution's demographic breakdown, as opposed to comparing or searching across schools. However, it does not explicitly state when to use this tool over siblings like college_metrics or college_compare, nor does it provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_metricsARead-onlyIdempotentInspect
Cost and outcome metrics for one school: published tuition (in-state and out-of-state), average net price, six-year graduation rate, first-year retention, median earnings ten years after entry, admission rate, and SAT/ACT ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes | IPEDS UNITID (Scorecard 'id'). |
TDQS
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 list of returned metrics, which is useful, but does not disclose behavioral details such as data source, update frequency, or handling of missing metrics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the tool's purpose ('Cost and outcome metrics for one school') and then lists the specific metrics. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with rich annotations and no output schema, the description works as a de facto output contract by naming every metric returned. It lacks caveats around data availability, but nothing essential seems missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with unit_id documented as the IPEDS UNITID (Scorecard 'id'). The tool description does not need to add parameter semantics, and it does not attempt to; the schema adequately carries this information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning cost and outcome metrics for a single school, and enumerates the specific metrics included. It differentiates from broader sibling tools like college_trends and college_compare by scoping to 'one school,' though it does not name those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this when you need tuition, graduation, earnings, admission, or SAT/ACT metrics for one institution. However, there is no explicit guidance on when to prefer it over related sibling tools such as college_compare, college_demographics, or college_value_score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_outcomes_by_programARead-onlyIdempotentInspect
Program-level outcomes (4-digit CIP code) for one school: median earnings one year after completion, median debt at completion, and award counts.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes | IPEDS UNITID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful semantic detail about the metrics ('one year after completion', 'at completion') but does not disclose other behavioral traits such as whether all programs are returned, how missing data is handled, or the response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence with no filler. It front-loads the resource and scope before enumerating the returned metrics, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with no output schema, the description provides the essential return-value details: earnings, debt, and award counts at program level. It could be slightly clearer that the tool returns data for all programs for the given school rather than requiring a CIP-code input, but the schema plus description are sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, unit_id, is fully described in the schema as an IPEDS UNITID, so schema coverage is 100%. The description does not add additional parameter-level meaning, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely identifies the resource (program-level outcomes), the granularity (4-digit CIP code), the scope (one school), and the specific measures returned (median earnings, median debt, award counts). This clearly distinguishes it from sibling tools like college_metrics or college_value_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Program-level outcomes ... for one school' provides clear context for when to use this tool: when a caller needs earning, debt, or award-count metrics broken down by program. It does not name alternative tools or give explicit when-not-to-use guidance, but the scope and granularity are evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_searchARead-onlyIdempotentInspect
Search US colleges and universities by name, state, control type, size, or accreditor. Returns matching institutions with location, control, predominant degree, and enrollment.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Substring of the institution name. | |
| size | No | Carnegie size bucket. | |
| limit | No | Max results, 1-100. Default 25. | |
| state | No | Two-letter state code (e.g. TX). | |
| control | No | Institutional control. | |
| accreditor | No | Substring match against the school's institutional accreditor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds useful behavioral context by specifying the return content — matching institutions with location, control, predominant degree, and enrollment — which is especially valuable given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no wasted words. The search scope and filters lead, and the return content follows. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only search tool with no required parameters and fully documented schema fields, the description covers what it searches, what filters are available, and what comes back. The absence of an output schema is compensated by the description's explicit return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter. The description merely recaps the filter attributes without adding new detail about matching behavior, value formats, or combination semantics, so it earns the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Search US colleges and universities') and lists the available filter dimensions, making the tool's purpose clear. It does not explicitly name or contrast sibling tools like college_accreditation or college_compare, but the general lookup scope is evident from the resource and return fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the general-purpose college search tool — use it to find institutions by name, state, control, size, or accreditor. It provides no explicit guidance on when to prefer a sibling tool such as college_accreditation or college_outcomes_by_program, leaving the choice mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_trendsARead-onlyIdempotentInspect
Multi-year trend for one school sourced from the Urban Institute Education Data Portal (IPEDS). Choose a metric (enrollment, graduation_rate, retention, cost) and a year range.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | Trend metric. | |
| unit_id | Yes | IPEDS UNITID. | |
| end_year | Yes | Last academic year, e.g. 2022. | |
| start_year | Yes | First academic year, e.g. 2010. |
TDQS
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 beyond the annotations by specifying the data source (Urban Institute Education Data Portal/IPEDS) and the single-school scope, which is useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core purpose and source, then lists the parameter choices and range selection, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations, complete parameter schema, and simple read-only nature of the tool, the description is largely sufficient for selection and invocation. However, there is no output schema and the description does not describe the response format or behavior for unavailable data, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter already described, including the metric enum and year examples. The description simply restates the metric names and 'year range' without adding deeper semantic meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a multi-year trend for one school and identifies the data source and available metrics. It is specific enough to distinguish from college_search and college_compare, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by saying 'for one school' and instructing the user to choose a metric and year range. It does not, however, explicitly state when not to use it or point to alternatives such as college_compare for comparisons or college_metrics for other metric views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
college_value_scoreARead-onlyIdempotentInspect
One-call 'is this degree worth the cost' read for a US college (and optionally a named program). Joins the College Scorecard / IPEDS education domain (average net price, six-year completion rate, median earnings ten years after entry, and - when a program is named - program-level median debt and 1-year earnings) with a keyless BLS wage context (CES average hourly earnings, annualized) to place those earnings against the broad US private-sector wage. Returns a plain read - STRONG VALUE / FAIR / WEAK VALUE / INSUFFICIENT DATA - with the cost-vs-earnings evidence itemized and each sub-signal scored. A source that fails is noted, not fatal. Premium cross-source synthesis; Scorecard earnings cover federally-aided students only and lag by years. Informational only, not admissions, financial, or career advice.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional 2-letter state to disambiguate the school name (e.g. 'OH'). | |
| college | Yes | US college/university name (e.g. 'University of Michigan', 'Ohio State University'). | |
| program | No | Optional program name or CIP prefix (e.g. 'Nursing', 'Computer Science') to add program-level debt-vs-earnings evidence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, and the description adds meaningful behavior beyond that: it tolerates source failures ('noted, not fatal'), emits an INSUFFICIENT DATA category, and discloses data caveats (federally-aided students only, earnings lag by years). This matches and enriches 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, and every sentence adds substantive content: data sources, output categories, fault tolerance, caveats, and disclaimer. The only marginal phrase is 'Premium cross-source synthesis,' and the paragraph is dense but not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description itemizes the four possible verdicts, the evidence structure, and source-failure behavior. Combined with full schema documentation, an agent has enough to call and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters at 100% coverage, so the baseline is 3. The description adds value by explaining that naming a program adds program-level median debt and 1-year earnings, which provides semantic meaning beyond the schema's field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb/resource: a one-call 'is this degree worth the cost' read for a US college, optionally a named program. It clearly distinguishes itself from siblings like college_search, college_compare, and college_metrics by describing a graded verdict output (STRONG VALUE / FAIR / WEAK VALUE / INSUFFICIENT DATA) and cross-source synthesis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—quick value assessment for one college—and warns 'Informational only, not admissions, financial, or career advice.' However, it never names sibling tools or states when to choose this over college_compare, college_metrics, or college_outcomes_by_program, so 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.
company_complaint_profileARead-onlyIdempotentInspect
One-call CONSUMER-RISK read for a company or brand, LED by the consumer-complaint picture. Joins three public-record legs, CFPB first: CFPB Consumer Complaint Database (complaint volume for the company plus the top complaint products and issues - the primary signal), product recalls (CPSC consumer products + openFDA drug/device/food enforcement, keyed by the company), and federal-court litigation (CourtListener dockets whose caption actually names the company). Returns a rolled-up read (LOW / MODERATE / ELEVATED consumer-risk signals) that leads with complaint volume and the top complaint products/issues, then folds in recall count and severity (FDA Class I / death-related = high) and litigation hits (total + last-3-years). A leg that fails is noted, not fatal. This is consumer-complaint-centered and distinct from product_liability_screen (recall/litigation-centered for manufacturers). NHTSA vehicle recalls need a specific year+make+model so are out of scope here (use recall_screen for a vehicle). Premium cross-source synthesis; informational public-record synthesis, NOT legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Optional lower-bound date (YYYY-MM-DD) for FDA recalls. | |
| state | No | Optional 2-letter state to scope the CFPB complaint leg (e.g. 'CA'). | |
| company | Yes | Company or brand name to profile (e.g. 'Wells Fargo', 'Peloton'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar is lowered. The description still adds substantial behavioral context: it joins three public-record legs, notes that a failed leg is 'noted, not fatal,' explains the rolled-up risk output, and clarifies the weighting of FDA Class I/death-related recalls. This far exceeds 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause adds operational value: the lead sentence defines scope, then it itemizes data sources, output structure, failure handling, sibling distinctions, scope exclusions, and a disclaimer. Nothing is redundant; the structure is front-loaded with the core purpose and then layers detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description explains the return shape in concrete terms: LOW/MODERATE/ELEVATED risk read, complaint volume, top products/issues, recall count with FDA Class I/death severity, and litigation hits total + last-3-years. It also covers failure behavior and clarifies this is informational and not legal advice. An agent has enough to call it and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents company, since, and state fully. The description does not add much parameter-specific meaning beyond naming the company/brand focus and mentioning that 'since' applies to FDA recalls. Baseline 3 is appropriate because 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'One-call CONSUMER-RISK read for a company or brand, LED by the consumer-complaint picture.' It clearly differentiates itself from product_liability_screen and recall_screen, and specifies the exact data legs involved. An agent can immediately understand what this tool does and how it differs from nearby siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names alternatives and provides exclusion criteria: 'This is consumer-complaint-centered and distinct from product_liability_screen' and 'NHTSA vehicle recalls need a specific year+make+model so are out of scope here (use recall_screen for a vehicle).' This gives the agent actionable routing guidance without needing to inspect other tool definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_infoARead-onlyIdempotentInspect
Get company profile and financial fundamentals. Returns sector, industry, employee count, business description, revenue, gross profit, EBITDA, profit margins, EPS, P/E ratio, forward P/E, dividend yield, beta, market cap, and shares outstanding. Use this for "tell me about Apple", "what does this company do?", "company financials", "what sector is Netflix in?", "how many employees does Tesla have?", or any company research question.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol (e.g., "AAPL") |
TDQS
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 field list, which is useful in the absence of an output schema, but it does not disclose failure behavior, data coverage limitations, or whether fields can be null for some companies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then a compact field list, then example queries. Every sentence earns its place, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only tool with no output schema, the field list and example queries give an agent enough context to call it correctly and interpret the result. A minor gap is the lack of caveats about data availability or symbol validation, but these are not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the only parameter symbol is already documented as a stock ticker example ('AAPL'). The description reinforces this with Apple, Netflix, and Tesla examples but does not add meaningful parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Get company profile and financial fundamentals.' It then enumerates the exact returned fields and provides concrete example queries (e.g., 'tell me about Apple', 'what sector is Netflix in?'), distinguishing this tool from sibling tools like stock_quote or company_complaint_profile by its broad company-research scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases and example prompts, making it easy for an agent to route questions like 'how many employees does Tesla have?' to this tool. However, it does not explicitly say when not to use it or name alternatives such as stock_quote for price-specific queries, so it stops 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.
company_trust_checkARead-onlyIdempotentInspect
One-call public-record trust read for a company - answers 'can I trust this company?' for KYB/vendor-diligence agents. Joins the LiveDataLink sources that carry a legitimacy or risk signal into a single standing read: an OFAC SDN / EU / UN / BIS sanctions screen (a hit is decisive), SEC EDGAR registration plus the latest filing date (legitimacy + recency), USAspending federal award history (the US government transacts with them), and EPA ECHO facility compliance (significant-non-compliance, penalty, and non-compliant-quarter flags). Returns a plain-English verdict band (ESTABLISHED PUBLIC-RECORD STANDING / STANDING WITH FLAGS / LIMITED FOOTPRINT / SANCTIONS SCREEN HIT), the positive signals, the flags to review, and the resolved identifiers. A source that fails is noted, not fatal. This is a public-record SIGNAL read, not a credit report, background check, or endorsement: absence of a record is not proof of wrongdoing and a match is not proof of guilt. Premium cross-source synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional 2-letter state to disambiguate the EPA facility search. | |
| ticker | No | Optional stock ticker hint to pin the SEC EDGAR match (e.g. 'LMT'). | |
| company | Yes | Company or organization name to check (e.g. 'Lockheed Martin', 'Acme Widgets LLC'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, openWorld, idempotent, and non-destructive hints. The description adds meaningful behavioral context beyond those hints: a sanctions hit is decisive, failing sources are noted but not fatal, and the read returns a verdict band plus signals, flags, and identifiers. It also clarifies the interpretative limits of absence and match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but front-loads the purpose and uses each sentence for a distinct job: scope, sources, output, failure behavior, caveats, and positioning. A few phrases like 'premium cross-source synthesis' add limited value, but there is no wasteful repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains exactly what the caller receives: a verdict band, positive signals, flags to review, and resolved identifiers. It also covers source-failure handling and interpretive caveats, so combined with the parameter schema and annotations, the agent has enough context to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters company, state, and ticker are already documented. The description does not add new parameter-level details beyond connecting the overall tool to its data sources; it stays at the baseline of relying on the schema for parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb and resource: a one-call public-record trust read for a company, explicitly answering 'can I trust this company?' for KYB/vendor-diligence agents. It names the exact data sources joined and the verdict bands returned, making the tool's scope unmistakable and distinct from generic company-info or sanctions tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is clearly stated (KYB/vendor-diligence trust questions) and the description adds exclusions: it is not a credit report, background check, or endorsement, and absence of a record is not proof of wrongdoing. It does not name a specific sibling tool as the alternative, but the context and boundaries are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_bill_actionsARead-onlyIdempotentInspect
Get the chronological legislative action history for one bill (introductions, committee referrals, votes, becoming law). Requires Congress number, bill type, and bill number.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max actions (default 50). | |
| congress | Yes | Congress number. | |
| bill_type | Yes | Bill type code: hr (House Bill), s (Senate Bill), hjres, sjres, hconres, sconres, hres, sres. | |
| bill_number | Yes | Bill number. |
TDQS
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 behavioral context by saying the output is chronological and includes introductions, committee referrals, votes, and law status, but it does not disclose response shape, pagination behavior, or other limits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core purpose, content examples, and required parameters with no filler. The main action is front-loaded, and every sentence adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only one-bill lookup, the description covers what the tool returns, the scope, and the prerequisites. It does not describe return value shape explicitly, but the action-history examples sufficiently communicate expected output for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter already has a meaningful description, including expanded enum labels. The description only repeats the required parameter names ('Congress number, bill type, and bill number') without adding new semantic detail, 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.
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 specific resource ('chronological legislative action history') scoped to 'one bill'. It clearly distinguishes this from siblings like congress_bill_details, congress_bill_cosponsors, and congress_house_votes by naming a distinct bill-action-history resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when a caller has a specific bill (Congress number, bill type, bill number) and needs its action history. It does not explicitly name alternatives or exclusions, but the 'for one bill' scope gives clear context against search-style siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_bill_cosponsorsARead-onlyIdempotentInspect
List the cosponsors of one bill with their party and state. Useful for mapping coalitions behind legislation. Requires Congress number, bill type, and bill number.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max cosponsors (default 250). | |
| congress | Yes | Congress number. | |
| bill_type | Yes | Bill type code: hr (House Bill), s (Senate Bill), hjres, sjres, hconres, sconres, hres, sres. | |
| bill_number | Yes | Bill number. |
TDQS
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 cosponsors come with party and state and that the tool requires Congress number, bill type, and bill number, but it does not disclose additional behavioral details such as pagination, default limits, or error behavior. With annotations carrying the main burden, a mid 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action is front-loaded, followed by the use case and required parameters, 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.
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 fully documented parameters, the description covers the purpose, return content, and required inputs. It does not explicitly mention the optional limit parameter, but that is already documented in the schema, so the overall information is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters including the enum values for bill_type and the default for limit. The description merely restates that Congress number, bill type, and bill number are required, adding no semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('cosponsors of one bill'), and it names the returned fields ('party and state'). This makes the tool's purpose immediately distinguishable from sibling congressional tools like congress_bill_actions 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('mapping coalitions behind legislation') and states the required inputs. It does not explicitly name alternatives or exclusion conditions, but the intended context is clear enough for an agent to know when this tool is relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_bill_detailsARead-onlyIdempotentInspect
Get full detail for one bill, including title, sponsor, latest action, policy area, and a cosponsor party breakdown. Requires the Congress number, bill type, and bill number (e.g. 118, 'hr', 3076).
| Name | Required | Description | Default |
|---|---|---|---|
| congress | Yes | Congress number, e.g. 118. | |
| bill_type | Yes | Bill type code: hr (House Bill), s (Senate Bill), hjres, sjres, hconres, sconres, hres, sres. | |
| bill_number | Yes | Bill number, e.g. 3076. |
TDQS
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, covering the safety profile. The description adds useful context about what fields are returned and requires the three identifying inputs, but it does not disclose edge-case behavior such as missing bills or rate limits. This is acceptable but not exceptional for a simple lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states purpose and expected output fields, the second states the required parameters with a concrete example. Everything in the description earns its place and is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter read-only lookup, the description plus fully covered schema is nearly complete: it lists output contents, required inputs, and a concrete example. The only minor gap is the lack of explicit routing guidance relative to related congress bill tools, but correct invocation is not hindered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter—congress, bill_type, and bill_number—already has a clear description with enum values for bill_type. The description's example (118, 'hr', 3076) adds a small formatting confirmation but no substantive new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Get full detail for one bill') and enumerates the exact fields returned: title, sponsor, latest action, policy area, and cosponsor party breakdown. This clearly differentiates it from search-style siblings and from more narrowly scoped tools like congress_bill_actions or 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—when a specific, known bill's comprehensive details are needed—and states the required identifiers. It provides no explicit guidance about when not to use it or which sibling tool to use instead, so an agent must infer routing from tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_house_votesARead-onlyIdempotentInspect
List recent U.S. House roll-call votes for a Congress, with vote number, question, result, and date. Defaults to the current Congress.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max votes (default 20). | |
| congress | No | Congress number (default current, 91). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the tool is read-only, idempotent, and non-destructive. The description adds that results include vote number, question, result, and date, and that the congress parameter defaults to the current Congress. It does not specify ordering or pagination beyond limit, but that is a minor gap given the read-only profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loads the verb and resource, then packs a compact field list and default behavior. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list with two optional parameters, the description plus schema covers input and expected output fields. The absence of an output schema is partially mitigated by listing returned fields; ordering and pagination semantics remain unspecified but are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so defaults and meaning of limit and congress are already documented. The description only restates the current-Congress default and does not add format or syntax details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('List') on a specific resource ('U.S. House roll-call votes') and names the returned fields. The tool is clearly distinct from sibling Congress tools such as bill details or recent laws.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the primary use case explicit: retrieving recent House roll-call votes, optionally filtering by Congress and limit. It does not explicitly name alternatives or exclusions, but there is no overlapping sibling tool for roll-call votes, so the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_member_detailsARead-onlyIdempotentInspect
Get detailed profile for one member of Congress by bioguide ID (e.g. 'P000197'), including party history, terms served, and leadership roles.
| Name | Required | Description | Default |
|---|---|---|---|
| bioguide_id | Yes | Bioguide ID, e.g. 'P000197'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly, idempotent, and non-destructive, so there is no safety contradiction. The description adds useful behavioral context by listing what the profile includes (party history, terms served, leadership roles), which is especially valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource, then the ID format example and returned content. Every clause adds information; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only lookup with no output schema, the description gives the agent everything essential to invoke it correctly: required ID, an example, and the shape of the result. It does not mention error behavior or how to obtain an ID, but that is not essential for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the schema already describes bioguide_id and provides the same example. The description repeats the example but adds no further semantic detail, so the schema carries the burden and 3 is the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Get') and resource ('detailed profile for one member of Congress'), and clearly identifies the key identifier (bioguide ID) with an example. It distinguishes itself from sibling search tools like congress_search_members by indicating this is a single-member detail lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the right use case: use when you already have a bioguide ID and want a single member's detailed profile. It does not explicitly name alternatives or exclusions, such as using congress_search_members to first find the bioguide ID, so it stops short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_recent_lawsARead-onlyIdempotentInspect
List bills that have become public or private law in a given Congress. Defaults to the current Congress. Use law_type 'pub' for public laws or 'priv' for private laws.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20). | |
| congress | No | Congress number (default current, 91). | |
| law_type | No | Law type: 'pub' or 'priv'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive nature of the tool. The description adds the default-to-current-Congress behavior and law_type semantics, but does not disclose ordering, recency bounds, or other behavioral details beyond the schema. This is acceptable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences carry the full purpose, default behavior, and parameter instructions. No filler or redundancy; the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter read-only listing tool with rich annotations and a fully described schema, the description is complete enough for correct invocation. It does not describe the return format, but the absence of an output schema and the simplicity of the tool make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description reinforces the meaning of law_type ('pub' for public laws, 'priv' for private laws) and the default congress, but adds little beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('List bills that have become public or private law') and the resource scope ('in a given Congress' or current Congress). This distinguishes it from sibling tools like congress_search_bills or congress_bill_details by focusing specifically on enacted laws, not bills in progress.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational guidance: defaults to the current Congress and instructs how to choose law_type. It does not explicitly name alternatives or state when not to use the tool, but the context is sufficient for an agent to choose it correctly for listing enacted laws.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_search_billsARead-onlyIdempotentInspect
Search or list recent U.S. federal bills and resolutions from Congress.gov. Returns the most recently updated bills, optionally scoped to a Congress number or filtered by a free-text query. Use this to find legislation by topic or to see what is currently moving.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order, e.g. 'updateDate+desc' (default) or 'updateDate+asc'. | |
| limit | No | Max results (1-250, default 20). | |
| query | No | Optional free-text keyword filter (e.g. 'inflation', 'semiconductor'). | |
| offset | No | Pagination offset. | |
| congress | No | Congress number (e.g. 91 is current). Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by stating that results are 'the most recently updated bills' and are optionally scoped/filtered, but it does not disclose additional traits like pagination behavior or response structure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by return behavior and a concrete use case. Minor redundancy exists between 'recent... bills and resolutions' and 'most recently updated bills,' but overall every sentence contributes useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search/list tool with fully documented parameters, the description is adequate: it states the resource, the result focus, the optional filters, and the intended use. No output schema exists, so a bit more detail about the response shape could improve completeness, but the description covers the essential selection and invocation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters already have meaningful descriptions. The tool description lightly echoes the query and congress parameters but adds no new semantic detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb and resource: 'Search or list recent U.S. federal bills and resolutions from Congress.gov.' It further narrows the purpose with 'most recently updated bills' and explains the use case as finding legislation by topic or seeing what is currently moving, which distinguishes it from sibling tools like congress_bill_details or congress_recent_laws.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context for when to use the tool: 'Use this to find legislation by topic or to see what is currently moving.' However, it does not state exclusions or explicitly mention alternatives, such as using congress_bill_details for a specific bill's full record or congress_recent_laws for enacted laws.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_search_membersARead-onlyIdempotentInspect
Search members of Congress, optionally filtered by Congress number, two-letter state, and district. Returns name, party, chamber, and bioguide ID (use that ID with congress_member_details).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20). | |
| state | No | Two-letter state code, e.g. 'TX'. | |
| congress | No | Congress number. | |
| district | No | House district number. | |
| current_member | No | Limit to currently-serving members. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds behavioral value by specifying the exact output fields (name, party, chamber, bioguide ID) and the downstream use of the ID, which is helpful given there is no output schema. It does not mention pagination or ordering, but this is a minor omission for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: the action and filters are up front, return values are stated next, and the cross-reference is last. Every clause earns its place 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.
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 no required parameters and a fully described input schema, the description covers the search filters, the return fields, and the natural next step (congress_member_details). The lack of an output schema is partially compensated by the explicit return field list, though details like pagination or result count are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters and their types. The description restates the filtering semantics for Congress, state, and district but adds no new meaning beyond that; it omits the limit and current_member parameters entirely. A 3 is the appropriate baseline when 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('members of Congress'), and enumerates the optional filters and return fields. This clearly distinguishes it from congress_search_bills and congress_member_details, so an agent can tell what the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear use case: searching members by optional filters rather than retrieving details for a known member. It also gives a concrete routing hint by saying the returned bioguide ID should be used with congress_member_details. It does not explicitly exclude bill searches or other sibling tools, 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.
corporate_ownership_treeARead-onlyIdempotentInspect
One-call FULL corporate-ownership tree for a company from GLEIF (keyless CC0 reference data). Give a company name or a 20-character LEI; the tool resolves the entity, climbs to its ULTIMATE parent (top of the ownership chain), then walks DOWN from that root to list the reported direct subsidiaries plus one level of grand-subsidiaries, each with its LEI, jurisdiction, and status (entity ACTIVE/INACTIVE + LEI registration ISSUED/LAPSED). The queried entity is marked in the tree so you can see where it sits. Distinct from resolve_entity, which returns the ultimate parent plus a subsidiary COUNT only: this returns the actual subsidiary LIST/tree for M&A, diligence, and counterparty mapping. The tree is capped (about 25 nodes) so a broad conglomerate stays bounded, with an 'and N more' note where GLEIF reports additional subsidiaries. Only relationships an entity self-reports to GLEIF are shown, so coverage varies by company. A failing hierarchy hop is noted, not fatal. Informational public-record synthesis; verify against GLEIF before relying on it.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | No | Optional exact 20-character LEI code to anchor the tree directly (e.g. '5493006MHB84DD0ZWV18'). Overrides a name search. | |
| company | No | Company / organization name (e.g. 'Alphabet Inc.', 'JPMorgan') or a 20-character LEI code. Provide this or 'lei'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite strong annotations (read-only, non-destructive, open-world), the description adds substantial behavioral context: the tree is capped at ~25 nodes, extra subsidiaries appear as an 'and N more' note, failing hierarchy hops are noted rather than fatal, and results are self-reported public-record data that should be verified. These details inform the agent about edge cases and data reliability 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: it covers the tool's core behavior, algorithm, edge cases, data caveats, and differentiation from a sibling. The most important information is front-loaded, and the structure follows a logical flow from what it does, to how it works, to limitations and verification advice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tree-building tool with no output schema, the description is remarkably complete. It explains the resolution flow, the ultimate-parent-and-descend approach, the returned fields (LEI, jurisdiction, status), how the queried entity is marked, the node cap, and the self-reporting limitation. An agent has enough context to invoke the tool correctly and interpret its results appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both 'company' and 'lei' are already documented fully in the input schema. The description repeats the name-or-LEI option and notes that LEI overrides name search, but this is also present in the schema. It adds no meaningful semantic detail beyond what the schema already conveys, 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.
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 ('One-call FULL corporate-ownership tree') and immediately identifies the data source (GLEIF). It clearly distinguishes itself from resolve_entity, which returns only an ultimate parent and count, while this tool returns the actual subsidiary list/tree. This leaves no ambiguity about what the tool does or how it differs from a near-named sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('for M&A, diligence, and counterparty mapping') and contrasts it with resolve_entity, which returns less information. It also explains the input alternatives (company name or 20-character LEI) and the key caveat that coverage is limited to self-reported relationships. This gives sufficient routing guidance without needing to inspect sibling tool schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cost_of_doing_business_indexARead-onlyIdempotentInspect
One-call comparative 'cost of operating a business here' read for a US state (with optional metro context). Joins three independent public sources, each a real operating-cost dimension expressed RELATIVE to the US national average (national = 1.00) so the result is a readable, comparable index: LABOR cost from BLS QCEW private-sector average annual pay across all industries (keyless), ENERGY cost from EIA retail electricity price for the commercial and industrial sectors (state vs national), and local CONTEXT from US Census ACS median household income, per-capita income, and median gross rent (needs a Census key; degrades gracefully). Returns a headline relative-cost banding (LOW / MODERATE / HIGH cost vs national) from a labor-weighted composite of the labor and energy indices, with each dimension's numbers and its own banding shown. Labor and energy are state-level; a supplied metro refines the context leg and label only. A source that fails is noted, not fatal. Informational, not a guarantee.
| Name | Required | Description | Default |
|---|---|---|---|
| metro | No | Optional 5-digit CBSA/metro code (e.g. '12420' for Austin, TX) to refine the Census local-context leg and the label. Labor and energy remain state-level. | |
| state | Yes | US state as a 2-letter code (e.g. 'TX', 'CA', 'NY') or 2-digit FIPS (e.g. '48'). Required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing source composition, key requirements (Census key needed, BLS keyless), graceful degradation when a source fails, state-level vs metro-level scope, and the 'informational, not a guarantee' caveat. It also explains the composite banding logic. This is rich, non-redundant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, every sentence earns its place: headline purpose, source methodology, output format, scope limitations, failure behavior, and disclaimer. The most important information is front-loaded, and the structure is logical and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain what the caller can expect to receive. It does: a headline LOW/MODERATE/HIGH banding from a labor-weighted composite, per-dimension numbers and bandings, and graceful handling of source failures. Nothing essential for selecting or invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters well. The description mainly restates what the schema says about metro refining the Census context leg and labor/energy staying state-level; it adds no new parameter-level meaning beyond the existing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'One-call comparative cost of operating a business here read for a US state (with optional metro context).' It clearly identifies the tool's unique domain and distinguishes it from neighboring economic, census, and energy tools by specifying that it joins labor, energy, and local-context sources into a comparative index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: a single-call comparative cost-of-business read for a US state, optionally refined by metro. It does not explicitly name alternatives or exclusions, such as when to prefer a more specialized BLS/EIA/census 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.
counterparty_risk_scoreARead-onlyIdempotentInspect
Compute a composite 0-100 Counterparty Risk Score for a company name. Combines findings from sanctions screening (OFAC/UN/EU/BIS), SEC EDGAR (registered-filer signal), federal courts (litigation history), EPA ECHO (environmental enforcement), and USAspending (federal contract vetting) into a single weighted metric with an explainable evidence chain. Returns: score, risk band (clean/low/moderate/elevated/high/critical), itemized evidence with citations, sources queried, sources that failed, and a plain-text summary suitable for an AI agent to surface to a user. Sanctions hits zero the score regardless of other signals. Use this when you need a single-call counterparty risk verdict instead of stitching five separate queries.
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | Company or entity name to score. Examples: 'Lockheed Martin', 'Acme Holdings BV', 'Pfizer Inc'. Common suffixes (Inc/LLC/Ltd/Corp) are normalized automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/idempotent annotations by disclosing that the score is weighted and composite, that sanctions hits zero the score regardless of other signals, and that the output includes an explainable evidence chain plus a list of sources that failed. This is substantive behavioral context an agent needs to interpret and trust the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries operational value: what the score means, which sources feed it, what the output includes, a critical exception rule, and when to use it. The structure front-loads the core function and then expands logically through inputs, behavior, and outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description appropriately enumerates the return fields: score, risk band, itemized evidence, sources queried, sources that failed, and a plain-text summary. Combined with the single parameter's full schema documentation and the explicit usage condition, the description is complete for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage of the single parameter company_name, including examples and automatic normalization of common suffixes. The description does not need to add parameter detail and does not materially extend what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Compute a composite 0-100 Counterparty Risk Score for a company name.' It names the exact data sources involved and the output type, and it distinguishes the tool from the alternative of stitching five separate queries, making its purpose unmistakable among a large sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this when you need a single-call counterparty risk verdict instead of stitching five separate queries.' This gives the agent a clear decision rule and an implicit contrast with granular source-specific tools, even though those tools are not named individually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
court_case_searchBRead-onlyIdempotentInspect
Search federal and state court opinions by keyword, court, judge, party name, or date range. Returns case summaries with citations.
| Name | Required | Description | Default |
|---|---|---|---|
| court | No | Court ID, e.g. 'scotus', 'ca9', 'nysd'. | |
| judge | No | Judge name filter. | |
| limit | No | Max results (1-50, default 10). | |
| party | No | Party name filter. | |
| query | No | Free-text search query. | |
| date_filed_after | No | ISO date YYYY-MM-DD. | |
| date_filed_before | No | ISO date YYYY-MM-DD. |
TDQS
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 return shape ('case summaries with citations') and the federal/state coverage scope, which is helpful, but it does not disclose pagination, result limits, ordering, or coverage caveats beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the search scope and filter options, then states the return format. There is no filler or redundant repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a read-only search tool: it states what is searched, which filters matter, and what is returned. However, it lacks guidance on distinguishing this sibling from other court-search tools and does not mention result limits or pagination behavior, making it only minimally complete for a tool with 7 parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description enumerates keyword, court, judge, party name, and date range, which maps cleanly onto the schema properties, but it does not add meaning beyond what the schema already provides, such as query syntax or filter combination behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and clearly identifies the resource ('federal and state court opinions') plus the main filter dimensions. It does not explicitly distinguish this tool from closely related siblings like court_opinion_search or caselaw_search, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for finding court opinions by common legal filters, but it provides no explicit guidance on when to prefer this over alternatives such as court_opinion_search, caselaw_search, court_docket_lookup, or court_judge_lookup. There are no exclusions or 'use X instead' signals, which is a notable 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.
court_citation_resolverBRead-onlyIdempotentInspect
Resolve a legal citation (e.g. '410 U.S. 113') to its CourtListener case record.
| Name | Required | Description | Default |
|---|---|---|---|
| citation | Yes | Citation string, e.g. '410 U.S. 113'. |
TDQS
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 profile. The description adds clarification that this resolves to a CourtListener case record, but it does not disclose behavior for unresolved citations or what a 'case record' contains. This is acceptable given the strong 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the action, gives an illustrative example, and names the output target efficiently. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter, read-only, idempotent lookup, the description plus schema and annotations supply enough to invoke the tool correctly: the citation format and the intended result. It lacks usage-alternative guidance and output-format detail, but the low complexity and rich annotations keep it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single 'citation' parameter with the same example ('410 U.S. 113'), and schema description coverage is 100%. The tool description repeats the example without adding new meaning, so the parameter semantics remain at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Resolve'), a specific resource ('a legal citation'), and an output target ('its CourtListener case record'). The example citation makes the purpose concrete, but it does not explicitly distinguish this from overlapping siblings like caselaw_citation_lookup or court_case_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as caselaw_citation_lookup, court_case_search, or court_opinion_search. The description implies a citation-to-record lookup but does not state exclusions or recommend sibling tools for other citation-related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
court_docket_lookupARead-onlyIdempotentInspect
Look up a federal docket by court ID and docket number. Returns party list and recent entries from PACER/RECAP.
| Name | Required | Description | Default |
|---|---|---|---|
| court | Yes | Court ID, e.g. 'nysd'. | |
| docket_number | Yes | Docket number, e.g. '1:23-cv-04567'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, lowering the disclosure burden. The description adds useful behavioral context beyond annotations by identifying the data source (PACER/RECAP) and the specific output components (party list and recent entries), which helps set expectations for the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the action, follows with the required inputs, and ends with the expected output. Every phrase contributes useful information, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup, the description covers the essential inputs, the general source of data, and the type of content returned. It does not detail edge cases or result size limits, but given the annotations and schema richness, this is a minor gap rather than a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters already include type and example values in the schema. The description essentially restates 'court ID' and 'docket number' without adding substantive new meaning beyond what the schema provides, so it meets but does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up') with a precise resource ('federal docket') and the exact identifying inputs ('court ID and docket number'). It also states the return content ('party list and recent entries from PACER/RECAP'), making the tool's function clear and distinct from sibling search-oriented court tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when the user has both a court ID and a docket number. However, it provides no exclusions or explicit guidance on when to prefer related sibling tools such as court_case_search or court_recent_filings, so the routing guidance is left mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
court_judge_lookupARead-onlyIdempotentInspect
Look up a judge profile by name or CourtListener person ID. Returns positions, education, and bench history.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Judge full or partial name, or numeric person ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as read-only, idempotent, and non-destructive, lowering the bar. The description adds useful return-content context, but it does not disclose behavior around partial matches, multiple judges with the same name, or unavailable data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the action and lookup keys front-loaded. There is no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with strong annotations and clear schema coverage, the description provides the essential invocation contract and summarizes the return payload. It could mention match/disambiguation behavior, but nothing critical to calling the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter as a full or partial name or numeric person ID, so the description adds little beyond that. The description does clarify that the person ID is a CourtListener ID, which provides helpful source context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up') and identifies a clear resource ('judge profile'), along with the lookup keys and returned fields. It is easily distinguished from sibling court tools like court_case_search, court_docket_lookup, and court_opinion_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: whenever a judge's positions, education, or bench history is needed, and by name or CourtListener person ID. It does not explicitly name alternatives or exclusions, but no sibling tool covers judge profiles, so the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
court_opinion_searchBRead-onlyIdempotentInspect
Full-text search of court opinions. Returns opinion text snippets, authors, and citations.
| Name | Required | Description | Default |
|---|---|---|---|
| court | No | Optional court ID filter. | |
| limit | No | Max results (1-50, default 10). | |
| query | Yes | Search text required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and non-destructive, so the description does not need to restate safety. It adds value by disclosing the return shape (text snippets, authors, citations) but not search behavior details such as required query, optional filtering, pagination, or limitations. This adds modest 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the core action and primary return fields are front-loaded. Every phrase adds information, and the description is appropriately sized for a simple search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with complete schema coverage and read-only annotations, the description provides a workable overview of output. However, it omits any usage guidance or sibling differentiation, and with no output schema the return-shape sentence is the only behavioral detail. There are clear but non-fatal gaps for an agent selecting among many court/caselaw tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents query, court, and limit clearly. The description adds no parameter-level detail beyond the general full-text search notion, but the complete schema means it does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (court opinions) and the operation (full-text search), and states the return fields (snippets, authors, citations). It is clear and specific, but it does not explicitly differentiate itself from sibling search tools like caselaw_search or court_case_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over siblings (e.g., caselaw_search, court_case_search, court_oral_argument_search) or when not to use it. The description only implies a search use case, with no exclusions or alternative routing. This leaves the agent to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
court_oral_argument_searchARead-onlyIdempotentInspect
Search SCOTUS and federal appellate oral argument audio. Returns audio URLs and transcript snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| court | No | Optional court ID filter. | |
| limit | No | Max results (1-50, default 10). | |
| query | Yes | Search text. |
TDQS
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 return value context (audio URLs and transcript snippets), which is useful but does not disclose other behavioral traits such as pagination, court ID format, or result structure. This matches the baseline for a read-only tool with some added return info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Search SCOTUS and federal appellate oral argument audio. Returns audio URLs and transcript snippets.' Every word contributes to the purpose and output, with no filler or repetition. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 3 well-documented parameters, the description plus schema is largely complete. It names the scope and return content, and annotations cover the read-only behavior. The lack of an output schema means the agent does not know the exact result shape, but the basic response type is stated. This is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with each parameter (query, court, limit) already documented. The description adds no additional parameter-level detail beyond the schema. Baseline 3 is appropriate since the schema carries the full semantic burden for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb and resource: searching oral argument audio from SCOTUS and federal appellate courts. It also specifies the return type (audio URLs and transcript snippets), which distinguishes it from sibling tools like court_opinion_search and court_case_search. The resource scope is precise enough for an agent to identify when to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for finding oral argument audio and transcripts in federal appellate courts. It does not explicitly name alternatives or exclusions, but the scope is so specific that confusion with sibling tools is unlikely. A slight improvement would be mentioning that written opinions belong to court_opinion_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
court_recent_filingsARead-onlyIdempotentInspect
Recent docket entries filed in a specific court, ordered newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| court | Yes | Court ID, e.g. 'nysd', 'cand'. | |
| limit | No | Max results (1-50, default 10). |
TDQS
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 bar is lower. The description adds genuine behavioral context beyond annotations: newest-first ordering and that results are scoped to a single court's docket entries. Nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 10-word sentence with zero filler: the core resource ('recent docket entries'), scope ('specific court'), and ordering ('newest first') are all present, and the ordering detail is placed at the end as a qualifier. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter, read-only, idempotent tool with no nested objects, the description covers what, where, and ordering. No output schema exists, so return shape is unspecified, but for a recent-list tool this is a minor gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (court with examples 'nysd'/'cand', limit with range and default). With full coverage the baseline is 3; the description's phrase 'in a specific court' only marginally reinforces the court parameter and adds nothing about limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (recent docket entries) and scope (a specific court), with a clear verb implied ('list/get'). It is semantically distinct from siblings like court_opinion_search and court_judge_lookup, but it does not explicitly differentiate from court_docket_lookup, which could plausibly overlap in an agent's mind.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied rather than stated: an agent can infer this is for browsing recent docket activity in a court, but the description never says when to prefer this over court_docket_lookup, court_case_search, or the caselaw tools. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpsc_recall_searchARead-onlyIdempotentInspect
Search U.S. Consumer Product Safety Commission (CPSC) product recalls via SaferProducts.gov (keyless). Filter by product name/keyword, title, manufacturer, hazard, recall number, and date range. Returns recall number, date, title, products, hazards, remedy, manufacturers, injuries, and the official CPSC recall URL. Data: CPSC/SaferProducts.gov.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max recalls to return (default 25). | |
| title | No | Recall title keyword filter. | |
| hazard | No | Hazard keyword filter (e.g. 'fire', 'choking', 'laceration'). | |
| product | No | Product name filter (e.g. 'stroller', 'space heater'). | |
| date_end | No | Recalls on/before this date (YYYY-MM-DD). | |
| date_start | No | Recalls on/after this date (YYYY-MM-DD). | |
| manufacturer | No | Manufacturer name filter. | |
| recall_number | No | Exact CPSC recall number (e.g. '26561'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered; the description adds genuinely new context by noting the API is 'keyless' (no auth) and enumerating the returned fields, which matters since there is no output schema. It stops short of noting rate limits or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then filters, then return shape. Minor redundancy in the trailing 'Data: CPSC/SaferProducts.gov' which repeats the source already named in sentence one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 optional params and no output schema, the description usefully enumerates the return fields and notes keyless access, covering most of what an agent needs. It omits pagination behavior and the default limit, which the schema only partially implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 filters with examples (e.g. 'fire', '26561', YYYY-MM-DD). The description restates the filter dimensions without adding syntax or format detail beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (U.S. CPSC product recalls) plus the data source (SaferProducts.gov). However, it does not distinguish itself from the sibling cpsc_recent_recalls, leaving the agent to infer which recall tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists filterable dimensions but gives no when-to-use guidance, no prerequisites, and no mention of the sibling cpsc_recent_recalls or other recall tools (vehicle_recalls, recall_screen). Usage context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpsc_recent_recallsARead-onlyIdempotentInspect
Return the most recent U.S. CPSC product recalls (date-sorted, newest first) via SaferProducts.gov (keyless). Looks back a configurable window (default 90 days). Each result links to the official CPSC recall page. Data: CPSC/SaferProducts.gov.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of recent recalls to return (default 10). | |
| lookback_days | No | How many days back to scan (default 90). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and open-world, so the safety profile is covered. The description adds real behavioral context beyond that: results are date-sorted newest-first, the source is keyless (no auth needed), each row links to the official CPSC page, and the scan window is bounded and configurable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core action and sorting, then source, window, and link behavior. No filler, though the source is stated twice ('via SaferProducts.gov' and 'Data: CPSC/SaferProducts.gov'), which is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-required-input list tool with no output schema, the description covers what is returned, ordering, lookback behavior, source, and result linking. Only the exact result fields and whether the list paginates are unaddressed, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (limit, lookback_days) are already fully documented with defaults and bounds. The description restates the configurable window and its 90-day default, adding marginal value but no new syntax or format detail, matching the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Return the most recent U.S. CPSC product recalls') and adds sorting semantics ('date-sorted, newest first'), which cleanly separates it from cpsc_recall_search. It does not name that sibling explicitly, so an agent still has to infer the boundary between 'recent' and 'search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'most recent' plus the configurable lookback window, but there is no explicit when-to-use statement and no routing to alternatives such as cpsc_recall_search for keyword or product-specific lookups. Adequate but leaves the sibling choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crypto_compareARead-onlyIdempotentInspect
Compare 2-5 cryptocurrencies side by side. Shows price, 24-hour change, market cap, volume, and rank for each coin in a comparison table. Use this for 'compare bitcoin and ethereum', 'BTC vs ETH vs SOL', 'which is bigger bitcoin or ethereum?', 'compare top cryptos', 'crypto head to head', or any multi-coin comparison question.
| Name | Required | Description | Default |
|---|---|---|---|
| coins | Yes | Coin names or tickers, 2-5 coins. Accept either CSV string ('bitcoin,ethereum,solana') or array (['bitcoin','ethereum','solana']). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the tool as read-only, idempotent, and non-destructive. The description adds value by disclosing exactly what the output contains: price, 24-hour change, market cap, volume, and rank in a comparison table. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, quickly lists the output fields, and then provides concrete query examples. No filler or redundant statements; each sentence contributes to helping the agent recognize and invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only comparison tool with full schema coverage and rich annotations, the description is complete. It defines scope, input constraints, output contents, and usage examples, so an agent has everything needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the 'coins' parameter, including accepted formats (CSV string or array) and the 2-5 limit. The description reinforces this with examples but does not add meaning 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.
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: 'Compare 2-5 cryptocurrencies side by side.' It is clearly a multi-coin comparison tool, distinguished from siblings like crypto_price, crypto_info, and crypto_trending by the explicit comparison-table framing and multi-coin examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage triggers with 'Use this for' followed by concrete query examples such as 'BTC vs ETH vs SOL' and 'which is bigger bitcoin or ethereum?' It clearly implies when to choose this tool, though it does not explicitly name sibling 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.
crypto_infoARead-onlyIdempotentInspect
Get a detailed profile for any cryptocurrency including description, market data, supply info, all-time high/low, genesis date, blockchain, categories, and website links. Use this for 'tell me about bitcoin', 'what is ethereum?', 'solana info', 'describe cardano', 'crypto profile', 'coin details', or any question asking for background information about a specific cryptocurrency project.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Cryptocurrency name or ticker (e.g., 'bitcoin', 'BTC', 'ethereum') |
TDQS
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 useful context about the type of data returned (market data, supply info, all-time high/low, etc.) but does not disclose limitations such as data freshness, coverage gaps, or rate limits. It adds some value without being rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the core action front-loaded and a detailed but relevant list of output contents. The example queries are slightly repetitive but serve as useful usage triggers. No wasted sentences, though the example list could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema, the description adequately conveys what the tool returns by enumerating the key data categories (description, market data, supply info, all-time high/low, genesis date, blockchain, categories, website links). It is complete enough for an agent to select and invoke correctly, though it does not cover error scenarios or data-source caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the input schema already describes the 'coin' parameter with examples ('bitcoin', 'BTC', 'ethereum'). The tool description reinforces 'any cryptocurrency' and provides example prompts, but it does not add additional parameter-level semantics beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get a detailed profile for any cryptocurrency' and lists the contents (description, market data, supply info, all-time high/low, genesis date, blockchain, categories, website links). It is clear and distinguishes itself from price/compare/trending siblings implicitly through the profile focus, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance with example queries: 'Use this for “tell me about bitcoin”, “what is ethereum?”, “solana info”' and generalizes to 'any question asking for background information about a specific cryptocurrency project.' It does not state when not to use it or name alternative tools like crypto_price or crypto_compare, 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.
crypto_priceARead-onlyIdempotentInspect
Get the current price and market data for any cryptocurrency. Returns price in USD, 24-hour change, market cap, volume, and all-time high. Use this for 'what's the price of bitcoin?', 'how much is ethereum?', 'solana price', 'check dogecoin', 'BTC price', 'ETH value', 'crypto price check', or any question about a specific coin's current value. Supports all major cryptocurrencies: bitcoin, ethereum, solana, cardano, ripple/XRP, dogecoin, polkadot, avalanche, chainlink, polygon/MATIC, litecoin, uniswap, stellar, cosmos, NEAR, arbitrum, optimism, aptos, sui, toncoin, shiba inu, pepe, BNB, tether/USDT, USDC, and thousands more via CoinGecko ID.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Cryptocurrency name or ticker (e.g., 'bitcoin', 'BTC', 'ethereum', 'ETH') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the tool as read-only, idempotent, non-destructive, and open-world. The description adds useful behavior beyond the schema: the exact data fields returned, the broad supported coin universe, and the CoinGecko ID compatibility. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core function and return values, then gives query examples and supported coins. The supported-coin list is long but serves a real disambiguation purpose for open-world crypto names, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only price lookup tool with no output schema, the description is complete: it states what is returned, how to phrase requests, and which coins are supported. Nothing essential 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.
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 meaningful value by listing many accepted coin names/tickers and noting that CoinGecko IDs are supported. This helps agents know what values can be passed beyond the few schema examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's job: getting current price and market data for any cryptocurrency, with a concrete set of returned fields (USD price, 24h change, market cap, volume, all-time high). It is clearly about current price rather than comparison, history, or metadata, though it does not explicitly name or contrast sibling tools like crypto_compare or crypto_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit user-phrase examples ('what's the price of bitcoin?', 'solana price', 'BTC price') and states the general condition: any question about a specific coin's current value. It does not explicitly say when not to use it or mention alternatives, but the usage context is clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crypto_trendingARead-onlyIdempotentInspect
See what's trending and hot in cryptocurrency right now. Returns the top trending coins on CoinGecko based on search activity and interest. Use this for 'what's trending in crypto?', 'hot cryptocurrencies', 'trending coins', 'what crypto is popular right now?', 'crypto buzz', 'what tokens are people looking at?', or any question about current crypto market interest and momentum.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 the annotations: the data source (CoinGecko), the selection basis (search activity and interest), and the time-sensitive nature ('right now'). It doesn't describe output shape, but for a simple no-argument read tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear one-sentence summary, followed by source detail and a set of example queries. The example list is somewhat long and repetitive, but it serves a useful purpose for matching varied user phrasings; no filler or irrelevant content is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only tool with no output schema, the description gives enough context: what it returns, where the data comes from, and what kind of user question it answers. It doesn't specify the exact number of coins or output fields, but those gaps are not critical for an agent deciding whether to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema description coverage, so there are no parameter semantics to clarify. The description reinforces that only current trending data is returned and no user inputs are needed to narrow the query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('See what's trending') plus a specific resource: the top trending coins on CoinGecko based on search activity and interest. This distinguishes it from sibling tools like crypto_price, crypto_info, and crypto_compare, which target prices, metadata, and comparisons rather than current market buzz.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this for...' and gives many example user phrasings, making the intended invocation context clear. However, it does not mention alternatives or provide when-not-to-use guidance, such as pointing to crypto_price for price questions or crypto_compare for comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cve_lookupARead-onlyIdempotentInspect
Full detail for a single CVE by ID (format CVE-YYYY-NNNN). Returns CVSS scores, weakness IDs, references, and affected products from the NVD.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier, e.g. CVE-2024-3094. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile with readOnlyHint, idempotentHint, and destructiveHint. The description adds useful behavioral context by enumerating what the response contains (CVSS scores, weakness IDs, references, affected products) and identifying NVD as the data source, which helps the agent anticipate the tool's output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one tightly structured sentence that front-loads the operation, then supplies the ID format and the return fields. There is no filler, redundancy, or superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with no output schema, the description provides the essential contract: the input format and a clear list of what will be returned. It is well differentiated from the many sibling tools and contains everything 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already provides an example, so the baseline is 3. The description adds a precise format contract 'CVE-YYYY-NNNN' that goes slightly beyond the schema's single example, giving the agent a more general rule for constructing valid identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Full detail for a single CVE by ID.' It also distinguishes the tool from siblings like cve_search_by_keyword and cve_recent by requiring a concrete CVE identifier and promising full detail rather than search results or recent lists, reinforced by the explicit ID format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID (format CVE-YYYY-NNNN)' makes clear the intended use: this tool is for looking up a single CVE when the identifier is known. However, it does not explicitly name alternatives or state when not to use this tool, so it provides clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cve_recentARead-onlyIdempotentInspect
Recent CVEs published in the last N days (default 7, max 120). Optional vendor and severity filters (CRITICAL, HIGH, MEDIUM, LOW).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (1-120). | |
| limit | No | Max results (default 50). | |
| vendor | No | Optional vendor filter. | |
| severity | No | Optional CVSS severity filter: CRITICAL, HIGH, MEDIUM, or LOW. |
TDQS
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 genuinely new behavioral context: the lookback-window semantics ('published in the last N days'), the default of 7 days, the max of 120, and the available filter dimensions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that front-load the core purpose first and then enumerate the filters. There is no filler, no repetition of annotation content, and every clause contributes either scope, a default, or filter information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filtered-list tool this is nearly complete: annotations carry the safety profile, the schema documents all four optional parameters with 100% coverage, and the description covers purpose, defaults, and filters. Minor gaps are the absence of any note about the shape of returned CVE data (no output schema) and no routing to the sibling CVE tools when the agent needs historical or ID-based lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (days, limit, vendor, severity) is already documented in the schema. The description adds only the default-7-days detail for the lookback window (the schema only gives the 1-120 range); the severity enumeration duplicates the schema. Marginal value over the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource with a clear temporal scope: 'Recent CVEs published in the last N days (default 7, max 120)' plus optional vendor/severity filters. The time-window framing inherently differentiates it from sibling tools cve_lookup, cve_search_by_keyword, and cve_search_by_vendor without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is unambiguous: this tool is for time-bounded CVE discovery, and the optional filters are spelled out. However, it does not explicitly exclude alternatives or name when to prefer cve_search_by_vendor (which also accepts a vendor filter) or cve_lookup (for a known CVE ID); the temporal framing carries most of the differentiation weight.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cve_search_by_keywordARead-onlyIdempotentInspect
Free-text CVE search with optional date range. Matches keyword against CVE description text in the NVD.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (1-2000, default 20). | |
| keyword | Yes | Free-text search phrase. | |
| pub_end_date | No | Optional YYYY-MM-DD upper bound. | |
| pub_start_date | No | Optional YYYY-MM-DD lower bound. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly/openWorld/idempotent safety signals, and the description adds that matching occurs against CVE description text with an optional date range. It doesn't mention pagination, result format, or rate limits, but with annotations covering the safety profile this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the core operation and packs the optional date range and match target into one compact phrase. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool, the description plus schema gives an agent enough to call it correctly: keyword is required, optional dates and limit are documented, and the purpose is clear. No output schema exists, so a brief mention of the result shape would slightly improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with useful descriptions for keyword, limit, and date bounds, so the description doesn't need to repeat them. It adds minor clarification that keyword targets description text, but no syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation: free-text CVE search with optional date range, and clarifies the match target is CVE description text in NVD. This distinguishes it from sibling tools like cve_lookup, cve_recent, and cve_search_by_vendor 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for keyword-based description searches and mentions date-range filtering, but it does not explicitly state when to use this tool instead of cve_search_by_vendor or cve_lookup. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cve_search_by_vendorARead-onlyIdempotentInspect
Search CVEs by vendor with optional product and date range filters. Vendor is matched against the NVD CPE namespace, e.g. 'apache', 'microsoft'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (1-2000, default 20). | |
| vendor | Yes | Vendor name, lowercase preferred. | |
| product | No | Optional product name filter. | |
| pub_end_date | No | ISO date or YYYY-MM-DD upper bound on published date. | |
| pub_start_date | No | ISO date or YYYY-MM-DD lower bound on published date. |
TDQS
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 carries less burden. It adds useful behavioral context by explaining that vendor matching is against the NVD CPE namespace, which affects how the query should be formed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the core purpose and filters, the second clarifies matching semantics with concrete examples. No filler and no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All invocation-critical details are present: required vendor, optional filters, and namespace matching behavior, with annotations covering safety. The lack of an output schema makes a brief return-shape note desirable, but the intent and usage are clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a meaningful description, so the baseline is 3. The description reinforces product and date-range filtering and gives vendor examples, but does not need to compensate for missing schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Search CVEs by vendor' with optional product and date range filters. The CPE namespace detail distinguishes this from keyword-based CVE search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys this tool is for vendor-scoped CVE searches and that vendor must be an NVD CPE vendor name like 'apache' or 'microsoft'. It does not explicitly name sibling alternatives, but the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_lookupARead-onlyIdempotentInspect
MITRE CWE detail by ID (format CWE-NNN or NNN). Returns name, abstraction, status, description, and parent/child CWE relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| cwe_id | Yes | CWE identifier, e.g. CWE-79. |
TDQS
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 detail by enumerating the response contents, which is valuable since no output schema is present. It does not cover error or not-found behavior, but for a simple lookup 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and ID format, then efficiently lists return fields. Every part adds value, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup tool with no output schema, the description is complete: it states the source, the ID format, and the full set of returned information. No critical details are missing for an agent to correctly invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single cwe_id parameter with an example, and the description supplements this by explicitly defining the accepted formats: 'CWE-NNN or NNN'. This added format guidance goes beyond the schema's example value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a MITRE CWE detail lookup by ID and lists the specific fields returned (name, abstraction, status, description, parent/child relationships). It also distinguishes itself from CVE-related sibling tools by specifying CWE and the accepted ID format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for retrieving CWE details when a CWE ID is available, and even specifies the accepted ID format. It does not explicitly mention alternatives or exclusions, but the 'by ID' framing makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disaster_declarationsARead-onlyIdempotentInspect
Recent FEMA disaster declarations from LiveDataLink's self-hosted OpenFEMA index, with a live official-API fallback. Filter by state, county, incident type, or date range; returns disaster number, title, dates, incident category, and source freshness.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (1-1000, default 50). | |
| state | No | Two-letter state code, e.g. 'TX'. | |
| county | No | Designated area / county name as FEMA records it. | |
| end_date | No | ISO date upper bound on declarationDate. | |
| start_date | No | ISO date lower bound on declarationDate. | |
| incident_type | No | Incident type filter, e.g. 'Hurricane', 'Flood', 'Severe Storm', 'Wildfire'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and open-world behavior, so the description does not need to restate safety. It adds genuinely useful context about the self-hosted index, the live official-API fallback, and the source-freshness return field. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey the source, fallback behavior, filtering options, and return content with no filler. The key resource and source are front-loaded, and every phrase contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate read-only tool with zero required parameters and a fully documented schema, the description is complete: it covers the data source, fallback behavior, filtering axes, and the nature of returned fields. The absence of an output schema is mitigated by describing the return concepts, while annotations cover safety and data openness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all six parameters at 100% coverage, including defaults and examples, so the description does not need to add parameter-level detail. The high-level 'filter by state, county, incident type, or date range' restates what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (FEMA disaster declarations), the data source (LiveDataLink OpenFEMA index with official API fallback), and the filtering/return behavior. It does not use an explicit verb like 'list' or 'search', and it does not explicitly distinguish itself from sibling tools such as disaster_history_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by listing filter dimensions: state, county, incident type, and date range. It gives no explicit guidance about when to prefer a sibling tool such as disaster_history_summary, disaster_recovery_profile, or hurricane_tracker.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disaster_history_summaryBRead-onlyIdempotentInspect
Multi-year FEMA disaster summary from LiveDataLink's self-hosted OpenFEMA index, bucketed by incident type and year for a state or county with source freshness.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | Two-letter state code. | |
| years | No | Lookback window in years (default 10). | |
| county | No | County name. |
TDQS
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 repeatability. The description adds that it is based on a 'self-hosted OpenFEMA index' and includes 'source freshness,' but it does not reveal other behaviors such as caching, pagination, or potential rate limits. This is a moderate contribution on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that states the dataset, aggregation dimensions, geographic scope, and source freshness. Some phrases like 'LiveDataLink's self-hosted' may be ancillary, but the sentence is otherwise tightly packed and free of significant redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description bears responsibility for explaining the response shape. It hints that data is 'bucketed by incident type and year' and includes 'source freshness,' but does not specify what metrics appear (counts, amounts, dates, etc.) or any coverage/formation exclusions. For a three-parameter read tool, it is adequate, but an agent can optionally guess at the return structure and the exact meaning of 'summary.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters with their own descriptions and defaults (e.g., 'Lookback window in years (default 10)'). The description only restates 'for a state or county' which adds no meaningful semantic beyond the schema. With 100% 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a multi-year FEMA disaster summary from a specific data source, scoped to state/county and aggregated by incident type and year. It is distinguishable from siblings like disaster_declarations and disaster_recovery_profile, though it lacks an explicit verb and does not directly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the related disaster_declarations or disaster_recovery_profile, nor does it state any conditions or exclusions. The intended use is only implied by the purpose phrase, with no practical routing hints for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disaster_recovery_profileARead-onlyIdempotentInspect
One-call disaster-history and recovery read for a US area (county or place), keyed by NAME + state - distinct from location_risk_report, which scores a single site by address/lat-lon. Joins FEMA's OpenFEMA disaster declarations (the area's federally-declared disaster history: incident types, frequency, most-recent event, and the federal-assistance signal - which programs, Individual Assistance / Individuals & Households / Public Assistance / Hazard Mitigation, were authorized) with optional US Census ACS county population for exposure context (keyed off the FIPS codes the FEMA records carry; needs a Census key and degrades gracefully) and an optional best-effort parcel record for property context when an address is given (Maryland statewide / Texas-Harris County only). Returns a readable profile with a headline banding the area's disaster exposure LOW / MODERATE / HIGH from the declaration record. The FEMA leg is keyless and is the core signal; a source that fails is noted, not fatal. INFORMATIONAL public-record synthesis, NOT an insurance rating, a property flood-risk score, or a professional risk assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | County or place name to profile (e.g. 'Harris', 'Orleans', 'New Orleans'). Use the name without the word 'County'. | |
| state | No | 2-letter US state code (or full state name) to scope the FEMA history (e.g. 'TX', 'LA'). Strongly recommended - required for an accurate county read. | |
| county | No | Alias for area; either may be supplied. | |
| address | No | Optional street address to attach a sample parcel/property record (Maryland statewide or Texas-Harris County only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral context beyond that: the FEMA leg is keyless, the Census leg 'needs a Census key and degrades gracefully,' the parcel leg is limited to Maryland statewide / Texas-Harris County, 'a source that fails is noted, not fatal,' and the output is explicitly an 'INFORMATIONAL public-record synthesis, NOT an insurance rating, a property flood-risk score, or a professional risk assessment.' These key requirements, coverage limitations, failure handling, and scope disclaimers give the agent a realistic model of how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph of roughly 170 words covering purpose, sibling distinction, three data sources, key requirements, coverage limits, failure behavior, output format, and a disclaimer — every clause carries information, so nothing is wasted. The purpose is front-loaded in the first sentence. However, the heavy use of parentheticals and one long joined sentence makes it harder to parse than a structured presentation (e.g., separating the data-leg bullets) would be, so it earns a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description carries the full burden of explaining return values, and it does: a readable profile with a headline exposure band (LOW/MODERATE/HIGH), incident types, frequency, most-recent event, and the federal-assistance program signal. It also discloses per-leg requirements and graceful degradation. The only gap is the absence of explicit differentiation from the sibling tools disaster_declarations and disaster_history_summary — the 'one-call profile' framing implies a distinction but never states when to choose this tool over those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters with examples and notes, establishing a baseline of 3. The description adds cross-parameter meaning beyond the schema: that the tool is keyed by NAME + state together, that state is 'Strongly recommended - required for an accurate county read' (reinforcing the schema nuance), and how the address parameter activates the parcel leg. It also explains the FIPS-code linkage between the FEMA and Census legs, which clarifies the relationship between the area/state inputs and the optional population context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'One-call disaster-history and recovery read for a US area (county or place), keyed by NAME + state.' It names the data sources (OpenFEMA declarations, optional Census ACS, optional parcel record) and the concrete output (readable profile with LOW/MODERATE/HIGH exposure banding). It explicitly distinguishes itself from the most confusable sibling, location_risk_report, by contrasting keying (name+state vs address/lat-lon) and scope (area history vs single-site score).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative tool location_risk_report and the condition that selects it ('scores a single site by address/lat-lon'), which resolves the highest-risk sibling confusion. It also states when the optional legs activate ('when an address is given' for the parcel leg). However, it does not address other nearby disaster siblings such as disaster_declarations or disaster_history_summary, leaving the agent to infer when the profile read is preferable to those raw-query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
earthquake_recentBRead-onlyIdempotentInspect
Recent earthquakes from USGS. Filter by region (lat/lon + radius), state name, magnitude threshold, or time window.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lon | No | ||
| limit | No | Max events (default 50). | |
| end_time | No | ISO datetime upper bound (default now). | |
| location | No | Address, zip, city, or 'lat,lon' to center the search. Optional. | |
| radius_km | No | Search radius around lat/lon (max ~20000). | |
| start_time | No | ISO datetime lower bound (default 30 days ago). | |
| min_magnitude | No | Minimum magnitude (default 2.5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior, so the bar is lower. The description adds source (USGS) and recency scope, but does not disclose output shape, ordering, or limits beyond what the schema's parameter descriptions already state. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that immediately names the source and then lists the filter dimensions in compact form. It is efficiently sized, though it packs the slightly ambiguous 'state name' phrase into an otherwise tight summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool, the description plus schema defaults and annotations provide a workable picture. However, without an output schema the description does not mention what a result contains or how events are ordered, and no guidance differentiates this from the USGS feed/search siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 6 of 8 parameters, and the description adds semantic grouping: lat/lon + radius_km, magnitude threshold = min_magnitude, time window = start/end_time. However, 'state name' is not a dedicated parameter and relies on the flexible 'location' parameter, which could mislead an agent looking for a state field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear resource (recent USGS earthquakes) and enumerates the main filtering dimensions (region, state, magnitude, time). It is not a tautology and gives enough to distinguish from generic search tools, though it does not explicitly contrast with sibling tools like usgs_earthquake_feed or usgs_earthquake_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the word 'recent' and the listed filters, but the description gives no explicit when-to-use vs alternatives. An agent must infer from sibling names (feed/search/detail) which tool to pick, so there is clear context but no exclusion or routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_company_factsARead-onlyIdempotentInspect
Get structured XBRL financial facts for a company. Without 'concept', returns the top-level facts catalog (concepts the company has reported). With 'concept' (e.g. 'Revenues', 'Assets', 'EarningsPerShareBasic'), returns the time series of values for that concept.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | No | Optional XBRL concept name (e.g. 'Revenues', 'Assets', 'NetIncomeLoss'). If omitted, returns the catalog of available concepts. | |
| taxonomy | No | Optional XBRL taxonomy (default 'us-gaap'). | |
| identifier | Yes | Ticker symbol or CIK. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate that the tool is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by explaining the two different response shapes: a concept catalog versus a time series of values. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-structured sentences with no filler. The primary purpose is stated first, followed by a concise explanation of the two usage modes. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description does a good job of explaining the return behavior at a high level. It covers the catalog mode and the time-series mode, and the schema fully documents all parameters. A little more detail about the exact output structure would improve completeness, but it is not necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of parameters, so the baseline is 3. The description adds value by clarifying how the optional 'concept' parameter changes the response and by providing concrete examples of valid concept values. The 'identifier' parameter semantics are also clearly described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: retrieving structured XBRL financial facts for a company. It also distinguishes two clear modes based on whether 'concept' is provided, making the tool's purpose and scope immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when to use the tool with and without the 'concept' parameter, giving explicit invocation context. It does not explicitly name sibling tools or say when not to use it, but the structured data framing makes the intended use evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_company_lookupARead-onlyIdempotentInspect
Look up a public company's CIK (Central Index Key) by ticker symbol or company name. CIK is required for all other EDGAR tools. Returns matches ranked exact-ticker first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | Yes | Ticker (e.g. 'AAPL') or company-name fragment (e.g. 'Apple'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/destructive=false, so the safety profile is covered. The description adds genuine behavior beyond them: the result ordering ('matches ranked exact-ticker first'), which affects how the agent picks among multiple matches. It omits auth or rate-limit context, but the annotation bar is already met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and resource, then the prerequisite, then the ordering detail. No filler or repetition of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter resolver with no output schema, the description covers what it returns (ranked CIK matches) and why it matters (prerequisite for other EDGAR tools). It could be more complete by noting the shape of a returned match or the default limit, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'query' and 'limit' documented in the schema, so the baseline is 3. The description restates the ticker/name input modes but adds no format or syntax detail beyond what the schema already supplies, and says nothing about 'limit'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) plus the exact resource (a public company's CIK) and both accepted input forms (ticker symbol or company name). It also notes the returned ranking, so an agent can distinguish it from the sibling EDGAR tools that consume a CIK rather than resolve one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says the CIK it returns 'is required for all other EDGAR tools,' which tells the agent to call this first in an EDGAR workflow. It stops short of naming a specific alternative or a when-not condition, so it is strong context but not full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_filing_contentARead-onlyIdempotentInspect
Fetch the text content of a specific SEC filing. Returns the primary document (10-K, 10-Q, etc.) stripped of HTML, suitable for LLM consumption. Use edgar_recent_filings first to get the accession number.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | Filer CIK (with or without leading zeros). | |
| max_chars | No | Maximum characters of text to return (default 20000, max 200000). | |
| accession_number | Yes | Accession number (e.g. '0000320193-25-000006' or '000032019325000006'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful context beyond that: it returns the primary document stripped of HTML and suitable for LLM consumption. It does not discuss truncation, errors, or auth, but those are less critical for a read-only fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and return behavior, followed by the required workflow. Every sentence adds value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately describes the return format as primary document text stripped of HTML. Combined with rich annotations and 100% schema coverage, this is nearly complete for a simple read-only tool, though error and truncation behavior are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented directly in the schema. The description adds essentially no parameter semantics beyond the prerequisite to obtain an accession number, which is usage guidance rather than parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Fetch the text content of a specific SEC filing.' It also names the exact document types and distinguishes this tool from edgar_recent_filings by explaining the relationship between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite: 'Use edgar_recent_filings first to get the accession number.' This tells the agent when and how to use the tool. It does not explicitly exclude other EDGAR search tools, so it falls 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.
edgar_filings_by_form_typeARead-onlyIdempotentInspect
Pull all recent SEC filings of a specific form type across all companies. Useful for monitoring (e.g. 'all 8-Ks today', 'all S-1s this week'). Returns accession numbers, filers, and filing dates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| form_type | Yes | SEC form type (e.g. '8-K', 'S-1', 'DEF 14A', '13F-HR'). | |
| start_date | No | ISO date lower bound (YYYY-MM-DD). Defaults to 30 days ago. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/no-destructive, so the safety profile is covered. The description adds real value by disclosing the return fields (accession numbers, filers, filing dates), which matters since there is no output schema. It does not mention pagination or rate limits, but that is a minor gap against 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and scope, followed by use cases and return fields. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param, single-required-input read tool with no output schema, the description covers purpose, scope, use cases, and return fields, which is close to complete. It omits default behavior details (25-row limit, 30-day window), though those live in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so form_type, limit, and start_date are all fully documented in the schema. The description only alludes to the form_type concept and a date range via examples; it adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Pull all recent SEC filings of a specific form type') and a scoping trait ('across all companies') that distinguishes it from company-scoped siblings like edgar_company_facts or edgar_recent_filings. It never names those siblings explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage examples ('all 8-Ks today', 'all S-1s this week') that imply the monitoring context, but never says when to choose this over edgar_recent_filings, edgar_full_text_search, or edgar_filing_content. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_full_text_searchARead-onlyIdempotentInspect
Full-text search across all SEC filings via the EDGAR EFTS index. Filter by comma-separated form types and date range. Useful for finding filings that mention specific terms.
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | Comma-separated form types to filter (e.g. '10-K,10-Q'). Optional. | |
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | Yes | Search query (e.g. 'cybersecurity incident', 'going concern'). | |
| end_date | No | Optional ISO date upper bound (YYYY-MM-DD). | |
| start_date | No | Optional ISO date lower bound (YYYY-MM-DD). |
TDQS
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 structurally. The description adds the mechanism (EFTS index) but does not disclose pagination/result-cap behavior beyond the schema's limit field or note any rate limit, so it adds only modest context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core capability and with no filler. The final 'useful for' sentence is mild restatement but still informative; overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, non-destructive search tool with 5 fully documented params and no output schema, the description covers what the tool does and the filter dimensions. It omits no critical call-time information, though alternatives/routing and result-shape hints would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description restates form-type and date-range filtering but adds no syntax, format, or edge-case detail beyond the schema, which is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('full-text search across all SEC filings via the EDGAR EFTS index'), which is precise enough to distinguish it from listing tools like edgar_filings_by_form_type or edgar_recent_filings. It does not explicitly name a sibling to differentiate against, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for finding filings that mention specific terms' gives a clear intended context, but there is no guidance on when NOT to use it versus alternatives (e.g. edgar_filing_content for a single known filing, or edgar_filings_by_form_type for form-based listing). Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_insider_transactionsARead-onlyIdempotentInspect
List recent Form 4 insider transaction filings for a company. Returns accession numbers and filing dates; for detailed transaction data, use edgar_filing_content on each.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| identifier | Yes | Ticker symbol or CIK. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe read-only, idempotent, non-destructive, open-world operation. The description adds useful output behavior by saying it returns accession numbers and filing dates, and it points to the follow-up tool, though it does not discuss rate limits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero waste. The core purpose is front-loaded, and the alternative-tool guidance is appended only after the main behavior is established.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description supplies the important return shape (accession numbers and filing dates) and the next tool to call for deeper data. Given the annotations already cover the safety profile, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the identifier and limit parameters are already documented in the schema. The description adds no parameter-specific meaning beyond what the structured schema provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list recent Form 4 insider transaction filings for a company. It clearly separates this tool from edgar_filing_content by naming the latter as the place to get detailed transaction data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit next-step alternative: use edgar_filing_content on each filing for detailed transaction data. This tells the agent both the scope of this tool and when to route elsewhere, matching the strongest usage-guidance pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_recent_filingsBRead-onlyIdempotentInspect
List recent SEC filings for a company. Filter by form type (10-K, 10-Q, 8-K, 4, DEF 14A, etc.) and start date. Use ticker or CIK as identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| form_type | No | Optional form type filter (e.g. '10-K', '10-Q', '8-K', '4'). | |
| identifier | Yes | Ticker symbol or CIK. Examples: 'AAPL', '0000320193'. | |
| start_date | No | Optional ISO date lower bound (YYYY-MM-DD). |
TDQS
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 carried by structured fields. The description adds no behavioral context beyond annotations — no ordering of "recent", no pagination behavior, no rate limits — but the annotation coverage lowers the bar, keeping this at a minimum-viable 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core action front-loaded and no filler. Slightly redundant in re-listing form types already enumerated in the schema, which keeps it just below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with annotations covering safety and no output schema, the description is adequate but thin. It omits the most valuable disambiguation — how this differs from edgar_filings_by_form_type and other EDGAR siblings — and says nothing about result ordering despite the "recent" framing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, form_type, identifier, start_date) are already documented with examples and ranges. The description only restates form types and identifier formats that the schema already provides, adding no new semantics; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List recent SEC filings for a company") and names the key filters, so the purpose is unambiguous. However, it does not distinguish itself from the near-identical sibling edgar_filings_by_form_type, which appears to cover much of the same ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives implicit guidance on inputs ("Use ticker or CIK as identifier") and lists filterable form types, but never states when to choose this tool over alternatives such as edgar_filings_by_form_type, edgar_full_text_search, or edgar_company_facts. Usage is implied rather than differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_electricity_stateARead-onlyIdempotentInspect
Monthly state-level electricity data from EIA. Filter by state (two-letter code or 'US' for national), sector (residential / commercial / industrial / transportation / all), and metric (price / sales / revenue / customers / generation). Default: US, all sectors, price.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| state | No | Two-letter state code (e.g. 'TX', 'CA') or 'US' for national rollup. Default 'US'. | |
| metric | No | Metric: 'price', 'sales', 'revenue', 'customers', 'generation'. Default 'price'. | |
| sector | No | Sector: 'all', 'residential', 'commercial', 'industrial', 'transportation'. Default 'all'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds useful cadence context ('monthly') and default behavior, but says nothing about row limits or how much data a default call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the resource and cadence, then filters, then defaults. Minor waste in re-listing enum values that the schema already enumerates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter read-only tool with no output schema, the description covers filters, defaults, and cadence, and the schema documents the start/end/limit parameters. Complete enough to invoke correctly, though no hint about expected return size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description largely restates the enum values already documented in the schema ('price / sales / revenue / customers / generation'). The one incremental detail is that 'US' is a national rollup, which adds slight meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (monthly state-level electricity data), a named source (EIA), and the filter dimensions, which cleanly separates it from siblings like eia_energy_consumption, eia_natural_gas, and eia_renewable_generation. An agent can tell what this returns 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the filter dimensions and the defaults ('US, all sectors, price'), which implicitly tells the agent it can call with no arguments, but it never states when to prefer this tool over the other EIA/electricity siblings or what the alternatives are.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_energy_consumptionBRead-onlyIdempotentInspect
Monthly US energy consumption by sector from EIA. Sectors: residential, commercial, industrial, transportation, total. Returns total energy consumed in BTU equivalents.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| state | No | Two-letter state code or 'US' for national rollup. Default 'US'. | |
| sector | No | Sector: 'total', 'residential', 'commercial', 'industrial', 'transportation'. Default 'total'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the cadence (monthly) and the return unit (BTU equivalents), but says nothing about pagination, rate limits, or data latency that would matter for an open-world data pull.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and scope, with no filler. The sector enumeration duplicates the schema enum, which is a small redundancy but useful for skimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states what comes back (total energy consumed in BTU equivalents). All five parameters are fully documented in the schema, and annotations cover the safety profile, so the only missing element is behavioral detail like pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the sector enum and the state/start/end/limit parameters are already documented in the schema; the description adds no format or default detail beyond it. It also frames the data as national ('US energy consumption') while the schema permits any two-letter state code, a minor mismatch that the baseline 3 reflects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (monthly US energy consumption by sector from EIA) and enumerates the sector dimension, which separates it from siblings like eia_electricity_state or eia_natural_gas. It never explicitly contrasts itself with those siblings, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative among the many energy/EIA siblings. Usage is only inferable from the resource statement, which is the same gap the MID calibration example scored 2 for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_gasoline_pricesARead-onlyIdempotentInspect
Weekly US retail gasoline prices from EIA. Filter by region (PADD1-PADD5 or national) and grade (regular, midgrade, premium, diesel, all). Useful for fuel-cost analysis, transportation logistics, and consumer price tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| grade | No | Fuel grade: 'all', 'regular', 'midgrade', 'premium', 'diesel'. Default 'all'. | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| region | No | PADD region code or 'national'. Examples: 'national', 'PADD1', 'PADD3'. Default 'national'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds the weekly cadence and the available filter dimensions, but says nothing about rate limits, pagination behavior, or result shape. With annotations doing the heavy lifting, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the resource and cadence front-loaded and the filter dimensions immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, all-optional-parameter data retrieval tool with no output schema, the description covers the resource, cadence, and both filter axes. Only the return structure/pagination story is unaddressed, which is a minor gap given the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including defaults and examples. The description's mention of PADD1-PADD5/national and the grade values largely restates what the schema descriptions already provide, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Weekly US retail gasoline prices from EIA') and names the two filterable dimensions, so the agent knows exactly what data it returns. It does not, however, differentiate itself from the many sibling EIA tools (eia_oil_supply, eia_natural_gas, eia_series_lookup), so routing relies on the resource noun alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for fuel-cost analysis, transportation logistics, and consumer price tracking' gives domain context but no when-to-use/when-not or alternative selection guidance relative to sibling EIA endpoints. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_natural_gasARead-onlyIdempotentInspect
US natural gas data from EIA. Series options: 'spot' (Henry Hub daily), 'futures' (NYMEX front-month daily), 'residential' (monthly retail to households), 'storage' (weekly working gas in storage). Default 'spot'.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| series | No | Subset to query: 'spot', 'futures', 'residential', 'storage'. Default 'spot'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive, so safety is covered. The description adds the useful fact that source is EIA and the cadence per series (daily/monthly/weekly), which is context annotations don't carry, but says nothing about coverage windows, latency, or units.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded source and resource, then a tight enumerated list of options with the default at the end. One redundancy: the word 'spot' and the default are both stated, and 'Series options' duplicates the schema enum, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param read-only data tool with full schema coverage and annotations, the description is adequate. It is missing units, geography caveats, and whether multiple series can be requested together, small but real gaps for a data-query tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the series enum is fully documented in the schema, so the description largely restates it. The per-series cadence hints (daily/monthly/weekly) add modest value for choosing start/end formats, but nothing about limits or date semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-like scope (US natural gas data from EIA) plus the resource and enumerates the four series with definitions, which no sibling schema exposes. Distinguishable from eia_electricity_state, eia_oil_supply, eia_series_lookup at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit selection guidance by defining each series option, so an agent can pick the right cadence. But it never names alternatives (e.g. eia_series_lookup for non-priced series) or states when not to use this tool. Minimum-viable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_oil_supplyARead-onlyIdempotentInspect
Weekly US crude oil supply data from EIA. Metrics: 'production' (US field production), 'imports' (weekly oil imports), 'stocks' (commercial crude stocks), 'refinery_inputs' (gross refinery inputs). Filter by PADD region. Default: national production.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| metric | No | Metric: 'production', 'imports', 'stocks', 'refinery_inputs'. Default 'production'. | |
| region | No | PADD region or 'national'. Examples: 'national', 'PADD1', 'PADD3'. Default 'national'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful context — weekly cadence and metric meanings — but says nothing about pagination, row caps beyond the schema, or the shape/units of returned observations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the dataset and cadence, then metrics, then filtering/defaults. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter data query, the description plus 100%-covered schema gives an agent enough to invoke correctly. With no output schema present, a brief note on the returned time-series format/units would have closed the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes further by defining each metric value ('production' = US field production, 'refinery_inputs' = gross refinery inputs), which the enum descriptions alone do not. Region and default handling are also restated, adding modest extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and cadence: 'Weekly US crude oil supply data from EIA,' which cleanly separates it from siblings like eia_natural_gas, eia_gasoline_prices, and eia_electricity_state. The verb is implicit (a retrieval tool), so it stops short of the 'specific verb+resource' ideal, but an agent can identify the dataset unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the default behavior ('Default: national production') and that results can be filtered by PADD region, which implies usage. However, it never says when to choose this tool over adjacent ones such as eia_series_lookup or eia_energy_consumption, and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_renewable_generationARead-onlyIdempotentInspect
Monthly US electricity generation by source from EIA. Sources: solar, wind, hydro, nuclear, geothermal, biomass, all. Optional state filter (default national). Returns generation in megawatt-hours.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| state | No | Two-letter state code or 'US' for national rollup. Default 'US'. | |
| source | No | Generation source: 'all', 'solar', 'wind', 'hydro', 'nuclear', 'geothermal', 'biomass'. Default 'all'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so the safety bar is low. The description adds real context beyond them: monthly cadence, MWh units, and the default national rollup, which the agent could not infer from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, front-loaded sentences that each convey something: what it returns, the dimensionality (source), and the optional filter. The source enumeration duplicates the schema enum, slightly redundant but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query tool with full schema coverage, strong annotations, and no output schema, the description covers resource, cadence, dimensions, default, and unit. Minor gaps (pagination/limit behavior) are handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates the source list and the state default, both already fully documented in the schema, and adds no new meaning (e.g., valid date formats for start/end or limit semantics).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Monthly US electricity generation by source from EIA,' plus the return unit (megawatt-hours). It is clearly distinguishable from generic EIA tools, though it never explicitly names a sibling (e.g., eia_electricity_state) to sharpen routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes the state filter is 'optional (default national),' which implies usage scope, but it gives no explicit when-to-use/when-not guidance and does not contrast with the many neighboring EIA tools (eia_electricity_state, eia_series_lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eia_series_lookupARead-onlyIdempotentInspect
Flexible EIA series lookup. Pass any EIA series ID (e.g. 'PET.RWTC.D' for WTI crude daily, 'NG.RNGWHHD.D' for Henry Hub spot daily, 'ELEC.PRICE.US-ALL.M' for US average electricity retail price monthly). Returns time-series data for that series. Use this when no other tool covers your specific need.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound period (ISO date or YYYY-MM). | |
| limit | No | Maximum rows to return (default 50, max 5000). | |
| start | No | Inclusive lower-bound period (ISO date or YYYY-MM depending on series cadence). | |
| series_id | Yes | EIA series ID. See https://www.eia.gov/opendata/browser/ for the full catalog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds that it returns time-series data, but does not disclose auth needs, rate limits, pagination behavior, or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and appropriately sized, with examples that earn their place. The first sentence is slightly redundant with the tool name and title, but overall the description is efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema and annotations, the description provides enough context to select and invoke the tool: it explains the fallback use case and gives series-ID examples. It could say more about the returned time-series format or pagination, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds concrete examples of EIA series IDs (e.g. PET.RWTC.D, NG.RNGWHHD.D), which meaningfully clarifies the most important parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('EIA series lookup') and clarifies that it returns time-series data for a given series ID. It distinguishes itself from sibling EIA tools by positioning itself as the flexible fallback, though it does not name specific alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to use this tool when no other tool covers the specific need, establishing a clear fallback condition. However, it does not name the alternative EIA-specific tools or state when not to use it beyond that general condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
energy_market_snapshotARead-onlyIdempotentInspect
One-call US energy market snapshot from EIA (public domain): the WTI crude (Cushing), Brent crude, and Henry Hub natural-gas benchmark prices, each enriched with derived context - latest level and date, 1-year change, where the current level sits within its own recent history (percentile), and the recent trend direction (rising/falling/flat). Answers 'what is oil/gas doing right now, and is it historically high or low' in a single call. A source that fails is noted, not fatal. Premium synthesis over the EIA domain; informational market data, not trading advice.
| Name | Required | Description | Default |
|---|---|---|---|
| lookback_days | No | Trailing daily history to pull per benchmark for the derived context (default 400 ~ 1.3 years; min 60, max 2000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, non-destructive behavior, so the description adds value with new facts: source failure is "noted, not fatal" (partial-failure resilience), the data is EIA public domain, and it is informational only, not trading advice. It doesn't specify latency, caching, or result limits, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the deliverable and the benchmark list before the use case, resilience note, and disclaimer. Mostly every sentence earns its place, though the branding phrase "Premium synthesis over the EIA domain" adds little operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single optional parameter, no output schema, and annotations covering the safety profile, the description still spells out the returned fields (latest level and date, 1-year change, percentile, trend direction) and failure behavior. An agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the lone lookback_days parameter is fully documented in the schema with its default, min, and max. The description never mentions the parameter, so it adds no meaning beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific deliverable: a one-call US energy snapshot covering WTI (Cushing), Brent, and Henry Hub, each with derived context (level, 1-year change, percentile, trend). This precisely distinguishes it from the domain-specific siblings like eia_oil_supply or eia_natural_gas, which serve single slices rather than a synthesized three-benchmark view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use case ("what is oil/gas doing right now, and is it historically high or low" in a single call) and frames itself as a synthesis layer, which implies using it instead of chaining multiple EIA calls. It does not explicitly name alternative sibling tools or exclusions, 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.
entity_dossierARead-onlyIdempotentInspect
Build a consolidated cross-source dossier for a company in one call: SEC registration and identifiers (EDGAR), environmental footprint and regulated facilities (EPA ECHO), and sanctions/denied-party screening (OFAC/UN/EU/BIS) with a confidence score. Returns a per-source summary plus top records. This is a single AI-native lookup across data that otherwise lives in separate silos. Matches are name-based; verify identity before relying on any link.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company / organization name, e.g. 'Chevron Corporation', 'Acme Trucking LLC'. | |
| limit | No | Max records to surface per source (default 5, max 15). | |
| state | No | Optional 2-letter US state to disambiguate location-based sources (e.g. 'TX'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: a confidence score is attached to results, output is a per-source summary plus top records, and matches are name-based so identity must be verified before relying on any link — a material false-positive caveat. It stops short of describing confidence-score semantics or failure behavior when a source has no match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then sources, then return shape, then the matching caveat — a sensible ordering. The 'single AI-native lookup across data that otherwise lives in separate silos' sentence partially restates the earlier 'consolidated cross-source' framing, so there is mild redundancy, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so at a high level: per-source summary plus top records, with a confidence score. Sources and the name-matching caveat are covered. It is slightly thin on how the confidence score is derived and what a per-source summary contains, but an agent has enough to invoke and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: name, limit (default 5, max 15), and state are all documented in the schema with examples and bounds. The description adds no parameter-level detail (it never mentions the limit or state knobs), so it neither compensates nor is needed to — baseline 3 applies 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (build) and resource (consolidated cross-source dossier) and enumerates exactly which sources are aggregated: EDGAR registration, EPA ECHO environmental/facility data, and OFAC/UN/EU/BIS sanctions screening. This clearly distinguishes it from single-source siblings like edgar_company_lookup, epa_facility_search, or sanctions_screen_entity, and from adjacent dossier tools such as issuer_diligence_dossier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Build ... in one call' and 'a single AI-native lookup across data that otherwise lives in separate silos' implies the selection condition: use this instead of calling the individual silo tools when you need a consolidated view. However, it never states an explicit when-not (e.g., use the single-source tools when you only need EDGAR or only need screening), so the routing 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.
entity_resolveARead-onlyIdempotentInspect
Resolve a company across US government sources in one call. Searches SEC EDGAR, EPA ECHO, and the sanctions lists by name and returns the candidate match and strong identifiers (SEC CIK, ticker, EPA registry id) found in each. Use this to confirm WHO an entity is and gather its IDs before pulling detail. Matches are name-based candidates to verify, not certain identity links.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company / organization name, e.g. 'Chevron Corporation', 'Acme Trucking LLC'. | |
| state | No | Optional 2-letter US state to disambiguate location-based sources (e.g. 'TX'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive. The description adds valuable behavioral nuance by explicitly warning that matches are name-based candidates to verify, not certain identity links, and by disclosing that the tool consolidates multiple sources in one call. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with every sentence earning its place: the core action, the specific data sources, the use case, and the critical caveat about candidate matches. There is no filler or redundant restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with no output schema, the description provides enough context to understand what will be returned (candidate match and strong identifiers from each source). It is slightly incomplete because it does not address the relationship to the similarly named sibling 'resolve_entity', nor what happens when no match is found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters thoroughly (100% coverage), including the optional state disambiguation. The description reinforces that searches are by name and that state helps with location-based sources, but it does not add substantial new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: resolving a company across US government sources (SEC EDGAR, EPA ECHO, sanctions lists) and returning identifiers. It is specific about verb, resource, and scope, but it does not explicitly differentiate from the sibling tool 'resolve_entity', which could confuse an agent deciding between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical guidance: use this to confirm an entity's identity and gather its IDs before pulling detail. This establishes clear context for when to invoke the tool, though it does not mention any exclusions or name alternative tools to consider instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
environmental_site_riskARead-onlyIdempotentInspect
One-call environmental-compliance and contamination liability read for a SPECIFIC site or operator - the question a buyer, lender, or Phase-I ESA asks before a deal. Distinct from location_risk_report (which scores natural hazards plus a shallow count of nearby facilities): this drills DEEP into one named facility's EPA record via ECHO/FRS - overall compliance status, per-statute program standing (Clean Air/Water/RCRA/etc.), formal enforcement actions and penalty totals, significant-non-compliance and non-compliant-quarter flags - plus a best-effort parcel record for site context. Returns a verdict band (NO ADVERSE EPA RECORD / REVIEW RECOMMENDED / CONTAMINATION-COMPLIANCE CONCERN / NO FACILITY FOUND), the flags, and the evidence. A source that fails is noted, not fatal. This is an EPA public-record screen, not a Phase-I Environmental Site Assessment or a substitute for one. Premium cross-source synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site, facility, or operator name to screen (e.g. 'Smith Manufacturing', 'Acme Plating Inc'). | |
| state | No | Optional 2-letter state to disambiguate the EPA facility and parcel search. | |
| address | No | Optional street address to pin the parcel record. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that a failing source is 'noted, not fatal,' that the parcel record is 'best-effort,' and that it is a public-record screen via ECHO/FRS. This gives the agent realistic expectations about completeness and partial data 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with purpose, followed by disambiguation, output contract, and caveats. It is slightly long and ends with the promotional 'Premium cross-source synthesis' tagline, which adds little functional guidance, but the rest is information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description lists the exact verdict-band values, the flagged data categories, and the evidence returned. Combined with the optional state/address parameters for disambiguation, an agent has enough context to invoke the tool and interpret its result appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters and schema coverage is 100%, so the baseline is 3. The description reinforces that the tool targets a 'specific site or operator' but adds no new parameter-level syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific resource and intent: 'environmental-compliance and contamination liability read for a SPECIFIC site or operator' and names the exact output (verdict band, flags, evidence). It also differentiates itself from location_risk_report, so an agent can tell which tool answers a compliance/contamination question versus a natural-hazard screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use it ('the question a buyer, lender, or Phase-I ESA asks before a deal') and when not to ('not a Phase-I Environmental Site Assessment or a substitute for one'). It explicitly names the closest alternative, location_risk_report, and explains the depth distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa_enforcement_searchARead-onlyIdempotentInspect
List formal enforcement actions and penalties taken against a facility, plus a per-program summary of formal/informal actions, cases, and total penalties. Requires an EPA Registry ID (use epa_facility_search to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| registry_id | Yes | EPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read profile (readOnlyHint, idempotentHint, destructiveHint false), and the description adds substantive return-content detail: formal actions, penalties, and a per-program summary of formal/informal actions, cases, and total penalties. It also discloses the required identifier dependency. No behavioral contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the first sentence states purpose and output composition, and the second handles the prerequisite and lookup routing. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup tool with no output schema, the description supplies the essential call context (required ID, how to obtain it) and the response shape (enforcement actions, penalties, per-program summary). There are no obvious gaps that would prevent an agent from correctly selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents registry_id with type, requirement, source tool, and an example, so schema coverage is 100%. The description reinforces the Registry ID requirement and lookup path but adds little semantic nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a concrete verb-resource pairing ('List formal enforcement actions and penalties taken against a facility') and specifies the additional per-program summary output. It clearly states the prerequisite and points to epa_facility_search, but it does not explicitly contrast with other EPA facility tools such as epa_facility_compliance or epa_water_or_air_violations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the required input condition ('Requires an EPA Registry ID') and routes users to epa_facility_search when one is not available. This is clear context for invocation, but it does not state when enforcement search should be preferred over sibling compliance/violation tools, so no exclusions or alternative comparisons are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa_facility_complianceARead-onlyIdempotentInspect
Report a facility's current compliance status and recent non-compliance history by environmental program (Clean Air Act, Clean Water Act, RCRA hazardous waste, Safe Drinking Water Act). Shows quarters in non-compliance, quarters in significant non-compliance, and last inspection per statute. Requires an EPA Registry ID.
| Name | Required | Description | Default |
|---|---|---|---|
| registry_id | Yes | EPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, and non-destructive, covering the safety profile. The description adds useful behavioral context by specifying that output is organized by environmental program and includes quarters in non-compliance, significant non-compliance, and last inspection per statute. It does not discuss data freshness, error handling, or response format, but these are secondary 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with all information front-loaded: purpose first, then output specifics, then the prerequisite. There is no filler or vague language. The only minor redundancy is restating the registry ID requirement, but it is useful as an invocation prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description is nearly complete: it explains what is reported, the scope by statute, the specific output fields, and the required input. It does not explain how to obtain the registry ID, but that is covered in the schema parameter description, or how errors are surfaced, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter registry_id is well documented with type, format, example, and its source via epa_facility_search. The description simply restates that a Registry ID is required, which adds no new semantic information. The baseline of 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it reports a facility's current compliance status and recent non-compliance history by environmental program. It also lists the specific statutes and output fields, making the tool's function clear. However, it does not explicitly differentiate itself from sibling EPA tools like epa_facility_details or epa_enforcement_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key prerequisite: 'Requires an EPA Registry ID.' This implies the tool should be used after obtaining an ID, and the schema parameter description points to epa_facility_search as the source. It does not explicitly state when to prefer this tool over related EPA tools or when not to use it, so usage guidance is present but implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa_facility_detailsARead-onlyIdempotentInspect
Get a Detailed Facility Report for one facility by its EPA Registry ID: name, address, permits held, and per-statute (CAA/CWA/RCRA/SDWA) compliance and inspection summaries. Use epa_facility_search first to obtain the registry_id.
| Name | Required | Description | Default |
|---|---|---|---|
| registry_id | Yes | EPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271'). |
TDQS
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 report contents, including the specific statutes covered (CAA/CWA/RCRA/SDWA), but does not disclose behaviors such as data freshness, authorization requirements, response size, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The first sentence leads with the action and resource, then lists contents; the second gives the prerequisite workflow. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, no output schema, and annotations covering the read-only/idempotent behavior, the description is largely complete: it identifies how to obtain the input and what the report contains. The only minor gap is the lack of a more precise return structure, but the listed categories are sufficient for an agent to decide to call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with registry_id fully documented as the EPA Registry ID returned by epa_facility_search and an example provided. The description reinforces the same information but does not meaningfully add beyond what the input schema already states, 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.
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 ('Detailed Facility Report for one facility'), and the key input (EPA Registry ID), then enumerates the report contents: name, address, permits, and per-statute compliance summaries. It is clear and distinguishable from search-style siblings like epa_facility_search, though it does not explicitly contrast itself with epa_facility_compliance or 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this tool is for one facility already identified by a registry_id, and it explicitly instructs the agent to obtain that ID via epa_facility_search first. It does not, however, explain when to choose this over closely related siblings such as epa_facility_compliance or epa_enforcement_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa_facility_searchARead-onlyIdempotentInspect
Search EPA-regulated facilities by state, city, zip, and/or facility name. Returns each facility's Registry ID (needed for the other EPA tools), address, and a snapshot of its compliance status across Clean Air Act, Clean Water Act, RCRA (waste), and Safe Drinking Water programs. Provide at least one filter; broad queries (e.g. state only for a large state) may be rejected as too broad, so add a city, zip, or name.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit ZIP code (e.g. '20010'). | |
| city | No | City name (e.g. 'Washington'). | |
| name | No | Facility name or fragment (e.g. 'Pepco', 'refinery'). | |
| limit | No | Maximum facilities to return (default 25, max 100). | |
| state | No | Two-letter state or territory code (e.g. 'DC', 'TX', 'CA'). | |
| active_only | No | If true, only return facilities flagged with active enforcement/compliance activity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description's added value is the query-breadth rejection rule and the hint about which result field feeds other tools — neither of which is encoded in structured data. It stops short of disclosing pagination behavior or what a truncated/rejected response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences ordered purpose -> return payload -> usage constraint, with zero filler. The most decision-relevant constraint (breadth rejection) is placed where an agent will hit it before constructing a call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the returned fields (Registry ID, address, compliance snapshot across CAA/CWA/RCRA/SDWA), and it covers the required-filter constraint. It leaves the result-count/pagination behavior implicit, which is a minor gap for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented with examples and bounds (limit max 100, zip format, state code format). The description restates the filter set at a high level but adds no syntax, precedence, or combine-semantics (e.g. whether city+state are ANDed) beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search EPA-regulated facilities') plus the exact filter dimensions (state, city, zip, name) and what comes back (Registry ID, address, compliance snapshot). The note that the Registry ID is 'needed for the other EPA tools' implicitly separates this entry-point lookup from epa_facility_details, epa_facility_compliance, and epa_enforcement_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('Provide at least one filter') and a concrete failure mode with remediation ('broad queries ... may be rejected as too broad, so add a city, zip, or name'). It does not, however, explicitly name the downstream alternatives (e.g. epa_facility_compliance) for once a Registry ID is in hand, so it stops one step short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa_water_or_air_violationsARead-onlyIdempotentInspect
Report a facility's air (Clean Air Act) or water (Clean Water Act / Safe Drinking Water Act) violations and the related compliance summaries. Set media to 'air', 'water', or 'all'. Requires an EPA Registry ID.
| Name | Required | Description | Default |
|---|---|---|---|
| media | No | Which media to report: 'air', 'water', or 'all' (default 'all'). | |
| registry_id | Yes | EPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context beyond annotations: the tool returns 'violations and related compliance summaries' and requires a Registry ID, which clarifies the input prerequisite. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It leads with the core purpose, then immediately gives the key parameter options and prerequisite. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with rich annotations, the description is largely complete: it states what the tool returns, the media choices, and the required input. It does not detail output structure or pagination, but with no output schema and openWorldHint true, this is a minor gap rather than a blocking omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both parameters. The description reinforces the media enum values and the Registry ID requirement but adds little new semantic detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Report') and identifies the resource: a facility's air or water violations plus related compliance summaries, with explicit statute references (Clean Air Act, Clean Water Act, Safe Drinking Water Act). This clearly communicates the tool's domain, though it does not explicitly differentiate it from sibling tools like epa_facility_compliance or epa_enforcement_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational guidance: set media to 'air', 'water', or 'all' and provide an EPA Registry ID. However, it does not state when to prefer this tool over related EPA siblings or when not to use it, leaving the choice to inference from the topic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epss_scoreARead-onlyIdempotentInspect
FIRST EPSS exploit prediction score for a CVE. Returns probability (0-1) of exploitation in the next 30 days plus the percentile rank.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier. |
TDQS
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 meaningful behavioral context beyond annotations by specifying the output semantics: a 0-1 probability, a 30-day lookahead window, and a percentile rank. It could add edge-case behavior (e.g., behavior for unknown/malformed CVE IDs), but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler: the first identifies the tool's unique function, the second enumerates exactly what is returned. The key scoping detail (EPSS prediction for a CVE) 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.
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 openWorldHint and no output schema, the description covers the essential contract: input (CVE) and output (probability plus percentile). The main gap is error and edge-case behavior (invalid or nonexistent CVE IDs, data availability for recent CVEs), but given the tool's simplicity and the annotations, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter cve_id, whose schema description is 'CVE identifier.' The description echoes the concept of a CVE without adding format details (e.g., CVE-YYYY-NNNNN pattern) or input constraints. The schema carries the parameter documentation, so baseline 3 with no additional description value is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (a CVE) and a specific, well-known score (FIRST EPSS exploit prediction score), then clarifies the exact return semantics: probability (0-1) of exploitation in the next 30 days plus percentile rank. This clearly distinguishes it from sibling tools like cve_lookup or kev_status_check, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—you call this when you need an EPSS score—but it never explicitly states when to prefer this over related siblings such as kev_status_check, cve_lookup, or cve_search_by_keyword. No exclusions or alternative routing is provided, so the agent must infer the distinction from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_public_aviation_airport_profileARead-onlyIdempotentInspect
Return one official FAA NASR facility profile with privacy-minimized airport, runway, and runway-end technical fields. Includes identifiers, coordinates/elevation, status/use, tower and FAR 139 codes, fuel codes, runway length/width/surface/condition/lights, ILS and approach-light fields, declared distances, exact cycle, and provenance. Use this for 'FAA profile for JFK', 'runways and approach equipment at KDEN', or technical airport due diligence. It excludes contacts and remarks and is not a substitute for current NOTAMs, charts, or flight planning.
| Name | Required | Description | Default |
|---|---|---|---|
| airport | Yes | Exact FAA location id, ICAO id, NASR site number, or unambiguous facility name. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the description adds value by disclosing which data is deliberately excluded (contacts, remarks), that output is 'privacy-minimized', and that the profile is cycle-stamped and not a NOTAM substitute – a real freshness caveat. It does not cover error behavior for unmatched airport identifiers, which is the only notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the returned-field inventory, then usage examples, then exclusions – a sensible progression with no filler sentences. The long parenthetical field list is dense but earns its place by defining the output in the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating the categories of fields returned, plus scope boundaries (single facility, no contacts/remarks) and a staleness caveat. An agent has everything needed to decide to call it and to interpret the response shape at a high level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (airport, response_format) are already fully documented in the schema, including the accepted identifier forms and the default markdown format. The description adds no syntax, format, or matching-ambiguity guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: 'Return one official FAA NASR facility profile' and enumerates the technical content (identifiers, coordinates, runway dimensions, ILS, declared distances, cycle, provenance). The singular 'one ... profile' plus the field list clearly distinguishes it from the sibling faa_public_aviation_search_airports / search_runways / compare_airports, which operate over sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering examples ('FAA profile for JFK', 'runways and approach equipment at KDEN') and a named use case (technical airport due diligence), plus explicit exclusions: contacts and remarks are omitted, and it is 'not a substitute for current NOTAMs, charts, or flight planning.' It stops short of naming the sibling search/compare tools as alternatives, so routing between sibling tools still takes inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_public_aviation_compare_airportsARead-onlyIdempotentInspect
Compare two to eight FAA NASR facilities on one consistent 28-day source cycle. Ranks by longest published runway and compares runway count/dimensions, hard-surface and lighted counts, ILS and approach-light runway ends, tower/FAR 139 codes, status/use, identifiers, and provenance. Use this for 'compare JFK, LAX, and ORD runway capabilities' or 'which shortlisted airport has the longest runway and ILS-equipped ends?'. It is a technical evidence view, not an operational suitability decision or navigation source.
| Name | Required | Description | Default |
|---|---|---|---|
| airports | Yes | Two to eight FAA location ids, ICAO ids, site numbers, or unambiguous names. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 meaningful context beyond that: a consistent 28-day source cycle, ranking by longest published runway, and framing as a technical evidence view. It does not cover auth or rate limits, but adds real behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and scope, then lists compared fields, then gives usage examples and a boundary. The long enumeration of comparison dimensions is dense but informative, and no sentence is wasted. It is slightly list-heavy but well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the compared dimensions (runway dimensions, ILS, tower codes, provenance, etc.) and the ranking basis. It is complete enough for an agent to know what the tool returns conceptually, though it could say more about result structure (e.g., whether output is a ranked table).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description reinforces the 2-to-8 facility range but adds no syntax, format, or semantic details beyond what the schema provides. Baseline 3 when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (compare) on a specific resource (two to eight FAA NASR facilities) and enumerates the compared dimensions. It does not name sibling tools like faa_public_aviation_airport_profile or faa_public_aviation_search_airports, so it lacks explicit sibling differentiation but the compare scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete example queries ('compare JFK, LAX, and ORD runway capabilities') and a domain boundary (not an operational suitability decision or navigation source). However, it does not explicitly say when to use this tool versus the sibling airport profile or search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_public_aviation_search_airportsARead-onlyIdempotentInspect
Search LiveDataLink's self-hosted official FAA 28-day NASR snapshot for U.S. airports and other landing facilities. Returns FAA/ICAO identifiers, location, facility type/use/status, coordinates, elevation, runway counts and dimensions, tower/FAR 139 signals, pagination, and cycle provenance. Use this for 'find airports near a city', 'public-use airports in Ohio with a 5,000-foot runway', or to resolve an identifier before a profile call. Reference data only; not live airport status or NOTAMs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum facilities. Default 20. | |
| query | No | FAA/ICAO id, airport/facility name, or city. | |
| state | No | Two-letter U.S. state or territory code. | |
| offset | No | Facilities to skip. Default 0. | |
| status | No | FAA operational or closure status. Omit to include all statuses. | |
| facility_use | No | FAA public-use or private-use classification. | |
| facility_type | No | Airport, heliport, seaplane base, balloonport, gliderport, or ultralight facility. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| min_runway_length_ft | No | Require at least one runway of this published length. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, open-world safety profile. The description adds genuinely useful context beyond them: the data is a self-hosted 28-day NASR snapshot, includes cycle provenance, and is reference-only rather than live status/NOTAMs. It stops short of describing pagination mechanics despite mentioning pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the data source and scope, then returns, then usage, then the freshness caveat. No filler sentences; each one carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields and cycle provenance, and it discloses the data source and its non-live nature. Combined with 100% parameter coverage, an agent has everything needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 9 parameters are already documented, establishing a baseline of 3. The description's example queries imply parameter combinations (state + facility_use + min_runway_length_ft, query for city/name/id), adding marginal value over the schema without explaining any single parameter further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (U.S. airports and other landing facilities), names the exact data source (official FAA 28-day NASR snapshot), and enumerates the returned fields. It is clearly distinguishable from the sibling profile, compare_airports, and search_runways tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('find airports near a city', 'public-use airports in Ohio with a 5,000-foot runway') and explicitly routes to the profile sibling via 'resolve an identifier before a profile call'. It also states a when-not ('not live airport status or NOTAMs'), though it does not distinguish from compare_airports or search_runways.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_public_aviation_search_runwaysARead-onlyIdempotentInspect
Search U.S. FAA NASR runways using bounded technical filters such as state, minimum published length/width, surface text, lighting, ILS, public use, and operational status. Returns the airport identity, runway dimensions/surface/condition/lighting, weight fields, ILS/approach-light end counts, pagination, cycle, and provenance. Use this for 'operational Texas runways at least 8,000 feet', 'public-use paved runways in Alaska', or airport-site screening. Reference data only; verify all performance and operational decisions independently.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum runways. Default 20. | |
| state | No | Two-letter U.S. state or territory code. | |
| offset | No | Runways to skip. Default 0. | |
| surface | No | Substring of FAA surface code, such as ASPH, CONC, TURF, WATER, or GRVL. | |
| ils_only | No | Require at least one runway end with a published ILS type. Default false. | |
| lighted_only | No | Require a nonblank FAA runway-light code. Default false. | |
| min_width_ft | No | Minimum published runway width in feet; water landing areas may be much wider than paved runways. | |
| min_length_ft | No | Minimum published runway length in feet. | |
| public_use_only | No | Require FAA public-use classification. Default false. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| operational_only | No | Exclude closed facilities. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, idempotent, non-destructive, open-world profile. The description adds value beyond that by disclosing the returned payload shape (pagination, cycle, provenance) and an explicit data-reliability caveat ('Reference data only; verify all performance and operational decisions independently'), which an agent needs to use the output responsibly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then return shape, then use cases and caveat. Every sentence contributes; the filter enumeration is slightly redundant against the schema but remains readable and appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-required-filter tool with no output schema, the description compensates by summarizing both the filter surface and the returned fields, plus a caveat. It is complete enough to invoke correctly, though it omits pagination semantics (defaults, offset interaction) that the schema only partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema with bounds and examples. The description only enumerates filter categories (state, length/width, surface, lighting, ILS, public use, status) without adding syntax or format detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (U.S. FAA NASR runways) with scope. The runway focus cleanly distinguishes it from the sibling faa_public_aviation_search_airports, which operates at airport granularity, so an agent can route between them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete invocation examples ('operational Texas runways at least 8,000 feet', 'public-use paved runways in Alaska', airport-site screening) that clarify the intended use context. However, it never names an alternative tool or states when NOT to use this one versus the airport-level siblings, so it stops 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.
facility_care_qualityARead-onlyIdempotentInspect
One-call care-quality + provider-identity read for a named US healthcare FACILITY (hospital, nursing home, home-health agency, or hospice). Joins two keyless federal sources: CMS Care Compare (data.cms.gov) for the facility's quality signal - the CMS star rating and, for a hospital, the measure-group highlights (mortality, safety of care, readmission, timely-and-effective care measured better / no different / worse vs national), plus ownership, type, and for a nursing home the health-inspection / staffing / quality-measure star breakdown, certified beds, abuse flag, and fines - and the NPPES NPI Registry for the facility's legal identity (organizational NPI, taxonomy, city/state, active status). Provide a facility name (e.g. 'Cleveland Clinic', 'Mayo Clinic Hospital'); optionally add a 2-letter state to disambiguate and a type (hospital / nursing_home / home_health / hospice) to pin the CMS dataset. When no type is given the tool infers the provider category from the NPPES taxonomy and probes the CMS datasets in order. A leg that fails is noted, not fatal. This is an INFORMATIONAL public-record read, NOT medical advice, a substitute for CMS Care Compare, or an endorsement of any facility.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional provider category to pin the CMS dataset: 'hospital', 'nursing_home', 'home_health', or 'hospice'. Omit to auto-detect. | |
| state | No | Optional 2-letter state to disambiguate the facility (e.g. 'OH', 'AZ'). | |
| facility | Yes | Facility name to look up (e.g. 'Cleveland Clinic', 'Mayo Clinic Hospital', 'Burns Nursing Home'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/destructive annotations, it discloses source-joining behavior, category inference via NPPES taxonomy, probing order, and that a failed leg is non-fatal. It also flags itself as informational rather than advice or endorsement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded summary followed by necessary source and data details; all sentences add information. It is slightly long due to enumerating returned fields, but this compensates for having no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-source tool with no output schema, the description covers inputs, optional disambiguation, auto-inference, partial failure behavior, and enumerates the expected returned data fields. No critical operational gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters, and the description adds value by explaining why state/type matter (disambiguation and CMS dataset pinning) and what happens when type is omitted. That is meaningful guidance, though not exhaustive on formats or return types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation: a one-call care-quality plus provider-identity read for a named US healthcare facility. It clearly identifies the two federal sources being joined, which separates it from single-source siblings like cms_hospital_search or npi_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit input pattern with optional state/type for disambiguation and pinning, plus auto-detection behavior when type is omitted. It also states exclusions (not medical advice, not a substitute for CMS Care Compare), but does not name alternative sibling tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fbi_cde_compare_state_to_nationalARead-onlyIdempotentInspect
Compare one state's monthly FBI summarized UCR offense rate with the national rate in LiveDataLink's self-hosted CDE aggregate snapshot, including both reporting-coverage series, rate difference, ratio, pagination, and provenance. Use this for 'California versus U.S. robbery rates in 2023', 'give national context for one state's burglary trend', or 'does state-national comparison have a coverage caveat?'. This deliberately supports only the FBI-recommended state-to-national context—not state rankings, city league tables, causal claims, or individual risk decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum monthly observations. Default 24. | |
| state | Yes | Two-letter U.S. state or District of Columbia abbreviation; US is not accepted. | |
| offset | No | Monthly observations to skip. Default 0. | |
| offense | Yes | FBI CDE summarized offense category. Aggregate categories overlap their component offenses. | |
| end_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| start_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety and mutability are covered. The description adds useful behavioral context by listing included outputs such as both reporting-coverage series, rate difference, ratio, pagination, and provenance, plus a coverage caveat. It does not fully specify response structure, but that is mitigated by 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and included outputs, followed by use cases and explicit exclusions. It is somewhat long, but every sentence serves routing or scoping, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by naming the returned components: both reporting-coverage series, rate difference, ratio, pagination, and provenance. Combined with annotations and 100% schema coverage, an agent has enough context to invoke the tool correctly and understand its limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's meaning, format, and constraints. The description mentions state-to-national comparison and output components but does not add parameter-level semantics 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: compare one state's monthly FBI summarized UCR offense rate with the national rate. It identifies the exact data scope (LiveDataLink self-hosted CDE aggregate snapshot) and distinguishes the tool from sibling FBI CDE tools by emphasizing state-to-national comparison rather than trends, rankings, or snapshots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit example queries and states when the tool is appropriate: state-versus-national context. It also clearly says what the tool does not support: state rankings, city league tables, causal claims, and individual risk decisions. This is strong routing guidance despite not naming specific sibling functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fbi_cde_national_crime_trendARead-onlyIdempotentInspect
Return a bounded U.S. monthly FBI summarized UCR offense-rate trend with national reporting population and coverage from LiveDataLink's self-hosted CDE snapshot. Use this for 'national burglary rate trend in 2020', 'U.S. violent-crime reporting coverage by month', or national context before a state comparison. The upstream national response does not publish reported count fields in this endpoint, so counts are null rather than back-calculated; crimes known to law enforcement only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum monthly observations. Default 24. | |
| offset | No | Monthly observations to skip. Default 0. | |
| offense | Yes | FBI CDE summarized offense category. Aggregate categories overlap their component offenses. | |
| end_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| start_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only/idempotent safety profile, so the description's job is to add characterization. It does: it warns that the endpoint does not publish reported count fields, so counts are null rather than back-calculated, and that offenses cover only those known to law enforcement. This is valuable data-quality 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the capability, then usage examples, then the data caveat. Dense but each sentence earns its place; no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns, and it does so by stating counts come back null and describing the reporting-population/coverage fields. For a six-parameter read-only tool this is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description adds little parameter-level meaning beyond 'bounded' (implying limit/offset pagination) and the offense-rate framing; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('U.S. monthly FBI summarized UCR offense-rate trend with national reporting population and coverage'), and the national scope implicitly separates it from the state-level fbi_cde_* siblings. An agent can distinguish it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('national burglary rate trend in 2020', 'U.S. violent-crime reporting coverage by month') and a positioning hint ('national context before a state comparison'). It stops short of explicitly naming the alternative tools (e.g. fbi_cde_state_crime_trend), so it is clear context without full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fbi_cde_state_crime_trendARead-onlyIdempotentInspect
Return a bounded monthly trend for one state and one FBI summarized UCR offense category from LiveDataLink's self-hosted official CDE aggregate snapshot. Fields include reported offenses and clearances, rates per 100,000 reporting population, full and reporting populations, coverage percentage, pagination, and exact provenance. Use this for 'California violent-crime trend in 2023', 'monthly motor vehicle theft reported in Texas', or 'did coverage change during this state trend?'. Crimes known to law enforcement only; never use for cross-state rankings or individual decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum monthly observations. Default 24. | |
| state | Yes | Two-letter U.S. state or District of Columbia abbreviation; US is not accepted. | |
| offset | No | Monthly observations to skip. Default 0. | |
| offense | Yes | FBI CDE summarized offense category. Aggregate categories overlap their component offenses. | |
| end_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| start_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds meaningful context beyond that: self-hosted official CDE aggregate snapshot, bounded results, coverage percentage, provenance, and the critical caveat that these are crimes known to law enforcement only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with scope, then output fields, then usage examples and exclusions. Dense but each sentence carries information; the field enumeration is slightly list-heavy but useful given no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates returned fields (offenses, clearances, rates, populations, coverage, pagination, provenance), and the law-enforcement-only caveat is important. Scope and usage are well covered, leaving only minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all seven parameters including the enum values and the two-letter state pattern. The description names returned fields but adds no syntax or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return) plus resource and scope: a bounded monthly trend for one state and one FBI summarized UCR offense category. This clearly distinguishes it from siblings like fbi_cde_national_crime_trend, fbi_cde_compare_state_to_national, and fbi_cde_state_month_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete example queries ('California violent-crime trend in 2023', 'monthly motor vehicle theft reported in Texas') and an explicit exclusion ('never use for cross-state rankings or individual decisions'). It does not name the specific sibling to use instead, so it stops 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.
fbi_cde_state_month_snapshotARead-onlyIdempotentInspect
Return all ten hosted FBI summarized UCR offense categories for one state and month from LiveDataLink's self-hosted CDE aggregate snapshot, with counts, rates, reporting population coverage, and provenance. Use this for 'FBI crime snapshot for Ohio in June 2022', 'which CDE categories are available for this state-month?', or to inspect coverage before a trend query. Categories overlap and must not be summed; this is not a jurisdiction score, person-level record search, or current incident feed.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| state | Yes | Two-letter U.S. state or District of Columbia abbreviation; US is not accepted. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world safety, and the description adds a crucial analytical caveat not in annotations: the categories overlap and must not be summed. It also discloses that figures come from a self-hosted snapshot with reporting-population coverage and provenance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then use cases, then caveats/exclusions in three tight sentences. Every clause (example queries, the no-summing warning, the negative scope) earns its place by aiding selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-content burden and does so, naming counts, rates, reporting-population coverage, and provenance. Combined with full parameter coverage and safety annotations, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so state, month, and response_format are fully documented in the schema. The description adds no format or syntax 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (returns all ten FBI summarized UCR offense categories for one state-month) and names its source (CDE aggregate snapshot). It also implicitly distinguishes itself from trend and national siblings by naming what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete example queries ('FBI crime snapshot for Ohio in June 2022') and explicit exclusions (not a jurisdiction score, person-level search, or incident feed), and points to trend queries as the follow-on. It is slightly ambiguous about the sibling fbi_cde_state_reporting_coverage, since it claims coverage inspection as its own use case without naming that tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fbi_cde_state_reporting_coverageARead-onlyIdempotentInspect
Inspect monthly FBI UCR population coverage for one state in LiveDataLink's self-hosted CDE aggregate snapshot before interpreting its summarized crime trend. Returns reporting population, full population, coverage percentage, an explicit warning below 90 percent, pagination, and provenance. Use this for 'was California's 2021 FBI reporting coverage complete?', 'find low-coverage months in this state period', or to qualify an analysis. Coverage is not data quality proof and must accompany, not replace, methodological review.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum monthly observations. Default 24. | |
| state | Yes | Two-letter U.S. state or District of Columbia abbreviation; US is not accepted. | |
| offset | No | Monthly observations to skip. Default 0. | |
| end_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| start_month | Yes | Calendar month in YYYY-MM format within the hosted snapshot. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new behavior: the response fields (reporting population, full population, coverage percentage), an explicit warning emitted below 90 percent coverage, pagination, and provenance. It also flags an interpretive limit ('coverage is not data quality proof'), which is behavioral guidance annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return contents, then the use cases, then the caveat. Dense but each sentence earns its place; the second sentence is long and carries several distinct ideas at once.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly compensates by enumerating what is returned (populations, coverage percentage, warning, pagination, provenance). Combined with the usage framing and the interpretation caveat, an agent has everything needed to call and correctly contextualize the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented there, including the two-letter state constraint and the YYYY-MM month format. The description adds only the scoping phrase 'for one state,' so the schema does the heavy lifting and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Inspect monthly FBI UCR population coverage for one state in LiveDataLink's self-hosted CDE aggregate snapshot.' It also situates itself against the crime-trend sibling ('before interpreting its summarized crime trend'), so an agent can distinguish it from fbi_cde_state_crime_trend without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete trigger phrasings ('was California's 2021 FBI reporting coverage complete?', 'find low-coverage months') and a clear role: 'to qualify an analysis' and 'must accompany, not replace, methodological review.' No named alternative tool or explicit when-not condition, 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.
fbi_wantedARead-onlyIdempotentInspect
Search the FBI's public Wanted/fugitive list by name or keyword. Returns matching subjects with aliases, the responsible field offices, and a link. Complements sanctions screening for person due diligence. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1-25, default 10). | |
| query | No | Name or keyword to search (optional; omit for the current featured list). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context beyond those annotations: it is 'public' and 'Keyless,' and it returns matching subjects with aliases, field offices, and a link. It does not discuss rate limits or update frequency, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences with no wasted words. It is front-loaded with the core action and resource, then adds return details and a usage note efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining return values, which it does: 'Returns matching subjects with aliases, the responsible field offices, and a link.' Combined with annotations that cover safety and the simple two-parameter schema, the description is complete enough 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both the query and limit parameters. The description repeats 'by name or keyword' but adds no syntax, format, or additional meaning beyond the schema, making the baseline of 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search the FBI's public Wanted/fugitive list by name or keyword.' It also distinguishes the tool from sanctions screening by saying it 'Complements sanctions screening for person due diligence,' so an agent can tell it apart from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context with 'Complements sanctions screening for person due diligence,' indicating when to use it alongside other checks. However, it does not name explicit alternatives or state when not to use this tool, 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.
fda_device_510kARead-onlyIdempotentInspect
FDA 510(k) clearances for medical devices. The 510(k) pathway is how most non-high-risk devices come to market in the US. Filter by manufacturer (applicant), device name, product code, or decision date range. Used for competitive intel, device R&D scouting, M&A research.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Manufacturer (applicant) name or device name search term. | |
| end_date | No | Inclusive ISO date upper bound (YYYY-MM-DD). | |
| start_date | No | Inclusive ISO date lower bound (YYYY-MM-DD). | |
| product_code | No | Optional product code (e.g. 'DXJ' for ECG). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the filterable dimensions but says nothing about result cardinality, pagination behavior beyond the schema, or dataset scope/coverage. With annotations carrying safety, minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and domain explanation, then filter fields, then use cases. Each sentence contributes, though the 510(k) pathway explainer is somewhat educational rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with 100% schema coverage and no output schema, the description covers the necessary ground. However, it doesn't describe the result shape or clarify what 'query' matches (manufacturer OR device name, per schema), leaving some ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are documented with types and descriptions in the schema. The description's mention of filter fields (manufacturer, device name, product code, decision date range) aligns with the schema, adding marginal context but no syntax or format detail beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: retrieving FDA 510(k) clearances for medical devices. It also explains the domain context (the 510(k) pathway for non-high-risk devices) and names the exact filterable fields, making it clearly distinguishable from siblings like 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names concrete use cases ('competitive intel, device R&D scouting, M&A research'), giving the agent a clear sense of when this tool applies. It lacks explicit when-not-to-use guidance or named alternatives, but the domain framing supplies sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_device_recallsARead-onlyIdempotentInspect
FDA medical device recalls. Filter by device name or recalling manufacturer, classification (Class 1 most severe), or date range. Used for medical device supply chain monitoring and hospital biomed compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Optional device name or recalling firm search term. | |
| end_date | No | Inclusive ISO date upper bound (YYYY-MM-DD). | |
| start_date | No | Inclusive ISO date lower bound (YYYY-MM-DD). | |
| classification | No | Recall classification: 1 (Class I, most severe), 2, 3. |
TDQS
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 fully covered by structured data. The description adds no behavioral detail beyond that — no pagination, result ordering, or rate-limit notes — so it neither contradicts nor meaningfully extends the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: identification first, filterable fields second, use-case context last. Every clause earns its place and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-parameter query tool with no output schema and annotations covering safety, the description supplies purpose, filters, and use cases adequately. It does not explain return shape or result ordering, but with annotations present and no output schema required, that omission is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (limit, query, start_date, end_date, classification) is already documented in the schema, including the Class 1 severity note. The description mirrors those facets but adds no syntax or format detail beyond what the schema provides, matching the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/resource pair ('FDA medical device recalls') and immediately enumerates the filterable facets (device name, manufacturer, classification, date range). This clearly distinguishes it from siblings like fda_drug_recalls, fda_food_recalls, and cpsc_recall_search without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names concrete use cases (medical device supply chain monitoring, hospital biomed compliance), which gives an agent clear context for when this tool applies. It stops short of explicit when-not guidance or naming an alternative sibling for overlapping recall queries, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_drug_adverse_eventsARead-onlyIdempotentInspect
FDA Adverse Event Reporting System (FAERS) reports for a specific drug. Each result describes a reported adverse reaction including patient demographics, reactions, outcome, and seriousness. Used for pharmacovigilance and post-market safety analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | Drug name (brand or generic) to query FAERS for. Example: 'Lipitor' or 'atorvastatin'. | |
| limit | No | Maximum rows to return (default 25, max 100). | |
| end_date | No | Inclusive ISO date upper bound (YYYY-MM-DD). | |
| reaction | No | Optional MedDRA-preferred-term reaction filter (e.g. 'headache', 'nausea', 'liver injury'). | |
| start_date | No | Inclusive ISO date lower bound (YYYY-MM-DD). | |
| serious_only | No | If true, only return serious adverse events (death, hospitalization, life-threatening, disability). |
TDQS
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, covering the safety profile fully. The description adds value by detailing what each result contains (patient demographics, reactions, outcome, seriousness), which goes beyond the annotations and helps the agent understand output content. However, with annotations covering behavior so thoroughly, the bar is lower, and the description doesn't add much beyond that basic content listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the data source and scope, the second describes return content, and the third states the intended use case. No waste, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with full schema coverage and no output schema, the description covers what the tool does, what it returns, and its general domain. It lacks guidance on when to choose this over sibling tools, which would make it complete, but it is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all six parameters. The description adds no parameter-specific guidance. Baseline 3 is appropriate when the schema does all the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific source (FAERS), a specific resource (adverse event reports), and a specific scope (for a specific drug). It is distinguishable from siblings like fda_drug_lookup and fda_drug_recalls, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via 'used for pharmacovigilance and post-market safety analysis,' giving implied context. However, it does not explicitly state when to use this tool versus alternatives like fda_drug_lookup or fda_drug_recalls, nor does it set exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_drug_lookupARead-onlyIdempotentInspect
Look up FDA drug label info by NDC code, brand name, or generic name. Returns indications, dosage, warnings, contraindications, mechanism, manufacturer, and DEA scheduling. Used for clinical decision support, pharmacy automation, drug-info chatbots.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | Yes | NDC code (e.g. '0002-1407'), brand name (e.g. 'Lipitor'), or generic name (e.g. 'atorvastatin'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly, idempotent, openWorld, non-destructive), so the description doesn't need to restate it. It adds genuine value by listing the label content returned (indications, dosage, warnings, contraindications, mechanism, manufacturer, DEA scheduling), which is important since no output schema exists. It omits behavior like multiple-match handling or error cases, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core capability front-loaded and the return fields enumerated. The trailing 'Used for...' sentence is the weakest element, leaning toward audience framing rather than actionable instruction, but it is short and does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with 100% schema coverage and no output schema, the description supplies the return-field inventory an agent needs and the accepted identifier forms. Minor gaps remain: behavior on ambiguous matches, label-version selection, and how the limit interacts with results are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented with examples in the schema itself. The description restates the three accepted query forms but adds no syntax, format, or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Look up') with a precisely scoped resource ('FDA drug label info') and enumerates the identifier forms (NDC, brand, generic) plus the fields returned. That field list makes the resource unambiguous against neighbors such as fda_drug_adverse_events and fda_drug_recalls, which cover different FDA drug data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives audience-oriented context ('clinical decision support, pharmacy automation, drug-info chatbots') but never states when to pick this tool over alternatives, nor any exclusions or prerequisites. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_drug_recallsARead-onlyIdempotentInspect
FDA drug enforcement actions (recalls). Filter by product name, recall classification (I=most severe, II, III), state, or date range. Useful for pharmacy compliance, supply chain monitoring, pharmacovigilance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Optional product description / generic name / brand name search term. | |
| state | No | Optional 2-letter state filter. | |
| end_date | No | Inclusive ISO date upper bound (YYYY-MM-DD). | |
| start_date | No | Inclusive ISO date lower bound (YYYY-MM-DD). | |
| classification | No | Recall severity: I (most severe), II, III. |
TDQS
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 the classification severity meaning (I=most severe), but does not disclose result ordering, pagination/limit behavior, or data freshness 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the resource identity followed by filters and use cases. No padding, though the use-case clause is somewhat generic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, filter-based search over FDA data with full schema coverage and rich annotations; no output schema is needed since return values are self-evident. The only gap is disambiguation from sibling recall tools, which is a routing rather than completeness issue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only restates the filter dimensions (product name, classification, state, date range) already documented in the schema, including the severity semantics for classification that the schema also provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'FDA drug enforcement actions (recalls)'. The 'drug' qualifier implicitly distinguishes it from fda_device_recalls and fda_food_recalls, but the description never names those siblings or clarifies the boundary against recall_screen / product_liability_screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists use cases ('pharmacy compliance, supply chain monitoring, pharmacovigilance'), which implies when it is relevant, but gives no when-not guidance and no routing to the many sibling recall tools (fda_device_recalls, fda_food_recalls, cpsc_recall_search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_food_recallsARead-onlyIdempotentInspect
FDA food enforcement actions (food recalls). Filter by product description, recall classification, state, or date range. Used for retail food safety monitoring, supply chain compliance, restaurant management.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Optional product description search term. | |
| state | No | Optional 2-letter state filter. | |
| end_date | No | Inclusive ISO date upper bound (YYYY-MM-DD). | |
| start_date | No | Inclusive ISO date lower bound (YYYY-MM-DD). | |
| classification | No | Recall severity: I (most severe), II, III. |
TDQS
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 and idempotency profile is fully covered. The description adds only that these are authoritative FDA 'enforcement actions', which is modest context. It says nothing about result ordering, pagination, or the practical meaning of a recall record beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first identifies the dataset and the filterable axes, the second lists target use cases. No filler, and the core identity is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter search tool with 100% schema coverage and no output schema, the definition covers identity, filters, and audience adequately; annotations carry the safety profile. The only minor gap is that it does not characterize the shape of returned recall records, which matters somewhat given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: all six parameters including limit bounds, classification enum values I/II/III, state format, and ISO date bounds are documented in the schema. The description merely restates the filterable dimensions (product description, classification, state, date range), adding no format or edge-case detail beyond the structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific dataset and resource: 'FDA food enforcement actions (food recalls)', which the parenthetical disambiguates from the sibling fda_drug_recalls and fda_device_recalls. It does not explicitly name those siblings, but the 'food' scope is unambiguous. An agent can identify what this returns 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists intended domains – 'retail food safety monitoring, supply chain compliance, restaurant management' – which implies when the tool is useful. However, it gives no when-not guidance and does not route the agent to alternatives like cpsc_recall_search, recall_screen, or fda_drug_recalls, which are the natural confusables in this catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdic_depositsARead-onlyIdempotentInspect
Branch-office deposit data from the FDIC Summary of Deposits (annual snapshot). Returns deposits per branch sorted by deposit volume, useful for measuring local-market banking concentration.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City name | |
| limit | No | Max branches (default 25) | |
| state | No | Two-letter state code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuine context not in the annotations: the data is an annual snapshot and results are sorted by deposit volume. It does not, however, say what happens with no state/city filter or how the 200-row cap interacts with results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the data source and scope followed by the return shape and a use case. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states what is returned and how it is ordered. The main gap is the unaddressed unfiltered case (all three parameters are optional) and whether geography beyond state/city is supported, which an agent might need before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so city, state, and limit (default 25, max 200) are fully documented in the schema. The description adds nothing about parameter behavior (e.g., whether state and city combine as a filter), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (branch-office deposits), the source dataset (FDIC Summary of Deposits, annual snapshot), and the output ordering (by deposit volume). It is clearly not the same as fdic_financials or fdic_failures, but it never explicitly contrasts itself with the other FDIC_* siblings, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers one implied use case ('useful for measuring local-market banking concentration'), which hints at context, but gives no explicit when-to-use versus when-not, no mention of alternatives like fdic_search_institutions for institution-level data, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdic_failuresARead-onlyIdempotentInspect
List FDIC bank failures. Filter by state and/or date range. Returns failure date, institution name, location, estimated cost, and resolution type. Sorted most-recent first. Use this for systemic-risk research, historical bank-stability analysis, or compliance work.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25) | |
| state | No | Two-letter state code | |
| offset | No | Pagination offset | |
| end_date | No | End date YYYY-MM-DD | |
| start_date | No | Start date YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description still adds real traits the annotations don't: default sort order ("most-recent first") and the exact returned fields, which matters 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and filters before the use cases. Efficient overall, though the trailing use-case sentence is the softest and could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the returned fields and the sort order. All five parameters are covered by the schema, and the filter/sort/return picture is 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.
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 limit, offset, state, start_date, and end_date. The description only restates the state/date filtering at a high level and adds no syntax or format detail, so it sits at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ("List FDIC bank failures") and even names the content it returns (failure date, resolution type). It's unambiguous versus the other fdic_* siblings, but it never explicitly differentiates itself from them (e.g., fdic_search_institutions, fdic_history).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear domain context for when to reach for it ("systemic-risk research, historical bank-stability analysis, or compliance work") plus the filter conditions. It stops short of naming alternatives or any when-not-to-use case, so it's context without routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdic_financialsARead-onlyIdempotentInspect
Get quarterly financial data for a specific bank by CERT number (FDIC Certificate Number). Returns recent quarters of assets, deposits, loans, capital ratios, income, and asset quality metrics. Most recent quarters first.
| Name | Required | Description | Default |
|---|---|---|---|
| cert | Yes | FDIC Certificate Number (get this from fdic_search_institutions) | |
| limit | No | Number of recent quarters (default 4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds genuine behavioral context by disclosing what is returned (assets, deposits, loans, capital ratios, income, asset quality) and the ordering ('most recent quarters first'), which matters because there is no output schema. It stops short of auth/rate-limit details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the verb+resource+key, then the payload contents, then the ordering. No wasted words and the most decision-relevant information comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param read-only tool with full schema coverage and no output schema, the description supplies the return contents and ordering that the structured fields omit. It is nearly complete; only the absence of sibling disambiguation keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both params documented (cert sourced from fdic_search_institutions, limit bounded 1-40 default 4). The description reinforces the CERT identifier but adds no syntax or meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('quarterly financial data for a specific bank'), and identity key ('CERT number'), then enumerates the returned fields (assets, deposits, loans, capital ratios, income, asset quality). It is clearly distinct from a lookup tool, but it never names or contrasts with close siblings like fdic_deposits, fdic_summary, or bank_health_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no exclusions. The description implies it is a per-bank quarterly financials tool, but with siblings like fdic_summary, fdic_deposits, and bank_health_report in the same family, the agent gets no help choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdic_historyARead-onlyIdempotentInspect
Institution history events for a specific bank by CERT: mergers, acquisitions, name changes, charter conversions, failures. Returns most-recent first.
| Name | Required | Description | Default |
|---|---|---|---|
| cert | Yes | FDIC Certificate Number | |
| limit | No | Max events (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one genuine behavioral fact beyond the annotations: results are ordered most-recent first. It does not disclose pagination or truncation behavior, so it remains a modest addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the resource and scope front-loaded, followed by the event list and ordering. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes the return as a most-recent-first list of named event types, which an agent needs to interpret results. It is largely complete for a simple two-parameter read tool, though it omits any note on pagination or result volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (cert and limit, including the default 25 and max 100) are already fully documented in the schema. The description restates that filtering is by CERT but adds no syntax or semantic detail beyond the structured fields, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (institution history events) and scope (a specific bank by CERT), plus enumerates the event types it returns. An agent can tell what it produces, though it does not differentiate itself from the closely related fdic_failures sibling, which overlaps on the 'failures' event type it lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a specific bank by CERT' implicitly signals that a CERT identifier is required and must be obtained first (e.g., via fdic_search_institutions), which is mild implied guidance. However, there is no explicit when-to-use vs when-not, and no routing away from fdic_failures or fdic_summary despite the overlapping subject matter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdic_search_institutionsARead-onlyIdempotentInspect
Search FDIC-insured banks and savings institutions by name, state, or city. Returns CERT number, name, location, total assets, deposits, net income, ROA, ROE, charter class. Use the CERT number for follow-up queries to fdic_financials or fdic_history.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City name (exact) | |
| name | No | Institution name (partial match) | |
| limit | No | Max results (default 25) | |
| state | No | Two-letter state code (e.g. 'CA', 'TX') | |
| offset | No | Pagination offset (default 0) | |
| active_only | No | Only currently-active banks (default true) |
TDQS
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 behavioral context by enumerating the returned fields and explaining that CERT is the key for follow-up queries. It does not cover pagination defaults, rate limits, or authentication needs, but those are not critical for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero waste. The primary search action is front-loaded, followed by the return fields and the downstream CERT linkage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description lists the key returned fields and explains how to use the result for follow-up tools. Combined with the annotations covering safety and the 100%-covered input schema, an agent has everything needed to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters, including limit, offset, and active_only. The description mentions the name, state, and city filters but adds no syntax or format detail beyond what the schema provides. Baseline 3 is appropriate when the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('FDIC-insured banks and savings institutions') and identifies the searchable fields (name, state, city). It also distinguishes the tool from downstream siblings by telling the agent to use the returned CERT number for fdic_financials or fdic_history, making the boundary clear without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the filter dimensions and explicitly routes follow-up work to fdic_financials or fdic_history using the CERT number. It does not state when not to use this tool or name an alternative institution-search tool, but the intended 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.
fdic_summaryARead-onlyIdempotentInspect
Industry-level summary financials. Returns year-by-year aggregates across all FDIC-insured institutions, optionally filtered to a single state. Useful for macro banking-sector analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of years (default 20) | |
| state | No | Two-letter state code (omit for national) |
TDQS
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 fully covered. The description adds the aggregate/scope nature and the optional state filter, but does not disclose return shape, default year window behavior, or data vintage. Adds some value over annotations but not rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what it returns before the usage hint. The final sentence is slightly soft ('Useful for...') but earns its place as a routing cue. Minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, no-output-schema aggregate tool whose safety profile is carried by annotations, the description covers what the tool returns and its scope. It could say more about which financial aggregates are included, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — 'limit' (number of years, default 20) and 'state' (two-letter code) are both fully documented in the schema. The description restates the state filter ('optionally filtered to a single state') but adds no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Returns year-by-year aggregates across all FDIC-insured institutions') and states the aggregation scope, which implicitly distinguishes it from institution-level siblings like fdic_financials or fdic_search_institutions. It stops short of explicitly naming the sibling it contrasts with, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for macro banking-sector analysis' implies when to reach for it, but there is no explicit when-to-use versus alternatives (e.g., use fdic_financials for a single bank, this for the whole sector). Usage is only implied, not directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fec_candidate_detailsARead-onlyIdempotentInspect
Get full detail for a single federal candidate by FEC candidate_id (e.g. 'P80001571'). Includes office, party, status, election years, and mailing address. Use fec_candidate_search to find the candidate_id.
| Name | Required | Description | Default |
|---|---|---|---|
| candidate_id | Yes | FEC candidate ID (e.g. 'P80001571', 'S2MA00170'). |
TDQS
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 bar is lower. The description adds value beyond that by disclosing the response scope ('full detail... includes office, party, status, election years, and mailing address'), giving the agent a concrete expectation of what comes back. It doesn't mention behavior for invalid IDs, but that's a minor gap for a simple lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first establishes purpose with an example; the second routes to the sibling tool. Both sentences earn their place 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.
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, everything needed to invoke it correctly is present: the parameter is fully documented, the return content is described (field list compensates for the absent output schema), annotations cover safety, and the prerequisite relationship to fec_candidate_search is stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the schema already documents candidate_id with two examples ('P80001571', 'S2MA00170'). The description repeats one example but adds no meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Get full detail for a single federal candidate') and identifies the lookup key (candidate_id) with a concrete example. It also enumerates the included fields (office, party, status, election years, mailing address), which distinguishes this from the financial-oriented sibling fec_candidate_financials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes to fec_candidate_search when the ID is unknown ('Use fec_candidate_search to find the candidate_id'), which is clear when-not-to-use guidance. However, it doesn't explicitly address the other FEC siblings (fec_candidate_financials, fec_committee_search); the field list implies the boundary, but an explicit exclusion would make it fully complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fec_candidate_financialsARead-onlyIdempotentInspect
Get aggregate campaign finance totals for a candidate by FEC candidate_id, broken down by election cycle. Includes total receipts, disbursements, individual contributions, cash on hand, and debts. Filter to one cycle with the cycle parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | Two-year election cycle (even year, e.g. 2024). Optional. | |
| limit | No | Maximum cycles to return (default 10, max 50). | |
| candidate_id | Yes | FEC candidate ID (e.g. 'S2MA00170'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds genuine behavioral value by enumerating the returned metrics (total receipts, disbursements, individual contributions, cash on hand, debts), which tells the agent what data it will get. It stops short of return format or pagination/cap behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no waste: purpose first, returned contents second, and the cycle-filtering hint last. It 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and the annotations carry the safety profile, so an agent has what it needs to call it. It omits minor details like the default limit of 10 and that no cycle returns all cycles, but these are documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema itself documents candidate_id, cycle, and limit with examples and defaults. The description only reiterates the cycle filter and adds no syntax or format detail beyond 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.
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 aggregate campaign finance totals for a candidate by FEC candidate_id') and explicitly frames it as cycle-broken-down aggregates. This clearly separates it from siblings like fec_candidate_details (profile data) or fec_candidate_search (finding candidates). An agent can tell what it returns 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage hint ('Filter to one cycle with the cycle parameter') but offers no when-to-use/when-not guidance and never names an alternative such as fec_candidate_details. Usage is implied rather than spelled out for the agent deciding between FEC tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fec_candidate_searchARead-onlyIdempotentInspect
Search federal candidates (President, House, Senate) by name, state, office, or party using FEC data. Returns candidate IDs needed for the other FEC tools.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | Two-year election cycle (even year, e.g. 2024). Optional. | |
| limit | No | Maximum candidates to return (default 20, max 100). | |
| party | No | Party code (e.g. 'DEM', 'REP', 'IND', 'LIB'). Optional. | |
| query | No | Candidate name fragment (e.g. 'Warren', 'Smith'). Optional. | |
| state | No | Two-letter state code to filter by (e.g. 'MA', 'TX'). Optional. | |
| office | No | Office: 'P' (President), 'S' (Senate), or 'H' (House). Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description usefully adds the return content (candidate IDs), which matters because there is no output schema. It does not discuss result volume, pagination, or what happens when no match is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The capability statement is front-loaded and the downstream-use note follows, each earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations carrying the safety profile and the schema fully documenting all six parameters, the description covers what is needed: what it searches and what it returns. Only minor omissions remain, such as result limits and empty-result behavior, which the schema's limit description partially handles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including cycle and limit is documented in the schema itself. The description's list of search dimensions (name, state, office, party) maps onto existing parameters but adds no syntax, format, or defaulting detail beyond them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search), resource (federal candidates), scope (President, House, Senate), and searchable dimensions, plus the data source (FEC). This clearly separates it from siblings like fec_candidate_details or fec_candidate_financials, which operate on an already-identified candidate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence establishes the workflow role: this tool yields the candidate IDs that the other FEC tools consume, which tells an agent to start here when it lacks an ID. It does not name specific alternative siblings or state when-not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fec_committee_searchARead-onlyIdempotentInspect
Search FEC-registered political committees (campaign committees, PACs, party committees, Super PACs) by name, state, or committee type. Returns committee IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | Two-year election cycle (even year, e.g. 2024). Optional. | |
| limit | No | Maximum committees to return (default 20, max 100). | |
| query | No | Committee name fragment. Optional. | |
| state | No | Two-letter state code to filter by. Optional. | |
| committee_type | No | Committee type code: 'P' (President), 'S' (Senate), 'H' (House), 'N'/'Q' (PAC), 'O' (Super PAC), 'X'/'Y' (party). Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered by structured data. The description adds one genuinely useful behavioral fact — 'Returns committee IDs' — which matters because there is no output schema and it signals the response is identifiers rather than full committee records. It says nothing about pagination, default/max result counts, or how ID output should be chained into another call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the capability and its coverage front-loaded and the return contract placed last. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with full schema coverage and no output schema, the description covers purpose, filter dimensions and the shape of the result (IDs). Minor remaining gap: nothing about result limits or pagination behavior, which the schema only partially implies via the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (cycle, limit, query, state, committee_type) are already documented with formats, bounds and enum codes in the schema. The description restates three of the filter dimensions (name, state, committee type) without adding syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (FEC-registered political committees) and enumerates the subtypes covered (campaign committees, PACs, party committees, Super PACs), which is unusually concrete. It does not explicitly distinguish itself from adjacent FEC siblings such as fec_candidate_search or fec_independent_expenditures, but the resource noun is distinct enough for an agent to route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by name, state, or committee type' implies how the tool is meant to be driven, which is useful implied usage guidance. However there is no statement of when to use this versus fec_candidate_search, when to add a cycle, or any exclusion — the agent must infer routing 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.
fec_independent_expendituresARead-onlyIdempotentInspect
List independent expenditures (FEC Schedule E) supporting or opposing a candidate or made by a committee. Shows spender committee, amount, date, support/oppose, and description. Provide candidate_id or committee_id.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | Two-year election cycle (even year, e.g. 2024). Optional. | |
| limit | No | Maximum expenditures to return (default 20, max 100). | |
| candidate_id | No | FEC candidate ID the spending targets (e.g. 'P80001571'). Provide this or committee_id. | |
| committee_id | No | FEC committee ID of the spender (e.g. 'C00804856'). Provide this or candidate_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the returned field set (spender, amount, date, support/oppose, description), which is useful behavioral context, but says nothing about pagination, result ordering, or completeness limits beyond the schema's limit param.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler: the first defines scope and returned content, the second front-loads the required-input constraint. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the fields returned and states the input requirement, and annotations carry the safety profile. Minor gap: no note on result volume/ordering behavior for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents cycle, limit, candidate_id, and committee_id with examples and defaults. The description's 'Provide candidate_id or committee_id' merely restates the schema's own constraint, adding no syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('independent expenditures'), plus the FEC Schedule E provenance and the directionality (supporting/opposing a candidate or made by a committee). Clear enough to distinguish from generic search tools, though it does not name a sibling like fec_candidate_financials to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence 'Provide candidate_id or committee_id' gives a real usage constraint, implicitly ruling out parameterless calls. However it offers no when-to-use-vs-alternative guidance relative to the other FEC tools (candidate financials, committee search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_board_h15_evidence_packARead-onlyIdempotentInspect
Combine the latest official H.15 policy/reference rates with the complete nominal Treasury curve and headline 10y-2y and 10y-3m spreads in one provenance-backed evidence pack. Use this for 'summarize the current rate environment', 'build a Federal Reserve rates evidence pack', or as a direct-Board macro leg alongside other datasets. Values are historical observations, not a forecast, recommendation, or real-time quote.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO date YYYY-MM-DD. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/destructive/openWorld. The description adds real value beyond them: 'provenance-backed' signals sourcing, and the explicit disclaimer that values are historical observations, not a forecast, recommendation, or real-time quote, is a meaningful freshness/limitation disclosure an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the composition of the pack, then the use cases and the disclaimer. Efficient, though 'provenance-backed' is slightly jargon-y filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what the pack contains (policy rates, full curve, two headline spreads) and its historical nature. Adequate for a zero-required-param, read-only aggregator, though it doesn't describe return shape or units.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both the date pattern and the response_format enum. The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Combine') and enumerates the exact resource components: H.15 policy/reference rates, the complete nominal Treasury curve, and the 10y-2y/10y-3m spreads. It implicitly distinguishes itself from the single-facet siblings (rate_history, yield_curve, rate_spread) by being the aggregator, though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger phrases ('summarize the current rate environment', 'build a Federal Reserve rates evidence pack') and positions itself as a 'direct-Board macro leg alongside other datasets'. This is clear when-to-use guidance, but it names no alternatives or when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_board_h15_rate_historyARead-onlyIdempotentInspect
Return a bounded history for one active Federal Reserve Board H.15 business-day rate series from the self-hosted official snapshot. Includes canonical series metadata, values, pagination, exact D1 coverage, raw-package hash, and attribution. Use this for 'show the effective federal funds rate history', 'get daily 10-year Treasury yields', or 'what was prime over this period?'. Scope is 2000-present and is not a live market quote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum observations. Default 30. | |
| offset | No | Observations to skip. Default 0. | |
| series | Yes | Exact H.15 series_name, descriptive name, or Treasury alias such as '10-year Treasury', '2y', or '3-month Treasury'. | |
| end_date | No | ISO date YYYY-MM-DD. | |
| start_date | No | ISO date YYYY-MM-DD. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 real behavioral context beyond that: data comes from a 'self-hosted official snapshot', results are bounded/paginated, and each response carries coverage, a raw-package hash and attribution. It stops short of stating rate limits or what happens on an unknown series.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core verb/resource, then the returned contents, then usage examples and scope. Mild redundancy between 'bounded history' and the 'pagination' item in the contents list, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly enumerates what comes back (series metadata, values, pagination, D1 coverage, raw-package hash, attribution) and bounds the temporal scope. The one gap for a 6-parameter tool is that it doesn't explain how to obtain a valid series identifier if the exact H.15 name is unknown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the series alias formats and date patterns is already documented in the schema, making 3 the baseline. The description only reinforces the bounding concept via 'bounded history' and does not add syntax or resolution behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return a bounded history for one ... H.15 business-day rate series') plus scope ('2000-present', 'not a live market quote'), which is enough to distinguish it from fed_board_h15_yield_curve and fed_board_h15_rate_spread. It never names those siblings explicitly, so the differentiation is by inference rather than declaration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three example queries ('show the effective federal funds rate history', 'get daily 10-year Treasury yields', 'what was prime over this period?') imply when the tool fits, and the '2000-present ... not a live market quote' line excludes real-time use. However, it never points to fed_board_h15_search_series for discovering valid series identifiers, nor explains when the evidence_pack or yield_curve siblings are preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_board_h15_rate_spreadARead-onlyIdempotentInspect
Calculate a time series of one Federal Reserve Board H.15 rate minus another on aligned business dates. Returns both canonical series, component values, percentage-point and basis-point spreads, pagination, provenance, and exact hosted coverage. Use this for '10-year minus 2-year Treasury spread', 'prime minus fed funds', or 'compare 30-year and 5-year yields'. Treasury aliases such as '10y' and '2y' are accepted. Not a forecast or trading signal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum aligned observations. Default 30. | |
| offset | No | Aligned observations to skip. Default 0. | |
| end_date | No | ISO date YYYY-MM-DD. | |
| series_a | Yes | Exact H.15 series_name, descriptive name, or Treasury alias such as '10-year Treasury', '2y', or '3-month Treasury'. | |
| series_b | Yes | Exact H.15 series_name, descriptive name, or Treasury alias such as '10-year Treasury', '2y', or '3-month Treasury'. | |
| start_date | No | ISO date YYYY-MM-DD. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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. The description adds useful behavioral context about aligning on business dates and what the response includes (both canonical series, component values, percentage-point and basis-point spreads, pagination, provenance, hosted coverage), though it omits auth, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core operation, followed by use cases, alias acceptance, and a scope disclaimer. Every sentence adds distinct value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does so by enumerating returned data (both series, spreads, pagination, provenance, coverage). It still omits edge cases such as non-aligned dates or coverage-range limits and does not reference sibling alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description only notes that Treasury aliases such as '10y' and '2y' are accepted, which duplicates the schema's own examples and adds no new parameter syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation: calculate a time series of one Federal Reserve Board H.15 rate minus another on aligned business dates. The term 'spread' and examples like '10-year minus 2-year Treasury spread' clearly distinguish it from sibling tools such as fed_board_h15_rate_history and fed_board_h15_yield_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete use cases ('10-year minus 2-year Treasury spread', 'prime minus fed funds', 'compare 30-year and 5-year yields') and clarifies it is not a forecast or trading signal. However, it does not explicitly name alternative sibling tools 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.
fed_board_h15_search_seriesARead-onlyIdempotentInspect
Search the active business-day series in LiveDataLink's self-hosted official Federal Reserve Board H.15 snapshot. Returns canonical series names, descriptions, instruments, maturities, coverage, pagination, and source hash. Use this for 'find the Fed funds series', 'what Treasury maturities are available?', or to resolve a series before a history/spread call. This is direct Board data, not a FRED proxy.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum series. Default 20. | |
| query | No | Optional words, instrument code, maturity, or series name. | |
| offset | No | Series to skip. Default 0. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 safety behavior is covered. The description adds useful non-annotation context: it returns canonical names, descriptions, instruments, maturities, coverage, pagination, and a source hash, and it clarifies the data provenance as direct Board data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and source in the first sentence, then efficiently covers returns, usage examples, and provenance. Every sentence earns its place with no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search/catalog tool with no output schema, the description explains the return payload and usage context adequately. Safety and idempotency are carried by annotations, parameter details by the schema, and source distinction is clarified, leaving no material gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters documented in the input schema, including the response_format enum and limit/offset defaults. The description does not add syntax, matching behavior, or format details beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('active business-day series') within a clearly named source ('Federal Reserve Board H.15 snapshot'). It distinguishes itself from FRED proxies and from sibling history/spread tools, so an agent can tell what it retrieves 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage examples ('find the Fed funds series', 'what Treasury maturities are available?') and says to use it 'to resolve a series before a history/spread call', which implicitly routes to the H.15 history and spread siblings. It does not explicitly name those alternative tools or state when-not to use this search, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_board_h15_yield_curveARead-onlyIdempotentInspect
Build the nominal US Treasury constant-maturity yield curve from the Federal Reserve Board's self-hosted H.15 snapshot for the latest business day on or before a date. Returns maturities, yields, canonical series names, 10y-2y and 10y-3m spreads, curve-shape classification, provenance, and source hash. Use this for 'show today's Treasury curve', 'was the curve inverted on 2024-06-03?', or 'compare short and long rates'. Not security pricing or investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO date YYYY-MM-DD. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description earns credit for adding the non-obvious resolution rule: it uses 'the latest business day on or before a date' rather than an exact-date match. It also discloses provenance and a source hash in the return payload, which is useful for auditability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by return contents and usage examples. The second sentence is dense with a long enumeration, but nearly every clause carries distinct information; the closing disclaimer is brief and justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description enumerates the return payload (maturities, yields, canonical series names, spreads, curve-shape classification, provenance, hash), so an agent knows what to expect. With annotations covering safety and the schema covering inputs, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the 'date' parameter is not an exact-match filter but a snap-back-to-latest-business-day anchor. That clarification materially changes how an agent picks a value for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (build) and resource (nominal US Treasury constant-maturity yield curve) plus the exact source (Fed Board H.15 snapshot). It is clearly distinguishable from siblings like fed_board_h15_rate_history and fed_board_h15_rate_spread, which handle single series and spreads respectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides three concrete invocation examples ('show today's Treasury curve', 'was the curve inverted on 2024-06-03?', 'compare short and long rates') and a scope exclusion ('Not security pricing or investment advice'). It does not, however, explicitly route the agent to sibling tools (e.g. rate_spread for a single spread series), so the when-not-this-tool guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_z1_catalogARead-onlyIdempotentInspect
List and search the deliberately small catalog of aggregate U.S. balance-sheet and debt series in LiveDataLink's self-hosted Federal Reserve Z.1 snapshot. Returns official series IDs, stable LiveDataLink slugs, table/line metadata, units, adjustment basis, coverage, pagination, release hash, and attribution. Use this for 'what household balance-sheet measures are available?', 'find the mortgage debt series', or to resolve a series before another Z.1 call. This is not the full Z.1 universe.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum series. Default 20. | |
| query | No | Optional substring of slug, official series ID, or title. | |
| offset | No | Series to skip. Default 0. | |
| category | No | Optional curated category. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds real value beyond that: it discloses the enumerated return fields (IDs, slugs, line metadata, units, release hash, attribution) and warns the result set is intentionally small. It does not mention auth or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose before scope caveat and use cases; the enumerated return-field list is dense but earns its place given no output schema exists. Minor verbosity in the field list, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating the fields returned. Combined with scope bounds and use cases, an agent has nearly everything needed; only pagination mechanics (deferred to schema) are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters including the two enums and their bounds. The description adds no param-level syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List and search) plus resource (aggregate U.S. balance-sheet and debt series in the Fed Z.1 snapshot), and explicitly bounds scope with 'deliberately small catalog' and 'This is not the full Z.1 universe', which distinguishes it from fed_z1_series and fed_z1_snapshot without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger examples ('what household balance-sheet measures are available?', 'find the mortgage debt series') and a routing rule ('resolve a series before another Z.1 call'). It stops short of naming the sibling Z.1 tools to use instead, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_z1_changeARead-onlyIdempotentInspect
Calculate the absolute and percentage change in one curated Federal Reserve Z.1 aggregate between two exact hosted quarters. Returns both observations, dollar change, percent change, series definitions, release provenance, and source hashes. Use this for 'how much did household net worth change from 2019 Q4 to 2024 Q4?', 'growth in mortgage debt since 2020', or 'change in federal debt outstanding between two quarters'. This is descriptive historical arithmetic, not a forecast or recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | Exact curated slug or official Z.1 series ID. Call fed_z1_catalog to discover supported values. | |
| end_period | Yes | Quarter in official Z.1 YYYY:Qn form, such as 2020:Q4. | |
| start_period | Yes | Quarter in official Z.1 YYYY:Qn form, such as 2020:Q4. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds value beyond that by enumerating the response payload (both observations, dollar change, percent change, series definitions, release provenance, source hashes) and by scoping the tool as descriptive arithmetic rather than forecast.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and scope, then examples, then a scope disclaimer. Four sentences with no filler, though three example queries are slightly redundant with the already-explicit purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description's enumeration of returned fields (observations, dollar and percent change, definitions, provenance, hashes) fills that gap. Purpose, inputs, outputs, and scope limits are all covered for a four-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: series, start_period/end_period patterns, and response_format enum are all documented in the schema, including the pointer to fed_z1_catalog. The description adds no format or constraint detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: calculating absolute and percentage change in one curated Z.1 aggregate between two exact quarters. The two-quarter framing distinguishes it in scope from point-in-time siblings like fed_z1_snapshot and full-history siblings like fed_z1_series, even though it does not name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete example questions ('how much did household net worth change from 2019 Q4 to 2024 Q4?', 'growth in mortgage debt since 2020') that clearly map to the tool, and explicitly excludes forecasting/recommendation use. It does not name an alternative tool or state when to prefer fed_z1_series/snapshot instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_z1_seriesARead-onlyIdempotentInspect
Return a bounded quarterly history for one curated Federal Reserve Financial Accounts (Z.1) aggregate series from LiveDataLink's self-hosted release snapshot. Includes official series/table identifiers, dollar values, units, seasonal-adjustment basis, pagination, source hash, and release provenance. Use this for 'show household net worth since 2019', 'quarterly federal debt outstanding', or 'consumer credit history'. Values are aggregate historical estimates that may be revised.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum observations, newest first. Default 24. | |
| offset | No | Observations to skip. Default 0. | |
| series | Yes | Exact curated slug or official Z.1 series ID. Call fed_z1_catalog to discover supported values. | |
| end_period | No | Quarter in official Z.1 YYYY:Qn form, such as 2020:Q4. | |
| start_period | No | Quarter in official Z.1 YYYY:Qn form, such as 2020:Q4. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond that: the self-hosted release snapshot provenance, the fields returned (units, seasonal-adjustment basis, source hash, release provenance), and the important caveat that 'values are aggregate historical estimates that may be revised.' It does not discuss rate limits or snapshot staleness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action followed by return contents and usage examples. Dense but each sentence carries information; the 'Includes...' enumeration is somewhat list-like but earns its place given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating returned fields and adds a revision caveat, so an agent knows what to expect. It is complete enough to call correctly, though it could have noted how to expand or validate the series identifier beyond the schema's pointer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit, offset, series, start/end_period, response_format all documented), so the baseline is 3. The description alludes to 'bounded' history and 'pagination' but adds no syntax, default, or behavioral detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Return a bounded quarterly history for one curated Federal Reserve Financial Accounts (Z.1) aggregate series.' The word 'one' and 'curated aggregate series' implicitly separates it from a catalog/enumeration tool, but the description never names fed_z1_catalog, fed_z1_change, or fed_z1_snapshot to make the distinction explicit. Clear purpose, weak sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrasings ('show household net worth since 2019', 'quarterly federal debt outstanding', 'consumer credit history') that map well to the tool, establishing clear context. However it offers no exclusions or named alternatives, and the routing hint ('Call fed_z1_catalog to discover supported values') lives only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_z1_snapshotARead-onlyIdempotentInspect
Return the latest hosted quarter for one to eight curated Federal Reserve Z.1 balance-sheet or debt aggregates on one consistent release. Includes values in millions and trillions of dollars, official IDs, adjustment bases, release quarter, hashes, and attribution. Use this for 'latest household net worth and liabilities', 'compare current household, business, and federal debt levels', or as a macro evidence leg alongside FRED and Treasury tools. Do not compare levels without considering definitions and adjustment bases.
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | One to eight unique exact curated slugs or official series IDs. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 value beyond that: the output carries units in millions and trillions, official IDs, adjustment bases, release quarter, hashes, and attribution, plus an explicit caveat about comparing levels across differing definitions. It does not state behavior on unknown slugs or ordering 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, followed by the payload contents and usage triggers. It is dense but every sentence carries information; the enumeration of output fields is the only mild padding, though it compensates for the absent output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what is returned (values in two units, official IDs, adjustment bases, release quarter, hashes, attribution) and gives use cases plus a definitions caveat. It is nearly complete for an agent to call it correctly, lacking only edge-case behavior (invalid slug handling, multi-series alignment) to reach a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented (series as 'one to eight unique exact curated slugs or official series IDs', response_format enum). The description only restates the one-to-eight cardinality and the curated-aggregate framing, adding no new syntax or format guidance. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Return the latest hosted quarter for one to eight curated Federal Reserve Z.1 balance-sheet or debt aggregates on one consistent release.' The phrase 'latest hosted quarter' and 'one consistent release' implicitly distinguishes this snapshot from the historical/change-oriented siblings (fed_z1_series, fed_z1_change, fed_z1_catalog), but none of those siblings are named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger phrases ('latest household net worth and liabilities', 'compare current household, business, and federal debt levels') and positions itself 'as a macro evidence leg alongside FRED and Treasury tools,' which tells the agent when to compose it with others. It adds a caution ('Do not compare levels without considering definitions and adjustment bases') but stops short of naming which sibling to use for history or deltas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fema_nfhl_compare_inventory_itemsARead-onlyIdempotentInspect
Compare 2-10 exact FEMA NFHL inventory units for coverage freshness and advertised download size. Returns requested-order rows, missing IDs, total estimated bytes, and provenance, enabling auditable acquisition estimates across target counties/communities. No geometry is hosted or downloaded. Use flood_zone_lookup instead for point/address flood-zone questions.
| Name | Required | Description | Default |
|---|---|---|---|
| dfirm_ids | Yes | Two to ten distinct exact FEMA DFIRM IDs. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds real value beyond that: it states what is returned (requested-order rows, missing IDs, total estimated bytes, provenance) and clarifies 'No geometry is hosted or downloaded,' which prevents misassumptions about data transfer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and scope, followed by the return summary and the routing hint. Every sentence carries distinct information; nothing is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to describe the return payload (ordered rows, missing IDs, total bytes, provenance) and the no-geometry constraint. Combined with annotations, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents dfirm_ids and response_format. The description echoes the 2-10 exact-ID constraint and adds the word 'exact' plus the cross-county/community framing, but contributes no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare), resource (FEMA NFHL inventory units), and scope (2-10 exact IDs), plus what is compared: coverage freshness and advertised download size. This clearly distinguishes it from fema_nfhl_get_inventory_item, fema_nfhl_search_inventory, and fema_nfhl_summarize_state_inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes point/address flood-zone questions to flood_zone_lookup, which is a genuine alternative. It does not, however, differentiate from its closest siblings (get_inventory_item, search_inventory), so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fema_nfhl_get_inventory_itemARead-onlyIdempotentInspect
Get one self-hosted FEMA NFHL inventory unit by exact DFIRM ID. Returns jurisdiction, state, coverage-unit kind, package update date, advertised size, filename, canonical FEMA download URL, and immutable provenance. Use this to produce acquisition evidence after search. It does not fetch or inspect the geodatabase; use flood_zone_lookup for address/coordinate zone questions.
| Name | Required | Description | Default |
|---|---|---|---|
| dfirm_id | Yes | Exact six-character FEMA DFIRM ID, optionally suffixed -NFHL. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real context beyond them: it enumerates what is returned (including 'immutable provenance' and a canonical download URL) and draws a hard boundary ('does not fetch or inspect the geodatabase'), which prevents misuse of the tool as a data-fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the operation and key, then return payload, then usage routing and exclusion. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and no output schema, the description supplies the lookup semantics, the return shape, and the sibling routing an agent needs. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema carries the parameters (including the regex pattern). The description still adds value by stressing 'exact DFIRM ID', signaling exact-match lookup semantics rather than fuzzy search, which complements the schema's syntactic pattern with intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get), a specific resource (one self-hosted FEMA NFHL inventory unit), and the exact lookup key (DFIRM ID). It also enumerates the returned fields and names the sibling it is not (flood_zone_lookup), so the agent can place it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions usage: 'Use this to produce acquisition evidence after search' establishes the workflow slot, and 'use flood_zone_lookup for address/coordinate zone questions' names an alternative and the condition selecting it. It stops short of naming fema_nfhl_search_inventory directly, but the sequencing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fema_nfhl_get_snapshot_metadataARead-onlyIdempotentInspect
Return the pinned FEMA NFHL inventory snapshot's run ID, row/state counts, displayed update-date coverage, hashes, acquisition method/evidence origin, rights, exact official source URLs, scope boundary, fail-closed inventory-schema checks, and MapServer layer-ID/type verification. Use this to qualify evidence and freshness before relying on inventory results. This is not a polygon corpus and does not replace flood_zone_lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/destructive=false, so safety is covered; the description goes further by disclosing fail-closed inventory-schema checks, scope boundary, evidence origin, rights, and hashes. These are meaningful behavioral traits an agent needs to interpret trustworthiness, though it stops short of describing response shape or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the returned-field inventory before the usage guidance and the exclusion, which is the right order. The field enumeration is dense and longer than strictly necessary, but every clause is informative rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly compensates by enumerating the returned metadata fields, and it supplies the trust/qualification context an agent needs for an evidence-provenance tool. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage and a single fully-documented response_format enum, the schema already carries the parameter semantics. The description adds no parameter-level detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource (the pinned NFHL inventory snapshot's metadata) and enumerates the exact fields returned, so the agent knows precisely what it gets. It explicitly distinguishes itself from flood_zone_lookup ('not a polygon corpus and does not replace flood_zone_lookup'), routing the agent away from a common confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to qualify evidence and freshness before relying on inventory results' gives explicit when-to-use guidance, and the closing sentence provides a when-not-to-use exclusion against flood_zone_lookup. It does not, however, name the actual sibling alternatives (fema_nfhl_search_inventory, get_inventory_item) that return the inventory rows themselves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fema_nfhl_search_inventoryARead-onlyIdempotentInspect
Search LiveDataLink's complete pinned projection of FEMA's nationwide NFHL coverage/download inventory by jurisdiction, state, unit kind, displayed update date, and advertised ZIP size. Returns bounded pagination, both displayed and filename-derived dates, canonical FEMA download evidence, and snapshot hashes. Commercial use: screen coverage/freshness and plan acquisition before property diligence. This is inventory metadata only; for an address or coordinate flood-zone question use flood_zone_lookup, which consults FEMA's live Flood Hazard Zones layer.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Stable sort. Default jurisdiction. | |
| limit | No | Maximum rows. Default 20. | |
| query | No | DFIRM ID, item ID, jurisdiction, state, code, or filename search terms (maximum 8 terms). | |
| state | No | Two-letter state/territory code or full FEMA state name. | |
| offset | No | Rows to skip. Default 0. | |
| updated_from | No | Inclusive displayed inventory update date floor, YYYY-MM-DD. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| updated_through | No | Inclusive displayed inventory update date ceiling, YYYY-MM-DD. | |
| jurisdiction_kind | No | Inventory coverage-unit kind derived conservatively from FEMA identifiers/names. | |
| max_advertised_mb | No | Maximum FEMA-advertised package size in approximate MiB. | |
| min_advertised_mb | No | Minimum FEMA-advertised package size in approximate MiB. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe idempotent read, but the description adds real value beyond them: it is a 'complete pinned projection' (snapshot semantics), returns bounded pagination, both displayed and filename-derived dates, and snapshot hashes, and is explicitly 'inventory metadata only'. This return-shape disclosure is substantial for a tool with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by return contents and a routing note; every sentence carries information. It is slightly dense with internal jargon ('LiveDataLink's complete pinned projection', 'canonical FEMA download evidence') but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-required, no-output-schema tool the description is complete enough to invoke correctly: it names the filter dimensions, the snapshot/pinning nature, the returned artifacts, the metadata-only limitation, and the alternative for point flood-zone queries. Nothing an agent needs to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries its own description, so the schema does the heavy lifting. The description restates the filter axes (jurisdiction, state, unit kind, update date, advertised ZIP size) without adding syntax or semantics beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search FEMA's NFHL coverage/download inventory) and enumerates the filterable dimensions, so the agent knows exactly what the tool returns. It differentiates from flood_zone_lookup, but does not distinguish itself from its nearest siblings (fema_nfhl_get_inventory_item, fema_nfhl_compare_inventory_items, fema_nfhl_summarize_state_inventory), which share the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage context ('screen coverage/freshness and plan acquisition before property diligence') and names an alternative with its selecting condition ('for an address or coordinate flood-zone question use flood_zone_lookup'). No exclusion guidance against the other NFHL inventory siblings, but the when-to-use framing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fema_nfhl_summarize_state_inventoryARead-onlyIdempotentInspect
Summarize all hosted FEMA NFHL inventory units for one state/territory: unit counts by kind, oldest/latest package dates, total advertised download-volume estimate, and largest unit. Use for state coverage/freshness comparisons and data-acquisition budgeting. This does not mean every place or parcel has digital NFHL geometry and is not a flood determination.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | Two-letter state/territory code or full FEMA state name. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely useful semantic context beyond annotations: that the inventory does not imply digital NFHL geometry exists everywhere and is not a flood determination. It does not add auth or rate-limit details, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the summary contents and then the usage scope. Every clause earns its place by covering output fields, intended use, and a misuse caveat. Slightly dense but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields (unit counts by kind, oldest/latest package dates, total download-volume estimate, largest unit). Combined with the scope caveat, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the state and response_format parameters are fully documented in the schema. The description aligns with 'one state/territory' but adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (summarize) plus resource (FEMA NFHL inventory units for one state/territory), and it enumerates exactly what the summary contains (counts by kind, package dates, download-volume estimate, largest unit). This distinguishes it from the sibling search/get/compare inventory tools without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it: 'state coverage/freshness comparisons and data-acquisition budgeting.' It also guards against misuse with 'is not a flood determination.' It does not name the specific sibling tools as alternatives, 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.
fhfa_hpi_compareARead-onlyIdempotentInspect
Compare two to eight US geographies on a consistent FHFA HPI series and rank them by one-year price-index change. Returns latest level, one-year and five-year change, CAGR, recent direction, stable place_id/geography_level fields, and source provenance for later property-market evidence packs. Use this for 'compare home-price momentum in Texas and Florida' or 'which of these metros has stronger five-year appreciation?'. Not a property valuation or investment recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| places | Yes | Two to eight exact FHFA place ids or geography names. | |
| frequency | No | Observation frequency. Default quarterly. | |
| hpi_flavor | No | FHFA index flavor. Default purchase-only. | |
| index_basis | No | Index column to use. Default seasonally_adjusted. | |
| geography_level | No | Optional exact FHFA geography level to disambiguate state, metro, division, or national series. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world and non-destructive, so safety is covered. The description adds real value beyond them by enumerating the returned measures (latest level, 1y/5y change, CAGR, direction, stable place_id/geography_level, provenance) and stating the ranking behavior. No auth, rate-limit, or pagination context is offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the action and scope, then returns, then example use cases, then the boundary. Each sentence contributes distinct information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by listing the measures produced. Annotations cover the safety profile, parameters are fully documented, and both positive and negative usage boundaries are stated. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by framing the call as operating 'on a consistent FHFA HPI series', implying frequency/flavor/basis apply uniformly across all requested places, which the schema does not state. It also reinforces the 2-8 cardinality constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource (compare US geographies on a consistent FHFA HPI series) plus scope (two to eight) and the ranking key (one-year price-index change). It strongly differentiates from single-series siblings like fhfa_hpi_series by virtue of the multi-geography comparison, but it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two concrete example invocations ('compare home-price momentum in Texas and Florida', 'which of these metros has stronger five-year appreciation?') plus a negative exclusion ('Not a property valuation or investment recommendation') make the intended use clear. It stops short of naming an alternative tool for the excluded cases, so 5 is not warranted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fhfa_hpi_seriesARead-onlyIdempotentInspect
Return a bounded FHFA House Price Index history for one US geography from LiveDataLink's self-hosted official snapshot. Includes stable FHFA place_id, geography level, year/period, adjusted and unadjusted index values, pagination, snapshot hash, and required attribution. Use this for 'show California house-price history', 'chart the Austin metro HPI', or as a federal price-index leg alongside realestate_trend. The index measures average price change; it is not a property value or appraisal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum observations. Default 24. | |
| place | Yes | Exact FHFA place_id or geography name, such as 'CA', 'California', a 5-digit CBSA id, or an FHFA metro name. | |
| offset | No | Observations to skip for pagination. Default 0. | |
| end_year | No | Optional latest observation year. | |
| frequency | No | Observation frequency. Default quarterly. | |
| hpi_flavor | No | FHFA index flavor. Default purchase-only. | |
| start_year | No | Optional earliest observation year. | |
| index_basis | No | Index column to use. Default seasonally_adjusted. | |
| geography_level | No | Optional exact FHFA geography level to disambiguate state, metro, division, or national series. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds that the data comes from a 'self-hosted official snapshot' and mentions a snapshot hash and required attribution, which is useful provenance context. It does not add further behavioral detail such as rate limits or exact pagination semantics, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core purpose, followed by returned fields, usage examples, and a scope clarification. No wasted filler. The final sentence earns its place by preventing misuse as a valuation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and a fully-described 10-parameter schema, the description covers purpose, return fields, provenance, and a key scope limit. It could be stronger by explicitly routing users to fhfa_hpi_trend and fhfa_hpi_compare, but it is otherwise complete for a read-only index query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, establishing the baseline of 3. The description adds no syntax or format detail beyond the schema (e.g., no guidance on how place names are matched), so it does not exceed baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return a bounded FHFA House Price Index history for one US geography') and enumerates the returned fields including stable place_id, geography level, year/period, and both index flavors. It does not explicitly contrast itself with the sibling tools fhfa_hpi_trend and fhfa_hpi_compare, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete example queries ('show California house-price history', 'chart the Austin metro HPI') and names a use context ('as a federal price-index leg alongside realestate_trend'). However, it never states when NOT to use it versus the closer siblings fhfa_hpi_trend and fhfa_hpi_compare, leaving the boundary ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fhfa_hpi_trendARead-onlyIdempotentInspect
Summarize the latest FHFA HPI trend for one US geography from the self-hosted official series. Returns latest index, previous-period, one-year and five-year changes, five-year CAGR, recent direction, stable geography identifiers, and provenance. Use this for 'how fast are home prices rising in Texas?', 'is the Miami HPI falling?', or as the public-data corroboration leg for a realestate_market_screen. Not a forecast, appraisal, or investment recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| place | Yes | Exact FHFA place_id or geography name, such as 'CA', 'California', a 5-digit CBSA id, or an FHFA metro name. | |
| frequency | No | Observation frequency. Default quarterly. | |
| hpi_flavor | No | FHFA index flavor. Default purchase-only. | |
| index_basis | No | Index column to use. Default seasonally_adjusted. | |
| geography_level | No | Optional exact FHFA geography level to disambiguate state, metro, division, or national series. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds useful framing with the 'not a forecast, appraisal, or investment recommendation' disclaimer and 'self-hosted official series' provenance note. It doesn't discuss failure modes (unknown geography, series gaps) or output verbosity, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then a bullet-style enumeration of outputs, then example queries, then an explicit exclusion. Every sentence carries information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, 6-parameter (1 required), fully-described-schema tool with no output schema, the description sufficiently explains what is returned (index, prior period, 1y/5y changes, CAGR, direction, identifiers, provenance) and what it is not. Minor gap: no guidance on disambiguating place when multiple geographies match.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a description and enums where applicable, so the schema carries the semantic load. The description adds only the geography constraint ('one US geography') which the schema already conveys via the place parameter. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Summarize) + resource (latest FHFA HPI trend) + scope (one US geography from self-hosted official series). The description also enumerates what the return contains, which distinguishes it from sibling fhfa_hpi_series and fhfa_hpi_compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete example queries ('how fast are home prices rising in Texas?', 'is the Miami HPI falling?') and names a specific integration use case (corroboration leg for realestate_market_screen). Does not explicitly state when NOT to use it, e.g. versus fhfa_hpi_compare or fhfa_hpi_series, so it stops 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.
flood_zone_lookupBRead-onlyIdempotentInspect
FEMA flood zone designation for an address or coordinate. Returns the zone code, plain-English risk, BFE if applicable, FIRM panel reference, and whether NFIP insurance is mandated for federally-backed mortgages.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lon | No | ||
| location | No | Address or zip to geocode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context by naming the exact return fields and noting that BFE is included 'if applicable,' but it does not disclose other behavioral traits like geocoding failure handling, data vintage, or coverage limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently communicates the core purpose and enumerates the key return fields without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the outputs well, which matters because there is no output schema. However, it leaves the input model underspecified: an agent must infer that location is for addresses and lat/lon are for coordinates, and there is no guidance about required vs optional inputs or mutual exclusivity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description needed to explain the parameters, but it does not clarify how lat, lon, and location relate to each other, whether they are alternatives, or what coordinate format is expected. It only loosely maps to 'address or coordinate' without giving enough detail for an agent to confidently choose the right inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: looking up FEMA flood zone designations for an address or coordinate, and it lists specific outputs. It is distinct enough in subject matter from siblings like nfip_flood_claims or geocode_address, but it does not explicitly name or differentiate itself from any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used when flood zone information is needed, but gives no explicit guidance on when to prefer this tool over related alternatives such as nfip_flood_claims, property_lookup, or location_risk_report. No exclusions, prerequisites, or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fmcsa_carrier_authorityARead-onlyIdempotentInspect
Check if a trucking company is legally authorized to operate and has valid insurance. Returns operating authority status (common, contract, broker - active/inactive/revoked), BIPD insurance, cargo insurance, bond/surety status, and whether they're allowed to haul freight. Use this for questions like 'can this carrier legally operate?', 'do they have insurance?', 'is this broker licensed?', 'verify carrier authority', 'check trucking company credentials', 'is this freight company legit?', or any carrier compliance check.
| Name | Required | Description | Default |
|---|---|---|---|
| dot_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint, idempotentHint, and destructiveHint false, the description adds useful behavioral context by specifying exactly what statuses and insurance categories the tool returns. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by useful return-value detail and example queries. It is slightly long, but each sentence contributes functional guidance and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter read-only lookup with no output schema, and the description explains both the input context and the main return categories. It doesn't cover not-found or error behavior, but for this tool complexity that is not a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines dot_number as a positive integer with no property description. The description adds some context by indicating the tool operates on trucking companies/carriers, but it never explicitly says the dot_number is a USDOT number or how to obtain it, leaving a small semantic gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Check') against a specific resource ('trucking company') and enumerates concrete outputs: operating authority status, insurance types, bond/surety, and freight eligibility. It doesn't explicitly differentiate from sibling FMCSA tools like fmcsa_carrier_lookup or fmcsa_safety_scores, but the stated scope is specific enough to identify the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides example questions and a 'use this for' directive, so the intended usage context is fairly clear. However, it doesn't mention alternatives or exclusions, and the closing phrase 'or any carrier compliance check' is overbroad since safety-score checks are handled by fmcsa_safety_scores.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fmcsa_carrier_compareARead-onlyIdempotentInspect
Compare 2 to 5 trucking companies side by side on safety, fleet size, insurance, and authority. Returns a comparison table: fleet size, driver count, safety rating, crash history, BASIC safety scores, authority status, insurance, and out-of-service rates. Use this for questions like 'which carrier is safer?', 'compare these trucking companies', 'which freight company should I use?', 'evaluate these carriers against each other', 'help me pick between these haulers', or any carrier vetting decision.
| Name | Required | Description | Default |
|---|---|---|---|
| dot_numbers | Yes | 2-5 USDOT numbers, as an array or comma-separated string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral detail by stating that it returns a comparison table and enumerating the exact data dimensions: fleet size, driver count, safety rating, crash history, BASIC safety scores, authority status, insurance, and out-of-service rates. This is helpful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and output are front-loaded in the first sentence, and the second sentence follows with the return format and then example queries. It is efficiently written, though the five example phrasings are somewhat redundant and could be trimmed without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with full schema coverage and safety annotations, the description is largely complete: it states the input scope, the decision use case, and the returned comparison dimensions. It does not cover data freshness or how incomplete records are handled, but that is a minor gap given how much is already explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents dot_numbers thoroughly, including the 2-5 range and accepted formats (array or comma-separated string), so schema coverage is 100%. The description reinforces the 2-5 carrier range but adds no new parameter-level semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Compare 2 to 5 trucking companies side by side on safety, fleet size, insurance, and authority.' This clearly distinguishes it from sibling tools like fmcsa_carrier_lookup, fmcsa_carrier_search, and fmcsa_safety_scores, which are single-carrier or score-specific operations. The tool's purpose as a multi-carrier comparison is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context with concrete question examples such as 'which carrier is safer?' and 'compare these trucking companies,' and closes with 'or any carrier vetting decision.' It does not explicitly name alternative tools or state when not to use it, but the 'use for questions like...' framing gives an agent solid selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fmcsa_carrier_lookupARead-onlyIdempotentInspect
Look up a trucking company, freight carrier, or motor carrier by DOT number or MC number. Returns company name, address, phone, fleet size, number of drivers, safety rating, operating authority, insurance status (BIPD, cargo, bond), crash history, inspection rates, and out-of-service percentages. Use this for questions like 'is this carrier safe?', 'look up this trucking company', 'check this DOT number', 'verify this carrier', 'what's their safety rating?', or any freight carrier lookup. Covers all US carriers registered with FMCSA.
| Name | Required | Description | Default |
|---|---|---|---|
| mc_number | No | ||
| dot_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive behavior, so the description mainly adds scope ('Covers all US carriers registered with FMCSA') and return categories. It does not clarify that calling with neither dot_number nor mc_number is likely invalid, even though the schema marks both optional. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense and front-loaded with the core lookup, followed by a useful field inventory, usage examples, and scope. The examples are slightly redundant, but the description remains focused and earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with no output schema, the description is mostly complete: it lists return fields, identifiers, and coverage. The main gaps are the lack of an explicit at-least-one-parameter constraint and route to sibling FMCSA tools, which prevents a top score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides property names and integer types but no descriptions; the description supplies the domain meaning (DOT/MC are carrier identifiers) and says the lookup is by one or the other. It stops short of documenting exact accepted formats or explicitly stating that at least one parameter is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('look up') on a defined resource class (trucking/freight/motor carrier) keyed by DOT or MC number, and enumerates returned fields. It does not explicitly name or exclude nearby siblings like fmcsa_carrier_search, fmcsa_carrier_authority, or fmcsa_carrier_compare, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit query-phrase examples ('is this carrier safe?', 'check this DOT number') that tell an agent when to invoke it. However, it never says when not to use it or mentions alternatives for narrower or comparative carrier lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fmcsa_carrier_searchARead-onlyIdempotentInspect
Search for trucking companies, freight carriers, or motor carriers by company name. Find any carrier's DOT number, MC number, location, fleet size, and operating status. Supports partial name matching. Use this for questions like 'find this trucking company', 'what's the DOT number for Werner?', 'search for freight carriers in Texas', 'look up this logistics company', or any carrier name search. Returns up to 50 matching carriers from the FMCSA national database.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful context beyond annotations: partial-name matching, a 50-result cap, the FMCSA national database source, and the fields returned. It does not discuss zero-result or ambiguous-match behavior, but this is a minor gap for a read-only search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: core operation first, return fields second, then matching behavior and examples. The example list is mostly helpful, though 'or any carrier name search' is a slightly redundant catch-all and the 'freight carriers in Texas' example is a bit loose because the tool only searches by company name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately lists the key return fields and the result limit, giving an agent enough information to invoke and interpret the tool. The main gap is that it does not warn that searches are name-only and cannot filter by location, despite one example mentioning Texas.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain the parameter. It does: the 'name' parameter is a company name, partial matches are supported, and examples clarify expected input. It stops short of specifying case sensitivity or formatting, but the schema constraints and examples suffice for this simple one-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search for trucking companies... by company name,' then lists concrete returned fields (DOT number, MC number, location, fleet size, operating status). It also notes partial name matching, which helps distinguish it from exact-lookup siblings like fmcsa_carrier_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit example questions and states 'or any carrier name search,' so an agent knows when to invoke it. It does not explicitly mention when to prefer sibling tools such as exact DOT/MC lookup or safety-score tools, though the name-search framing implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fmcsa_safety_scoresARead-onlyIdempotentInspect
Get safety information for a trucking company by DOT number. Returns either CSA BASIC percentile scores (where FMCSA publishes them, rare per FAST Act 2015 restrictions) OR a public safety summary built from crash counts, fatal/injury crashes, driver/vehicle/hazmat out-of-service rates, and inspection volumes (always available). Use this for questions like 'is this carrier safe?', 'what's their safety record?', 'how many crashes?', 'should I hire this carrier?', 'check their inspection history', or any trucking safety evaluation. Higher BASIC percentiles = worse record. For OOS rates, lower is better; national averages provided for comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| dot_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond that: it explains the conditional return of CSA BASIC percentiles versus the always-available public safety summary, specifies the metrics included, and clarifies interpretation ('Higher BASIC percentiles = worse record'). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then efficiently covers return modes, example use cases, and interpretation guidance. The example-question list is slightly long but each item is decision-relevant, and no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the two possible return forms, the data contained in the safety summary, and how to interpret the metrics. It does not cover error cases or mention alternative fmcsa tools, but for a single-parameter read-only lookup the essential information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate, but it only repeats that the tool works 'by DOT number.' This adds little beyond the parameter name and the schema's integer/exclusiveMinimum constraints. It does not explain how to obtain or format a DOT number or any additional semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get safety information for a trucking company by DOT number.' The description further clarifies the two possible return types, which helps differentiate it from generic carrier lookups. However, it does not explicitly distinguish itself from sibling tools like fmcsa_carrier_lookup or fmcsa_carrier_authority.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context through example questions like 'is this carrier safe?' and 'how many crashes?' and explicitly says 'or any trucking safety evaluation.' It does not state when not to use it or mention alternative tools, so it lacks explicit exclusions and sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_category_seriesARead-onlyIdempotentInspect
List the most popular FRED series in a category. Category IDs are numeric (e.g. 32991 = Interest Rates, 32263 = Money Stock, 9 = National Accounts). Use this to browse FRED structurally rather than via search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 50 for observations, 25 for catalog queries). | |
| category_id | Yes | FRED category ID. See https://fred.stlouisfed.org/categories/ for the hierarchy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one behavioral detail beyond that – results are popularity-ordered – but says nothing about return shape or pagination, which matters since there is no output schema. Modest value-add against an already-annotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, with the core purpose front-loaded before the examples and the routing guidance last. The three ID examples are useful but slightly redundant with the schema's own category reference, so it's efficient rather than maximally lean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only catalog listing with full schema coverage and no output schema, the description covers purpose, ID semantics, and routing versus search. What's returned (series IDs/titles) and any page-size behavior are left implicit, though the limit default is documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema's generic 'See https://fred.stlouisfed.org/categories/' pointer by supplying concrete ID-to-topic mappings (32991 = Interest Rates, 32263 = Money Stock, 9 = National Accounts), which materially helps the agent map intent to a value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (List) and resource (FRED series within a category) and adds scope ('most popular'). It also distinguishes itself from search-based siblings with 'browse FRED structurally rather than via search,' so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear selective condition ('browse FRED structurally rather than via search'), which routes the agent away from fred_search. It stops short of naming the sibling tool explicitly or stating when-not to use this tool, so it's clear context without full alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_compareARead-onlyIdempotentInspect
Compare 2 to 5 FRED series side-by-side over the same date range. Returns observations for each series. Useful for ratio analysis (e.g. compare 10Y vs 2Y yield) or cross-series correlation.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound ISO date (YYYY-MM-DD). | |
| limit | No | Maximum rows to return (default 50 for observations, 25 for catalog queries). | |
| start | No | Inclusive lower-bound ISO date (YYYY-MM-DD). | |
| series_ids | Yes | 2 to 5 FRED series IDs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is low. The description adds that it returns observations for each series, a useful return-shape hint, but says nothing about truncation, alignment of differing frequencies, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core action front-loaded and no filler. The use-case sentence is slightly illustrative rather than essential, but overall the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full schema coverage and annotation-provided safety profile, the description covers the action, scope and return hint. No output schema exists, so the brief return note is sufficient, though alignment/pagination behavior is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so series_ids, start, end and limit are all documented in the schema. The description restates the 2-to-5 bound and shared date range but adds no new parameter semantics such as frequency alignment or default range behavior, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (compare FRED series) and quantifies the scope (2 to 5 series, same date range). This clearly differentiates it from the single-series siblings like fred_observations and fred_series_info, though it never names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides motivating use cases ('ratio analysis (e.g. compare 10Y vs 2Y yield) or cross-series correlation'), which helps an agent recognize the right scenario. However, it gives no explicit when-not-to-use guidance and doesn't point to the singleton fred_series_info/fred_observations tools for the non-comparison case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_observationsARead-onlyIdempotentInspect
Get time-series observations for a FRED series ID. Workhorse query for any economic indicator. Optional date range, units transformation (lin, chg, pch, log, etc.), and frequency aggregation (m, q, a).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound ISO date (YYYY-MM-DD). | |
| limit | No | Maximum rows to return (default 50 for observations, 25 for catalog queries). | |
| start | No | Inclusive lower-bound ISO date (YYYY-MM-DD). | |
| units | No | Units transformation: 'lin' (default), 'chg' (change), 'ch1' (change YoY), 'pch' (% change), 'pc1' (% change YoY), 'log', etc. | |
| frequency | No | Aggregate to a different frequency: 'd', 'w', 'bw', 'm', 'q', 'sa', 'a'. | |
| series_id | Yes | FRED series ID (e.g. 'GDP', 'UNRATE'). See https://fred.stlouisfed.org/ for the catalog. | |
| aggregation_method | No | Aggregation method when changing frequency: 'avg', 'sum', or 'eop' (end of period). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the bar is lower. The description adds no further behavioral context — no pagination behavior, default row behavior, rate limits, or what happens with invalid series IDs — but it doesn't contradict annotations either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary purpose and followed by the optional parameters. Efficient overall, though trailing 'etc.' and bare code abbreviations leave some ambiguity that a slightly more explicit phrasing would remove.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only series-observation query with a fully documented schema and no output schema, the description gives enough to call the tool correctly (identifier required, optional time/transform/aggregation controls). Return-value format is not described, but that is a minor gap for a well-known time-series shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all seven parameters (start/end, limit, units, frequency, aggregation_method, series_id). The description restates the units codes ('lin, chg, pch, log') and frequency codes ('m, q, a'), which the schema already provides in greater detail, adding no meaning beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Get') plus resource ('time-series observations for a FRED series ID') and a scope statement ('workhorse query for any economic indicator'). It is clear what it returns, but it does not distinguish itself from FRED siblings like fred_series_info, fred_search, or fred_quick_indicator, which share the FRED series-ID domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'workhorse query for any economic indicator' implies broad usage for pulling observations, but the description never states when to prefer this over fred_search (discovery) or fred_series_info (metadata). Usage is only implied, with no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_quick_indicatorBRead-onlyIdempotentInspect
Quick-access wrapper for the most-queried FRED indicators by friendly name. Avoids needing to memorize FRED series IDs. Valid indicators: unemployment_rate, fed_funds, fed_funds_target, cpi, core_cpi, gdp, real_gdp, ten_year_yield, two_year_yield, thirty_year_yield, thirty_year_mortgage, m2, industrial_production, retail_sales, nonfarm_payrolls, housing_starts, case_shiller, vix, wti, brent, natural_gas_henry_hub, dollar_index, consumer_sentiment, initial_claims, pce_inflation, recession_indicator.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive upper-bound ISO date (YYYY-MM-DD). | |
| limit | No | Maximum rows to return (default 50 for observations, 25 for catalog queries). | |
| start | No | Inclusive lower-bound ISO date (YYYY-MM-DD). | |
| indicator | Yes | Friendly indicator name. See description for valid options. |
TDQS
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 fully covered. The description adds only the wrapper framing and the indicator vocabulary, without disclosing return shape, pagination, or data-vintage behavior that a FRED consumer would care about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded, but the second is a 26-item enumeration that duplicates the schema's indicator enum verbatim, consuming most of the description's length without adding information. That bulk fails the 'every sentence earns its place' test.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full schema coverage and annotations, the definition is adequate but stops short of complete: it does not say what a response looks like (dates plus values), how the default limit behaves, or which sibling to use for arbitrary series. No output schema exists, so return-value framing was the description's to supply and is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – start, end, and limit are each documented in the schema, and the indicator enum carries its own description. The description's re-listing of the 26 enum values adds no semantics beyond what the schema already declares, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (FRED indicators) and access mode (quick-access wrapper by friendly name), and implicitly distinguishes itself from series-ID-based siblings by noting it 'avoids needing to memorize FRED series IDs.' It never names a sibling like fred_observations or fred_search explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: reach for this when you want a common macro indicator by friendly name rather than a raw series ID. There is no explicit 'use X instead when Y' guidance, and nothing tells the agent when fred_observations, fred_search, or fred_compare would be the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_releasesARead-onlyIdempotentInspect
Browse FRED economic releases (e.g. Employment Situation, CPI, GDP). With upcoming_dates=true, returns the upcoming release calendar instead. Useful for knowing when fresh data is expected.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 50 for observations, 25 for catalog queries). | |
| release_id | No | Optional. If provided, return only that release's metadata. | |
| upcoming_dates | No | If true, return upcoming release date schedule instead of release metadata. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds real value beyond that by disclosing the mode-switching behavior: with upcoming_dates=true the return payload changes from release metadata to a release calendar, which is not evident from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the primary browse purpose is front-loaded, followed by the conditional mode toggle and the use case. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, all-optional-parameter catalog tool with rich annotations and a fully documented schema, this is close to sufficient. It conveys both return modes, though it does not describe what a release record contains, which an agent might want given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, release_id, and upcoming_dates are already fully documented in the schema, and the baseline is 3. The description only restates the upcoming_dates behavior and adds nothing about release_id filtering or limit defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Browse FRED economic releases') and grounds it with concrete examples (Employment Situation, CPI, GDP). It does not explicitly differentiate itself from siblings like fred_observations or fred_search, so an agent must infer the boundary from the resource noun alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage with 'Useful for knowing when fresh data is expected,' which hints at the calendar-discovery use case, and the upcoming_dates toggle is explained. However, it never says when to pick this over fred_search, fred_series_info, or fred_observations, and gives no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_searchARead-onlyIdempotentInspect
Full-text search across FRED's 800,000+ economic series. Returns matching series IDs and titles ranked by popularity. Use when you don't know the exact series ID.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 50 for observations, 25 for catalog queries). | |
| tag_names | No | Optional semicolon-delimited tag filter (e.g. 'usa;monthly'). | |
| search_text | Yes | Free-text search query (e.g. 'unemployment Texas', 'natural gas price', 'corporate profit'). | |
| search_type | No | 'full_text' (default) or 'series_id'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, openWorld, non-destructive), lowering the bar. The description adds concrete behavioral context: ranking is by popularity, coverage is 800k+ series. It omits pagination detail, which the limit param partly covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses with the resource scope and routing condition front-loaded. No filler. Slightly terse given the tool's discovery role, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search/discovery tool with full schema coverage and rich annotations, the description covers purpose, scope, ranking, and when to use it. Missing only edge-case context (e.g., that results lack values, which other fred_ tools supply), but sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (search_text, search_type, tag_names, limit). The description adds no parameter-level detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Full-text search across FRED's 800,000+ economic series') and clarifies the return (matching series IDs and titles). This distinguishes it from siblings like fred_series_info, fred_observations, and other fred_* tools that operate on known series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when you don't know the exact series ID' gives a clear condition for selecting this discovery tool over the ID-based siblings. It doesn't name specific alternatives (e.g., fred_category_series) or state exclusions, but the routing intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fred_series_infoARead-onlyIdempotentInspect
Get metadata for a FRED economic data series by ID. Returns title, units, frequency, seasonal adjustment, observation range, and notes. Useful for verifying a series exists and understanding its measurement before pulling observations.
| Name | Required | Description | Default |
|---|---|---|---|
| series_id | Yes | FRED series ID (e.g. 'GDP', 'UNRATE', 'CPIAUCSL', 'DGS10'). |
TDQS
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 well covered. The description adds that the tool returns metadata and can verify existence, but it does not disclose error behavior for nonexistent series, rate limits, or other operational quirks. With strong annotation coverage, a mid 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The first sentence states the action and the return payload; the second provides the use case. Everything 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.
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 lookup tool with rich annotations, the description is complete: it tells the agent what it does, what it returns, and when to use it. No output schema exists, but the description lists the return fields, so an agent can judge whether this tool satisfies the user's request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage: the only parameter, series_id, is described with helpful examples ('GDP', 'UNRATE', 'CPIAUCSL', 'DGS10'). The description adds little beyond confirming the ID identifies a FRED series, which the schema already conveys. Baseline 3 is correct because the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get metadata') with a specific resource ('FRED economic data series by ID') and enumerates precisely what is returned: title, units, frequency, seasonal adjustment, observation range, and notes. It clearly distinguishes this from pulling observations or searching for series, and the sibling context reinforces that fred_series_info is for metadata, not observations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is useful 'for verifying a series exists and understanding its measurement before pulling observations,' which gives clear usage context relative to fred_observations. It does not explicitly name alternative tools or state when not to use it, but the 'by ID' phrasing implies the series ID should already be known, and the connection to pulling observations is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocode_addressARead-onlyIdempotentInspect
Geocode a US street address with the Census Geocoder (keyless). Accepts a one-line address OR structured street/city/state/zip parts. Returns the normalized matched address, longitude/latitude, and Census geographies (state, county, tract, block, congressional district) with GEOIDs. No match returns an explicit not-found message.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ZIP code for a structured query. | |
| city | No | City for a structured query. | |
| state | No | Two-letter state code for a structured query (e.g. 'DC'). | |
| street | No | Street line for a structured query (e.g. '4600 Silver Hill Rd'). | |
| address | No | One-line address, e.g. '4600 Silver Hill Rd, Washington, DC 20233'. Provide this OR the structured parts. |
TDQS
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 valuable behavioral context beyond annotations: it is keyless, returns the normalized matched address, coordinates, Census geographies with GEOIDs, and explicitly reports an unmatched address with a not-found message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences front-load the core purpose, then cover input modes and outputs. Every sentence adds necessary selection or invocation information with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the key return components including normalized address, coordinates, Census geographies, GEOIDs, and not-found behavior. For a five-parameter tool with zero required fields and no output schema, this is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% parameter coverage with clear examples. The description adds useful relational semantics by stating that callers can pass either a one-line address OR structured street/city/state/zip parts, clarifying the intended parameter grouping beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Geocode a US street address with the Census Geocoder (keyless).' It clearly distinguishes this tool from sibling tools like geocode_coordinates and geocode_batch by scope (street address) and single-address mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: US-only addresses, keyless Census Geocoder, and two accepted input modes (one-line vs. structured parts). It does not explicitly name alternatives or state when not to use the tool, but the 'street address' framing implies the boundary versus coordinate/batch geocoding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocode_batchARead-onlyIdempotentInspect
Geocode up to 10 one-line US addresses in a single call. Returns one block per input address (matched address, coordinates, and county/tract GEOIDs). For large jobs the Census batch file API supports up to 10k rows; this tool covers small ad-hoc batches.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of one-line address strings. Max 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real value beyond that: it discloses the return shape (one block per input address containing matched address, coordinates, and county/tract GEOIDs) and the 10-item ceiling, which tells the agent how failures/successes map back to inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what the tool does and how many rows it accepts, then the return contract, then the scale boundary. No filler and nothing repeated from the annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description supplies the return structure itself, and the annotations cover safety and idempotency. For a one-parameter batch tool, an agent has everything needed to call it correctly and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and a single parameter, the baseline is 3; the description adds two constraints not spelled out in the schema's short text — that addresses must be US and formatted as one-line strings — plus the practical batch-size intent behind maxItems: 10.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (geocode), a resource (US addresses), and a hard scope (up to 10, one-line, in a single call). The final sentence contrasts small ad-hoc batches against the 10k-row Census batch file API, which lets an agent separate this tool from the single-address geocode siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (small ad-hoc batches) and when not to (large jobs, which belong to the Census batch file API). The only gap is that the named alternative is an external API rather than the sibling MCP tools geocode_address / geocode_coordinates, so it doesn't route the agent among invocable tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocode_coordinatesARead-onlyIdempotentInspect
Reverse-geocode a longitude/latitude pair with the Census Geocoder (keyless). Returns the Census geographies (state, county, tract, block, congressional district) containing the point, with GEOIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude (y), e.g. 38.84 | |
| longitude | Yes | Longitude (x), e.g. -76.92 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds meaningful context: calls are keyless, uses the Census Geocoder, and returns a specific set of geographies. It does not detail rate limits or error behavior, but the annotations carry the safety profile and the description adds useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence that front-loads the operation and includes only high-value details: reverse geocoding, coordinate inputs, source, keyless access, and return values. There is no redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only tool, this description is complete: it explains the inputs, source, authentication requirement (none), and expected output. The absence of an output schema is mitigated by the explicit statement that Census geographies and GEOIDs are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions fully cover both parameters with examples (latitude and longitude). The description reinforces that the tool expects a coordinate pair but adds no further meaning beyond the schema, which already names and explains both fields. A baseline of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Reverse-geocode'), a specific resource ('a longitude/latitude pair'), and the data source ('Census Geocoder'). It also names the return values (Census geographies with GEOIDs), distinguishing it from forward-geocoding tools like geocode_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this when you have coordinates and need the containing Census geographies. It does not explicitly name alternatives or state when not to use it, but the 'Reverse-geocode' phrasing and coordinate input provide enough context to differentiate it from address-based or batch geocoding siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_repoARead-onlyIdempotentInspect
Public GitHub repository stats: description, stars, forks, open issues, primary language, license, last push date, and archived status. Useful for assessing the health and maintenance of an open-source dependency. Keyless (60 req/hr unauthenticated).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as 'owner/repo', e.g. 'facebook/react'. |
TDQS
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 a useful behavioral constraint beyond annotations: 'Keyless (60 req/hr unauthenticated)', which helps agents plan around 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the return fields are listed first, then the use case, then the rate limit. Every clause adds information needed for selecting and invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only stats tool, the description is complete: it lists the output fields, states the intended use case, and discloses the rate limit. The annotation profile covers safety, and the schema covers parameter syntax.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single 'repo' parameter is clearly documented with format and example. The description reinforces that the tool operates on a GitHub repository but does not need to add more because the schema already carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (public GitHub repository) and the exact type of data returned: description, stars, forks, open issues, primary language, license, last push date, and archived status. This is specific enough to distinguish it from sibling package and repository tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: 'useful for assessing the health and maintenance of an open-source dependency.' This tells an agent when to select it, 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.
govinfo_legislation_committee_pathARead-onlyIdempotentInspect
Return the complete committee and subcommittee path published in GovInfo Bill Status XML for one bill, preserving stable committee system codes, parent links, chambers, committee types, and dated activities. Use this for 'which committees handled H.R. 2?', 'show subcommittee referrals for this bill', or 'build a committee-routing audit trail'. Coverage is 118th-Congress HR/S only; absence means the captured XML supplied no committee record.
| Name | Required | Description | Default |
|---|---|---|---|
| bill_type | Yes | Hosted measure type: HR for a House bill or S for a Senate bill. Resolutions are outside this v1 snapshot. | |
| bill_number | Yes | Numeric bill number within the fixed 118th Congress. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/idempotentHint/openWorldHint already declared, the bar is lower, yet the description adds real operational context: it is a static snapshot scoped to 118th-Congress HR/S, descending committee->subcommittee hierarchy is preserved with parent links and dated activities, and an empty result is a data-absence signal rather than an error. It does not discuss rate limits or auth, but for a read-only provenance tool the scoping and hierarchy semantics are the material traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and preserved fields, then the when-to-use triggers, then the coverage caveat. Three sentences, all load-bearing. Slightly dense with enumerated field lists, but nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema, read-only provenance tool, the description covers the return shape (full hierarchy path), the identity keys (stable committee codes, parent links, chambers, types), temporal data (dated activities), and the snapshot boundary plus absence semantics. An agent has everything needed to invoke and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents the HR/S enum, the 118th-Congress bill_number range, and response_format. The description adds no parameter-level syntax beyond what the schema provides, and the 3-param / 100%-coverage rule sets the baseline at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Return the complete committee and subcommittee path published in GovInfo Bill Status XML for one bill.' It enumerates the preserved fields (stable committee codes, parent links, chambers, types, dated activities), which is far more precise than any sibling (govinfo_legislation_relationships, govinfo_legislation_evidence_pack).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three explicit use-case phrasings ('which committees handled H.R. 2?', 'show subcommittee referrals for this bill', 'build a committee-routing audit trail') and boundaries: 'Coverage is 118th-Congress HR/S only; absence means the captured XML supplied no committee record.' This tells the agent both when to use it and what an empty result means.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govinfo_legislation_evidence_packARead-onlyIdempotentInspect
Combine a hosted bill's identity, sponsor/cosponsor aggregates, law citations, policy subjects, complete committee path, complete text-version lineage, bounded recent actions, related-measure summary, official URLs, per-record XML hash, and snapshot provenance. Use this for 'build an evidence pack for H.R. 2670', 'document the source trail for S. 1', or 'summarize what the official status record proves before due diligence'. Coverage is the complete 118th-Congress HR/S slice only; recent actions default to 15 and relationships to 20 with explicit stored totals and truncation flags.
| Name | Required | Description | Default |
|---|---|---|---|
| bill_type | Yes | Hosted measure type: HR for a House bill or S for a Senate bill. Resolutions are outside this v1 snapshot. | |
| bill_number | Yes | Numeric bill number within the fixed 118th Congress. | |
| action_limit | No | Maximum most-recent actions in the pack. Default 15; stored total is always returned. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the lower bar applies, yet the description still adds real behavior: the 118th-Congress HR/S-only coverage limit, default limits of 15 actions and 20 relationships, and that explicit stored totals plus truncation flags are returned. It does not mention auth requirements 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two densely packed sentences with the aggregated payload up front and the coverage/defaults caveats second; almost every clause carries information. The long clause list in sentence one is heavy but not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of enumerating the returned fields (identity, aggregates, citations, subjects, lineage, actions, related measures, URLs, per-record hash, provenance), which is exactly what an agent needs to judge fitness. Coverage limits and truncation semantics are stated; only permission/auth and error behavior are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents bill_type, bill_number, action_limit, and response_format, making 3 the baseline. The description restates action_limit's default of 15 and adds that stored totals are always returned, but it also mentions a 'relationships to 20' bound that has no corresponding schema parameter, which could mislead slightly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (build an evidence pack for a hosted bill) and enumerates exactly what the pack aggregates: identity, sponsor/cosponsor aggregates, citations, subjects, committee path, version lineage, actions, related measures, URLs, hashes, and provenance. This composition distinguishes it from siblings like govinfo_legislation_committee_path or govinfo_legislation_version_lineage, which return only one slice each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrases ('build an evidence pack for H.R. 2670', 'document the source trail for S. 1') and states the applicability boundary that coverage is the complete 118th-Congress HR/S slice only. It does not explicitly say when to prefer a narrower sibling tool over this pack, 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.
govinfo_legislation_relationshipsARead-onlyIdempotentInspect
Return a paginated related-measure map for one bill from official GovInfo Bill Status XML, including companion, identical, related, and procedurally related measures, who identified each relationship, and the related measure's latest published action. Use this for 'find the Senate companion to this House bill', 'which rule resolution governed this bill?', or 'map CRS-identified related measures'. Coverage starts from 118th-Congress HR/S bills; related targets may be resolution types that are not otherwise hosted as primary records.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum relationship records. Default 25. | |
| offset | No | Relationship records to skip. Default 0. | |
| bill_type | Yes | Hosted measure type: HR for a House bill or S for a Senate bill. Resolutions are outside this v1 snapshot. | |
| bill_number | Yes | Numeric bill number within the fixed 118th Congress. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: the data source (GovInfo Bill Status XML), pagination, and an explicit coverage constraint ('coverage starts from 118th-Congress HR/S bills; related targets may be resolution types that are not otherwise hosted as primary records').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and payload contents are front-loaded in the first sentence, followed by use cases and a coverage caveat. It is dense but every clause carries information; only the enumeration of relationship types borders on verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the fields each relationship record returns (measures, identifier, latest action), and it discloses the congress/measure-type coverage boundary. Little is missing for correct invocation, though return shape details like ordering are not specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit, offset, bill_type, bill_number, and response_format, including enum constraints. The description does not add syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return a paginated related-measure map for one bill') and enumerates exactly what the map contains: companion, identical, related, and procedurally related measures, who identified each, and the target's latest action. This clearly separates it from sibling tools like govinfo_legislation_search, _committee_path, and _version_lineage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering scenarios ('find the Senate companion to this House bill', 'which rule resolution governed this bill?', 'map CRS-identified related measures') that tell the agent exactly when this tool is the right choice. It does not explicitly name sibling alternatives or exclusions, 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.
govinfo_legislation_searchARead-onlyIdempotentInspect
Search LiveDataLink's self-hosted official GovInfo Bill Status snapshot across bill number/title, all published titles, sponsor, policy area, legislative subjects, and committee names, with optional enacted and multi-version filters. Returns stable bill identifiers, sponsor/status facts, pagination, source XML hashes, and provenance. Use this for 'find 118th Congress bills about aviation safety', 'which border bills became law?', or 'bills assigned to the Finance Committee with multiple text versions'. Coverage is complete for HR and S in the 118th Congress only; resolutions and other Congresses are excluded. For Congress.gov's live/current API view, use the existing Congress tools instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum bills. Default 20. | |
| query | Yes | Bill number/title phrase, sponsor name, policy area, subject, or committee phrase. | |
| offset | No | Bills to skip. Default 0. | |
| bill_type | No | Hosted measure type: HR for a House bill or S for a Senate bill. Resolutions are outside this v1 snapshot. | |
| policy_area | No | Optional exact policy-area label, case-insensitive. | |
| enacted_only | No | When true, require at least one law citation in the captured Bill Status XML. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| multiple_text_versions_only | No | When true, require at least two published GovInfo text-version links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, so safety is covered. The description adds real context beyond them: the dataset is a fixed snapshot (not live), coverage is limited to HR and S in the 118th Congress, and returns include source XML hashes and provenance. Auth/rate-limit behavior is not mentioned, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what it searches, then returns, then examples, then scope limits, then the alternative. Dense but every sentence carries distinct information; the field enumeration in sentence one is slightly long but justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 fully-documented params, no output schema, and a rich sibling set, the description covers search surface, return contents, coverage boundaries, and routing to alternatives. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself documents each parameter with defaults and enum meanings, so the baseline is 3. The description's field list (all published titles, committee names) and its mapping of 'enacted' and 'multi-version' filters to the boolean params adds only marginal meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and a precise resource (LiveDataLink's self-hosted GovInfo Bill Status snapshot), enumerating the searchable fields. It explicitly distinguishes itself from the sibling congress_* tools by contrasting the static snapshot against Congress.gov's live API view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides three concrete triggering examples ('118th Congress bills about aviation safety', 'border bills became law', 'bills assigned to Finance Committee with multiple versions') plus explicit exclusions (resolutions and other Congresses excluded) and a named alternative for the live view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govinfo_legislation_version_lineageARead-onlyIdempotentInspect
Return every published GovInfo text-version link for one hosted bill, including version type/code, date, immutable package identifier, package page, and official XML URL. Use this for 'show the introduced, reported, engrossed, enrolled, and law versions of H.R. 2670', 'what version codes exist for S. 1?', or to assemble a reproducible legislative-text lineage. This is version metadata, not a text diff. Coverage is 118th-Congress HR/S only.
| Name | Required | Description | Default |
|---|---|---|---|
| bill_type | Yes | Hosted measure type: HR for a House bill or S for a Senate bill. Resolutions are outside this v1 snapshot. | |
| bill_number | Yes | Numeric bill number within the fixed 118th Congress. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds genuine behavioral context the annotations don't: the hard scope limit '118th-Congress HR/S only,' that package identifiers are immutable, and that this is metadata rather than diff content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the return payload, followed by use cases and a scope caveat. Three quoted example phrasings are slightly redundant but each clarifies a distinct trigger, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return shape, and it does: version type/code, date, immutable package identifier, package page, and official XML URL. Combined with the explicit coverage boundary, an agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so bill_type, bill_number, and response_format are already documented in the schema, including the enum semantics and the 'resolutions outside this v1 snapshot' note. The description adds no parameter-level detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Return every published GovInfo text-version link for one hosted bill,' and enumerates exactly what is returned (version type/code, date, package identifier, page, XML URL). The closing 'version metadata, not a text diff' cleanly separates it from text-diff tooling an agent might otherwise pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete usage examples ('show the introduced, reported, engrossed, enrolled, and law versions of H.R. 2670', 'what version codes exist for S. 1?') make the trigger condition explicit, and the coverage note shapes expectations. It stops short of naming a sibling alternative (e.g. govinfo_legislation_relationships) for the case where the agent wants relationships rather than lineage, so it isn't fully exclusive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grants_get_opportunityARead-onlyIdempotentInspect
Fetch full detail for a Grants.gov opportunity by its numeric opportunity id (the 'id' field from grants_search, e.g. '334326'). Returns description, eligibility, funding (ceiling/floor/estimated), key dates, CFDA numbers and the agency contact.
| Name | Required | Description | Default |
|---|---|---|---|
| opportunityId | Yes | Numeric opportunity id from a grants_search result (e.g. '334326'). |
TDQS
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 meaningful return-value context by listing the kinds of data returned (description, eligibility, funding, dates, CFDA numbers, agency contact), which is useful absent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core action, identifier source, and return contents are all front-loaded, making it quick for an agent to parse and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with no output schema, the description covers the input provenance and the expected return fields. It is sufficient for correct invocation; a minor gap is that it does not describe behavior when the id is not found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already explains that opportunityId is a numeric opportunity id from grants_search with an example. The tool description reinforces this but does not add substantial new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fetch full detail'), a specific resource ('Grants.gov opportunity'), and a precise identifier ('numeric opportunity id'). It also ties the id to grants_search, which distinguishes it from the main sibling tool in this domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates that this tool is for fetching details after obtaining an opportunity id from grants_search. It does not explicitly say 'use grants_search when you lack an id', but the dependency is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grants_searchARead-onlyIdempotentInspect
Search federal funding opportunities on Grants.gov (keyless). Filter by keyword, opportunity status (forecasted/posted/closed/archived), agency, funding category and eligibility. Returns opportunity number, title, agency, status, open/close dates and CFDA numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | Max results (default 25, max 100). | |
| keyword | No | Free-text keyword (e.g. 'clean energy', 'rural health'). | |
| agencies | No | Agency code filter (e.g. 'NSF', 'HHS'). Pipe-separate multiples. | |
| oppStatuses | No | Pipe-separated statuses. Default 'forecasted|posted'. Options: forecasted, posted, closed, archived. | |
| eligibilities | No | Applicant-eligibility code filter (e.g. '25' state governments, '99' unrestricted). Pipe-separate multiples. | |
| fundingCategories | No | Funding category code filter (e.g. 'ENV', 'ED'). Pipe-separate multiples. | |
| fundingInstruments | No | Funding-instrument code filter (e.g. 'G' grant, 'CA' cooperative agreement). Pipe-separate multiples. |
TDQS
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 useful behavioral context beyond that: it notes the tool is 'keyless' (no auth required) and specifies the return fields (opportunity number, title, agency, status, dates, CFDA). It does not mention rate limits or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. Purpose and keyless note are front-loaded, followed by filters and return fields. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully explains the return fields. Annotations and schema cover safety and parameters. It is complete for calling the tool, though it omits mention of the detail-retrieval sibling grants_get_opportunity and any pagination guidance beyond the schema's rows parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description only lists some filter categories (keyword, status, agency, funding category, eligibility) without adding syntax or format details 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('federal funding opportunities on Grants.gov'), and lists the filters and return fields. However, it does not explicitly name or differentiate from the sibling tool grants_get_opportunity, so it stops short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implied usage through the verb and domain context ('Search federal funding opportunities'), and notes the tool is 'keyless', which is a prerequisite. But it never states when to use this tool versus alternatives like grants_get_opportunity, nor does it give any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsa_per_diem_lookupARead-onlyIdempotentInspect
Look up official GSA lodging and meals-and-incidental (M&IE) reimbursement rates for a federal fiscal year and CONUS destination. Provide either a five-digit ZIP, or a two-letter state with an optional city. State-only results are paginated and capped at 25 locations per call. Returns all 12 monthly lodging limits, the daily M&IE limit, locality/county coverage, and official source metadata. GSA fiscal years run October 1 through September 30; Alaska, Hawaii, territories, and foreign locations use other federal rate sources.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | Exactly five ZIP digits, preserving leading zeroes. Do not combine with state or city. | |
| city | No | Optional city within state, e.g. 'O'Fallon'. GSA punctuation quirks are normalized safely. | |
| limit | No | Maximum locations returned; default 10 and hard maximum 25. | |
| state | No | Two-letter code for a contiguous state or DC. Required with city; omit when using zip. | |
| offset | No | Locations to skip for state-result pagination; default 0. | |
| fiscal_year | Yes | Four-digit federal fiscal year. GSA generally publishes the current three fiscal years. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: state-only results are paginated and capped at 25 per call, and the fiscal-year window (Oct 1 – Sep 30) is disclosed. Return-shape detail is also present. Rate limits and cost hints are absent, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, all front-loaded: purpose and scope first, then input selection, then pagination, then temporal/geographic caveats. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description lists what is returned (12 monthly lodging limits, daily M&IE, locality/county coverage, source metadata), and covers pagination and scope limits. The main gap is the unmentioned relationship to gsa_per_diem_mie_breakdown for agents wanting a breakdown view.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema carries the per-field syntax. The description adds meaning beyond the schema by defining the fiscal-year boundary and the CONUS-only geographic constraint, which the schema fields alone do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Look up official GSA lodging and M&IE reimbursement rates") and pins the scope to federal fiscal year + CONUS destination. An agent can tell it apart from most lookup siblings, but the description never mentions the related gsa_per_diem_mie_breakdown tool, so it doesn't fully differentiate within its own family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete input selection rules ("Provide either a five-digit ZIP, or a two-letter state with an optional city") and clear scope exclusions (Alaska, Hawaii, territories, foreign locations use other sources). It stops short of naming an alternative tool, so it lacks the explicit when-to-use-this-vs-that routing that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsa_per_diem_mie_breakdownARead-onlyIdempotentInspect
List the official CONUS meals-and-incidental expense (M&IE) tiers for a federal fiscal year, including breakfast, lunch, dinner, incidental, and first/last travel-day amounts. Use gsa_per_diem_lookup to identify the applicable total for a destination.
| Name | Required | Description | Default |
|---|---|---|---|
| fiscal_year | Yes | Four-digit federal fiscal year. GSA generally publishes the current three fiscal years. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/destructive=false, so safety is covered. The description adds meaningful scope beyond that: it is CONUS-only (excluding OCONUS/foreign), and it discloses the returned components (breakfast, lunch, dinner, incidental, first/last travel-day amounts), which is valuable given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, front-loading the resource and scope before the sibling routing instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with annotations covering the safety profile, the description supplies scope (CONUS), returned fields, and routing to the companion tool. Nothing critical is missing, though it could note OCONUS handling more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single fiscal_year parameter is already documented in the schema, including its range and publishing window. The description only restates 'federal fiscal year' without adding format or edge-case detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a well-defined resource (CONUS M&IE tiers for a federal fiscal year), then enumerates the exact amounts returned. It clearly distinguishes itself from the gsa_per_diem_lookup sibling by naming it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence routes the agent: use gsa_per_diem_lookup to find the applicable total for a destination, implying this tool is for inspecting the tier structure itself. This is a clear contrast with an alternative, though it stops short of an explicit when-not condition for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hud_fha_lender_exposureARead-onlyIdempotentInspect
Aggregate confirmed HUD FHA multifamily mortgage maturities by holder, state, or maturity month for an exact date window. Returns mortgage count, unpaid principal balance, and units with the monthly HUD snapshot provenance. Use this for 'which FHA lenders have maturities in 2027?' or 'FHA maturity exposure by state'. It does not estimate default risk, ownership, borrower intent, or refinancing likelihood.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| offset | No | ||
| end_date | Yes | Inclusive YYYY-MM-DD window end. | |
| group_by | No | ||
| start_date | Yes | Inclusive YYYY-MM-DD window start. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description still adds real context beyond them: it declares the returned measures (mortgage count, UPB, units) and the monthly HUD snapshot provenance, plus a clear negative-capability list. It does not mention pagination or the limit/offset ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action, followed by return shape, usage triggers, and exclusions. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden (count, UPB, units, provenance) and marks the read-only scope. Remaining gaps are the undocumented pagination/filter parameters, which leaves the 7-param surface only partially covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 43%, so the description should compensate but only partly does. It surfaces the group_by dimensions (holder/state/month) and the exact date window, but says nothing about the state filter, limit, offset, or response_format parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Aggregate confirmed HUD FHA multifamily mortgage maturities,' and scopes it to by-holder/state/month over a date window. It implicitly contrasts with the sibling hud_fha_maturity_search via the 'Aggregate' framing, but never names that sibling, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger phrases ('which FHA lenders have maturities in 2027?', 'FHA maturity exposure by state') and an explicit exclusion list (no default risk, ownership, borrower intent, refinancing likelihood). It stops short of naming the alternative tool (hud_fha_maturity_search) for raw per-loan lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hud_fha_maturity_searchARead-onlyIdempotentInspect
Find official HUD active multifamily FHA mortgages maturing in an exact window, with optional state, holder-name, unpaid-balance, and HUD TC/LIHTC filters. Returns property, project number, maturity, balance, units, lender, rate, and source provenance from HUD's monthly FHA Subsidiary Ledger extract. Use this for 'FHA loans maturing in Texas next year' or 'multifamily debt maturity schedule'. A maturity is a filed source field, not refinance intent or a contact lead list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| lender | No | ||
| offset | No | ||
| end_date | Yes | Inclusive YYYY-MM-DD window end. | |
| lihtc_only | No | ||
| start_date | Yes | Inclusive YYYY-MM-DD window start. | |
| min_balance | No | ||
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the bar is lower; the description still adds real context by naming the underlying source (HUD's monthly FHA Subsidiary Ledger extract) and clarifying that maturity is a filed source field, not inferred refinance intent. It omits pagination behavior (limit capped at 100, offset up to 10000) and any freshness/latency note about the monthly extract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then output, then semantics. The enumerated return-field list is slightly long but justified because no output schema exists to carry that information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter read tool with no output schema, the description covers the source, the filtering model, the returned fields, and the semantic limits of the data, while annotations handle the safety profile. Only pagination details remain undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it largely does: it names the optional filter dimensions (state, holder/lender name, unpaid balance, HUD TC/LIHTC) that map to state, lender, min_balance, and lihtc_only. It does not explain matching semantics (exact vs partial lender name) or pagination parameters, leaving limit/offset documented nowhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find'), a precise resource ('official HUD active multifamily FHA mortgages'), and a scope ('maturing in an exact window') plus the filter dimensions. Negative scoping ('not refinance intent or a contact lead list') separates it from lead-gen/refi-oriented siblings such as affordable_housing_refinance_evidence_pack.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete trigger examples ('FHA loans maturing in Texas next year', 'multifamily debt maturity schedule') and one explicit exclusion about what a maturity record does not represent. It stops short of naming an alternative sibling tool or stating when to prefer hud_fha_lender_exposure or hud_lihtc_year15_radar instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hud_lihtc_year15_radarARead-onlyIdempotentInspect
Find HUD LIHTC properties whose placed-in-service year reaches the federal 15-year reference date in an exact window. Returns source project fields, unit counts, and a clearly labeled screening date. Use this for 'LIHTC projects reaching year 15 in 2027'. Year 15 is not proof that affordability restrictions expire; extended-use rules vary by state and property documents, so this is not legal, compliance, or investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| offset | No | ||
| end_date | Yes | Inclusive YYYY-MM-DD window end. | |
| min_units | No | ||
| start_date | Yes | Inclusive YYYY-MM-DD window start. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 genuine value beyond that: it discloses the return shape (source project fields, unit counts, a labeled screening date) and a critical interpretive caveat that year-15 status is not legal/compliance proof.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core operation before the use case and disclaimer. The disclaimer earns its place given the legal/financial stakes, though it is slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description partially compensates by naming returned fields and the screening date. But with 7 parameters and low schema coverage, parameter behavior is under-specified, leaving the definition only marginally adequate for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43% across 7 parameters; the description mentions none of the filters (state, min_units, limit, offset, response_format), so it does not compensate for the documentation gap. An agent gets no guidance from the description on how parameters shape the query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: 'Find HUD LIHTC properties whose placed-in-service year reaches the federal 15-year reference date in an exact window.' An agent immediately knows what this tool returns and the exact computation it performs, which is a specialized operation rather than a generic property search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit use case ('LIHTC projects reaching year 15 in 2027') and clear boundaries on what the result does NOT mean ('Year 15 is not proof that affordability restrictions expire'). However, it names no alternative tool for related housing/refinance questions, so routing between 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.
hurricane_trackerARead-onlyIdempotentInspect
Currently-active hurricanes and tropical systems from NOAA NHC, with category, wind/pressure, current position, movement, and forecast cone link.
| Name | Required | Description | Default |
|---|---|---|---|
| basin | No | Optional basin filter: 'AL' (Atlantic), 'EP' (Eastern Pacific), 'CP' (Central Pacific). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this read-only, idempotent, and non-destructive, so the description only needs to add context beyond safety. It adds the authoritative source (NOAA NHC), the active-storm scope, and a useful summary of returned fields. It does not mention update frequency or empty-result behavior, but those are secondary given the simple 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence front-loads the key scope ('Currently-active') and packs source, data fields, and forecast link with no wasted words. It is easy to scan and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter read-only tool, the description covers the essential calling context: source, temporal scope, and return content. Since there is no output schema, the field list is valuable. It is slightly incomplete in not saying what happens when no storms are active, but annotations and schema make the tool straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional basin parameter is fully documented in the input schema, so the description does not need to repeat it. The description adds no basin-specific semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource — currently active hurricanes and tropical systems from NOAA NHC — and enumerates the included data: category, wind/pressure, position, movement, and forecast cone link. It is clearly distinguishable from generic weather tools, though it lacks an explicit action verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'currently-active' implies a temporal use case: this tool is for live storms rather than historical data. However, the description does not name alternatives such as nws_active_alerts or weather_current, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
influence_network_mapARead-onlyIdempotentInspect
One-call 'follow the money and influence' map for an organization, joined across three federal public-record streams: FEC (the org's connected political committees / PACs - its political-spending vehicles), the U.S. Senate Lobbying Disclosure Act (filings where the org is the client, the reported lobbying spend, the firms it hired, and the issue areas lobbied), and USAspending (federal contracts + grants the org RECEIVES, with award counts and top agencies). Returns a readable map of money flowing OUT to influence (lobbying + political committees) vs. money flowing IN from federal awards. Built for investigative journalism, govcon, and due-diligence research. Informational public-record synthesis, NOT a risk score (distinct from counterparty_risk_score). The FEC leg needs an api.data.gov key and is noted as skipped if unavailable; a source that fails is noted, not fatal.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Optional 4-digit lobbying filing year (e.g. '2024'); defaults to the most recent year with filings. | |
| state | No | Optional 2-letter state to scope the FEC committee search. | |
| company | No | Alias for organization. | |
| organization | Yes | Organization / company name (e.g. 'Lockheed Martin', 'Boeing'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, and non-destructive behavior. The description adds meaningful behavioral context beyond that: the FEC leg requires an api.data.gov key, unavailable sources are reported as skipped rather than fatal, and the result is a synthesized readable map rather than a raw dataset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: purpose, sources, output shape, use cases, differentiation from a sibling, and operational caveat. Every sentence earns its place and the most important scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-source tool with no output schema, the description does a good job explaining what is joined, what the map compares, and what happens when a source is unavailable. It could be slightly more explicit about the output field structure and how the optional year/state parameters affect each data leg, but it is sufficient 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for all four parameters. The description reinforces the organization-level focus but does not add substantive parameter-level detail beyond what the schema documents, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: a one-call 'follow the money and influence' map for an organization. It names the three data streams, the outbound vs. inbound money distinction, and explicitly separates itself from counterparty_risk_score, making it easy to distinguish from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states intended use cases (investigative journalism, govcon, due-diligence research) and explicitly says it is not a risk score, naming counterparty_risk_score as the distinct alternative. It could be stronger with more explicit 'use this instead of raw FEC/lobbying/spending searches' guidance, 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.
ip_reputationARead-onlyIdempotentInspect
Risk profile for an IP address: geolocation and network (ASN/ISP/org) plus two abuse signals - whether it is a known Tor exit node, and whether it appears on the abuse.ch Feodo botnet command-and-control blocklist. For fraud, abuse, and security screening. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IPv4 or IPv6 address to screen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe, read-only, idempotent operation. The description adds meaningful behavioral context beyond that: exact data sources/signals included and the fact that no API key is required. This is more than minimal and helps the agent anticipate what the response will cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one dense, well-structured sentence that lists the key outputs and finishes with the supported use case and keyless note. Every clause earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with no output schema, the description is complete enough: it specifies the input, the returned data categories, the intended use, and authentication expectations. An agent can confidently select and invoke this tool with no missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'ip' is already described as 'IPv4 or IPv6 address to screen.' The description adds context about how the IP is used (risk screening) but does not add new parameter-level semantics beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as producing a risk profile for an IP address, enumerating the exact data categories: geolocation, network info, Tor exit node status, and Feodo botnet blocklist status. This distinguishes it from sibling lookup tools like rdap_ip by focusing on abuse-risk signals rather than raw registration data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the intended use case: 'For fraud, abuse, and security screening.' This gives clear context for when to select the tool, 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.
issuer_diligence_dossierARead-onlyIdempotentInspect
One-call NARRATIVE public-record diligence dossier for a public company / SEC issuer. Joins SEC EDGAR (registrant identity, CIK/ticker, recent filings and their form mix), federal courts via CourtListener (RECAP dockets whose name references the issuer), USAspending (federal contract awards, name-matched), and CPSC product-safety recalls into a readable brief with a short headline and four sections: Identity & SEC, Litigation, Federal business, and Product-safety. Every source degrades gracefully - a failing leg is noted, not fatal. This is a narrative synthesis, deliberately distinct from counterparty_risk_score (a 0-100 score) and entity_dossier (SEC+EPA+sanctions only). Informational public-record synthesis, not a background check or legal/financial advice.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional 2-letter state hint for disambiguation (currently informational). | |
| ticker | No | Optional stock ticker hint to pin the SEC EDGAR match (e.g. 'LMT'). | |
| company | Yes | Public company / SEC issuer name (e.g. 'Lockheed Martin', 'Pfizer'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly, openWorld, and idempotent annotations, the description discloses that every source degrades gracefully and a failing leg is noted but not fatal. It also clarifies that the output is a narrative synthesis with a headline and four named sections, which is useful behavioral context that the annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and audience, then uses compact clauses to list sources, output structure, degradation behavior, and sibling distinctions. Every clause earns its place; the length is justified by the tool's multi-source complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description still explains what the agent will receive: a readable brief with a headline and four named sections, plus graceful handling of source failures. The single required parameter is semantically complete, and the relationship to the closest sibling tools is explicit. Nothing critical for selecting or invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters already have schema descriptions, so the baseline is 3. The description adds meaningful matching semantics: RECAP dockets are matched by name reference and USAspending awards are name-matched, while the ticker/state hints act as disambiguation aids. This goes slightly beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific deliverable — a 'one-call NARRATIVE public-record diligence dossier' — and scopes it to public companies / SEC issuers. It enumerates the joined sources and output sections, and explicitly distinguishes itself from counterparty_risk_score and entity_dossier, so an agent can tell it apart from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is clear: public-record diligence for an SEC issuer. It explicitly contrasts the tool with counterparty_risk_score (a 0-100 score) and entity_dossier (SEC+EPA+sanctions only), which routes agents to the right alternative. It also adds an exclusion: it is not a background check or legal/financial advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iv_analyticsARead-onlyIdempotentInspect
Compute derived options-volatility analytics for a US ticker from LiveDataLink's historical volatility series (2019-2024): IV Rank (where current implied vol sits in its own range over the lookback window), IV Percentile (share of days with lower IV), Variance Risk Premium (implied minus realized vol), 52-week IV high/low, and 1-week/1-month IV momentum. Premium synthesis over the options-history store. Analytical aid, not investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Optional as-of date (YYYY-MM-DD); defaults to the latest available day. | |
| ticker | Yes | US stock ticker with listed options (e.g. 'AAPL', 'SPY'). | |
| lookback_days | No | Trailing window for rank/percentile (default 252 ~ 1 trading year). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower, but the description adds real context: the underlying source (LiveDataLink historical volatility series), the 2019-2024 coverage window, and the 'analytical aid, not investment advice' disclaimer. It does not cover rate limits or behavior on tickers lacking options, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, and the metric parentheticals each add discriminating value rather than filler. The single long sentence is dense but every clause earns its place; a minor readability cost keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned metrics, which is exactly what an agent needs. It also discloses the data source and coverage window; only edge-case behavior (missing options history, error cases) is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents ticker, as_of, and lookback_days including defaults and bounds. The description adds only light framing ('where current implied vol sits in its own range over the lookback window'), which is baseline-3 territory 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Compute') and resource ('derived options-volatility analytics') and enumerates the exact outputs (IV Rank, IV Percentile, VRP, 52-week high/low, momentum). This clearly distinguishes it from raw-data siblings like options_history_volhist or options_history_atm_iv.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Premium synthesis over the options-history store') but never states when to prefer this over sibling volatility tools or when it is inappropriate. An agent can infer intent but gets no explicit routing guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kev_status_checkARead-onlyIdempotentInspect
Check whether a CVE is in the CISA Known Exploited Vulnerabilities catalog. Returns date added, due date, ransomware association, and required action.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier. |
TDQS
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 value by disclosing the returned fields (date added, due date, ransomware association, required action), which goes beyond what annotations provide. It does not discuss edge cases like CVEs not found in the catalog, but this is acceptable given the simpler tool scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that starts with the tool's purpose and immediately lists the useful output fields. There is no filler, redundancy, or unnecessary repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup tool, the description covers the action, the target catalog, and the return value fields. It does not specify the response when a CVE is not in the catalog, but the absence of an output schema is partially compensated by listing return fields. Overall it is sufficiently complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes cve_id as a 'CVE identifier' with 100% coverage. The description does not add format guidance (e.g., CVE-YYYY-NNNNN), but the schema description is sufficient for the single parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check whether') and a specific resource ('CISA Known Exploited Vulnerabilities catalog'), and enumerates the exact output fields. This clearly distinguishes it from generic CVE tools like cve_lookup or cve_search_by_keyword 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: determining whether a CVE is in the CISA KEV catalog. It does not explicitly name alternatives or state when not to use the tool, but the narrowly scoped catalog reference makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kyb_aml_evidence_case_fileARead-onlyIdempotentInspect
Assemble a reusable KYB/AML evidence case file for one company. Combines canonical identity and join keys, GLEIF ownership-chain screening, and public-record standing across sanctions, SEC, EPA, and federal awards, with explicit unavailable-source notes and a reviewer checklist. Informational evidence organization, not legal advice or sanctions clearance.
| Name | Required | Description | Default |
|---|---|---|---|
| ein | No | Optional EIN hint for nonprofit identity. | |
| lei | No | Optional 20-character LEI to anchor the ownership chain. | |
| state | No | Optional 2-letter state. | |
| format | No | Case-file format. Defaults to markdown. | |
| ticker | No | Optional SEC ticker hint. | |
| company | Yes | Company or organization name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, so the bar is lower and the safety profile is covered. The description adds real behavioral value beyond that: it discloses what the output contains (sources screened, unavailable-source notes, reviewer checklist) and the epistemic limit ('informational evidence organization, not legal advice or sanctions clearance'). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste: the main action is front-loaded, the composition details follow in the second sentence, and the caveat lands last. Each sentence earns its place and the ordering moves from what → contents → limitation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-source tool with no output schema, the description carries the burden of explaining the result and largely succeeds: it lists the covered source domains, the output components (unavailable-source notes, reviewer checklist), and the scope limitation. It could go further on how a caller should interpret or act on the checklist, but for a read-only, idempotent aggregator the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so per the baseline the schema already documents all six parameters. The description adds modest context by framing ein/lei/ticker as 'canonical identity and join keys' (i.e., optional resolution hints) and by tying 'one company' to the required company param, but it does not deepen parameter semantics meaningfully beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Assemble a reusable KYB/AML evidence case file for one company,' with a concrete scope boundary (single company). It enumerates the constituent parts (identity/join keys, GLEIF ownership-chain screening, sanctions/SEC/EPA/federal-awards standing) and explicitly distinguishes itself from related outputs via the 'not legal advice or sanctions clearance' caveat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear context: this is the consolidated case-file assembler rather than a point screen, which implicitly routes an agent away from siblings like beneficial_owner_screen or corporate_ownership_tree. It offers a when-not exclusion ('not legal advice or sanctions clearance') but never names alternative tools or the conditions that would select them, so it stops short of full explicitness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lane_location_risk_packARead-onlyIdempotentInspect
Compare origin and destination risk for a logistics lane. Runs site-bound hazard/environmental profiles for both addresses and optionally adds FEMA disaster history for each area. Returns source coverage, point-in-time risk evidence, and an operational review checklist. This is informational public-record synthesis, not an insurance rating or route guarantee.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Report format. Defaults to markdown. | |
| origin_area | No | Optional origin county/place for FEMA history. | |
| origin_state | No | Optional origin 2-letter state, required with origin_area. | |
| origin_address | Yes | Full US origin street address. | |
| destination_area | No | Optional destination county/place for FEMA history. | |
| destination_state | No | Optional destination 2-letter state, required with destination_area. | |
| destination_address | Yes | Full US destination street address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses what the tool runs, what it returns, and its limitations. The disclaimer that this is informational public-record synthesis and not an insurance rating or route guarantee is valuable behavioral context that annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: what the tool does, what it runs/returns, and what it is not. Key comparison intent is front-loaded, and no content is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately describes the return types: source coverage, point-in-time risk evidence, and an operational review checklist. It also mentions the optional FEMA extension and the limitations, making it complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 semantic linkage by explaining that the optional area/state parameters feed FEMA disaster history, which helps an agent understand how optional parameters relate to the tool's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: compare origin and destination risk for a logistics lane. It clearly distinguishes itself from single-location tools like location_risk_report by emphasizing the two-address comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the primary use case clear: when you need to compare risk along a logistics lane between two addresses. It does not explicitly name alternatives or exclusions, but the two-address framing provides sufficient contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leie_exclusion_detailsARead-onlyIdempotentInspect
Retrieve one HHS OIG LEIE exclusion record by the evidence ID returned from a LEIE lookup/search, including exclusion/reinstatement/waiver dates and source freshness.
| Name | Required | Description | Default |
|---|---|---|---|
| exclusion_id | Yes | 24-character evidence ID from a LEIE result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds that the result includes exclusion/reinstatement/waiver dates and source freshness, but it does not disclose behaviors such as not-found handling or data-source caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear, front-loaded sentence that states the action, the scope, and the return contents with no filler. Every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with rich annotations, the description covers the input source and the output categories. Because there is no output schema, slightly more detail about the response envelope would make it fully complete, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents exclusion_id as a 24-character evidence ID from a LEIE result. The description echoes this provenance without adding new format, validation, or value semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('retrieve'), identifies the exact resource ('one HHS OIG LEIE exclusion record'), and specifies the key ('evidence ID returned from a LEIE lookup/search'). This clearly distinguishes it from sibling tools such as leie_search_exclusions and leie_lookup_npi.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames the tool as a follow-up to a LEIE lookup/search by requiring an evidence ID from those flows. It does not explicitly name alternative tools or state when not to use it, but the intended usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leie_lookup_npiARead-onlyIdempotentInspect
Check a 10-digit NPI against the self-hosted HHS OIG List of Excluded Individuals/Entities (LEIE). Returns matching exclusion records with source freshness and evidence IDs. A match is a screening lead, not final identity confirmation; verify it with HHS OIG.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | Yes | Exactly 10 digits; placeholder NPI 0000000000 is rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints, so the safety profile is covered. The description adds valuable behavioral context: that a match is a screening lead, not final identity confirmation, and advises verification with HHS OIG. It also mentions source freshness and evidence IDs, which enriches the agent's understanding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core action, and every sentence adds value: the action, the return content, and a critical caveat. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup with annotations covering safety and idempotency, the description fully covers what the tool does, what it returns, and the important limitation of a match. No missing information that would prevent an agent from calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for the sole parameter 'npi' has 100% coverage, so the schema already fully documents the format (exactly 10 digits) and the placeholder rejection. The description only repeats the '10-digit' requirement without adding new semantic detail, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Check a 10-digit NPI'), a precise resource ('self-hosted HHS OIG List of Excluded Individuals/Entities (LEIE)'), and the return value (matching exclusion records). It clearly distinguishes itself from sibling tools like leie_search_exclusions (which searches by other criteria) by focusing on NPI-based lookup, even 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the usage condition: when you have a 10-digit NPI, use this tool. It does not explicitly mention alternatives or when-not-to-use, but the context is unambiguous. Since there is no exclusion guidance, 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.
leie_search_exclusionsARead-onlyIdempotentInspect
Search the self-hosted HHS OIG LEIE by individual or business name, with optional two-letter state and a bounded result limit. Returns evidence IDs for follow-up. Name similarity alone does not establish identity.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Individual or business name, at least 2 characters. | |
| limit | No | Maximum rows, default 10 and maximum 50. | |
| state | No | Optional two-letter US state code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, non-destructive, open-world behavior. The description adds value beyond them: it states the output shape ('Returns evidence IDs') despite no output schema, and warns that 'Name similarity alone does not establish identity', a critical false-positive caveat for this domain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, each carrying distinct information (scope, return value, identity caveat). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape, the follow-up routing hint, and the match-confidence caveat. For a simple 3-param read tool with rich annotations, 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.
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 name, state, and limit with constraints. The description only restates those parameters and adds no syntax or format details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search), a named resource (self-hosted HHS OIG LEIE), and the lookup keys (individual or business name, optional state, limit). An agent can tell this is a lookup/search entry point rather than a detail-fetch like leie_exclusion_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: name search with optional narrowing, and it points to a next step by noting it 'Returns evidence IDs for follow-up'. It stops short of explicitly naming leie_exclusion_details or stating 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.
lei_hierarchyARead-onlyIdempotentInspect
Map a company's corporate family tree from the GLEIF relationship register (keyless, CC0 open data): given a company name or LEI, returns its direct parent, ultimate (top-of-tree) parent, and a list of its direct children/subsidiaries with the total subsidiary count. Answers 'who ultimately owns this company?' and 'what does this company own?' — core due-diligence and beneficial-ownership questions. Each node includes the LEI, legal name, and jurisdiction so you can drill further. Relationships GLEIF has no filing for are reported as 'none reported' (not an error).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A company legal name (e.g. 'Apple Inc') or a 20-character LEI code. Names resolve to the top-ranked match. | |
| children_limit | No | Max direct children to list (default 15, max 50). The total count is always reported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive behavior. The description adds value beyond them: keyless access, CC0 data provenance, and the important edge-case disclosure that unregistered relationships return 'none reported' rather than an error. It stops short of covering rate limits or failure modes, so 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the source and output shape, no filler. Minor redundancy in the parenthetical 'keyless, CC0 open data' and the drill-down note slightly dilutes it, but it is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full return-shape burden and does so: it names each returned field (LEI, legal name, jurisdiction), the relationship fields, the subsidiary count, and the exception semantics. An agent can call this correctly with no other reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both query (name or 20-char LEI, top-ranked match) and children_limit (default 15, max 50, total always reported) are fully documented in the schema. The description adds no syntax or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (maps a corporate family tree from the GLEIF relationship register) and precisely enumerates the return set: direct parent, ultimate parent, children, total count. It does not, however, differentiate itself from close siblings like corporate_ownership_tree or beneficiary-ownership 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context by framing the questions it answers ('who ultimately owns this company?', 'what does this company own?') and tagging them as due-diligence/beneficial-ownership work. There are no explicit exclusions or named alternatives, so it stops at a solid 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lei_lookupARead-onlyIdempotentInspect
Resolve a company name to its Legal Entity Identifier (LEI), or look up an LEI code directly, using the GLEIF public register (keyless, CC0 open data). Returns each matching entity's 20-character LEI, exact legal name, operating status (ACTIVE/INACTIVE), jurisdiction (ISO 3166-2), legal-form code, legal address (city/region/country), LEI registration status (ISSUED/LAPSED/RETIRED), and last-update date. The LEI is the global standard join key for entity resolution — use it to disambiguate a company and cross-reference it against sanctions, SEC EDGAR, federal spending, and due-diligence tools. Pass a name (fuzzy match, returns ranked candidates) or a 20-char LEI (exact).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max candidate records for a name search (default 10, max 25). Ignored for an exact LEI. | |
| query | Yes | A company legal name (e.g. 'Apple Inc') or a 20-character LEI code (e.g. 'HWUPKR0MPOU8FGXBT394'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: keyless access, CC0 open data, the exact return fields (with status and jurisdiction enums spelled out inline), and the ranked-candidate behavior of name search. No output schema exists, so enumerating returns is genuinely useful; only rate limits/pagination are unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then inputs and usage context. The long return-field enumeration is dense but earns its place given there is no output schema. Slightly long, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-input lookup with no output schema, the description covers purpose, both input modes and their matching behavior, and the full return shape with inline enums. An agent has everything needed to call and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds meaning beyond the schema: it clarifies that the name path is a fuzzy match returning ranked candidates while the LEI path is exact. This disambiguates the two accepted input forms in a way the raw schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (resolve/look up) and resource (LEI) and names the data source (GLEIF public register). The dual mode — name-to-LEI or direct LEI lookup — plus the explicit field list makes it distinguishable from generic entity-resolution siblings like entity_resolve or resolve_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use the LEI as a join key to disambiguate a company and cross-reference against sanctions, SEC EDGAR, federal spending, and due-diligence tools, and explains the name (fuzzy) vs LEI (exact) selection. It does not, however, explicitly name a sibling alternative or state when NOT to use this versus those tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_groupsARead-onlyIdempotentInspect
List every tool group (category) available on LiveDataLink with its domain count and tool count. Use this to discover which groups exist, then connect to https://livedatalink.ai/mcp?groups=<comma,separated> (or send the header X-Tool-Groups: <comma,separated>) to load ONLY those groups. Filtering keeps the tool list small so an agent selects tools accurately and uses less context. Free to call, no credits consumed. Optional 'query' filters group names.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional substring to filter group names (case-insensitive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond the annotations: it is 'Free to call, no credits consumed,' and it returns domain counts and tool counts for every group. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then gives a concise usage workflow, the context-efficiency rationale, the cost note, and the optional parameter. Every sentence serves a clear purpose with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description fully covers what the tool returns, how to use the result, when to call it, the cost, and the filtering behavior. Nothing essential is missing for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the 'query' parameter. The description adds the clarifying detail that the query is an 'Optional substring' and, combined with the schema, that filtering is case-insensitive. This is enough for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List every tool group (category) available on LiveDataLink with its domain count and tool count.' It clearly identifies the output and distinguishes this discovery/metadata tool from the many domain-specific sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool: 'Use this to discover which groups exist,' followed by concrete next steps for loading only the desired groups via URL or header. It also explains the benefit of filtering for context efficiency, though it does not explicitly contrast with an alternative discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_tender_fraud_shieldARead-onlyIdempotentInspect
Screen a carrier before accepting or dispatching a load. Resolves the carrier and combines FMCSA authority, insurance, safety, sanctions, court, and federal-award evidence with the supplied tender context. Flags inactive authority, missing liability evidence, sanctions or litigation findings, broker-only records, and mismatches between the carrier's reported location and the tender contact address. Returns CLEAR, REVIEW, or BLOCK with reasons, source coverage, primary links, and a dispatcher verification checklist. This is an analytical fraud-screening aid, not a substitute for direct FMCSA or insurance verification.
| Name | Required | Description | Default |
|---|---|---|---|
| mc | No | MC/MX number without the prefix. | |
| dot | No | USDOT number (preferred). | |
| name | No | Carrier legal name when DOT/MC is unavailable. | |
| format | No | Report format. Defaults to markdown. | |
| load_id | No | Optional internal load/tender identifier to echo in the report. | |
| carrier_address | No | Address supplied with the tender or onboarding packet, used for a coarse location consistency check. |
TDQS
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 is free to spend its words on substance. It does: it discloses the decision taxonomy (CLEAR/REVIEW/BLOCK), the specific red flags detected, the fact that source coverage and links come back, and an explicit scope limitation that this is an analytical aid rather than authoritative FMCSA/insurance verification — a genuinely useful expectation-setter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, no filler, and the actionable scoping (when to call, what it does) is front-loaded before the output description and the limitation caveat. Every clause carries new information about behavior or output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and six inputs, the description carries the return contract itself — decision values, reasons, source coverage, primary links, and a verification checklist — plus the governing caveat. An agent knows both what it will get back and the limits of the answer before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented in-schema (dot marked preferred, mc without prefix, format default, carrier_address used for the consistency check). The description mentions carrier resolution and 'the supplied tender context' but adds no syntax, precedence, or identifier-resolution rules 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Screen a carrier'), pins the moment of use ('before accepting or dispatching a load'), and enumerates exactly which evidence classes are fused (FMCSA authority, insurance, safety, sanctions, court, federal awards). It reads distinctly from a raw lookup like fmcsa_carrier_lookup, but it never names a sibling, so the differentiation is inferential 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening clause gives a clear when-to-use trigger (pre-tender/pre-dispatch screening), which is more than most tools offer. However, it never says when NOT to use it or which alternative fits better — carrier_vetting_score, carrier_vetting_evidence_pack, and carrier_monitor_recheck all sit in the same family with no routing guidance, and no prerequisites (e.g. what identifier is required) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lobbying_contributionsARead-onlyIdempotentInspect
Search LDA contribution reports (political contributions disclosed by lobbyists/registrants). Filter by year, registrant, or lobbyist name.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Results per page (default 20). | |
| filing_year | No | Filing year, e.g. 2025. | |
| lobbyist_name | No | Lobbyist name, partial match. | |
| registrant_name | No | Registrant (firm) name, partial match. |
TDQS
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 (LDA source, contribution reports) but does not disclose pagination behavior, output format, or matching semantics 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no redundant filler. It front-loads the core resource and action, then lists the available filters. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with strong annotations and fully documented parameters, the description is adequate but not complete. It does not describe the return value shape, pagination behavior, or how this tool differs from several similarly named lobbying siblings, all of which an agent might need to choose correctly among the available tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including defaults and partial-match behavior. The description only restates the year/registrant/lobbyist filters and adds no extra meaning about page_size or parameter relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Search'), a specific resource ('LDA contribution reports'), and clarifies the domain ('political contributions disclosed by lobbyists/registrants'). It is clear on its own, but it does not explicitly differentiate itself from the closely named sibling tools like lobbying_search, lobbying_lobbyists, or lobbying_registrants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this to find political contribution reports and filter by year, registrant, or lobbyist name. However, it provides no explicit when-to-use versus alternatives like lobbying_search or lobbying_detail, and no exclusion criteria or guidance on 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.
lobbying_detailARead-onlyIdempotentInspect
Get the full detail of one lobbying filing by its UUID (from lobbying_search results), including all lobbying activities, issues, covered officials contacted, and the lobbyists involved.
| Name | Required | Description | Default |
|---|---|---|---|
| filing_uuid | Yes | Filing UUID from lobbying_search results. |
TDQS
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 detail about what the response includes: lobbying activities, issues, covered officials contacted, and lobbyists. It does not describe response structure or error behavior, but the annotations lower the burden and the content list is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the core purpose and includes the source and expected contents. No wasted words; every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description covers the purpose, the input origin, and the expected content categories. It is complete enough for an agent to know when to call it and what it will receive, though it could mention edge cases like invalid UUIDs or missing filings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with filing_uuid already documented as 'Filing UUID from lobbying_search results.' The description mostly restates this, reinforcing that the parameter is the identifier from search results, but it adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('one lobbying filing'), and identifies the UUID as the identifier from lobbying_search results. It names the exact contents included, distinguishing it from sibling tools like lobbying_search, lobbying_lobbyists, and lobbying_contributions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly ties usage to lobbying_search results, providing clear context for when this tool should be invoked. It does not explicitly discuss alternatives or when not to use it, but the 'one filing by UUID' scoping makes the appropriate use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lobbying_lobbyistsARead-onlyIdempotentInspect
Search individual lobbyists by name (and optionally by their registrant firm). Returns lobbyist records with their associated firm.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination. | |
| page_size | No | Results per page (default 20). | |
| lobbyist_name | No | Lobbyist name, partial match. | |
| registrant_name | No | Optional registrant (firm) name to scope the search. |
TDQS
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 results include the associated firm, which is useful, but does not disclose pagination behavior or other operational details beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words, with the core purpose front-loaded. Every sentence adds value and the description is easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with fully documented parameters, the description is nearly complete. It states the input dimensions and the output contents, though it does not elaborate on pagination defaults or result ordering, which would be useful but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces the meaning of lobbyist_name and registrant_name but adds little beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and a clear resource ('individual lobbyists'), and specifies the key search dimensions (name, optional registrant firm). This distinguishes it from sibling tools like lobbying_registrants, which target firms rather than individuals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this is the tool for finding individual lobbyists by name, optionally scoped by firm. It does not explicitly name alternatives or exclusion criteria, but the focused scope provides sufficient usage context for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lobbying_registrantsBRead-onlyIdempotentInspect
Search registered lobbying firms (registrants) by name. Returns registrant profile records.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Results per page (default 20). | |
| registrant_name | No | Registrant (firm) name, partial match. |
TDQS
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 that the tool returns 'registrant profile records,' which is useful since no output schema exists, but it does not disclose additional behaviors such as pagination behavior or field-level output details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that names the action, target, search field, and return type with no wasted words. It is appropriately sized for a simple lookup tool and every phrase contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, optional-parameter search tool with strong annotations and full schema coverage, the description is mostly adequate: it identifies the resource, the search field, and the return type. It loses a point because it does not clarify how this tool relates to nearby lobbying tools or describe the structure of the returned profile records, which would be helpful without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both registrant_name and page_size are already documented. The description reinforces the meaning of registrant_name by saying 'by name' but adds nothing about page_size or result control beyond what the schema provides, which keeps this at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Search registered lobbying firms (registrants) by name.' It also indicates the return type ('registrant profile records'), making the core purpose unambiguous. However, it does not explicitly differentiate this tool from closely related siblings like lobbying_search or lobbying_lobbyists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by name' implies a usage context, but the description offers no guidance on when to choose this tool over alternatives, no exclusions, and no mention of related lobbying tools. An agent would have to infer selection criteria from the tool name and sibling list rather than from explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lobbying_searchARead-onlyIdempotentInspect
Search U.S. federal lobbying disclosure filings (Senate LDA). Filter by year, filing type, registrant (lobbying firm), client (who hired them), or general issue code. Returns filings with the client, registrant, period, income/expenses, and lobbying issues. Pair with FEC and Congress tools to follow the money.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination. | |
| page_size | No | Results per page (default 20, max 25). | |
| issue_code | No | General issue area code, e.g. 'ENG' (energy), 'TAX', 'HCR' (health). | |
| client_name | No | Client name (the entity that hired the lobbyist), partial match. | |
| filing_type | No | Filing type code, e.g. 'RR' (registration), 'Q1'-'Q4' (quarterly reports). | |
| filing_year | No | Filing year, e.g. 2025. | |
| registrant_name | No | Lobbying firm / registrant name (partial match). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context by naming the Senate LDA source and specifying that results include client, registrant, period, income/expenses, and lobbying issues, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action and resource, followed by filter options and return contents. The closing sentence about pairing with FEC and Congress tools is useful context, though slightly tangential, so it is not perfectly minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does a good job of telling the agent what results look like, and the schema documents all seven optional parameters. It is not fully complete because it does not mention pagination behavior, response size, or how this relates to the other lobbying_* sibling tools, but it is adequate for a read-only search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented in the schema. The description essentially restates the filter dimensions from the schema without adding new semantic detail such as matching behavior, defaults, or special values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Search') and resource ('U.S. federal lobbying disclosure filings (Senate LDA)'), and it lists the key filters and returned fields, so an agent can understand the tool's function. It does not explicitly differentiate itself from sibling tools like lobbying_detail, lobbying_lobbyists, or lobbying_registrants, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is useful by describing filters and return fields, and it suggests pairing with FEC and Congress tools. However, it does not explicitly state when to use this tool versus the lobbying_* siblings, and it offers no exclusions or alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
local_searchARead-onlyIdempotentInspect
Find local businesses, restaurants, services, and places near any location. Returns name, type, address, phone, website, hours, cuisine, and distance. Use this for 'find restaurants near me', 'coffee shops in downtown Houston', 'gas stations near 60601', 'best pizza in Chicago', 'pharmacies nearby', 'hotels in Austin', 'find a mechanic', 'gyms near me', or any local business or place discovery question. Supports: restaurants, cafes, bars, gas stations, pharmacies, hospitals, doctors, dentists, gyms, hotels, grocery stores, banks, schools, parks, libraries, auto repair, salons, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to find (e.g., 'restaurants', 'coffee', 'gas station') | |
| radius | No | Search radius in miles (default: 1.5) | |
| location | Yes | Where to search (city, zip, or address) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful context about the supported categories and default-radius behavior through schema. It does not disclose response pagination, unavailability of certain categories, or cutoff ranges, so it adds some but not rich behavioral context. With annotations covering the core traits, a 3 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is focused and front-loaded with the core action, followed by the return fields, then usage examples, then supported categories. Every sentence contributes something useful, with no redundant restatement of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover safety and idempotence, the schema covers all three parameters, and the description covers scope, return fields, examples, and category list. The main gap is lack of explicit mention of result limits or fallback behavior for unknown locations, but for a read-only local discovery tool this is adequate and nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented. The description adds practical value by listing the output fields and many example query strings, but it does not deepen the meaning of the parameters beyond the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Find') plus a clear resource ('local businesses, restaurants, services, and places near any location') and enumerates return fields. It distinguishes itself from the large sibling set by naming the exact query patterns it serves, so an agent can immediately recognize 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives many concrete example queries and explicitly says 'Use this for... or any local business or place discovery question.' It does not name sibling alternatives like recreation_nearby or realestate_search to exclude, but the examples plus 'any local discovery' provide strong practical guidance for when to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
location_risk_reportARead-onlyIdempotentInspect
One-call, site-bound hazard + environmental profile with an explainable 0-100 risk score. Geocodes an address (or takes lat/lon) then fans out to FEMA flood zone, recent FEMA disaster declarations (county), active NWS alerts, USGS earthquakes within 50km, EPA ECHO regulated facilities (by ZIP/state), and parcel records (Maryland statewide / Texas-Harris County only). The score starts at 100 and subtracts itemized deductions (flood SFHA, active alerts, declarations, EPA non-compliance, strong quakes). A failing source is noted, not fatal. Premium cross-source synthesis; not a substitute for a professional site assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude (use with lon instead of address). | |
| lon | No | Longitude (use with lat instead of address). | |
| state | No | Optional 2-letter state override (helps EPA/parcel/declaration scoping). | |
| address | No | Full US street address to geocode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, the description reveals how the score is derived: it starts at 100 and subtracts itemized deductions for SFHA flood, active alerts, declarations, EPA non-compliance, and strong quakes. It also states that a failing source is noted but not fatal, giving the agent important context for interpreting partial responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds information: purpose, source fan-out and coverage, scoring mechanics, failure behavior, and disclaimer. The key output is front-loaded in the first sentence, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's multi-source complexity and the lack of an output schema, the description is unusually complete: it names all integrated data sources, states the scoring model, gives geographic coverage limits, and describes failure behavior. An agent has enough context to decide when to call it and how to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters already have schema descriptions, so 100% schema coverage sets the baseline at 3. The description adds the high-level geocode-address-or-take-lat/lon pattern and explains how state scopes EPA/parcel/declaration lookups, but much of this is restated in the schema, so it does not substantially raise the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence identifies the deliverable—an explainable, site-bound hazard/environmental profile with a 0-100 risk score—and the rest details inputs and sources, so an agent can recognize it as a consolidated report rather than a single-source lookup. The explicit fan-out to FEMA, NWS, USGS, EPA, and parcel sources distinguishes it from sibling tools that cover only one of those domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'One-call' plus the long fan-out list tells the agent this is the appropriate choice when a consolidated location risk score is needed across multiple sources, and the coverage caveats help set expectations. It also adds a clear 'not a substitute for a professional site assessment' exclusion. It does not explicitly name sibling alternatives such as environmental_site_risk or say when to prefer a single-source lookup, so the guidance is strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_size_estimatorARead-onlyIdempotentInspect
One-call TAM / market-size read for an industry (NAICS) in a US geography. Joins two independent federal sources that both count business activity by NAICS + area so each corroborates the other: US Census County Business Patterns (establishments, employment, annual payroll - needs a Census API key) and BLS QCEW (keyless: private establishment count, total wages, average annual pay, with employment implied from wages / avg pay). Returns the establishment count, employment, and a wage/payroll-based market-size anchor with the per-source evidence. Pass an 'industry' (e.g. 'restaurants', 'software publishers') or an explicit 'naics' code, and an optional 'state' or 'metro' (defaults to national). Market size here is the total annual wages/payroll paid in the industry+area - a concrete lower bound, NOT total revenue/receipts. A source that fails is noted, not fatal. Informational, not a guarantee.
| Name | Required | Description | Default |
|---|---|---|---|
| metro | No | Optional 5-digit CBSA/metro code (e.g. '12420' Austin, TX). Census leg only; requires the Census key. | |
| naics | No | Explicit 2 to 6 digit NAICS industry code (e.g. '722' food services, '5112' software publishers). Overrides 'industry'. | |
| state | No | Optional 2-letter state code or 2-digit FIPS (e.g. 'TX', '48'). Omit for a national estimate. | |
| industry | No | Free-text industry to map to a NAICS code (e.g. 'restaurants', 'software publishers', 'construction'). Provide this or 'naics'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses that the Census leg requires an API key while the BLS leg is keyless, that sources corroborate each other, and that a failing source is noted rather than fatal. It also clarifies that the returned value is a wage/payroll lower bound, not revenue. This substantially exceeds what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, data sources, inputs, output semantics, and caveats are each addressed without redundancy. The core value proposition is front-loaded, and the caveats are placed at the end without burying the actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter optional-input tool with no output schema, the description covers inputs, defaults, override behavior, return categories, source-specific requirements, failure handling, and interpretation caveats. An agent has enough information to select the tool, construct valid parameters, and understand what the result means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already documents all four parameters at 100% coverage, the description adds meaningful semantic context: 'naics' overrides 'industry', state/metro are optional with national default, and metro requires the Census key. This helps an agent correctly construct calls beyond the raw schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it provides a TAM/market-size read for an industry in a US geography by joining Census CBP and BLS QCEW data. It distinguishes itself by describing the unique output (establishment count, employment, wage/payroll-based anchor, per-source evidence), which separates it from raw-data siblings like census_business or bls_series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use this tool: when a one-call market-size/TAM estimate is needed, and clarifies that it is informational, not a guarantee. It doesn't explicitly name sibling alternatives or state when NOT to use it, but the 'one-call' framing and market-size definition make the intended use unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nasa_firms_search_firesARead-onlyIdempotentInspect
Search NASA FIRMS satellite active-fire/hotspot detections inside a bounded latitude/longitude box. Uses LiveDataLink's D1 mirror by default when configured, or the NASA Area API when live mode is requested. Results include acquisition time, satellite/sensor, confidence, fire radiative power, brightness, and day/night flag. Supports limit/offset pagination. A hotspot is a satellite thermal anomaly, not confirmation of a wildfire; verify consequential decisions with incident authorities and NASA FIRMS. The interactive bounding box is limited to 60 degrees wide by 30 degrees high; split larger regions into multiple calls.
| Name | Required | Description | Default |
|---|---|---|---|
| east | Yes | Eastern longitude; must be greater than west. | |
| west | Yes | Western longitude of the bounding box. | |
| limit | No | Maximum detections returned. Default 25. | |
| north | Yes | Northern latitude; must be greater than south. | |
| south | Yes | Southern latitude of the bounding box. | |
| offset | No | Rows to skip for pagination. Default 0. | |
| source | No | NASA FIRMS sensor product. Default VIIRS_NOAA20_NRT. | |
| data_mode | No | auto uses the D1 mirror when configured; hosted requires D1; live requires NASA_FIRMS_MAP_KEY. Default auto. | |
| day_range | No | Number of days from start_date, or most recent days when omitted. Default 1. | |
| start_date | No | Optional first UTC date in YYYY-MM-DD form. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/destructive/openWorld profile, and the description adds substantial context beyond them: the D1 mirror vs NASA Area API fallback behavior, the NASA_FIRMS_MAP_KEY requirement for live mode, pagination support, and the critical semantic caveat that a hotspot is a thermal anomaly and not confirmation of a wildfire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then data-source mechanics, then return fields, then the safety caveat and box-size constraint. Every sentence earns its place, especially the return-field enumeration, which compensates for the absent output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by enumerating the returned fields (acquisition time, sensor, confidence, FRP, brightness, day/night). Combined with the data-mode/auth and bounding-box constraints, an agent has everything needed to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters including the enum values, defaults, and bounds. The description restates some of this (limit/offset pagination, data_mode behavior) but adds little syntax or meaning the schema does not already carry, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Search) and resource (NASA FIRMS satellite active-fire/hotspot detections) scoped to a bounded latitude/longitude box. It is unambiguous and no sibling tool overlaps this fire-detection domain, so an agent can route to it confidently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use (querying fire detections within a region) and practical guidance such as splitting regions larger than 60x30 degrees into multiple calls. It stops short of explicitly naming alternatives or stating when NOT to use it, but the caveat to verify consequential decisions with incident authorities is a useful usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nfip_flood_claimsARead-onlyIdempotentInspect
National Flood Insurance Program claim history. A state-only request uses LiveDataLink's privacy-preserving self-hosted aggregate; zip/county/year filters use the live OpenFEMA API. Useful for assessing prior loss patterns without redistributing claim-level records from the hosted store.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | Five-digit zip code. | |
| limit | No | Max rows (default 200). | |
| state | No | Two-letter state code. | |
| county | No | FEMA county code. | |
| end_year | No | Latest year of loss. | |
| start_year | No | Earliest year of loss. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=true and idempotentHint=true, the safety profile is covered. The description adds valuable behavioral context: it discloses that state-only requests use a privacy-preserving self-hosted aggregate while filtered requests hit the live OpenFEMA API, and it clarifies the privacy posture of not redistributing claim-level records. It doesn't mention edge cases like an empty request or rate limits, but the core behavioral distinction is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first sentence states what the tool is and the key behavioral split; the second gives a use case. Information 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.
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, the description covers the essentials: data source, filtering modes, and privacy implications. The only gap is that it doesn't specify behavior when no parameters are provided (all params are optional), and it doesn't report return value structure, but the rules state output schema absence doesn't burden the description. Overall, an agent can correctly invoke this tool for common scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining how parameters interact: a state-only request (just 'state') triggers a different data source than zip/county/year filters. This conditional behavior is not encoded in the schema and is important for selecting the correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (National Flood Insurance Program claim history) and the two operational modes based on filter usage. It distinguishes this tool from siblings like flood_zone_lookup by focusing on claim history rather than zones. The phrase 'without redistributing claim-level records' adds a precise scope that separates it from potential record-redistribution tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('assessing prior loss patterns') and explains when to use each backend (state-only vs. zip/county/year). However, it does not explicitly name alternative tools or state when not to use this tool, leaving exclusion to inference rather than direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonprofit_detailsARead-onlyIdempotentInspect
Full IRS EO BMF record for one organization by EIN, with the coded fields (subsection, foundation status, deductibility, EO status, ruling date) decoded to human-readable labels. Includes address, NTEE code, and the most recent reported asset/income/revenue figures.
| Name | Required | Description | Default |
|---|---|---|---|
| ein | Yes | Employer Identification Number (EIN). Accepts 9 digits with or without a dash, e.g. "13-1837418" or "131837418". |
TDQS
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 context beyond that: coded fields are decoded to human-readable labels, and figures are the most recent reported values, which informs how the agent should interpret the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first defines scope and lookup method, the second summarizes contents. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the major returned categories (address, NTEE code, recent financial figures, decoded fields). It does not describe not-found behavior or exact response shape, but for a single-record lookup tool the description is sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, EIN, and the schema already documents its format and examples at 100% coverage. The description adds no additional parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Full IRS EO BMF record') and a precise lookup key (EIN), and clarifies it is for one organization. It also lists the decoded coded fields, which distinguishes it from status-only or location/name search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use this when you need the full BMF record for a specific EIN, as opposed to a status check or search. It does not explicitly name sibling tools or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonprofit_lookup_einARead-onlyIdempotentInspect
Look up a US tax-exempt organization by exact EIN from the IRS Exempt Organizations Business Master File (~1.27M orgs). Returns name, address, IRC subsection, and current EO status. Use nonprofit_details for the fully decoded record.
| Name | Required | Description | Default |
|---|---|---|---|
| ein | Yes | Employer Identification Number (EIN). Accepts 9 digits with or without a dash, e.g. "13-1837418" or "131837418". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond those: the data source and corpus size (~1.27M orgs), the specific fields returned, and the hint that this returns a less-decoded record than nonprofit_details. Nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the first packs verb, resource, scope, data source, corpus size, and return fields; the second routes to the decoded alternative. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with rich annotations and no output schema, the description covers the data source, the matching scope, returned fields, and the relationship to nonprofit_details. A minor gap is not stating behavior when the EIN is not found or when to prefer nonprofit_status, but these are small against an otherwise complete definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — the ein parameter already documents the 9-digit format with or without dash and gives examples. The description's 'exact EIN' adds a mild semantic of exact-match behavior, but the schema carries the format burden. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Look up'), a precise resource (US tax-exempt org by exact EIN from the IRS EOBMF), and names the return fields (name, address, IRC subsection, EO status). The 'exact EIN' qualifier distinguishes it from the nonprofit_search_name and nonprofit_search_location siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'exact EIN' phrasing implies this tool is for precision lookups rather than fuzzy search, and the explicit pointer 'Use nonprofit_details for the fully decoded record' names a concrete alternative. However, it does not explicitly tell an agent to use nonprofit_search_name or nonprofit_search_location when only a name/location is known, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonprofit_search_locationARead-onlyIdempotentInspect
Find tax-exempt organizations by location: city, state, and/or 5-digit ZIP. At least one filter is required. Useful for discovering charities, churches, and foundations in an area. Returns up to 100 organizations.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit ZIP code. | |
| city | No | City name (combine with state for best results). | |
| limit | No | Max results to return (default 20, max 100). | |
| state | No | 2-letter US state/territory code, e.g. "TX". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds the minimum-filter requirement and a result cap, but 'Returns up to 100 organizations' glosses over the schema's default of 20 and the adjustable limit, giving only modest 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operation and its filter set, followed by the precondition and result scope. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-purpose read-only search with no output schema and full schema descriptions, the definition covers operation, filter constraint, intent, and result volume. Only minor gaps remain, such as the discrepancy between the stated 100-result cap and the schema default of 20.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents zip, city, state, and limit formats and ranges. The description restates the location filters and combines them implicitly with 'and/or' but adds no format or combination guidance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find tax-exempt organizations by location') and enumerates the geographic filter set (city, state, ZIP), which implicitly separates it from the name/EIN siblings. It does not explicitly name nonprofit_search_name or nonprofit_lookup_ein as the alternatives, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'At least one filter is required' gives a concrete precondition for calling the tool, and 'Useful for discovering charities, churches, and foundations in an area' frames the intended scenario. No when-not guidance or explicit alternative routing is provided, so it does not reach 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonprofit_search_nameARead-onlyIdempotentInspect
Fuzzy-search tax-exempt organizations by name, optionally filtered to a US state. Tolerant of word reordering and minor spelling differences. Returns ranked matches with EIN, location, and IRC subsection. Use the returned EIN with nonprofit_details or nonprofit_lookup_ein.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name or partial name to search for. | |
| limit | No | Max matches to return (default 10, max 50). | |
| state | No | Optional 2-letter US state/territory code to narrow results, e.g. "NY", "TX", "CA". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely useful behavior beyond that: fuzzy tolerance to word reordering and spelling, and ranked output with named fields (EIN, location, IRC subsection). It does not discuss result caps beyond the schema's limit param.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all front-loaded with the core purpose first, then matching behavior, then return contents, then the next-step pointer. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read-only search with no output schema, the description covers purpose, matching behavior, returned fields, and follow-up tools. Combined with annotations that carry the safety profile, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, limit, and state are already documented in the schema. The description only restates the state filter at a high level and adds no syntax or format detail beyond what the schema provides, matching the baseline for a fully-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (fuzzy-search tax-exempt organizations by name) with scope, and its 'by name' focus distinguishes it from the sibling nonprofit_search_location which searches by location. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent onward ('Use the returned EIN with nonprofit_details or nonprofit_lookup_ein') and explains the optional state filter. It lacks an explicit when-not statement (e.g., when to prefer location search), so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonprofit_statusARead-onlyIdempotentInspect
Current exempt-organization status for one organization by EIN: whether the IRS recognition is active, revoked, or terminated, plus the decoded status label, contribution deductibility, and the ruling (recognition) date. Tells donors and grantmakers if an org is still in good standing.
| Name | Required | Description | Default |
|---|---|---|---|
| ein | Yes | Employer Identification Number (EIN). Accepts 9 digits with or without a dash, e.g. "13-1837418" or "131837418". |
TDQS
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 operational context by naming the exact status categories (active, revoked, terminated) and derived fields (deductibility, ruling date), so the agent knows what the response means 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry a complete definition: what the tool returns, the exact status semantics, and the intended audience. There is 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup with no output schema, the description explains the core return fields well. It does not specify behavior for unknown EINs or explicitly acknowledge the openWorldHint possibility of missing data, but the practical use case is sufficiently covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single EIN parameter completely, including accepted formats with and without dashes. The description adds no new parameter-level semantics beyond reinforcing that the lookup is for one organization.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (look up current exempt-organization status) with a concrete resource (one organization by EIN) and enumerates the returned fields. It is clearly more specific than broad sibling searches, but it does not explicitly differentiate itself from sibling nonprofit detail/lookup tools by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: check an organization's IRS standing before donating or granting money. However, the description never states when to choose this over sibling tools such as nonprofit_details or nonprofit_lookup_ein, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
npi_lookupARead-onlyIdempotentInspect
Look up a single US healthcare provider by their 10-digit NPI (National Provider Identifier). Returns name, type, credential, primary specialty (taxonomy), practice location, and status. Keyless CMS data.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | Yes | 10-digit NPI number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond that: it is 'Keyless CMS data' and it specifies the output fields returned. It does not cover rate limits or error behavior, but for a simple lookup this is a strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences front-load the action and resource, then list the return fields and the keyless aspect. Every sentence earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 with no output schema, the description is complete: it states the input requirement, the scope, the returned data, and the authentication context. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the only parameter, 'npi', as a 10-digit NPI number, so parameter semantics are covered. The description reinforces the 10-digit requirement but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up'), a specific resource ('single US healthcare provider'), and a precise identifier ('10-digit NPI'). It also enumerates the returned fields, making the tool's purpose immediately distinguishable from the many search siblings like npi_search_provider or npi_search_specialty.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for looking up one provider when the NPI is already known, rather than searching by name or specialty. However, it does not explicitly name sibling alternatives or state when to use them instead, so it stops 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.
npi_search_organizationBRead-onlyIdempotentInspect
Search healthcare organizations (hospitals, clinics, group practices, labs) by name. Requires organization_name; state and city optional.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City to narrow results (optional). | |
| limit | No | Max results (1-50, default 10). | |
| state | No | Two-letter state code to narrow results (optional). | |
| organization_name | Yes | Organization name (required). |
TDQS
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 fully covered elsewhere. The description adds nothing behavioral beyond that — no note on result truncation, the default/limit behavior, pagination, or data source recency. It essentially restates the schema's required/optional split.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and resource front-loaded and the required-parameter constraint placed second. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, read-only search tool with full schema coverage and annotations covering safety, the description supplies enough to invoke it correctly. The one gap is the absence of sibling disambiguation against npi_search_provider/npi_search_specialty, and no hint about result-set behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including the limit range and state code format) are already documented in the schema. The description only repeats that organization_name is required and state/city optional, adding no syntax or semantic detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search healthcare organizations') and enumerates the resource types (hospitals, clinics, group practices, labs), so the agent knows what it returns. It does not, however, distinguish itself from the close siblings npi_search_provider and npi_search_specialty, which also live in the NPI namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By name' plus 'Requires organization_name' implies the usage context — a name-based organization search — but there is no explicit when-to-use, no exclusion of the provider/specialty search siblings, and no statement about what to do if the name is unknown. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
npi_search_providerARead-onlyIdempotentInspect
Search individual US healthcare providers by name. Requires a last_name (first_name, state, city optional). Returns NPI, specialty, location for each match.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City to narrow results (optional). | |
| limit | No | Max results (1-50, default 10). | |
| state | No | Two-letter state code to narrow results (optional). | |
| last_name | Yes | Provider last name (required). | |
| first_name | No | Provider first name (optional). |
TDQS
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 structurally. The description adds that it returns NPI, specialty and location per match, which is useful beyond the annotations, but says nothing about result limits, partial matching, or how 'open world' coverage (all US providers) affects reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, front-loaded with the searchable resource and immediately followed by the required parameter. The only minor loss is that the return-value sentence could have been merged with the input sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers return fields (NPI, specialty, location), which is the main gap an agent would otherwise face. Nothing critical is missing for a read-only search, though pagination/limit behavior is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description only restates requiredness (last_name required; first_name, state, city optional) without adding synonyms, matching rules, or formatting guidance beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search individual US healthcare providers by name'), and the word 'individual' implicitly distinguishes it from npi_search_organization. However, it never names the sibling tools (npi_search_organization, npi_search_specialty, npi_lookup), so an agent must infer the routing boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by name' signals this is the name-based path, and the required last_name establishes the minimum input. There is no explicit guidance on when to prefer this over npi_search_specialty or npi_lookup, nor any stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
npi_search_specialtyARead-onlyIdempotentInspect
Find healthcare providers by specialty (taxonomy description) in a location. Requires taxonomy (e.g. 'Cardiology', 'Pediatrics', 'Nurse Practitioner'); state and city optional but recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City to narrow results (optional). | |
| limit | No | Max results (1-50, default 10). | |
| state | No | Two-letter state code to narrow results (optional). | |
| taxonomy | Yes | Specialty / taxonomy description, e.g. 'Cardiology'. |
TDQS
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 fully covered by structured data. The description adds only the specialty-scoped search framing and the optional-but-recommended location hint, with nothing about result counts, pagination, or the limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action and followed by the key parameter constraint. Little wasted text, though the taxonomy examples repeat what the schema already states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, high-schema-coverage search tool with no output schema, the description covers the required input and the primary optional narrowing. Return format and default result handling are left unstated, but the annotations and schema make this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so city, state, limit, and taxonomy are all documented in the schema with examples. The description's taxonomy examples ('Cardiology', 'Pediatrics') largely duplicate the schema's own example, though the 'state and city optional but recommended' note is a small semantic addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (healthcare providers) with the narrowing facet ('by specialty (taxonomy description) in a location'). This distinguishes it in spirit from name/org-oriented siblings like npi_search_provider and npi_search_organization, but it never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful parameter-level guidance ('Requires taxonomy... state and city optional but recommended'), which tells the agent how to fill the call. It does not say when to prefer this tool over npi_lookup, npi_search_provider, or npi_search_organization, so usage is only implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
npm_packageARead-onlyIdempotentInspect
Look up an npm (Node.js) package: latest version, description, license, repository, last publish date, deprecation status, and last-month download count. Pair with cve_search_by_keyword to check for known vulnerabilities. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | npm package name, e.g. 'express' or '@scope/pkg'. |
TDQS
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 naming the returned fields, noting 'Keyless' access, and advising a companion vulnerability search—context not present in the schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core action and deliverables, then add a pairing tip and auth note. 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.
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 with rich annotations and no output schema, the description is complete: it enumerates the return fields, specifies that no key is needed, and points to the relevant vulnerability companion. An agent has sufficient information to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already has a clear description with examples ('express' or '@scope/pkg'). The tool description does not add parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up') and a specific resource ('npm (Node.js) package'), then enumerates the exact data fields returned. This immediately distinguishes it from sibling package/registry tools like pypi_package and cargo_crate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to call this tool—any time an npm package's metadata or download stats are needed—and explicitly recommends pairing with cve_search_by_keyword for vulnerability checking. It does not spell out exclusions such as 'use pypi_package for Python packages,' but the npm scoping makes the boundary obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nport_compare_fundsARead-onlyIdempotentInspect
Compare two funds in the same self-hosted SEC Form N-PORT snapshot. Returns common securities, each fund's reported portfolio percentage, a weighted-overlap percentage, identifier lineage, and quarterly-freshness caveats. This is as-filed public data, not live holdings or investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum shared securities; default 25. | |
| fund_a | Yes | First EDGAR series ID, mapped ticker, or fund name. | |
| fund_b | Yes | Second EDGAR series ID, mapped ticker, or fund name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so basic safety and idempotency are covered. The description adds value by disclosing output components (common securities, portfolio percentages, weighted overlap, identifier lineage) and explicit caveats ('as-filed public data, not live holdings or investment advice'), but it does not cover potential rate limits, authentication needs, or data update frequency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and scope, followed by a list of returned artifacts and a caveat. No waste; every phrase is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only three parameters, the description is quite complete: it enumerates the main outputs and includes caveats about data freshness and intended use. However, it could be more complete with guidance on handling identical funds or error cases, but that is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (fund_a, fund_b, limit). The description does not add any additional parameter semantics beyond what the schema provides; baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compare two funds in the same self-hosted SEC Form N-PORT snapshot') and specifies the scope (same snapshot). This clearly differentiates it from nport_fund_holdings and other financial siblings like stock_compare or crypto_compare by anchoring to N-PORT data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as nport_fund_holdings, stock_compare, or other comparison tools. It only states what the tool does, leaving the agent to infer the use case (e.g., fund overlap analysis) without any when/when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nport_fund_holdingsARead-onlyIdempotentInspect
List the largest holdings for a fund in LiveDataLink's self-hosted SEC Form N-PORT corpus. Resolve by EDGAR series ID, mapped ticker, or fund-name substring. Returns as-filed values, portfolio percentages, security identifiers, report date, filing accession, source quarter, and public-reporting-lag warning.
| Name | Required | Description | Default |
|---|---|---|---|
| fund | Yes | EDGAR series ID, mapped ticker, or fund name (at least 2 characters). | |
| limit | No | Maximum holdings; default 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: values are 'as-filed' (not adjusted), and it warns of a 'public-reporting-lag' issue, which materially affects result interpretation. No return-shape or pagination detail, but that is minor given annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that are front-loaded with the core purpose and scoped immediately to the corpus. Nearly every clause carries information; the return-value enumeration is slightly list-heavy but still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the returned fields (percentages, security identifiers, report date, accession, quarter) and flagging the reporting lag. Resolution methods and return contents are both covered, so 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.
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, making 3 the baseline. The description reinforces the accepted identifier forms for 'fund', but adds no syntax, matching rules, or constraints beyond what the schema states, and says nothing about 'limit'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (largest holdings for a fund) and names the exact corpus (self-hosted SEC Form N-PORT), which separates it from the sibling nport_compare_funds. An agent knows this is a per-fund holdings lookup rather than a cross-fund comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives input-resolution guidance ('Resolve by EDGAR series ID, mapped ticker, or fund-name substring'), which is useful, but never states when to choose this tool over nport_compare_funds or any other alternative, and offers no exclusions or prerequisites. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nrel_alt_fuel_station_detailARead-onlyIdempotentInspect
Detailed info for a single alternative fuel station by station ID. Get the ID from nrel_alt_fuel_stations results.
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | Station ID from the alt-fuel stations dataset. |
TDQS
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 only the ID-provenance dependency and does not disclose return format, rate limits, or data freshness, so it adds moderate but not rich behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose and followed by the essential ID-sourcing hint. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter detail lookup with rich annotations and full schema coverage, the description is sufficient to invoke correctly. It could say a bit more about the returned detail contents, but the low complexity means little is genuinely missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, but the description adds meaningful provenance: it tells the agent the station_id should come from nrel_alt_fuel_stations results, which the schema alone does not convey. That is genuine value beyond the parameter definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Detailed info for a single alternative fuel station by station ID.' It is clearly differentiable from the sibling nrel_alt_fuel_stations (search) tool, so an agent can pick between detail-lookup and search 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence, 'Get the ID from nrel_alt_fuel_stations results,' establishes the workflow precondition and points to the alternative sibling, giving clear context for when this tool applies. It stops short of explicitly stating when NOT to use it, but the routing intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nrel_alt_fuel_stationsARead-onlyIdempotentInspect
Find alternative fuel stations near a location: electric (EV) charging, CNG, LNG, E85, hydrogen, propane, biodiesel. Used by route planning agents, fleet operators, and EV/clean-fuel tech.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude. Use with lon as alternative to location. | |
| lon | No | Longitude. Use with lat as alternative to location. | |
| limit | No | Max stations to return (default 25, max 200). | |
| state | No | Optional 2-letter state code filter. | |
| radius | No | Search radius in miles (default 5, max 500). | |
| status | No | Optional status filter: E (available, default), P (planned), T (temporarily unavailable). | |
| location | No | Address or city/state. Either location OR lat+lon required. | |
| fuel_type | No | Comma-separated fuel types: ELEC (default), CNG, LNG, E85, HY, LPG, BD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive, so the safety profile is covered. The description adds little beyond that — no mention of defaults (limit 25, radius 5 miles), result ordering, or pagination behavior, which for an open-world search with 8 params would be genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and zero padding. The audience sentence is the only part that does not fully earn its place, keeping this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage and rich annotations, the description need not restate parameter mechanics. It conveys the domain (alternative fuel types) and spatial intent adequately; the only real omission is the location-vs-coordinates requirement and default radius/limit, which the schema covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters are already documented; baseline is therefore 3. The description lists human-readable fuel names (electric, CNG, hydrogen, propane) that loosely map to the fuel_type codes but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find alternative fuel stations') with a clear spatial scope ('near a location') and enumerates the fuel types covered. It does not, however, differentiate itself from the sibling nrel_alt_fuel_station_detail, so an agent cannot tell where this search tool ends and the detail tool begins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence names intended audiences (route planning agents, fleet operators, EV/clean-fuel tech), which implies a use context but gives no explicit when-to-use, when-not-to-use, or named alternative. It never states that either location or lat+lon is required to make a call, a condition the schema alone carries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nrel_pvwattsARead-onlyIdempotentInspect
Estimate solar PV system production using NREL's PVWatts v8 model. Returns annual and monthly AC energy output (kWh), solar resource (kWh/m²/day), and capacity factor. Used by solar developers, homeowners, and ESG analysts to size and estimate solar arrays.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees. Use with lon as alternative to address. | |
| lon | No | Longitude in decimal degrees. Use with lat as alternative to address. | |
| tilt | No | Array tilt angle in degrees (default 20). | |
| losses | No | Total system losses percent (default 14). | |
| address | No | Street address, city/state, or place name. Either address OR lat+lon required. | |
| azimuth | No | Array azimuth in degrees (default 180 = south for northern hemisphere). | |
| array_type | No | 0=fixed open rack, 1=fixed roof (default), 2=1-axis tracking, 3=1-axis backtracking, 4=2-axis tracking. | |
| module_type | No | 0=standard (default), 1=premium, 2=thin film. | |
| system_capacity | Yes | System size in kilowatts DC (e.g. 5 for a 5 kW residential system). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds value beyond that by enumerating the returned quantities (annual and monthly AC kWh, solar resource, capacity factor), which is genuinely useful given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the core capability and model version are front-loaded before the audience note. Nothing here repeats structured fields verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateless estimation endpoint with full schema coverage and annotations covering safety, the description is nearly complete, and the return-value summary compensates for the missing output schema. It stops short of mentioning the address-or-coordinates requirement, which is the main practical trap when calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all nine parameters are individually documented with units, defaults and enum-like mappings, so the schema does the heavy lifting. The description adds nothing about parameters — notably it omits that either address or lat+lon is required — so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate solar PV system production') and names the underlying model (NREL PVWatts v8), which pins down exactly what the tool computes. It does not, however, differentiate itself from the sibling nrel_solar_resource, leaving the agent to infer the boundary between resource lookup and production estimation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The audience sentence ('used by solar developers, homeowners, and ESG analysts to size and estimate solar arrays') implies a sizing/estimation use case but gives no explicit when-to-use condition, no prerequisites (API key, address vs lat/lon), and never names an alternative such as nrel_solar_resource. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nrel_solar_resourceARead-onlyIdempotentInspect
Annual and monthly solar resource data (Direct Normal Irradiance, Global Horizontal Irradiance, Latitude-Tilt Irradiance) for a location. Useful for site evaluation before sizing a solar system.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees. Use with lon as alternative to address. | |
| lon | No | Longitude in decimal degrees. Use with lat as alternative to address. | |
| address | No | Street address, city/state, or place name. Either address OR lat+lon required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only, idempotent, and non-destructive. The description adds useful behavioral detail by specifying the time granularity (annual and monthly) and the three irradiance output types, which goes beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first delivers the resource and data content, and the second adds the intended use case. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only data lookup, the description covers what is returned, the granularity, and the practical context. It could be more complete by naming units or response shape, but none of the selection-critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with lat, lon, and address each already documented, including the either address OR lat+lon requirement. The description itself adds no 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource: solar resource data for a location, and enumerates the exact irradiance metrics (DNI, GHI, latitude-tilt). It stops short of a 5 because it does not explicitly distinguish itself from the closely related nrel_pvwatts sibling or state a verb like 'retrieve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use case: 'site evaluation before sizing a solar system.' This tells an agent when the tool is relevant, but it doesn't explicitly discuss when to prefer nrel_pvwatts or another solar-related sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nrel_utility_ratesARead-onlyIdempotentInspect
Average residential, commercial, and industrial electric utility rates (cents per kWh) for a location, plus the utility name. Used for ROI analysis on solar, EV charging, building electrification.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees. Use with lon as alternative to address. | |
| lon | No | Longitude in decimal degrees. Use with lat as alternative to address. | |
| address | No | Street address, city/state, or place name. Either address OR lat+lon required. |
TDQS
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 meaningful output context: rate units, sector breakdown, and utility name. It does not mention data vintage or geographic limitations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The first sentence defines the output precisely, and the second gives the intended use cases. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with no output schema, the description communicates the returned data, units, and use cases. It could be more explicit about geographic coverage, but the NREL name and context make the tool reasonably complete for an agent to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents lat, lon, and address including the either address OR lat+lon requirement. The description adds no parameter-level meaning beyond 'for a location,' so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: average residential, commercial, and industrial electric utility rates in cents per kWh, plus the utility name. It identifies the resource and function well, though it does not explicitly distinguish itself from related energy/eia sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by saying it is 'Used for ROI analysis on solar, EV charging, building electrification.' This helps an agent know when to select it, though it provides no exclusions or explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_active_alertsARead-onlyIdempotentInspect
Currently-active National Weather Service alerts (tornado, flood, severe thunderstorm, winter, heat, fire) for a point, state, or NWS zone.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lon | No | ||
| zone | No | NWS zone id, e.g. 'TXZ123'. | |
| state | No | Two-letter state code (e.g. 'TX'). | |
| location | No | Address, zip, or city. Will be geocoded to a point. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that the tool is read-only, idempotent, and non-destructive, so the description does not need to re-state safety behavior. It adds useful context by specifying 'currently-active' and listing alert categories, but it does not disclose details like result limits, geocoding behavior, or alert priority semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one tightly packed sentence with no filler. It front-loads the core purpose and then efficiently lists alert types and input modes, which is exactly the information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with five optional parameters and no output schema, the description gives enough context to understand what the tool returns and how to scope it. It could be slightly more explicit about whether parameters can be combined, but the 'point, state, or NWS zone' phrasing makes the likely options clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 60% schema description coverage, the description partially compensates by mapping query modes to parameters: 'point' implies lat/lon, 'state' maps to the state code, and 'NWS zone' maps to the zone id. The schema already describes zone, state, and location, so the description's added value is mainly clarifying that these are alternative ways to scope the request.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a concrete resource ('National Weather Service alerts') and a clear scope ('Currently-active'), then enumerates alert types and the three supported query modes. This makes the tool easy to distinguish from nearby siblings like weather_current, weather_forecast, and disaster_declarations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance by stating that the tool covers active alerts for a point, state, or NWS zone. It does not explicitly name alternatives or state when not to use it, but the active-alert framing strongly implies its niche relative to forecast/current-condition tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ok_wells_searchARead-onlyIdempotentInspect
Search Oklahoma oil & gas wells by county, operator, API number, and/or well type using the Oklahoma Corporation Commission (OCC) RBDMS well database (keyless public record). Unlike a pure map layer, this returns the OPERATOR, well status, well type (OIL/GAS/DRY/etc.), well name, county, and location for each match, plus the total matching count and a by-operator/by-type breakdown. Use it for 'who operates wells in county X', 'how many wells does operator Y have', or an operator's well portfolio. Oklahoma covers the Anadarko Basin / SCOOP / STACK plays. At least one of county, operator, or api is recommended to narrow the search.
| Name | Required | Description | Default |
|---|---|---|---|
| api | No | API well number (digits; non-digits are ignored). | |
| limit | No | Max well records to return (default 25, max 100). The total matching count is always reported. | |
| county | No | Oklahoma county name (e.g. 'Canadian', 'Kingfisher', 'Grady'). Matched case-insensitively. | |
| operator | No | Operator name or fragment (e.g. 'Chesapeake', 'Devon'). Substring, case-insensitive. | |
| well_type | No | Filter by well type: OIL, GAS, DRY, SWD (saltwater disposal), etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, non-destructive, so the safety profile is known. The description adds useful context beyond that: it identifies the source as a keyless public record (no auth) and enumerates the exact fields returned (operator, status, type, name, county, location) plus the total count and by-operator/by-type breakdown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and source, then returns, then usage. Well organized, but the play-name sentence (Anadarko Basin / SCOOP / STACK) is flavor rather than operational guidance, pushing it slightly past strict conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly carries the return-value burden and does so thoroughly (per-well fields plus aggregate count and breakdown). Annotations handle safety and keyless access is stated, leaving no material gap 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3, and the schema documents every parameter including value examples and casing behavior. The description adds a genuinely non-schema insight: that all five params are optional but at least one of county/operator/api is recommended to narrow results, plus the well_type value hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Oklahoma oil & gas wells), names the authoritative data source (OCC RBDMS), and explicitly lists the filter dimensions (county, operator, API number, well type). The Oklahoma scope is enough to distinguish it from the Texas sibling tx_wells_near without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete example queries ('who operates wells in county X', 'how many wells does operator Y have') that map directly to intended use cases, and advises narrowing with at least one of county/operator/api. It stops short of naming an alternative tool or an explicit when-not-to-use, so it falls just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_by_companyARead-onlyIdempotentInspect
Pre-aggregated payment summary grouped by reporting company across all years. Returns total dollars and payment count per manufacturer/GPO. Use this to rank companies by their pharma-influence spend.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of companies (default 20, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower. The description adds genuine behavioral value by disclosing the aggregation scope ('across all years', pre-aggregated) and the returned measures ('total dollars and payment count per manufacturer/GPO'), which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the aggregation semantics and granularity before the use case. Every sentence carries information; no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing returns, and it does so ('total dollars and payment count per manufacturer/GPO'). Combined with the annotation coverage and the documented limit parameter, the definition is nearly complete, with only the absence of sibling routing as a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the single 'limit' parameter is fully documented in the schema (default 20, max 50). The description adds no parameter-level detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (payment summary grouped by reporting company) with a clear scope ('across all years'). The grouping dimension ('grouped by reporting company', 'per manufacturer/GPO') implicitly distinguishes it from siblings like open_payments_by_specialty and open_payments_state_totals, though those alternatives are never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives a use case ('rank companies by their pharma-influence spend'), which is a clear context hint. However, it offers no exclusions or routing guidance against the many near-identical siblings (open_payments_top, open_payments_national_summary, open_payments_by_specialty), leaving the agent to infer when this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_by_specialtyARead-onlyIdempotentInspect
Payment totals grouped by medical specialty. Reveals which specialties receive the most pharma money: orthopedic surgeons, cardiologists, psychiatrists, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max specialties (default 50) |
TDQS
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 fully covered. The description adds that results are grouped and effectively ranked by volume, but says nothing about the underlying time window, data vintage, or pagination behavior of the aggregation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by a useful illustration of what the output surfaces. No waste, though the example list is decorative rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only aggregation with no output schema, the description plus annotations and schema give an agent enough to call it correctly. Only the data timeframe and expected result shape are unspecified, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema coverage (limit, default 50, max 200), so the schema already carries the semantics. The description adds no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation (payment totals grouped by medical specialty) on a specific dataset implied by the name, which cleanly separates it from siblings like open_payments_by_company and open_payments_national_summary. It does not explicitly name those alternatives, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for specialty-level aggregation and rankings, but never says when to pick it over open_payments_top or open_payments_by_company, nor any prerequisites. Usage must be inferred from the name and grouping statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_national_summaryARead-onlyIdempotentInspect
National-level Open Payments totals and averages across all years. Shows how much money flows from pharma to doctors nationally, broken down by payment-nature category.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 only needs to add value beyond that. It does so by disclosing what the output contains: national totals and averages, all years, and categorization by payment-nature type. This gives the agent a concrete expectation of the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the most important qualifier ('National-level') and immediately specifies the core value and breakdown. Every word contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only summary tool, the description is complete: it states the level of aggregation, the time coverage, the metric types (totals and averages), and the dimension (payment-nature category). No output schema exists, but the description sufficiently sets expectations for what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there are no parameter details to explain. Per the baseline for zero-parameter tools, this is handled well; the description focuses on the data scope instead of unnecessary parameter commentary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (Open Payments national totals and averages), the scope (national-level, across all years), and the breakdown (by payment-nature category). It distinguishes itself from sibling tools like open_payments_by_company and open_payments_state_totals by its explicit national focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the context for use: a national-level overview of Open Payments data across all years. It does not explicitly name alternatives or state when not to use it, but the scope is clear enough for an agent to select it over more granular open_payments siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_ownershipARead-onlyIdempotentInspect
Search Open Payments OWNERSHIP / investment-interest data -- doctors with equity stakes in pharma/device companies. The deepest disclosure category and the strongest conflict-of-interest signal.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Program year (auto-discovers latest if omitted, e.g. '2024') | |
| limit | No | Max rows (default 20, max 100) | |
| state | No | Two-letter state code (e.g. 'CA', 'TX') | |
| doctor | No | Doctor last name (case-insensitive) | |
| company | No | Manufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson' | |
| specialty | No | Medical specialty (partial), e.g. 'Cardiology', 'Orthopaedic' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds semantic context about the data's significance but no behavioral detail such as pagination, auth, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with an em-dash plus a short second sentence. Every phrase earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only search tool with six optional, fully documented parameters and rich annotations. The description identifies the data category well, but with no output schema it does not describe returned fields, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six filters (year, limit, state, doctor, company, specialty) are already documented. The description adds no parameter syntax or semantics, leaving it at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('Open Payments OWNERSHIP / investment-interest data'), clarified by 'doctors with equity stakes in pharma/device companies'. It distinguishes the dataset category from sibling tools implicitly, but does not name any alternative among the many open_payments_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not guidance, and no alternatives named despite siblings like open_payments_search and open_payments_by_company. The phrase 'strongest conflict-of-interest signal' hints at a use case (COI research) but does not give real selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_researchARead-onlyIdempotentInspect
Search Open Payments RESEARCH payments -- clinical research grants and study funding from pharma/device companies to doctors. Separate dataset from general payments.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Program year (auto-discovers latest if omitted, e.g. '2024') | |
| limit | No | Max rows (default 20, max 100) | |
| state | No | Two-letter state code (e.g. 'CA', 'TX') | |
| doctor | No | Doctor last name (case-insensitive) | |
| company | No | Manufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson' | |
| specialty | No | Medical specialty (partial), e.g. 'Cardiology', 'Orthopaedic' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds context about the dataset's nature (clinical research grants, pharma/device to doctors) but no additional behavioral traits such as rate limits, pagination, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste, front-loading the resource and the key differentiator (separate dataset) immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple search tool with no output schema and annotations covering safety, the description adequately conveys the dataset scope and differentiator. It could go slightly further by naming the alternative sibling tool or mentioning default limit behavior, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all six parameters. The description adds no parameter-level meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Open Payments RESEARCH payments), and clarifies it is a separate dataset from general payments. It distinguishes from the general open_payments_search sibling implicitly but does not name it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Separate dataset from general payments' implies when to use this tool versus the general payments search, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_searchARead-onlyIdempotentInspect
Search CMS Open Payments general payments (Sunshine Act) -- pharmaceutical/device company payments to doctors and teaching hospitals. Filter by company, doctor surname, state, specialty, and year. Returns payment amount, type (food/travel/consulting/gift/royalty), drug/device name, and recipient details. 15M+ records per year.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Program year (auto-discovers latest if omitted, e.g. '2024') | |
| limit | No | Max rows (default 20, max 100) | |
| state | No | Two-letter state code (e.g. 'CA', 'TX') | |
| doctor | No | Doctor last name (case-insensitive) | |
| company | No | Manufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson' | |
| specialty | No | Medical specialty (partial), e.g. 'Cardiology', 'Orthopaedic' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered; the description adds real value by naming the data source (CMS/Sunshine Act), the dataset scale (15M+ records per year), and the shape of returned fields. It stops short of noting pagination limits or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, well front-loaded: identity and scope first, filters second, return shape and scale last. No filler, though the returns list slightly duplicates what could live in an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates return fields and notes data volume, giving the agent enough to judge coverage. Minor gaps remain around default year behavior interaction and result limits, though those live in the parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented with examples and constraints. The description merely restates the filterable dimensions (company, doctor surname, state, specialty, year) without adding syntax, matching behavior, or interaction rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource -- searching CMS Open Payments general payments under the Sunshine Act -- and names the covered entity types (pharma/device companies paying doctors and teaching hospitals). It does not, however, distinguish itself from siblings like open_payments_by_company, open_payments_top, or open_payments_state_totals, which an agent would need to route between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no named alternatives among the many open_payments_* siblings. The 'general payments' scope implicitly hints it is not the research-payments tool, but the agent is left to infer that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_state_totalsARead-onlyIdempotentInspect
State-level Open Payments totals. Returns payment totals and average per recipient per state. Useful for state-level pharma-influence research.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max states (default 60) |
TDQS
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 return content (totals and averages per state), but does not disclose pagination, auth needs, rate limits, or how the aggregation is scoped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with scope and return values, with the use case last. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple aggregation tool with no output schema and one well-documented parameter, the description adequately covers what is returned and why to use it. Minor gaps remain around response structure and default limit, but the schema handles the parameter detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'limit' parameter is fully documented in the schema. The description adds no additional meaning about the parameter, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (state-level Open Payments totals) and what it returns (payment totals and average per recipient per state), which implicitly separates it from national, company, and specialty siblings. However, it does not explicitly name or route against those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for state-level pharma-influence research' gives a usage context, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance versus open_payments_national_summary or other Open Payments siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_payments_topARead-onlyIdempotentInspect
Same filters as open_payments_search but sorted by payment amount descending. Use this to find the LARGEST individual pharma payments by company, state, or specialty.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Program year (auto-discovers latest if omitted, e.g. '2024') | |
| limit | No | Max rows (default 20, max 100) | |
| state | No | Two-letter state code (e.g. 'CA', 'TX') | |
| doctor | No | Doctor last name (case-insensitive) | |
| company | No | Manufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson' | |
| specialty | No | Medical specialty (partial), e.g. 'Cardiology', 'Orthopaedic' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the descending sort order, a meaningful behavioral trait, but says nothing about default/max rows, pagination, or return shape 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, and the distinguishing trait (sorted by amount descending) is front-loaded ahead of the usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only top-N query with full schema coverage and a safety-covering annotation set, the description supplies the essential distinguishing behavior. It stops short of describing result volume/pagination, but the limit parameter and annotations cover most of that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description only notes that filters match open_payments_search and adds no syntax or format detail, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (top open payments) and explicitly distinguishes itself from the sibling open_payments_search by the sort order. An agent can tell what this returns and how it differs from the plain search 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (open_payments_search) and the condition that selects this one instead: it is the sorted-descending variant used to find the LARGEST payments. It also enumerates the qualifying dimensions (company, state, specialty), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opportunity_zones_compare_jurisdictionsARead-onlyIdempotentInspect
Which of 2-10 requested states or territories has more final 2018-cycle QOZ designations? Resolves exact jurisdiction selectors and compares total, Low-Income Community, Non-LIC Contiguous, and covered county counts, sorted by total. Includes complete-corpus provenance and tract-vintage/cycle warnings. It compares designation counts, not investment quality, land area, population, current eligibility, or the pending 2027 cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdictions | Yes | Two to ten distinct state/territory selectors. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower; the description still adds that results are sorted by total, that they include complete-corpus provenance and tract-vintage/cycle warnings, and that only the final 2018 cycle is covered. These are meaningful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core comparison question, then comparison dimensions, then caveats. Slightly dense with the negative-coverage list, but every clause carries scope-relevant information and nothing reads as filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and it does: sorted designation counts broken into total/LIC/Non-LIC Contiguous/covered-county buckets, plus provenance and vintage warnings. Combined with annotation coverage, an agent has enough to call it correctly; only the response_format behavior is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully (including the 2-10 item bounds and the markdown/json enum). The description reinforces that jurisdictions are state/territory selectors that get resolved exactly, but adds no syntax or format detail the schema lacks, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (compares) plus resource (final 2018-cycle QOZ designations) and scope (2-10 states/territories), and enumerates the comparison dimensions (total, LIC, Non-LIC Contiguous, covered county counts). It is readily distinguishable from sibling tools such as opportunity_zones_lookup_designation and opportunity_zones_summarize_designations because it is explicitly the multi-jurisdiction comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It frames the exact question the tool answers ('which of 2-10 requested states/territories has more...') and lists what it does NOT cover (investment quality, land area, population, current eligibility, 2027 cycle), which implicitly routes the agent away from misusing it. However, it does not name the alternative sibling tool to use for single-jurisdiction lookups or summaries, so it stops short of explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opportunity_zones_lookup_designationARead-onlyIdempotentInspect
Was this exact 2010 census tract GEOID listed in the final 2018-cycle Qualified Opportunity Zone corpus? Performs an exact lookup against all 8,764 CDFI Fund rows and returns listed/not-listed status, geography, tract type, ACS source, official notices, and provenance. tract_vintage is fixed to 2010: never submit a 2020 tract identifier as if it were equivalent. This is designation evidence, not parcel confirmation or tax/legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| tract_geoid | Yes | Exact 11-digit 2010 census tract GEOID: 2-digit state + 3-digit county + 6-digit tract. | |
| tract_vintage | No | Must be 2010. The designation boundaries and identifiers do not change with the 2020 Census. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behavior, so the safety profile is covered. The description adds real context beyond that: the size of the corpus (8,764 CDFI Fund rows), the enumerated return contents (listed/not-listed status, geography, tract type, ACS source, notices, provenance), and the fixed-vintage rule. It stops short of auth or rate-limit details, but adds substantive value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core question, then the mechanics, then the vintage warning and scope caveat. The enumerated return list is somewhat long, but each sentence carries distinct information and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating what is returned, and it covers the critical vintage constraint and a scope disclaimer. For a single-identifier lookup tool, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a genuine usage warning: tract_vintage is fixed to 2010 and a 2020 identifier must not be substituted. That reinforces and operationalizes the schema's 'Must be 2010' note rather than merely restating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (exact lookup) and resource (2010 census tract GEOID against the final 2018-cycle Qualified Opportunity Zone corpus), framed as a direct yes/no question. It is clearly distinguishable from the search/compare/summarize siblings because 'exact lookup' implies a known identifier rather than a query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'exact lookup' plus the constraint 'never submit a 2020 tract identifier as if it were equivalent' gives clear conditions for correct use, and 'not parcel confirmation or tax/legal advice' sets scope boundaries. However, it never explicitly names the alternative (e.g., opportunity_zones_search_designations) for when the agent lacks an exact GEOID, so routing 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.
opportunity_zones_search_designationsARead-onlyIdempotentInspect
Which final 2018-cycle Qualified Opportunity Zone designations match a tract, county, or jurisdiction? Searches the complete self-hosted CDFI Fund designation workbook with optional jurisdiction, county, and official tract-type filters. Returns bounded, paginated rows with 2010 GEOIDs, source hash, IRS authority, and a 2010-versus-2020 boundary warning. Use for discovery; do not use a 2020-vintage GEOID or treat this archived final cycle as the still-unfinalized 2027 cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum designations. Default 20. | |
| query | No | Words matched against exact 2010 GEOID, state name/code, or county name. | |
| county | No | Exact county/county-equivalent name within the optional jurisdiction. | |
| offset | No | Designations to skip. Default 0. | |
| tract_type | No | Official tract type in the designation workbook. | |
| jurisdiction | No | Exact state/territory name, USPS abbreviation, or two-digit state FIPS in the 2018 designation corpus. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: results are bounded and paginated, carry 2010 GEOIDs, a source hash, IRS authority provenance, and a 2010-vs-2020 boundary warning, plus the caveat that the corpus is an archived final cycle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, each earning its place: purpose, mechanism, return shape, and usage caveat, with the identifying scope front-loaded in the first clause. It is dense but not padded; nothing reads as filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and discharges it by enumerating the returned fields and the GEOID-vintage warning. It does not state the no-filter default behavior, but the schema supplies defaults for limit/offset/response_format, so 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all seven parameters documented, so the schema does the heavy lifting. The description restates the jurisdiction, county, and tract-type filters but adds no syntax, default, or format detail beyond what the schema already provides, which lands at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening question names the exact resource and scope: final 2018-cycle Qualified Opportunity Zone designations from the CDFI Fund workbook, with the searchable dimensions (tract, county, jurisdiction) spelled out. The 'Use for discovery' framing plus the explicit 2018-vs-2027 vintage scoping cleanly separates it from the sibling lookup/summarize/compare tools without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use ('Use for discovery') and two concrete when-not-to-do conditions: don't query with a 2020-vintage GEOID and don't treat this archived final cycle as the still-unfinalized 2027 cycle. It stops short of naming the alternative siblings (lookup_designation, summarize_designations, compare_jurisdictions) that an agent should route to for other needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opportunity_zones_summarize_designationsARead-onlyIdempotentInspect
How are final 2018-cycle QOZ designations distributed overall, by jurisdiction, county, official tract type, or ACS eligibility-data source? Returns bounded, paginated aggregate groups with LIC/non-LIC and county counts plus source evidence. Optional filters narrow to one jurisdiction or tract type. Use for coverage and market-screening summaries; counts do not measure investment attractiveness and do not include eligible/nominated tracts from the 2026-2027 redesignation cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum groups. Default 50. | |
| offset | No | Groups to skip. Default 0. | |
| group_by | No | Aggregation dimension. Default jurisdiction. | |
| tract_type | No | Official tract type in the designation workbook. | |
| jurisdiction | No | Exact state/territory name, USPS abbreviation, or two-digit state FIPS in the 2018 designation corpus. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world. The description adds genuinely useful context beyond them: results are bounded and paginated, include LIC/non-LIC and county counts plus source evidence, and are scoped strictly to the 2018 cycle corpus.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core question the tool answers, then layers in return shape, filters, and caveats. Dense but each sentence carries distinct information; slightly longer than strictly necessary but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of explaining returns (bounded paginated aggregate groups with LIC/non-LIC and county counts plus source evidence), which it does. Filters and scope limitations are covered; only pagination defaults are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (limit, offset, group_by, tract_type, jurisdiction, response_format) are already documented in the schema. The description references the grouping dimensions and optional jurisdiction/tract_type filters but adds no format or syntax detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize) and resource (final 2018-cycle QOZ designations) and enumerates the exact aggregation dimensions (overall, jurisdiction, county, tract type, ACS eligibility source). The aggregate nature clearly separates it from sibling lookup/search designation tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use for coverage and market-screening summaries" gives clear context, and it adds two important exclusions: counts are not a measure of investment attractiveness and do not cover 2026-2027 redesignation tracts. It does not, however, name a specific sibling (e.g. search_designations) as the alternative for non-aggregate needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
options_chainARead-onlyIdempotentInspect
Get the options chain for a stock - calls and puts with strike prices, bid/ask spread, volume, open interest, implied volatility, and available expirations. Use this for "show me AAPL options", "what are the puts on Tesla?", "options expiring this Friday", "what's the implied volatility?", or any options trading question.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by option type (default: "both") | |
| symbol | Yes | Stock ticker symbol (e.g., "AAPL") | |
| expiration | No | Expiration date in YYYY-MM-DD format. Defaults to nearest expiration. |
TDQS
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 useful output content context and examples but does not disclose behavioral details such as data freshness, pagination, snapshot timing, or whether all expirations are returned at once. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the core action and return contents front-loaded, followed by concise example use cases. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple three-parameter schema, full parameter documentation, and safety annotations, the description is mostly complete: it states the resource, the data fields returned, and example queries. It does not explicitly address how this differs from the options_history_chain sibling, which is the main contextual gap, but the provided information is sufficient for an agent to invoke the tool correctly for a current options chain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented in the input schema. The description reinforces the meaning of type and expiration through examples but does not add substantial new semantic information beyond the schema. Baseline 3 is appropriate because 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.
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 the options chain for a stock' and enumerates returned data such as strike prices, bid/ask spread, volume, open interest, implied volatility, and expirations. It is clear but does not explicitly contrast itself with sibling tools like options_history_chain or stock_quote, so it lacks direct sibling differentiation for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit example user intents ('show me AAPL options', 'what are the puts on Tesla?', 'options expiring this Friday', 'what's the implied volatility?'), giving clear context for when to invoke the tool. It does not mention exclusions or alternative tools for historical options chains or other option-related tools, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
options_history_atm_ivARead-onlyIdempotentInspect
Get the historical at-the-money implied volatility time series for a ticker. For each date, returns the strike closest to 50-delta and its IV. Default to call ATM IV but supports puts. Useful for VRP calculations, term structure, regime detection, and as a primary feature in directional/vol forecasting models.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker | |
| call_put | No | Call (default) or Put | |
| expiration | Yes | Expiration date YYYY-MM-DD (pick the same expiration across dates for consistency) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a read-only, idempotent, non-destructive operation. The description adds useful behavioral detail beyond that: the 50-delta strike selection rule, the default call option behavior, and support for puts. It does not deeply describe output formatting or data range, but the annotations lower the burden for safety-related behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: the core function is front-loaded in the first sentence, behavioral details follow, and use cases are listed last. Every sentence adds information without redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with no output schema, the description covers the key inputs, the selection methodology, the default call/put behavior, and typical use cases. It could quantify historical depth or output format, but an agent has enough to decide when to invoke it and what to expect at a high level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some nuance—notably that call ATM IV is the default and puts are supported—but most parameter meaning is already supplied by the schema, including the expiration consistency guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and a specific resource: the historical at-the-money implied volatility time series for a ticker. It further distinguishes itself by explaining that it returns the strike closest to 50-delta and its IV, which separates it from general options history or vol history tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by listing concrete applications: VRP calculations, term structure, regime detection, and vol/directional forecasting. It does not explicitly name alternative sibling tools or exclusion criteria, but the use cases are specific enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
options_history_chainARead-onlyIdempotentInspect
Get the full historical options chain for a ticker on a specific date (2019-2024). Returns every strike + expiration available that day with bid, ask, implied volatility, and all five Greeks (delta, gamma, theta, vega, rho). Use this for point-in-time backtesting, vol surface snapshots, or single-day analysis. Data source: DoltHub free options dataset, indexed in LiveDataLink's R2 storage.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. Coverage: 2019-02-09 to 2024-11-11. | |
| ticker | Yes | Stock ticker (uppercase) |
TDQS
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 non-obvious context: data provenance ('DoltHub free options dataset, indexed in LiveDataLink's R2 storage'), the 2019-2024 coverage window, and the exact payload fields (bid, ask, implied volatility, all five Greeks). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, return contents, use cases, and data source. The core purpose is front-loaded in the first sentence, and there is no redundant language. Only minor tightening would be possible (e.g., folding the date range once instead of mentioning it in both schema and description).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read-only tool with no output schema, the description compensates well by enumerating return fields (bid, ask, IV, five Greeks). It covers what the tool returns, when to use it, and where the data comes from. Minor gaps remain: no explicit differentiation from the general options_chain tool or mention of response volume/pagination expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: date includes the YYYY-MM-DD format and exact coverage range (2019-02-09 to 2024-11-11), and ticker specifies uppercase. The description's mention of '2019-2024' reinforces the schema's date coverage but adds 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.
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 the full historical options chain for a ticker on a specific date (2019-2024).' The phrase 'Returns every strike + expiration available that day' distinguishes it from narrower siblings like options_history_atm_iv, options_history_contract, and options_history_volhist, which cover only subsets of the chain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names three concrete use cases: 'point-in-time backtesting, vol surface snapshots, or single-day analysis.' This gives clear context for when to select this tool, though it stops short of explicitly naming sibling alternatives and stating when NOT to use them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
options_history_contractARead-onlyIdempotentInspect
Track a specific options contract (same ticker + strike + expiration) over time. Returns all daily observations of that contract with its evolving bid/ask, IV, and Greeks. Useful for studying single-contract behavior leading up to expiration, gamma squeezes around specific strikes, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| strike | Yes | Strike price (e.g. 450.00) | |
| ticker | Yes | Stock ticker | |
| call_put | Yes | Contract type | |
| expiration | Yes | Expiration date YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context: it returns all daily observations with specific data fields (bid/ask, IV, Greeks) and describes the temporal scope ('over time'). This goes beyond the annotations and clearly communicates the output nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The primary purpose is front-loaded, followed by the return payload and concrete use cases. Every sentence earns its place and there is no unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter tool with no output schema, the description is quite complete. It explains what the tool returns, the fields included, and provides context on why an agent would use it. It doesn't specify output format or date-sorting details, but these are not critical for a read-only historical data tool, especially with no date parameters to configure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a clear description. The description reinforces that ticker, strike, and expiration collectively identify the contract, but it doesn't add substantial new meaning beyond the schema. The baseline of 3 applies because the schema does the heavy lifting and the description only slightly reinforces the parameter grouping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tracks a specific options contract (same ticker + strike + expiration) over time and returns daily observations with evolving bid/ask, IV, and Greeks. It uses a specific verb 'track' and names the resource. It distinguishes itself from sibling tools like options_chain or options_history_chain by emphasizing single-contract behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: 'useful for studying single-contract behavior leading up to expiration, gamma squeezes around specific strikes, etc.' This clearly indicates when to use this tool, though it doesn't explicitly name alternatives or state when not to use it. The single-contract focus implicitly differentiates it from chain-level or cross-contract tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
options_history_volhistARead-onlyIdempotentInspect
Get per-day implied volatility and historical volatility summary for a ticker. Returns iv_current, hv_current, plus year-high/year-low markers for each. Useful for IV rank/percentile signals, vol regime detection, and time-series feature engineering. Much smaller payload than full chain data.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker (uppercase) | |
| end_date | No | Optional YYYY-MM-DD upper bound | |
| start_date | No | Optional YYYY-MM-DD lower bound |
TDQS
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 structurally. The description adds meaningful behavioral context beyond those annotations by specifying the exact returned fields, the per-day granularity, and the payload-size tradeoff compared to full chain data. This is useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler: the first states the core operation and outputs, the second gives concrete use cases, and the third explains the payload tradeoff. Every sentence earns its place, and the most identifying information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately communicates what the tool returns and why it is useful. It covers core fields, granularity, and use context. It could be slightly more explicit about how the optional date range affects the returned summary and what 'year-high/year-low markers' mean, but the schema covers parameter bounds and the domain terms are reasonably self-explanatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage: ticker is described as 'Stock ticker (uppercase)' and start_date/end_date are described as optional YYYY-MM-DD bounds. The description does not need to repeat these. It adds mild context by framing the result as per-day summary, but it does not materially extend parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('per-day implied volatility and historical volatility summary for a ticker') and names concrete return fields (iv_current, hv_current, year-high/year-low markers). It is clear on its own, and the 'smaller payload than full chain data' note helps separate it from chain-heavy tools, but it does not explicitly name or contrast a sibling tool, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear use cases: 'IV rank/percentile signals, vol regime detection, and time-series feature engineering.' It also implies when not to use it by noting the payload is much smaller than full chain data. However, it does not explicitly name alternatives or state exclusion conditions, so the guidance is contextual rather than fully directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
org_funding_profileARead-onlyIdempotentInspect
One-call federal-money + nonprofit profile for an organization: USAspending contracts and grants recipient summaries (total dollars, award counts, top agencies), IRS 990 exempt-organization details (revenue/assets/income, NTEE, subsection, exempt status) by EIN or name+state, and optionally open Grants.gov OPPORTUNITIES (clearly labeled as available funding to apply for, NOT awards received). Sources degrade gracefully. Premium cross-source synthesis; federal dollars are name-matched and should be verified.
| Name | Required | Description | Default |
|---|---|---|---|
| ein | No | Optional EIN for an exact IRS 990 match. | |
| state | No | Optional 2-letter state to disambiguate a nonprofit name search. | |
| organization | Yes | Organization / company / nonprofit name. | |
| include_opportunities | No | Also list open Grants.gov funding opportunities (available, not awarded). Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only and idempotent, and the description adds significant behavioral context: sources degrade gracefully, federal dollars are name-matched and should be verified, and Grants.gov opportunities are clearly labeled as NOT awards. These are exactly the caveats an agent needs to interpret results correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated, and it front-loads the core purpose with 'One-call federal-money + nonprofit profile.' Each clause adds useful information, though the phrase 'premium cross-source synthesis' is a bit promotional and not strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-source aggregate tool with no output schema, the description covers the main content areas, lookup paths, optional behavior, and important caveats. It does not specify the exact response structure, but the logged data elements and degradation note provide enough contextual grounding 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters, including the optional EIN exact-match behavior, state disambiguation, and the include_opportunities default. The description mostly reinforces these details rather than adding new parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool produces a combined profile of federal money and nonprofit data for an organization, naming the specific sources and data elements. It is distinct from narrower siblings like spending_recipient_summary or nonprofit_details, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when you want federal funding and nonprofit 990 data in one call, and optionally include Grants.gov opportunities. It also usefully clarifies that opportunities are available funding, not awarded funds. However, it does not explicitly state when to prefer a more specialized sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
package_trackARead-onlyIdempotentInspect
Identify the likely carrier for a package tracking number and return a direct tracking link. Supports common USPS, UPS, FedEx, DHL, and Amazon formats. Live delivery status, location, estimated arrival, and history are not fetched by this tool yet; open the returned carrier link for the current shipment record. Just paste the tracking number - the carrier is detected automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| tracking_number | Yes | Package tracking number from any carrier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already show readOnlyHint=true and idempotentHint=true, and the description adds meaningful behavioral detail: it returns a carrier link rather than live shipment data, and it relies on automatic carrier detection. The stated limitation about not fetching delivery status is particularly valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: it opens with the core function, then adds scope, limitations, and usage guidance in a natural order. Every sentence earns its place without repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with rich annotations, the description fully covers what the tool does, what it returns, and what it intentionally does not provide. Since there is no output schema, the explicit statement that it returns a direct tracking link is essential and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single tracking_number parameter with 100% coverage, so the baseline is 3. The description adds value by explaining that the carrier is detected automatically and listing supported carrier formats, which clarifies what kinds of input are valid beyond the schema's generic phrasing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific purpose: identify the likely carrier for a tracking number and return a direct tracking link. It also scopes the tool to common USPS, UPS, FedEx, DHL, and Amazon formats, making its function unambiguous and distinct from broader package-lookup tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: paste a tracking number and the tool auto-detects the carrier. It also explicitly warns that live delivery status, location, and history are not provided, so an agent knows not to use this tool for real-time shipment updates. It does not name an alternative tool, but no obvious sibling provides the same function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_detailsARead-onlyIdempotentInspect
Get full catalog metadata for a single scholarly work by OpenAlex id (e.g. 'W2741809807') or DOI (e.g. '10.1038/nature12373'). Returns title, authors, venue, year, citation count, open-access status, and a free full-text URL when available. For a bare arXiv id, use paper_get_text with paper_key 'arxiv:' to read indexed text, or paper_search by title for OpenAlex metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | OpenAlex id ('W...') or DOI ('10.x/...'). For arXiv ids, use paper_get_text or paper_search instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly/idempotent/non-destructive behavior. The description adds useful behavioral detail by enumerating the returned fields (title, authors, venue, year, citation count, open-access status, full-text URL when available), including a conditional. Only minor behaviors such as not-found handling are left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences each serve a distinct purpose: core operation, return content, and alternative-tool routing. No redundant or filler text; 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema, the description covers accepted inputs, return fields, and the one likely misrouting case (bare arXiv IDs). An agent has enough to select and invoke the tool correctly without inspecting related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single id parameter is fully documented in the schema (OpenAlex ID or DOI, arXiv exclusion), and schema coverage is 100%. The description reinforces this with concrete examples and alternative routing, but does not add substantial new parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('full catalog metadata for a single scholarly work'), and accepted identifiers (OpenAlex ID or DOI). It also names alternatives for arXiv IDs, distinguishing paper_details from paper_get_text and paper_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when paper_details is appropriate (given an OpenAlex ID or DOI) and when to switch to paper_get_text or paper_search for bare arXiv IDs. This is clear routing guidance beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_fulltext_searchARead-onlyIdempotentInspect
Search INSIDE the indexed open-access corpus (arXiv + PubMed Central OA full text) for a phrase or keywords and get back the matching passages, each with the paper title, authors, and a snippet around the match. This is the headline feature: agents can find where a finding or method is discussed across open-access papers. Optionally restrict to one paper by paper_key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum passages to return (default 10, max 50). | |
| query | Yes | Phrase or keywords to find inside the papers, e.g. 'scaled dot-product attention', 'gradient checkpointing'. | |
| paper_key | No | Optional: restrict the search to a single indexed paper by its corpus key, e.g. 'arxiv:2310.12345'. |
TDQS
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 valuable behavioral context beyond that: the corpus scope (arXiv + PMC OA), the return shape (passages with title/authors/snippet), and the optional restriction to a single paper. It omits ranking, pagination, and empty-result behavior, keeping it at a strong but not perfect level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and return format, then usage context, then the optional parameter. The 'headline feature' clause is slightly promotional but still earns its place by signaling primary use, so the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations cover safety, the schema covers parameters, and no output schema exists, the description supplies the missing pieces: corpus scope and result shape. Remaining gaps (ranking, pagination beyond limit, empty results) are minor for a search tool, making it nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters (query, limit, paper_key) are already documented with examples and constraints. The description reinforces 'phrase or keywords' for query and the optional single-paper restriction for paper_key, but adds little syntax or meaning beyond the schema, fitting the baseline of 3 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Search INSIDE'), names the exact corpus (arXiv + PubMed Central OA full text), and states what comes back (matching passages with paper title, authors, and a snippet). The uppercase 'INSIDE' and 'full text' implicitly separate it from metadata-oriented siblings like paper_search, so an agent can distinguish its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a clear use case ('agents can find where a finding or method is discussed across open-access papers') and notes the optional per-paper restriction. It does not name alternatives such as paper_search or paper_get_text, nor does it state when not to use this tool, so guidance stops short of the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_get_textARead-onlyIdempotentInspect
Return the full text of an indexed open-access paper by its corpus key (e.g. 'arxiv:2310.12345'), paginated by passage. Use from_seq + max_passages to page through it. For works not indexed locally, returns a pointer to find the open-access URL via paper_search / paper_details.
| Name | Required | Description | Default |
|---|---|---|---|
| from_seq | No | Passage index to start from (0-based, default 0). | |
| paper_key | Yes | Corpus key of an indexed paper, e.g. 'arxiv:2310.12345' or 'pmc:PMC1234567'. | |
| max_passages | No | Maximum passages to return per call (default 40, max 200). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent/open-world profile, but the description adds non-obvious behavior: output is paginated by passage, and non-indexed works return a pointer rather than an error. That pointer-vs-text behavior is genuinely useful and not derivable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler: purpose first, paging mechanics second, edge case third. Every sentence carries distinct information and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially covers returns (paginated passages, or a pointer for unindexed works), which is the key thing an agent needs. It stops short of describing the exact response shape (passage sequence numbering, how to detect the end of pagination), a minor gap for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are fully self-documenting. The description reinforces the intent of from_seq + max_passages for paging but adds no syntax or constraints beyond what the schema already states (0-based, default, max 200). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return the full text'), a specific resource ('indexed open-access paper'), and the identifying input format with a concrete example ('arxiv:2310.12345'). It also distinguishes itself from paper_search/paper_details by noting those are the fallback for non-indexed works, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear guidance: use from_seq + max_passages to page, and use paper_search/paper_details when the work isn't indexed locally. This names alternatives and the condition that selects them. It does not, however, contrast itself against the sibling paper_fulltext_search, which an agent might reasonably confuse with this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_searchARead-onlyIdempotentInspect
Search ~250M scholarly works (papers, preprints, datasets) live via OpenAlex by keyword across title, abstract, and full text, with optional author, year, and open-access-only filters. Ranked by relevance. Returns each work's OpenAlex id, DOI, title, authors, venue, year, citation count, and a free full-text URL when open access. Use paper_fulltext_search to search inside the locally indexed open-access corpus.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Optional exact publication year, e.g. 2023. | |
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Keywords across title/abstract/fulltext, e.g. 'attention mechanism transformers', 'CRISPR off-target'. | |
| author | No | Optional author-name fragment, e.g. 'Hinton', 'Doudna'. | |
| open_access_only | No | If true, only return open-access works (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds real value beyond them: it discloses that results come live from OpenAlex, are ranked by relevance, and that a free full-text URL is included only for open-access works. It omits rate limits and pagination behavior, but the limit param covers the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. Scope and source come first, then ranking and return fields, then sibling routing last – an ideal front-loaded order for an agent deciding whether to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the burden of enumerating the returned fields (OpenAlex id, DOI, title, authors, venue, year, citation count, OA full-text URL). Combined with source, ranking, filters, and sibling routing, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters with examples and defaults. The description reinforces that author, year, and open-access-only are optional filters and that the keyword spans title/abstract/fulltext, but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search scholarly works), names the data source and scale (~250M works via OpenAlex), and specifies the searched fields (title, abstract, full text). It is clearly distinguishable from paper_details, paper_get_text, and paper_fulltext_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to paper_fulltext_search for searching the locally indexed open-access corpus, implying this tool is for live, broad-coverage keyword search. There is no explicit 'when not to use' beyond that single alternative, so it falls just 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.
paper_statusARead-onlyIdempotentInspect
Report the scholarly store status: the catalog is served live via OpenAlex (~250M works), plus the local D1 indexed-corpus counts (papers with full text indexed, total indexed passages, per-source breakdown, last refresh timestamp).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 clarifying that the catalog is served live via OpenAlex while corpus counts come from local D1, and it mentions the last refresh timestamp. This helps the agent understand data freshness and source boundaries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and then compactly lists the key data elements. Every phrase contributes meaningful information, and there is no fluff or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool, the description is complete: it names the data sources, the types of counts provided, the per-source breakdown, and the freshness indicator. Since there is no output schema, the description gives enough detail about the expected payload to guide correct use and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is no parameter burden on the description. The baseline for 0 params is 4, and the description appropriately focuses on what the status report contains rather than any input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Report the scholarly store status.' It then enumerates exactly what the status covers (live OpenAlex catalog, local D1 corpus counts, per-source breakdown, refresh timestamp), which clearly distinguishes it from sibling search/detail tools like paper_search or paper_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose statement implies the right usage context: use this tool when the agent or user needs a status/health overview of the scholarly store, not when searching for specific papers or texts. It does not explicitly name alternatives or exclusion criteria, but the context is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parcel_coverageARead-onlyIdempotentInspect
List which states/counties the parcel tools currently cover and how many parcels each holds. Coverage grows by state over time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 value by specifying the exact output content (states/counties and parcel counts) and the evolving nature of coverage, which is useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary output is stated first, and the dynamic coverage note provides important context without bloating the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless metadata tool with annotations covering safety and openness, this description is complete. It tells the agent what the tool returns and that the result may change over time, which is all an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema description coverage, so the schema is trivially complete. The description appropriately focuses on what the tool returns rather than parameter details, matching the baseline for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('states/counties the parcel tools currently cover' with parcel counts), which clearly identifies what the tool does. It is easily distinguished from sibling tools like parcel_search or parcel_details, which operate on individual parcels rather than describing coverage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for checking current coverage and parcel counts, and the note that coverage grows by state over time signals that this is a dynamic, approximate-status tool. It does not explicitly name alternatives or exclusion conditions, but the context is sufficient for an agent deciding between this and parcel data lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parcel_detailsARead-onlyIdempotentInspect
Get the full record for one parcel by its account id: address, current assessed value (total, land, improvement), land use, zoning, year built, structure square footage, lot size, coordinates, and most recent sale. Valuation and characteristics only, no owner name.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | 2-letter state code. Coverage: 'MD' (Maryland statewide) or 'TX' (Harris County / Houston only). Defaults to MD. | |
| account_id | Yes | Parcel account id (from parcel_search). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as readOnly and idempotent, so the safety profile is clear. The description adds meaningful behavioral scope by listing exactly what data is included and explicitly excluding owner name. Minor gaps remain, such as not mentioning whether fields can be null or whether recent sales may be absent, but these are not critical given the readOnly annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence that front-loads the core action and then lists the returned fields in a compact, scannable way. Every phrase adds value, and the 'no owner name' clarification is a useful boundary statement with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup tool with no output schema, the description is quite complete: it names the input, the source of the input, the full set of returned characteristics, and the notable exclusion. It could be slightly stronger by mentioning what happens when data is unavailable or by pointing explicitly to parcel_sales_history for more sale detail, but these are not required for basic correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters, including state coverage and the fact that account_id comes from parcel_search. The description reinforces that account_id is the lookup key but adds no additional parameter detail beyond the schema. This meets the baseline for fully covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), the resource ('full record for one parcel'), and the key identifier ('account id'), and it enumerates the specific fields returned. It is easy to distinguish from sibling tools like parcel_search and parcel_sales_history in practice, though it does not explicitly name an alternative. The phrase 'Valuation and characteristics only, no owner name' helps set precise expectations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used after obtaining an account_id, and the schema notes the id comes from parcel_search. However, it does not explicitly state when to prefer this over siblings such as parcel_sales_history or parcel_search, nor does it list exclusion criteria beyond 'no owner name.' Usage context is present but mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parcel_sales_historyARead-onlyIdempotentInspect
Get the recorded sale history (price + date, no party names) for one parcel by account id. Useful for valuation, appreciation, and comp analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | 2-letter state code. Coverage: 'MD' (Maryland statewide) or 'TX' (Harris County / Houston only). Defaults to MD. | |
| account_id | Yes | Parcel account id (from parcel_search). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context beyond annotations by disclosing what the result contains ('price + date') and what it deliberately omits ('no party names'). This is valuable transparency for an agent deciding whether the tool satisfies a user request.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first front-loads the operation, scope, and output shape; the second adds practical use cases. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-parameter tool with no output schema, the description adequately covers what is returned (price + date, no party names), the input source (account id), and the intended applications. The schema handles parameter coverage details, so nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The main description only restates the 'by account id' usage and does not add parameter-level details beyond what the schema already provides for state coverage and account_id sourcing. No extra semantic value is contributed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a clearly defined resource ('recorded sale history') with explicit scope ('for one parcel by account id'). It further specifies the content ('price + date, no party names'), which distinguishes it from parcel details or value-history tools. The use-case clause adds clarity without blurring the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool ('Useful for valuation, appreciation, and comp analysis') and the schema parameter description instructs that account_id comes from parcel_search, implying a precursor step. However, it does not explicitly state when not to use this tool or name alternatives, so it stops short of a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parcel_searchARead-onlyIdempotentInspect
Search property parcels by street address and get assessed value, land use, and most recent sale for each match. Coverage: Maryland statewide (all 24 jurisdictions, includes sale prices) and Harris County, TX / Houston (appraised value only, no sale prices since Texas is a non-disclosure state). Returns valuation and characteristics only, not owner names. Use parcel_details for the full record.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 10, max 50). | |
| query | Yes | Street address fragment, e.g. '100 Main St' or 'Charles St'. | |
| state | No | 2-letter state code. Coverage: 'MD' (Maryland statewide) or 'TX' (Harris County / Houston only). Defaults to MD. | |
| county | No | Optional county name to narrow results, e.g. 'Baltimore', 'Montgomery'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real value beyond that: jurisdiction-level coverage limits, a documented data gap (no sale prices in TX), and an explicit statement of what is excluded (owner names). It does not mention pagination behavior or rate limits, but for a read-only lookup that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, and the most decision-relevant facts come first: what is returned, then where coverage applies, then what is excluded and the alternative. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so (valuation and characteristics, not owner names). Coverage scope, the geographic limitation, and the sibling route for full records are all present, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents limit, query, state (including the MD/TX coverage constraint) and county with examples. The description repeats the state-level coverage idea but adds no per-parameter syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search), resource (property parcels), and input (street address), then names the returned fields (assessed value, land use, most recent sale). It also explicitly differentiates itself from the sibling parcel_details ('Use parcel_details for the full record'), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use context via the coverage boundaries (Maryland statewide with sale prices vs. Harris County/Houston appraised-value-only), states a when-not (no owner names returned), and names the alternative for full records. The 'Texas is a non-disclosure state' note explains why sale prices are absent, which prevents an agent from misreading empty results as an error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patent_assignee_searchBRead-onlyIdempotentInspect
Find patent assignees (companies / organizations) by name fragment. Returns assignee id, organization name, location, and total patents owned. Ranked by patent count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| organization | Yes | Company or organization name fragment (e.g. 'Apple', 'Genentech'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds useful behavior in stating the result set (id, org name, location, total patents) and the sort order (ranked by patent count), though it says nothing about pagination or ranking ties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler: purpose and scope first, then the return shape and ordering. Every clause carries information and it is front-loaded correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter search tool with no output schema, the description covers purpose, input nature (name fragment), return fields, and ranking. It lacks any note on matching behavior or pagination, but nothing critical to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema and the baseline is 3. The description reinforces that organization is a name fragment and notes the result ranking, but adds no syntax or matching-semantics detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (patent assignees) and clarifies the entity type as companies/organizations, which distinguishes it from patent_inventor_search and patent_search. It stops short of explicitly naming a sibling to contrast against, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the basic use case (lookup by name fragment) but never states when to prefer this over patent_search or patent_inventor_search, nor any prerequisites or exclusions. Guidance is entirely implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patent_detailsARead-onlyIdempotentInspect
Fetch full details for a single patent by its USPTO patent_id (e.g. '10757852'). Returns title, grant date, type, abstract, assignees, inventors, and citation count.
| Name | Required | Description | Default |
|---|---|---|---|
| patent_id | Yes | USPTO patent id, e.g. '10757852'. |
TDQS
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 value by enumerating the returned fields, which is especially useful given there is no output schema. It does not discuss error behavior or rate limits, but for a simple 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler. The first sentence front-loads the action and key parameter; the second efficiently lists the return payload. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup tool, the description is nearly complete: it states the identifier format, what the tool returns, and the read-only nature via annotations. It does not specify behavior when a patent_id is invalid or not found, but this is a minor gap for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter patent_id is already documented in the schema with the same example ('10757852'). The description reinforces that the parameter is a single USPTO patent identifier but adds 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch full details') and resource ('single patent by its USPTO patent_id'), explicitly distinguished from sibling search tools. It also lists the concrete return fields (title, grant date, type, abstract, assignees, inventors, citation count), leaving 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the use case: retrieving complete details for one patent when the patent_id is already known. It does not explicitly name alternatives like patent_search for discovery, but the single-patent-by-ID framing provides clear context that this is not a search or listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patent_inventor_searchARead-onlyIdempotentInspect
Find inventors by last name (and optional first name). Returns inventor id, name, location, and total patent count. Use the inventor name in patent_search to find their patents.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| last_name | Yes | Inventor last name (required). | |
| first_name | No | Optional inventor first name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/destructive=false, so the safety profile is covered. The description adds value beyond that by disclosing the returned fields (inventor id, name, location, total patent count), which matters 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded, followed by the return shape and the follow-up routing hint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the return fields, and it closes the loop by pointing to patent_search for the next step. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented with defaults and bounds. The description only restates last_name/first_name, adding no syntax, format, or matching-behavior detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find inventors') plus the exact filter keys (last name, optional first name), which separates it from patent_assignee_search and patent_search 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear forward guidance ('Use the inventor name in patent_search to find their patents'), establishing the inventor-lookup-first workflow. It does not, however, say when to prefer this over the sibling patent_assignee_search, so no explicit exclusion is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patent_recentARead-onlyIdempotentInspect
List the most recently granted US patents since a start date (defaults to 30 days ago), newest first. Useful for monitoring newly issued patents.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| start_date | No | Grant-date lower bound (YYYY-MM-DD). Defaults to 30 days ago. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description usefully adds the default 30-day window and newest-first ordering, but says nothing about result size, rate limits, or data freshness beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the operation and scope, followed by the use case. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage, complete annotations, and no output schema, the description covers what an agent needs: scope, default window, and ordering. It could note the sibling alternatives, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema (limit max/default, start_date format/default). The description restates the start_date default and ordering rather than adding new semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (recently granted US patents) with explicit scope (since a start date, default 30 days, newest first). This clearly distinguishes it from sibling tools like patent_search or patent_details, which are keyword/detail oriented rather than recency feeds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Adds a use case ('useful for monitoring newly issued patents') which implies when to reach for it, but never names or excludes alternatives such as patent_search or patent_assignee_search. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patent_searchARead-onlyIdempotentInspect
Search granted US patents by keyword (matched against title and abstract), title, and/or grant date range. Provide at least one of query, title, start_date, end_date. Returns title, grant date, assignee, and inventors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 25, max 100). | |
| query | No | Keyword(s) matched across patent title and abstract (e.g. 'lithium battery anode'). | |
| title | No | Keyword(s) matched against the patent title only. | |
| end_date | No | Grant-date upper bound (YYYY-MM-DD). | |
| start_date | No | Grant-date lower bound (YYYY-MM-DD). |
TDQS
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 structurally. The description adds useful behavioral context by enumerating the returned fields (title, grant date, assignee, inventors), which matters because no output schema exists. It says nothing about result caps beyond the schema's limit, but that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste: the search scope and matched fields come first, then the minimum-input rule, then the return shape. Every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the returned fields, and it states the minimum-input requirement. It omits details like default row count or result ordering, though the schema's limit parameter covers the most important sizing concern.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query/title/date semantics are already documented in the schema, giving a baseline of 3. The description adds the cross-parameter constraint that at least one of four fields must be supplied — something the schema cannot express given zero required parameters — but otherwise restates the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Search granted US patents') and scopes the match fields (keyword against title and abstract, title, grant date range). This implicitly separates it from siblings like patent_assignee_search and patent_inventor_search, but it never names those alternatives explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage constraint — 'Provide at least one of query, title, start_date, end_date' — which tells the agent the minimum viable call. It does not, however, state when to prefer this tool over patent_assignee_search, patent_inventor_search, or patent_recent, so no exclusion guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prescriber_ties_profileARead-onlyIdempotentInspect
One-call identity + industry-financial-ties transparency profile for a US healthcare prescriber. Joins two keyless federal sources: the NPPES NPI Registry (identity - NPI, specialty, city/state, active status) and CMS Open Payments / Sunshine Act (industry payments disclosed to that prescriber - total dollars, payment count, top paying manufacturers, and associated drugs/products for the most recent program year with data). Provide a last_name (ideally with first_name + state) or an exact 10-digit npi. The name resolver picks the NPPES record that genuinely matches the requested name (never a blind top hit), and payments are pinned to that exact NPI across recent program years. This is a TRANSPARENCY profile drawn from public records, NOT a judgment: industry payments to physicians are lawful and publicly disclosed, and their presence is not evidence of wrongdoing. A source that fails is noted, not fatal. Premium cross-source synthesis; verify against the primary sources.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | No | Optional exact 10-digit NPI; overrides name search. | |
| year | No | Optional 4-digit CMS program year (e.g. '2023'); defaults to the most recent year with disclosed payments. | |
| state | No | Optional 2-letter state to disambiguate the NPPES match (e.g. 'OH'). | |
| last_name | No | Prescriber last name (e.g. 'Nissen'). Provide this or an npi. | |
| first_name | No | Optional prescriber first name to disambiguate (e.g. 'Steven'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/idempotent annotations by disclosing key behavioral traits: the name resolver picks a genuine NPPES match rather than a blind top hit, payments are pinned to that exact NPI, a failing source is noted rather than fatal, and the result is a transparency profile rather than a judgment. The 'verify against primary sources' caveat also sets appropriate expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but front-loaded and largely information-dense. It covers purpose, inputs, matching behavior, source-failure handling, and interpretation caveats. Minor promotional or redundant phrasing such as 'Premium cross-source synthesis' could be trimmed, but the content earns its place overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by enumerating the key returned data points for both identity and payments. It also addresses the most recent program year default, disambiguation needs, failure behavior, and the appropriate interpretation of industry payments. The tool is complex enough that this level of detail is necessary and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage, so the baseline is 3. The description adds meaningful context beyond the schema: it explains that last_name should ideally be combined with first_name and state, that an exact NPI overrides the name search, and that the resolver matches genuinely rather than picking a top hit. This elevates the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: a one-call profile combining prescriber identity from NPPES with industry payment data from CMS Open Payments. It specifies concrete output elements (NPI, specialty, city/state, active status, payment totals, top manufacturers) and differentiates itself from single-source tools like npi_lookup or open_payments_search by emphasizing the cross-source synthesis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear caller guidance: provide last_name, ideally with first_name and state, or an exact 10-digit npi. It also explains that the npi overrides name search. It does not explicitly name sibling alternatives or state when not to use this tool, but the input guidance and source combination make usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_to_rent_ratioARead-onlyIdempotentInspect
Compute the buy-vs-rent price-to-rent ratio for a US metro or state: Zillow home value (ZHVI) divided by annualized rent (ZORI x 12). Returns the ratio plus a rule-of-thumb signal (below ~15 favors buying, above ~20 favors renting). Premium synthesis over the real-estate market store. Rule-of-thumb only, not financial advice.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | Metro or state name/id (e.g. 'Austin, TX', 'California', or a Zillow region id). | |
| region_type | No | Optional region type filter: 'metro' or 'state'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior, so the bar is lower. The description adds meaningful behavioral context: it returns both a numeric ratio and a rule-of-thumb signal, includes interpretative thresholds, and explicitly labels itself as not financial advice. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the main computation and scope appear first, followed by the output shape and an important caveat. The phrase 'premium synthesis' is somewhat vague filler, but it does not undermine overall efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only computation tool with full schema coverage, the description is complete. It explains the formula, the input scope, the returned values, and the interpretive signal. The absence of an output schema is adequately compensated by describing what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters well with examples. The description reinforces that 'region' is a US metro or state and contributes formula context, but it does not need to add parameter-level detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific operation: computing the price-to-rent ratio for a US metro or state via a named formula (ZHVI / (ZORI x 12)). It distinguishes itself from sibling real-estate tools like realestate_home_values and realestate_rents by framing it as a synthesized buy-vs-rent metric, not raw data retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is appropriate: when a combined buy-vs-rent ratio and signal is needed rather than raw home values or rents. It doesn't explicitly name alternatives or exclusions, but the formula and 'synthesis' wording make the intended use clear relative to the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
product_liability_screenARead-onlyIdempotentInspect
One-call product-safety + liability read for a MANUFACTURER or brand. Joins three public-record legs: product recalls (CPSC consumer products + openFDA drug/device/food enforcement, keyed by manufacturer), federal-court litigation (CourtListener dockets whose caption actually names the brand), and CFPB consumer-complaint volume. Returns a rolled-up read (CLEAN / WATCH / ELEVATED LIABILITY SIGNALS) with recall count and severity (FDA Class I / death-related = high), litigation hits (total + last-3-years), and complaint volume, plus an itemized interpretation. A leg that fails is noted, not fatal. NHTSA vehicle recalls need a specific year+make+model so are out of scope here (use recall_screen for a vehicle). Premium cross-source synthesis; informational public-record synthesis, NOT legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Optional lower-bound date (YYYY-MM-DD) for FDA recalls. | |
| state | No | Optional 2-letter state to scope the CFPB complaint leg (e.g. 'CA'). | |
| company | No | Alias for manufacturer; either may be supplied. | |
| manufacturer | Yes | Manufacturer or brand name to screen (e.g. 'Peloton', 'Fisher-Price'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, and non-destructive behavior, so the description adds value by disclosing that partial leg failures are noted rather than fatal, describing the classification output, and flagging that it is informational synthesis rather than legal advice. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than minimal but every sentence contributes functional information: sources, output shape, failure handling, scope exclusion, and disclaimer. It is front-loaded with the one-call purpose, though the closing 'Premium cross-source synthesis' phrase is mildly promotional and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates well by specifying the returned classification levels, recall severity logic, litigation metrics, complaint volume, and itemized interpretation. It also covers failure behavior, out-of-scope cases, and an explicit alternative, making it nearly self-sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents manufacturer, since, state, and company alias. The description reinforces that the tool keys on manufacturer/brand and mentions FDA severity and litigation time windows, but it adds little parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names a specific resource and action: product-safety + liability read for a manufacturer/brand. It enumerates the three data sources (CPSC/openFDA recalls, CourtListener litigation, CFPB complaints) and the rolled-up output, which clearly differentiates it from single-source siblings like cpsc_recall_search or cfpb_complaint_aggregations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description positions the tool as a one-call cross-source synthesis and explicitly routes vehicle recall needs to recall_screen. It does not exhaustively enumerate when to prefer this over each single-source sibling, but the scope and alternative guidance are clear enough for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
property_lookupARead-onlyIdempotentInspect
Look up real estate property data by street address or account number. Returns assessed value, market value, land value, improvement value, year built, square footage, lot size, acreage, exemptions (homestead, over 65, disabled veteran), and legal description. Use this for questions like "how much is this property worth?", "what's the tax value of this address?", "what are the property details?", or any real estate lookup. Owner names, heirs, deed opinions, and title conclusions are not returned. Coverage note: currently demo dataset for Montgomery County, TX (sample properties only). Broader live county coverage is not enabled by default and must be confirmed before purchase. Email support@livedatalink.ai to discuss a source-verified coverage requirement.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Street address or appraisal district account number | |
| county | No | County name (default: montgomery) | montgomery |
TDQS
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 important behavioral context beyond annotations: it discloses that the dataset is a demo covering only Montgomery County, TX, that sample properties only are included, and that broader county coverage must be confirmed before purchase. This is valuable, non-obvious information that shapes agent expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence contributes: the core lookup purpose, returned fields, example questions, exclusions, and the demo coverage limitation. It is front-loaded with the main purpose and avoids vague filler, though the support email sentence is slightly tangential to agent invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description appropriately enumerates the returned fields and clearly states what is not returned, covering agent expectations well. It also communicates the coverage limitation and required confirmation for broader use. Missing details like response format or error behavior are minor gaps for a simple read-only lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, so the description does not need to add much here. It does restate that queries can be street addresses or account numbers, but that is already in the schema, and no additional syntax, format, or county behavior details are provided beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up real estate property data by street address or account number and lists the exact fields returned, which makes the purpose immediately understandable. It does not explicitly name sibling tools like property_search_owner or property_value_history to draw a contrast, so it falls short of a 5, but the scope is specific enough to distinguish the primary use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit example questions and says to use the tool for real estate lookups, which provides clear context on when to invoke it. It also notes that owner names, heirs, deed opinions, and title conclusions are not returned, which is a useful exclusion, but it does not name alternative tools that should be used for those needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
property_search_areaARead-onlyIdempotentInspect
Search for real estate properties in a geographic area. Filter by zip code, subdivision, neighborhood, or street name. Use this for questions like "what homes are in this zip code?", "show me properties in this neighborhood", "find houses on Main Street", "what's the average home value in this area?", or any area-based property search. Returns a list of matching records with addresses, values, and property types; owner names are not returned. Coverage note: the current Montgomery County, TX connector returns demo/sample records only.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit ZIP code to search within | |
| county | No | County name (default: montgomery) | montgomery |
| street | No | Street name to search (e.g., 'Main St') | |
| subdivision | No | Subdivision or neighborhood name |
TDQS
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 meaningful behavioral context beyond those hints: it discloses that owner names are omitted from results, that the output is a list of addresses/values/property types, and that the current connector only returns demo/sample records. This is valuable and goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then filters, then usage examples, then return contents and a data caveat. It is somewhat long with four example questions, but each sentence adds useful routing or expectation-setting information without significant waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, four-optional-parameter search tool with no output schema, the description is complete: it states what is returned, what is not returned, and the critical caveat that current results are demo/sample records. An agent can select and call this tool with accurate expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters. The description mentions zip, subdivision, neighborhood, and street, but adds little beyond what the schema already provides. It reinforces intent and example phrasings but does not materially deepen parameter-level semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search for real estate properties in a geographic area.' It also distinguishes itself from owner-based searches by explicitly noting that owner names are not returned, and it frames itself as the area-based property search tool among many real-estate siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear, explicit use cases: 'Use this for questions like...' with concrete examples for zip, neighborhood, street, and average value queries. It does not explicitly name an alternative tool or state when not to use it, but the examples provide sufficient context for an agent to route area-based questions here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
property_search_ownerARead-onlyIdempotentInspect
Filter the bounded Montgomery County, TX demo property records by a supplied owner-name query. Partial matching is supported, but owner names are not returned. Matching results include addresses, values, property types, and account numbers for the sample records. This is not an owner-verification or people-finder service. Coverage note: the current Montgomery County, TX connector returns demo/sample records only.
| Name | Required | Description | Default |
|---|---|---|---|
| county | No | County name (default: montgomery) | montgomery |
| owner_name | Yes | Full or partial owner name to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and non-destructive, but the description adds substantial behavioral context: partial matching is supported, owner names are not returned, and the data source is demo/sample only. This prevents unrealistic expectations and gives an agent a much clearer picture of the call's outcome. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary action and input. Each subsequent sentence adds distinct value: output fields, non-goals, and coverage limitations. There is no redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with full schema coverage and strong annotations, the description covers everything needed for correct invocation: the query target, matching behavior, returned fields, and the demo-data caveat. There is no output schema, so the explicit list of returned fields is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents owner_name and county adequately. The description reinforces that partial matching is supported, but this largely mirrors the schema's 'Full or partial owner name' phrasing. With the schema doing the heavy lifting, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Filter the bounded Montgomery County, TX demo property records by a supplied owner-name query.' It also clarifies what the tool is not ('not an owner-verification or people-finder service'), which helps an agent distinguish it from lookup tools. The output fields are enumerated, leaving little 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use context: use it when searching the Montgomery County demo property set by owner name. It explicitly warns against using it for owner verification or people finding, and it discloses the demo-only data limitation. However, it does not name specific sibling tools as alternatives, which would have made routing fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
property_value_historyARead-onlyIdempotentInspect
Get property value history and tax assessment trends over multiple years. Shows year-by-year market value, land value, improvement value, and percentage change. Use this for questions like "how has this property's value changed?", "what's the appreciation rate?", "show me the tax assessment history", "has this home gone up in value?", or any property valuation trend question. Requires account number (use property_lookup first to find it). Coverage note: the current Montgomery County, TX connector returns demo/sample records only.
| Name | Required | Description | Default |
|---|---|---|---|
| county | No | County name (default: montgomery) | montgomery |
| account_number | Yes | County appraisal district account number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description adds the critical caveat that the current Montgomery County, TX connector returns demo/sample records only. It also discloses the exact value components returned, giving the agent behavioral expectations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by concrete usage examples, a prerequisite, and an important data caveat. Every sentence contributes actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only tool with full schema coverage and safety annotations, the description is complete. It covers what data is returned, when to use it, the prerequisite lookup step, and the demo-data limitation, leaving no critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful context by explaining that account_number comes from property_lookup and that the county parameter currently maps to demo/sample data for Montgomery County. This procedural guidance goes beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get property value history and tax assessment trends over multiple years.' It enumerates the exact data shown (market value, land value, improvement value, percentage change) and explicitly ties it to valuation trend questions, distinguishing it from lookup tools like property_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit example questions and a clear prerequisite: 'Requires account number (use property_lookup first to find it).' This tells an agent when and how to invoke the tool, though it does not explicitly state alternatives 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.
pypi_packageARead-onlyIdempotentInspect
Look up a Python (PyPI) package: latest version, summary, license, author, homepage, and required Python version. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | PyPI package name, e.g. 'requests'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar is lower. The description adds value by specifying the output fields (latest version, summary, license, author, homepage, Python version) and the Keyless authentication requirement, which are useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact, front-loaded sentence states the tool's purpose, lists the key returned fields, and ends with the essential auth note. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple single-parameter lookup with no output schema, and the description adequately conveys both the input concept and the expected return fields. Combined with annotations covering the read-only, idempotent, non-destructive profile, nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'name' parameter already documented as 'PyPI package name, e.g. 'requests'." The description adds no additional parameter meaning beyond reinforcing that it is a Python package lookup, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('look up') and resource ('Python (PyPI) package'), and enumerates the exact fields returned. The PyPI naming clearly distinguishes it from sibling tools like npm_package and cargo_crate without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for looking up Python package metadata from PyPI, and the 'Keyless' note clarifies there is no auth setup required. It does not explicitly name alternatives or state when not to use it, so it misses the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rdap_domainARead-onlyIdempotentInspect
Registration record for a domain via RDAP (the modern WHOIS): registrar, creation/update/expiration dates, status flags, nameservers, and DNSSEC. Useful for due diligence and OSINT on a company's web presence. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name, e.g. 'example.com'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds 'Keyless' (no authentication required) and lists the record fields returned, which helps the agent set expectations beyond the annotation booleans.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler. The key information is front-loaded, the field list is compact, and the 'Keyless' note earns its place as a practical usage detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with rich annotations and no output schema, the description is complete: it names the input type, enumerates the expected output contents, gives a use case, and notes authentication. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'domain' is already described clearly in the schema. The description does not add substantial 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (domain) and the exact kind of data returned via RDAP, with a concrete field list. The domain focus clearly distinguishes it from sibling rdap_ip, so an agent can tell them apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear context of use: 'due diligence and OSINT on a company's web presence.' It does not explicitly name alternatives or state when not to use it, but the domain/RDAP framing makes the primary use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rdap_ipARead-onlyIdempotentInspect
Ownership record for an IP address or block via RDAP: the network name, owning organization, ASN, CIDR range, and country. Pairs with ip_reputation and entity lookups. Keyless.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IPv4 or IPv6 address, e.g. '8.8.8.8'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, idempotent behavior, so the description's main added value is the 'Keyless' note, which is useful auth context. It also explains what data the lookup surfaces, adding meaningful behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The main purpose is front-loaded, followed by useful output fields, related tools, and auth requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter read-only lookup with no output schema, the description adequately covers what the tool returns, how it relates to neighboring tools, and that no key is required. Nothing essential is missing 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the single 'ip' parameter as an IPv4 or IPv6 address with an example. The description adds the phrase 'or block,' which provides some extra nuance, but does not clarify accepted block formats or otherwise significantly enrich parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns an RDAP ownership record for an IP address or block, and enumerates the specific fields returned (network name, owner, ASN, CIDR range, country). It differentiates from sibling rdap_domain by targeting IPs rather than domains, and from ip_reputation by focusing on ownership rather than reputation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context by saying it 'pairs with ip_reputation and entity lookups,' implying complementary use. However, it does not explicitly state when to use this tool versus alternatives, nor does it give exclusions or conditions that would steer an agent toward a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realestate_home_valuesARead-onlyIdempotentInspect
Get the typical home value for a metro or state (Zillow Home Value Index): the latest value plus 1-year and 5-year-ago values and percent change. Pass a region name or id.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | Metro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile. The description adds useful output and aggregation context but does not disclose caveats such as data vintage/revisions or how ambiguous region names are resolved, which would be more valuable in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence packs in the data source, scope, output fields, and invocation hint 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.
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, the description covers what will be returned and what input to provide. It could be slightly stronger with an explicit 'not for individual addresses' exclusion or output-shape note, but nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the region parameter already carries descriptive examples and the id fallback. The description's 'Pass a region name or id' reinforces but does not add meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Get ... typical home value ... Zillow Home Value Index') plus the exact fields returned (latest, 1-year and 5-year-ago values, percent change). This clearly distinguishes it from sibling real-estate tools like realestate_rents or realestate_trend by data source and aggregation scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the use case: aggregate home values for a metro or state, not property-level or rental data. It tells the caller to pass a region name or id, but does not explicitly name sibling 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.
realestate_market_screenARead-onlyIdempotentInspect
Get a read-only market screen for a metro or state: latest Zillow typical home value (ZHVI) and asking rent (ZORI), with 1-year and 5-year changes where available. Returns market context only, not a parcel record, comparable sale, owner/title result, appraisal, score, or investment decision.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | Metro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply readOnlyHint, idempotentHint, and destructiveHint=false, and the description reinforces and adds context: it returns only market context, and historical changes are included only 'where available.' 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences: the first delivers the operation, scope, and data payload; the second delivers a compact exclusion list that prevents misuse. There is no filler or redundant elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only tool with safety covered by annotations, the description explains the input scope, the exact returned metrics, the availability caveat, and what type of answer this is not. That is sufficient 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents the sole parameter completely, including allowed forms ('Austin, TX', 'Houston', 'Texas') and Zillow region id. The description's 'metro or state' phrasing adds no semantic value beyond the schema, so the high-coverage baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get a read-only market screen for a metro or state,' then names the exact metrics returned (ZHVI, ZORI, 1/5-year changes). The exclusion list ('not a parcel record, comparable sale, owner/title result, appraisal, score, or investment decision') clearly separates it from the many property/real-estate siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the appropriate scope (metro/state market context) and gives explicit when-not guidance by listing what the tool does not return. It does not name the specific sibling tools to use for parcel, comparable, or appraisal needs, which would make the routing guidance fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realestate_rentsARead-onlyIdempotentInspect
Get the typical asking rent for a metro or state (Zillow Observed Rent Index): the latest value plus 1-year and 5-year-ago values and percent change. Pass a region name or id.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | Metro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id. |
TDQS
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 useful transparency by specifying exactly what the response contains: the latest value, 1-year and 5-year-ago values, and percent change. This is valuable because there is no output schema to convey that information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence with no filler. It front-loads the core operation, states the geographic scope and data source, enumerates the returned values, and ends with the input instruction. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup tool with no output schema, the description is largely complete: it defines the input, geographic scope, metric, and response contents. Minor absences like currency units or data freshness are not critical given the tool's simplicity and strong annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, region, and schema description coverage is 100%. The description repeats that a region name or id can be passed, but adds no meaning beyond the schema, which already provides concrete examples like 'Austin, TX' and 'Texas.' Baseline 3 is appropriate because the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get the typical asking rent for a metro or state.' It names the underlying Zillow Observed Rent Index and the exact time-frame values returned, which clearly distinguishes it from sibling tools like realestate_home_values or realestate_trend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for use—rent data for metros/states—and instructs the caller to 'Pass a region name or id.' However, it does not explicitly contrast with alternative real-estate tools or state when not to use it, so the routing guidance is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realestate_searchARead-onlyIdempotentInspect
Find real-estate markets (metro areas or states) by name and get each one's latest typical home value (Zillow Home Value Index). Use this to discover the region name/id before calling realestate_home_values, realestate_rents, or realestate_trend.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional filter: 'metro' or 'state'. | |
| limit | No | Max rows (default 10, max 50). | |
| query | Yes | Name fragment, e.g. 'Austin', 'Bay Area', 'Texas'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered by structured data. The description adds only that the payload contains a latest typical home value (ZHVI) per matched market; it says nothing about matching behavior, result ordering, or what happens when the query matches nothing. Some added value, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, and the value proposition plus the discovery-before-fetch workflow are front-loaded in that order. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return-value burden and it does state the key returned metric (latest typical home value) and that region name/id are available for chaining. It is complete enough to call correctly, though it omits anything about the shape of the result set or empty-match behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, type and limit are already documented in the schema, including the enum-like 'metro'/'state' filter and the default-10/max-50 limit. The description only echoes 'by name' and '(metro areas or states)', adding no syntax or format detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Find real-estate markets (metro areas or states) by name') and explicitly names what is returned ('each one's latest typical home value (Zillow Home Value Index)'). It also names the three sibling tools it is not (realestate_home_values, realestate_rents, realestate_trend), so an agent can separate it from them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule: 'Use this to discover the region name/id before calling realestate_home_values, realestate_rents, or realestate_trend.' The alternatives and the condition that selects this tool over them are both stated, 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.
realestate_statusARead-onlyIdempotentInspect
Report real-estate store coverage: number of regions, total monthly data points, the latest month available, and last refresh. Data is Zillow Research (ZHVI + ZORI), metro and state level.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint=false, so no safety contradiction exists. The description adds useful context about the underlying dataset (Zillow Research ZHVI + ZORI, metro/state level) and the presence of a refresh timestamp, but it does not discuss behavior such as staleness interpretation, update frequency, or any operational caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first front-loads the purpose and the exact metrics returned, and the second scopes the dataset and geographic granularity. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless status tool with no output schema, the description is complete: it names all reported metrics, the data source, and the geographic levels. An agent can decide whether this tool covers its need and can interpret the response without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema description coverage is effectively 100%, so there are no parameter meanings the description must supply. Baseline for a zero-parameter tool is 4; the description staying silent on parameters is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the verb 'Report' and a specific resource ('real-estate store coverage'), then enumerates four concrete metrics. This unambiguously distinguishes it from sibling data-query tools such as realestate_home_values, realestate_rents, and realestate_trend: they deliver values, while this one reports dataset coverage and freshness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking data-store coverage, total data points, latest month, and refresh status rather than querying actual property values. However, it never explicitly states when to prefer this over the realestate_* siblings or mentions any exclusions, so the agent must infer the use case from the status-oriented phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realestate_trendARead-onlyIdempotentInspect
Get the monthly time series of home values (ZHVI) or rents (ZORI) for a metro or state, to chart or analyze the trend.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | 'home_value' (ZHVI, default) or 'rent' (ZORI). | |
| months | No | How many recent months to return (default 24, max 360). | |
| region | Yes | Metro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id. |
TDQS
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 domain context, specifying monthly Zillow ZHVI/ZORI series and metro/state geography, but it does not add behavioral details beyond the annotations, such as pagination, missing-data behavior, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, front-loaded sentence that states the operation, the two metrics, the granularity, the geography, and the use case. Every clause carries information and there is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is read-only with a simple three-parameter schema that is fully documented, and no output schema exists. The description adequately covers what the tool returns (a monthly time series) and the supported metrics, but it could be slightly stronger with a note about default month behavior or the nature of the series beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines metric values, month defaults and maximums, and accepted region formats. The description echoes the metric and region concepts but adds no syntax, constraints, or examples 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), resource (monthly time series of home values or rents), and scope (metro or state), making the core purpose clear. It does not, however, differentiate itself from nearby siblings like realestate_home_values or realestate_rents, leaving the agent to infer why this combined trend tool should be chosen over those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to chart or analyze the trend' implies the intended use case, so usage is more than absent. But there is no explicit when-to-use guidance, no when-not-to-use condition, and no named alternative among the many realestate siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_screenARead-onlyIdempotentInspect
One-call product-safety recall sweep across CPSC (consumer products), openFDA (drug/device/food enforcement), and NHTSA (vehicles). Provide a product/keyword/manufacturer query and/or a full vehicle (year+make+model). Results are normalized, deduped within and across sources, severity-rolled (FDA Class I or death-related = high), and summarized with a by-classification breakdown. A source that fails is noted, not fatal. Premium cross-source synthesis. Verify against the official sources before acting.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Product, keyword, or manufacturer to screen (e.g. 'infant formula', 'Acme Corp'). | |
| since | No | Optional lower-bound date (YYYY-MM-DD) for FDA recalls. | |
| domains | No | Optional subset of sources to check; default checks all applicable. | |
| vehicle_make | No | Vehicle make (e.g. 'Toyota'). | |
| vehicle_year | No | Vehicle model year (required with make+model for NHTSA). | |
| vehicle_model | No | Vehicle model (e.g. 'Camry'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds rich behavioral context beyond annotations: results are normalized, deduped within and across sources, severity-rolled with FDA Class I or death-related as high, summarized by classification, and source failures are noted but not fatal. Annotations cover read-only/idempotent/open-world safety, and the description adds processing and resilience semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and mostly tight, with the source scope and input modes stated first. The phrase 'Premium cross-source synthesis' is a marketing claim that does not add actionable meaning, though the rest of the description earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-source aggregation tool with no output schema, the description covers input modes, normalization, dedupe, severity roll-up, classification summary, and failure tolerance. Annotations already cover the safety profile, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds only the and/or pattern for query versus full vehicle input, without further detail on since or domains. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (sweep) and resource (product-safety recalls) across named sources CPSC, openFDA, and NHTSA. It distinguishes itself from single-source siblings like cpsc_recall_search, fda_drug_recalls, and vehicle_recalls by being a one-call cross-source aggregate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains input modes: product/keyword/manufacturer query and/or full vehicle year+make+model. It positions itself as a one-call comprehensive sweep, implying use over individual source tools, but does not explicitly name when to prefer or avoid alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recreation_facility_detailARead-onlyIdempotentInspect
Full record for a single federal recreation facility by its RIDB FacilityID: contact, GPS, reservation URL, accessibility, agency.
| Name | Required | Description | Default |
|---|---|---|---|
| facility_id | Yes | RIDB FacilityID, e.g. '234064'. |
TDQS
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 useful context about the data source (RIDB) and the fields included, but it does not disclose behaviors such as error handling for invalid FacilityIDs, response size, or pagination. With the annotations covering 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that leads with the core purpose, then provides a compact list of return categories. Every word contributes value, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-ID lookup with comprehensive annotations and only one parameter, the description sufficiently covers what the agent needs: the identifier type, the scope (federal recreation facility), and the payload contents. It does not specify behavior for missing or invalid IDs, but given the tool's low complexity and the field list, this is a minor gap rather than a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains facility_id as a RIDB FacilityID with an example. The description repeats this identifier concept but adds no new semantic depth beyond reaffirming that the returned record is for that facility. The baseline of 3 applies because the schema carries the documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Full record for a single federal recreation facility.' It clearly distinguishes this from sibling search tools (recreation_search_facilities, recreation_nearby) by emphasizing a single record retrieved by RIDB FacilityID, and it enumerates the content categories returned. This is unambiguous and differentiates the tool well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for fetching a complete record when a FacilityID is already known, which is useful context. However, it does not explicitly say when not to use it or mention alternatives like recreation_search_facilities for discovering facilities by criteria. Usage guidance is present only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recreation_nearbyARead-onlyIdempotentInspect
List federal recreation facilities within a radius of a coordinate. Useful for proximity searches (e.g. campgrounds near a property, fishing spots near a city). Radius is in kilometers.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Center latitude. | |
| lon | Yes | Center longitude. | |
| limit | No | Max rows (1-50, default 10). | |
| activity | No | Optional activity filter. | |
| radius_km | No | Radius in kilometers (default 30, max ~320). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety and idempotency are covered. The description adds a genuine scope disclosure ('federal' facilities) and the radius unit, but says nothing about pagination, result ordering, or whether the radius is a hard cutoff. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core behavior before the use-case examples. The trailing unit note slightly duplicates the schema, keeping it from a perfect score, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent proximity list tool with a fully documented 5-parameter schema and annotations covering the safety profile, the description is essentially sufficient. With no output schema, a brief note on what a facility record contains or on default result size would have closed the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (lat, lon, limit, activity, radius_km) already carries its own description with units and defaults. The description's 'Radius is in kilometers' merely repeats radius_km's schema text, adding no new meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List), resource (federal recreation facilities), and scoping mechanism (within a radius of a coordinate), which is clear enough for an agent to distinguish it from keyword-based siblings like recreation_search_facilities. It never names those siblings, however, so the differentiation is inferred 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives concrete usage context (campgrounds near a property, fishing spots near a city), which tells the agent the right scenario: coordinate-anchored proximity search. It stops short of any when-not guidance or explicit routing to the other recreation_* search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recreation_search_campsitesARead-onlyIdempotentInspect
Search individual campsites (sites within a campground): loop, accessibility, type, reservable. Provide facility_id to list sites within a known campground, or query to free-text search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (1-50, default 10). | |
| query | No | Free-text match on campsite name. Optional. | |
| facility_id | No | RIDB FacilityID to list campsites within. Optional. |
TDQS
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 fully covered and the description carries a lighter burden. The description adds only the returned attribute set (loop, accessibility, type, reservable) and confirms the facility/query split; it says nothing about pagination, result caps, or empty-result behavior beyond what the schema's limit 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, zero filler, with the capability statement front-loaded before the calling instructions. The second sentence is slightly dense with the two-branch instruction, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, three-parameter search tool with no output schema, the definition covers purpose, the two input modes, and the attributes of interest, and the annotations cover the safety profile. It is nearly sufficient; only sibling routing and paging behavior are absent, which are minor for this shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (limit, query, facility_id) are already documented in the schema. The description restates the facility_id and query semantics at roughly the same level of detail as the schema, adding no new syntax, format, or precedence rules, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Search") and a precisely scoped resource ("individual campsites (sites within a campground)"), and clarifies the granularity with the parenthetical. It does not explicitly distinguish itself from siblings like recreation_search_facilities or recreation_search_recareas, so an agent must infer the campsite-vs-campground boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful routing between its own two input modes ("Provide facility_id to list sites ... or query to free-text search"), which is genuine usage context. However, it never says when to use this tool versus the sibling recreation_* search tools, nor any when-not condition, 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.
recreation_search_facilitiesARead-onlyIdempotentInspect
Search US federal recreation facilities (campgrounds, picnic areas, trailheads, marinas, visitor centers) across NPS, USFS, BLM, USACE, BOR, FWS. Filter by name, state, or activity (e.g. 'CAMPING', 'FISHING', 'HIKING').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (1-50, default 10). | |
| query | No | Free-text match on facility name. | |
| state | No | Two-letter state code, e.g. 'CA'. | |
| activity | No | Activity name (CAMPING, FISHING, HIKING, etc.). |
TDQS
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 fully covered. The description adds the useful context that results span six federal agencies (open-world breadth), but says nothing about result count behavior, default limits, or empty-result handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: capability and scope first, filter options second. No filler and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, filter-based search with no output schema, the description covers what the tool returns (facility types), where it searches (six agencies), and the filter dimensions. It could optionally note result limits or how to drill into a single facility via recreation_facility_detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description restates the same filters (name, state, activity) and gives activity examples ('CAMPING', 'FISHING', 'HIKING') without adding format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search US federal recreation facilities') and enumerates the facility types and agencies covered, so the scope is concrete. It does not, however, distinguish itself from close siblings like recreation_search_campsites or recreation_search_recareas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming filterable fields (name, state, activity), but never says when to pick this tool over recreation_search_campsites, recreation_search_recareas, or recreation_facility_detail. Usage is inferable but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recreation_search_recareasARead-onlyIdempotentInspect
Search federal recreation AREAS (broader units: a whole national forest, a national park unit, a BLM management area) by name, state, or activity. For higher-level place search use this; for specific facilities (campgrounds, trailheads) use recreation_search_facilities.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (1-50, default 10). | |
| query | No | Free-text match on recreation-area name. | |
| state | No | Two-letter state code. | |
| activity | No | Activity name. |
TDQS
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 and idempotency profile is fully covered. The description adds the limited extra context that results are federal recreation areas, but says nothing about pagination, result size, or matching behavior beyond what annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler. The resource scope is front-loaded before the sibling-routing sentence, so the most important selection cue comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool whose annotations cover the safety profile and whose four simple parameters are fully described in the schema, the description supplies what an agent needs to select it. Since no output schema exists, a sentence on return shape or pagination would have made it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (limit, query, state, activity) is already documented in the schema. The description echoes the same three filter dimensions (name, state, activity) but adds no syntax, format, or matching semantics beyond it; baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (federal recreation AREAS) and immediately defines the granularity with concrete examples (whole national forest, park unit, BLM management area). It also names the sibling it is meant to be distinguished from, so an agent can place it correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes between this tool and recreation_search_facilities: higher-level place search here, specific facilities (campgrounds, trailheads) there. This is exactly the when-to-use/when-to-use-something-else guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reg_cfr_searchARead-onlyIdempotentInspect
Full-text search the current Code of Federal Regulations (eCFR, all 50 titles) for a phrase or keywords. Returns matching sections with their citation (e.g. '40 CFR 98.411'), hierarchy heading, a text snippet, effective date, and the official eCFR URL, plus the total match count. Use reg_cfr_section to read a full section's text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max sections to return (default 20, max 100). | |
| query | Yes | Phrase or keywords to find in the CFR, e.g. 'greenhouse gas reporting'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description usefully discloses the return shape (citation, hierarchy heading, snippet, effective date, eCFR URL, total match count), which adds context, but does not disclose pagination behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly-packed sentences, front-loaded with the verb and resource. Every clause earns its place: scope, return fields, and the sibling routing hint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only 2 params at full schema coverage and no output schema, the description covers purpose, result fields, and sibling guidance well. Slight gap: no mention of result ordering, snippet length, or how the total match count can be used (e.g., for pagination), but it is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both 'query' and 'limit' are documented in the schema with examples and constraints (default 20, max 100). The description adds no syntax or format details 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Full-text search') and a precisely scoped resource ('the current Code of Federal Regulations (eCFR, all 50 titles)'). Explicitly distinguishes itself from the sibling reg_cfr_section by naming it and its complementary role (reading full text vs. searching).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly routes agents to reg_cfr_section when they need a full section's text rather than a search result. Does not explicitly state when NOT to use this tool versus reg_search or reg_document, so the guidance is clear but not exhaustive across all regulatory siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reg_cfr_sectionARead-onlyIdempotentInspect
Get the current text of a specific Code of Federal Regulations section. Provide the title number, part, and section (e.g. title 40, part '98', section '98.411'). Returns the section's plain text, the date it is current as of, and the official eCFR URL.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional point-in-time ISO date yyyy-mm-dd; defaults to current. | |
| part | Yes | CFR part, e.g. '98'. | |
| title | Yes | CFR title number 1-50, e.g. 40. | |
| section | Yes | CFR section, e.g. '98.411'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), lowering the bar. The description adds genuine value by disclosing what comes back: the section's plain text, its current-as-of date, and the official eCFR URL. It does not mention rate limits or the point-in-time behavior of the date parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then a concrete example, then return contents. Every sentence earns its place and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the return fields (plain text, currency date, eCFR URL). Combined with full schema coverage and safety annotations, an agent has what it needs to invoke it correctly; only the optional date parameter's semantics go unaddressed in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description reinforces title/part/section with a concrete example but adds no new syntax or constraints, and does not mention the optional 'date' parameter at all. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Get') plus precise resource ('current text of a specific Code of Federal Regulations section'), and the example citation (title 40, part '98', section '98.411') makes the identifier-based retrieval unambiguous. It does not explicitly name or contrast with siblings like reg_cfr_search or reg_cfr_titles, so differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'specific ... section' combined with a worked example implies the use case (you already know the exact citation), but there is no explicit when-to-use statement, no when-not, and no routing to reg_cfr_search for keyword lookup. Usage 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.
reg_cfr_titlesARead-onlyIdempotentInspect
List the 50 Code of Federal Regulations titles with their name and the date each title's text is current as of. Useful for discovering title numbers (e.g. Title 26 = Internal Revenue, Title 40 = Protection of Environment) before calling reg_cfr_section.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 output scope—50 titles with names and current-as-of dates—but no further behavioral caveats are necessary for a zero-parameter read-only listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: the first states exactly what is returned, and the second gives a concrete use case with useful examples (Title 26, Title 40). No filler, no repetition, 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.
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, the description is complete. It states what is listed, what fields are included, and why the agent would call it. Although there is no output schema, the return values are described in plain language, and annotations cover behavioral expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is effectively 100%, so there are no parameter semantics to document. The baseline for a zero-parameter tool is 4, and the description does not need to compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'List', and clearly identifies the resource: the 50 Code of Federal Regulations titles with their name and current-as-of date. It also distinguishes itself from reg_cfr_section by positioning this tool as the discovery step for title numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this is useful for discovering title numbers before calling reg_cfr_section, which gives clear when-to-use guidance. It does not state when not to use it or mention alternatives like reg_cfr_search, but the main routing cue is present and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reg_documentARead-onlyIdempotentInspect
Get full metadata and a plain-text body excerpt for a single Federal Register document by its document number (e.g. '2026-09905'). Returns title, type, agencies, abstract, affected CFR parts, a leading excerpt of the full rule text, and the URL for the complete document.
| Name | Required | Description | Default |
|---|---|---|---|
| document_number | Yes | Federal Register document number, e.g. '2026-09905'. |
TDQS
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 it returns only a 'leading excerpt' rather than the full rule text, and that a URL is provided for the complete document, setting accurate expectations about response scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the action and input, the second lists the outputs. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup tool with no output schema, the description sufficiently covers the input, the retrieval scope, and the expected return content. An agent has enough information to invoke the tool correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents document_number with a clear example, so schema coverage is 100%. The description repeats the document-number lookup concept but adds no new semantic 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: retrieving full metadata and a plain-text body excerpt for a single Federal Register document by document number. It clearly distinguishes itself from related search/CFR tools by emphasizing 'single' document lookup and enumerating the returned fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this when you already have a specific Federal Register document number and need that document's metadata and excerpt. It does not explicitly name alternatives like reg_search for finding documents, so it stops short of a full when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reg_searchARead-onlyIdempotentInspect
Search the Federal Register (the daily journal of the US government) for rules, proposed rules, notices, and presidential documents by keyword, with optional agency, document type, and publication-date filters. Returns each document's number, title, type, publishing agency, abstract, and URL. Use reg_document to get the full text of one document.
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Keyword(s), e.g. 'methane emissions', 'overtime rule'. | |
| type | No | Optional document type: 'rule', 'proposed-rule', 'notice', or 'presidential-document'. | |
| limit | No | Max rows (default 20, max 100). | |
| agency | No | Optional agency slug, e.g. 'environmental-protection-agency', 'securities-and-exchange-commission'. | |
| published_to | No | Published on/before, ISO date yyyy-mm-dd. | |
| published_from | No | Published on/after, ISO date yyyy-mm-dd. |
TDQS
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 and side-effect profile is fully covered by structured data. The description adds the return-field inventory (number, title, type, agency, abstract, URL), which is useful, but does not disclose pagination behavior, rate limits, or how 'matching' is performed (full-text vs. metadata). With annotations carrying the behavioral load, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then return shape, then the routing alternative. No filler, no repetition of schema details, and the most decision-relevant information (what it searches, what it returns, where to go next) is in the right order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with 100% schema coverage and no output schema, the description covers purpose, scope, return fields, and sibling routing – nearly everything an agent needs. The only gap is that with no output schema, the description could clarify result ordering or pagination behavior, but the enumerated fields largely satisfy the return-value burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – every parameter including term, type, limit, agency, published_from, and published_to has an inline description with examples and formats. The description adds only a high-level summary of the filter set (keyword, agency, document type, date), which largely restates what the schema already documents. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Federal Register), enumerates the document categories covered (rules, proposed rules, notices, presidential documents), and names the available filter dimensions. It explicitly distinguishes itself from the sibling reg_document by defining itself as the search entry point vs. the full-text retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence performs explicit routing: 'Use reg_document to get the full text of one document.' Combined with the fact that all parameters are optional (keyword-only discovery is possible), the description makes the when-to-use contract clear and names the natural alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_entityARead-onlyIdempotentInspect
Canonical cross-source entity resolution - the join-key primitive to run before other combos. Given a company/organization name (plus optional ticker/CIK/EIN/state hints), fans out across the LiveDataLink sources that carry a strong identifier and returns the best-matched canonical identity plus the IDs it resolves to: SEC EDGAR (CIK, ticker), GLEIF (LEI plus the ownership chain - direct and ultimate parent LEI and the reported subsidiary count), NPPES (organizational NPI for healthcare entities), IRS 990 (EIN), USAspending (federal recipient name), EPA ECHO (facility registry id), and an OFAC/EU/UN/BIS sanctions screen (match/no-match flag). Returns a compact canonical-IDs block with per-source confidence, an entity-type guess, an ownership summary, and an overall match confidence - distinct from entity_dossier's full narrative. A source that fails is noted, not fatal. UEI/SAM.gov and RDAP domain-owner ids are omitted (not wired sources). Premium cross-source synthesis; verify identifiers before relying on a join.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Optional SEC CIK hint. | |
| ein | No | Optional EIN for an exact IRS 990 nonprofit match. | |
| name | Yes | Company or organization name to resolve (e.g. 'Apple', 'Lockheed Martin', 'Red Cross'). | |
| state | No | Optional 2-letter state to disambiguate nonprofit/EPA name searches. | |
| ticker | No | Optional stock ticker hint to pin the SEC EDGAR match (e.g. 'AAPL'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only, idempotent, and non-destructive, so the description adds significant behavioral value beyond them: it discloses fan-out across multiple LiveDataLink sources, per-source confidence, the non-fatal handling of source failures, omitted source classes (UEI/SAM.gov, RDAP), and the caveat to verify identifiers before relying on a join.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with its core role and value proposition. Every major element—sources, outputs, failure behavior, exclusions, verification caveat—earns its place. It is longer than minimal, but the length is justified by the tool's breadth; only minor phrasing like 'Premium cross-source synthesis' adds limited signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly: compact canonical-IDs block, per-source confidence, entity-type guess, ownership summary, sanctions flag, and overall confidence. It also covers edge behavior ('A source that fails is noted, not fatal'), source exclusions, and verification guidance, making it complete for a high-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already explains each parameter's role—CIK hints, EIN for exact nonprofit match, state for disambiguation, ticker to pin SEC EDGAR. The description restates these hints at a high level but adds no meaningful semantic details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific role—'Canonical cross-source entity resolution' and 'join-key primitive'—and enumerates exactly what the tool returns: canonical identity, source-specific IDs, confidence, entity-type guess, ownership summary, and sanctions flag. It explicitly distinguishes itself from entity_dossier's full narrative, so the agent can differentiate this tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong contextual guidance: 'run before other combos' signals when to use it as a key-resolution step, and 'distinct from entity_dossier's full narrative' points to an alternative. However, it does not explicitly name near-sibling tools like entity_resolve or state when NOT to use this tool, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_get_changesARead-onlyIdempotentInspect
Return entities added or updated since a given ISO date for a chosen source list. The four official lists do not all expose a public delta feed, so this filters the cached snapshot by listedOn.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return. Defaults vary per tool. | |
| since | Yes | ISO date string (e.g. 2026-01-01) to compute the delta from. | |
| source | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the bar is lower. The description adds real value by disclosing the data-freshness model: results come from filtering a cached snapshot by listedOn rather than a live upstream delta feed, which affects how stale results may be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding. The primary behavior is front-loaded and the mechanism note follows as supporting context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys what is returned (added/updated entities) and the underlying mechanism. Minor gaps remain around pagination/limit defaults and return shape, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; 'since' and 'limit' are documented in the schema, while the 'source' enum has no description. The description compensates by clarifying that 'since' is an ISO date and, crucially, that the delta is computed against the listedOn field, which the schema never states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: return entities added or updated since an ISO date for a chosen source list. The 'delta feed' framing implicitly separates it from the sibling screen/search tools (sanctions_screen_entity, sanctions_search_alias), but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the delta semantics, and the rationale ('the four official lists do not all expose a public delta feed') explains why the tool exists. However, it never states when to prefer this over sanctions_status_summary or a full snapshot pull, and gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_get_entityARead-onlyIdempotentInspect
Fetch a full record by entity ID (e.g. "OFAC_SDN-44705"). The ID is self-describing and includes the source; obtain it from a screening result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entity ID from a screening result, e.g. "OFAC_SDN-44705". |
TDQS
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 useful context about the ID's self-describing nature and source, but does not disclose the return structure or any error/edge-case behavior. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the main action front-loaded and an illustrative example. Every clause adds value, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the description sufficiently tells the agent what to pass and where to get the ID. It doesn't enumerate response fields, but 'full record' combined with the annotations is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single 'id' parameter with full coverage. The description adds meaning by explaining that the ID is self-describing and embeds its source, helping the agent understand format variations and where to obtain valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a full record by entity ID, using a specific verb and resource. The example ID and the note that IDs are self-describing and come from screening results effectively distinguish this lookup from sibling search/screen tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the ID must be obtained from a screening result, which establishes the correct precondition and workflow. It does not name sibling alternatives or state when not to use it, but the intended 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.
sanctions_screen_addressARead-onlyIdempotentInspect
Match a physical address against listed addresses. Useful for KYC / supplier vetting when the counterparty's name is generic but the address is distinctive.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return. Defaults vary per tool. | |
| address | Yes | Free-form address string. | |
| sources | No | Restrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL. | |
| threshold | No | Minimum confidence score (0..1) for a result to be returned. Defaults to 0.85. |
TDQS
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 no behavioral context beyond that – nothing about how matching/scoring works, source freshness, or rate limits. Adequate but thin against a lower bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the operational scope is front-loaded and the use case follows. Nothing is redundant with the name or the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations and full parameter coverage make the call itself unambiguous, but there is no output schema and the description says nothing about what a match result contains (score, matched list entry, source). For a screening tool that gap is noticeable, though not fatal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: address, limit, sources, and threshold are each documented in the schema itself. The description mentions 'listed addresses' only generically and adds no syntax, format, or threshold guidance. Baseline 3 is correct when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Match a physical address against listed addresses.' This clearly separates it from name-based screening siblings, though it never explicitly names sanctions_screen_entity or sanctions_screen_batch as the alternatives. An agent can infer the distinction from the word 'address' alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete when-to-use condition: KYC / supplier vetting where the counterparty name is generic but the address is distinctive. That is genuine routing guidance, but it stops short of naming the sibling tool to use for name-based screening or stating any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_screen_batchARead-onlyIdempotentInspect
Screen up to 50 names in a single call. Returns one result block per input, in input order. Each name counts as one screen for billing purposes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return. Defaults vary per tool. | |
| names | Yes | Array of names to screen. Max 50. | |
| sources | No | Restrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL. | |
| threshold | No | Minimum confidence score (0..1) for a result to be returned. Defaults to 0.85. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world hints, but the description adds billing semantics ('each name counts as one screen for billing purposes') which is meaningful behavioral context not present in annotations. It also notes return ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all front-loaded with the key operational facts: batch limit, return shape, and billing impact. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description adequately describes return behavior (one result block per input, in order). For a batch screening tool with no output schema and full annotation coverage, this is nearly complete, missing only explicit alternative routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the max names constraint (50) which is already in the schema's maxItems, but reinforces it; no additional syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Screen) and resource (names), and quantifies the batch limit. Distinguishes itself from single-screen siblings like sanctions_screen_entity by implying batch behavior, though it doesn't explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'up to 50 names in a single call' implies when to use the batch version over the single-entity version, but there's no explicit guidance on when to prefer it vs sanctions_screen_entity or sanctions_screen_address.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_screen_entityARead-onlyIdempotentInspect
Screen a single name or entity against the four major sanctions / denied-party lists (OFAC SDN, EU consolidated, UN consolidated, BIS DPL). Returns matches with confidence scores. This call uses the standard hosted query allowance; the free tier includes 1,000 queries/month and paid plans use the published plan pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name or entity string to screen. | |
| limit | No | Maximum matches to return. Defaults vary per tool. | |
| sources | No | Restrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL. | |
| threshold | No | Minimum confidence score (0..1) for a result to be returned. Defaults to 0.85. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world behavior, so the description earns credit mainly for the quota/cost disclosure (1,000 free queries/month, paid plan pricing) and for noting that results carry confidence scores. That is real behavioral context beyond the structured fields, though it omits anything about match ordering or result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first sentence and the return behavior follows immediately. The pricing sentence is the weakest link, mildly tangential, but it does convey cost awareness rather than pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by stating that matches are returned with confidence scores, and all four parameters are documented in the schema. It stops short of explaining match shape, ordering, or how threshold interacts with returned results, which would fully round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, limit, sources, and threshold with defaults and ranges. The description only gestures at the source lists and confidence scoring, adding no syntax or interpretation beyond the schema, which is the expected baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Screen") and resource ("a single name or entity") and enumerates the exact source lists (OFAC SDN, EU consolidated, UN consolidated, BIS DPL), which is highly concrete. The word "single" implicitly separates it from sanctions_screen_batch, but no sibling is named outright, so differentiation still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by "single name or entity" and by the batch sibling's existence, but the description never states when to prefer sanctions_screen_batch, sanctions_search_alias, or sanctions_get_entity, nor any exclusions or prerequisites. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_search_aliasARead-onlyIdempotentInspect
Search aliases / AKAs across selected lists. Distinct from screen_entity in that only the alias fields are matched, which is helpful when the primary listed name differs sharply from the popular spelling.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return. Defaults vary per tool. | |
| query | Yes | Alias / AKA to search for. | |
| sources | No | Restrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL. | |
| threshold | No | Minimum confidence score (0..1) for a result to be returned. Defaults to 0.85. |
TDQS
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 a genuine behavioral trait beyond that: matching is restricted to alias/AKA fields only, not primary names. It doesn't discuss result format, but with annotations carrying the safety burden this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and immediately followed by the differentiating scope. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with full schema coverage and no output schema, the description supplies the two things an agent most needs – the resource matched (aliases/AKAs) and how it differs from the entity screen. It stops short of noting how to interpret confidence/threshold results, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, sources, threshold and limit with defaults and ranges. The description adds no additional syntax, format, or fuzzy-matching detail about the query parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search aliases / AKAs across selected lists') and explicitly distinguishes itself from a sibling ('Distinct from screen_entity in that only the alias fields are matched'). An agent can tell it apart from sanctions_screen_entity without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use condition ('helpful when the primary listed name differs sharply from the popular spelling') and contrasts scope with the sibling screen_entity. It lacks an explicit when-not-to-use, but the context is strong enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_status_summaryARead-onlyIdempotentInspect
Counts and last-update timestamps for all four lists in the cache. No screening is performed; this call is free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive traits. The description adds genuine behavioral context: it reads cached data, performs no screening, and is free. These details help agents understand cost and side effects beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry all necessary information with no filler. The core purpose is front-loaded, followed by the exclusion and cost note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status tool, the description fully covers what the call returns, what it does not do, and that it is free. No output schema exists, but the described return value (counts and timestamps for four lists) is sufficient for an agent to invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain about inputs. The empty input schema plus 100% schema coverage means no parameter documentation is needed; a baseline score of 4 applies for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific function: 'Counts and last-update timestamps for all four lists in the cache.' It explicitly distinguishes itself from screening tools with 'No screening is performed,' separating it clearly from sanctions_screen_* and other sanctions lookup siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly signals when not to use this tool ('No screening is performed'), which is a valuable exclusion for agents considering sanctions tools. However, it does not name a specific alternative to use when screening is needed, so it stops short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_available_datasetsARead-onlyIdempotentInspect
Your guide to LiveDataLink's entire data catalog. Call this FIRST when you're unsure which tool to use, or when the user asks about data availability. LiveDataLink has 381 tools across 82 data domains: finance (stocks, options, SEC fund holdings), crypto, transportation/FMCSA carriers, property records, weather/air quality, vehicle VIN/recalls, package tracking, local business search, sanctions screening (OFAC SDN, EU, UN, BIS), FEMA disasters and flood data, federal courts (CourtListener), cybersecurity (CVE/CWE/EPSS/CISA KEV), US college metrics (IPEDS), EIA energy data (gasoline, natural gas, electricity, oil supply, renewables), FRED Federal Reserve macroeconomic series (GDP, CPI, fed funds, unemployment, yields), SEC EDGAR filings (10-K, 10-Q, 8-K, insider transactions), and NREL renewable energy (PVWatts solar, utility rates, EV charging stations), US Census demographics, EPA environmental compliance, FEC campaign finance, USPTO patents, IRS nonprofits (Form 990/EO BMF), US caselaw, public-domain books (full-text search), open-access scholarly papers (OpenAlex catalog + arXiv/PMC full-text search), federal regulations (Federal Register rules/notices + the Code of Federal Regulations), US Census geocoding (address to coordinates + Census geographies), Washington contractor licenses, EU tenders, federal grants (Grants.gov funding opportunities), and product recalls (CPSC / SaferProducts.gov). New domains are reviewed regularly based on observed requests. Returns exact tool names for matched domains AND logs every search to a roadmap database. High-frequency unmet queries jump the build queue. Use this freely; it costs no credits. Call for: 'what data do you have?', 'can you look up X?', 'do you have Y data?', 'what tools are available?', or any data coverage question. After you find a tool, call get_free_api_key with the user's real email for 1,000 monthly calls, or see https://livedatalink.ai/pricing for paid plans.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What data the user is looking for (e.g., 'trucking safety', 'stock prices', 'property records', 'VIN lookup') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the tool returns exact tool names for matched domains, logs every search to a roadmap database, and costs no credits. The disclosed server-side query logging is a side effect worth surfacing even under readOnlyHint. It does not, however, describe match granularity or what an empty result means, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The routing instruction and cost/next-step guidance are front-loaded and earn their place, but the middle is a ~300-word catalog dump of 82 domains that largely duplicates what the tool itself returns on invocation. Shorter guidance plus letting the search do the enumeration would be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining what comes back (exact tool names for matched domains), that queries are logged and can influence the roadmap, and the pricing/API-key path. Nothing an agent needs to select or invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'query' parameter is fully documented in the schema (100% coverage) with its own examples, so the schema carries the burden. The description's 'Call for:' phrase list loosely illustrates acceptable query framing but adds no format or constraint 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) plus resource (available datasets / the entire data catalog) and its role as a router to every other tool. An agent can immediately distinguish it from all 380+ domain-specific siblings like fmcsa_carrier_lookup or edgar_filings_by_form_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call this FIRST when unsure which tool to use, enumerates concrete triggering phrases ('what data do you have?', 'do you have Y data?'), and names the follow-on step (get_free_api_key with a real email, or the pricing page). When-and-what-next guidance is unusually complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sec_ftd_compareARead-onlyIdempotentInspect
Compare two to eight ticker symbols on the same SEC fails-to-deliver settlement date from the self-hosted official snapshot. Returns published quantities, explicit missing-row status, issuer labels, ranking, coverage, and provenance; a missing row is never converted to zero. Use this for 'compare GME, AMC, and TSLA FTD balances' or 'which selected symbol had the largest published balance on 2026-08-14?'. Point-in-time balances are not daily flows, wrongdoing evidence, or investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Two to eight unique exact ticker symbols. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| settlement_date | No | Settlement date in YYYY-MM-DD format, within the hosted hot window. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description earns credit by adding substantive behavioral context beyond that: missing rows are never coerced to zero, and returned content includes missing-row status, ranking, coverage, and provenance, plus an explicit scope caveat (point-in-time balances are not daily flows or wrongdoing evidence).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core comparison purpose, then the returns, then the scope caveat. Dense but every clause carries information; only the closing disclaimer slightly pads an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates well by enumerating the return shape (quantities, missing-row status, issuer labels, ranking, coverage, provenance) and the missing-row handling rule. Combined with full schema coverage and rich annotations, 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.
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 symbols (2-8 unique exact tickers), response_format (markdown/json), and settlement_date (YYYY-MM-DD, hot window). The description's 'two to eight' simply restates the schema bounds and adds no new parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare), resource (SEC fails-to-deliver balances), cardinality (two to eight tickers), and constraint (same settlement date, self-hosted official snapshot). It is immediately distinguishable from siblings like sec_ftd_latest, sec_ftd_history, sec_ftd_top, and sec_ftd_search_securities by its comparison scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete example utterances ('compare GME, AMC, and TSLA FTD balances', 'which selected symbol had the largest published balance on 2026-08-14?') that make the intended use clear. However, it never names the alternative tools (e.g. sec_ftd_latest for a single symbol) or states when not to use it, 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.
sec_ftd_historyARead-onlyIdempotentInspect
Return a bounded, paginated history of published nonzero SEC fails-to-deliver balance records for one ticker in the self-hosted hot window. Includes settlement dates, quantities, SEC price fields, source-row counts, pagination, and provenance. Use this for 'show GME FTD balances over time', 'chart TSLA published fail balances this quarter', or to inspect point-in-time changes. Do not sum the observations as daily flow; omitted dates are not filled with inferred zeros.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum published dates. Default 30. | |
| offset | No | Published dates to skip. Default 0. | |
| symbol | Yes | Exact ticker symbol as published by the SEC. Use sec_ftd_search_securities for issuer-name searches. | |
| end_date | No | Settlement date in YYYY-MM-DD format, within the hosted hot window. | |
| start_date | No | Settlement date in YYYY-MM-DD format, within the hosted hot window. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower; the description still adds real value by disclosing that records are limited to nonzero published entries, bounded to a hot window, and that omitted dates are not zero-filled. The 'do not sum as daily flow' caveat is a genuinely useful interpretive warning. It stops short of describing pagination mechanics or response size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then contents, then usage examples and a caveat. Every sentence contributes; the content-list sentence is slightly dense but earns its place given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating what comes back (settlement dates, quantities, SEC price fields, source-row counts, pagination, provenance) and by flagging the nonzero-only and no-zero-fill behaviors. Combined with annotations that carry the safety profile, an agent has enough to call it correctly, though pagination behavior across pages is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (limit, offset, symbol, start_date, end_date, response_format) are already documented in the schema. The description only implies their existence via 'bounded, paginated' and 'settlement dates', adding no format or default detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — a bounded, paginated history of published nonzero SEC fails-to-deliver balance records for one ticker — and scopes it to the self-hosted hot window. This cleanly separates it from siblings like sec_ftd_latest (single point), sec_ftd_top (ranked aggregation), and sec_ftd_compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use-case phrasing ('show GME FTD balances over time', 'chart TSLA published fail balances this quarter', inspect point-in-time changes) that pins down the intended scenario. It does not explicitly name when to prefer a sibling such as sec_ftd_latest or sec_ftd_top instead, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sec_ftd_latestARead-onlyIdempotentInspect
Return the latest published official SEC fails-to-deliver balance for one exact ticker, optionally as of a date, from the hosted hot window. Includes settlement date, aggregate outstanding quantity, issuer label, SEC price field, source file, snapshot hash, and provenance. Use this for 'latest reported FTD balance for GME' or 'what was the most recent AMC fail balance by June 30?'. A fail can arise from long or short sales and is not evidence of abusive or naked short selling.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Settlement date in YYYY-MM-DD format, within the hosted hot window. | |
| symbol | Yes | Exact ticker symbol as published by the SEC. Use sec_ftd_search_securities for issuer-name searches. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 genuine extra context: the 'hosted hot window' scope constraint, the enumerated return payload (settlement date, quantity, issuer label, price field, source file, snapshot hash, provenance), and an interpretation disclaimer about long vs short sales. That is real value beyond the annotations, though no rate-limit or freshness caveats are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste: capability and scope first, payload enumeration second, usage examples and disclaimer last. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by enumerating the returned fields, and the input schema is fully described. The scope ('hosted hot window') is noted, though finer detail on the window's boundaries or error behavior is absent — a minor gap for a single-record lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema, including the as_of format and the ticker pattern. The description only restates 'one exact ticker' and 'optionally as of a date', adding no syntax or constraints beyond what the schema delivers — the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Return the latest published official SEC fails-to-deliver balance for one exact ticker'), with 'latest' and 'one exact ticker' distinguishing it from sec_ftd_history, sec_ftd_top, and sec_ftd_search_securities. An agent can tell what it does and how it differs from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides two concrete invocation examples ('latest reported FTD balance for GME', 'most recent AMC fail balance by June 30?') that show the intended use case clearly. It does not, however, explicitly state when NOT to use it or name the alternative sibling (sec_ftd_search_securities appears only in the schema, not the description).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sec_ftd_search_securitiesARead-onlyIdempotentInspect
Search ticker symbols and issuer names in LiveDataLink's bounded, self-hosted mirror of official SEC fails-to-deliver files. Returns symbols, names, hosted coverage, reported-observation counts, maximum published balance, pagination, snapshot hash, and provenance. Use this for 'find the FTD ticker for GameStop', 'which SEC fail records mention Tesla?', or to resolve a symbol before a lookup. It does not expose licensed CUSIP identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches. Default 20. | |
| query | Yes | Ticker fragment or issuer-name phrase. | |
| offset | No | Matches to skip for pagination. Default 0. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: the corpus is a 'bounded, self-hosted mirror', it enumerates what is returned, and it discloses a real limitation ('does not expose licensed CUSIP identifiers').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then return fields, then use cases and a limitation. The return-field enumeration is long but earns its place given the absence of an output schema; no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates return contents (symbols, names, coverage, observation counts, max balance, pagination, snapshot hash, provenance), which an agent would otherwise lack. Combined with the CUSIP limitation, it covers what is needed for correct invocation, though it does not clarify pagination semantics in depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, limit, offset, and response_format, giving a baseline of 3. The description only loosely references pagination and returns; it adds no syntax, format, or constraint detail beyond what the schema supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (ticker symbols and issuer names) within a clearly scoped corpus (SEC fails-to-deliver files in a bounded self-hosted mirror). The 'resolve a symbol before a lookup' clause hints at its position relative to lookup-style siblings, but no sibling tool is named explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides three concrete use-case examples ('find the FTD ticker for GameStop', 'which SEC fail records mention Tesla?', 'resolve a symbol before a lookup') that give an agent clear trigger conditions. There are no explicit exclusions or named alternative tools, so it is context-rich but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sec_ftd_topARead-onlyIdempotentInspect
Rank the largest ticker-level aggregate fails-to-deliver balances published by the SEC for one settlement date. Defaults to the latest date in the hosted snapshot and returns exact quantities, issuer labels, SEC price fields, total reported-symbol count, and provenance. Use this for 'largest SEC fail balances today', 'top FTD securities on 2026-08-14', or a market-structure screen. This is not a misconduct list or short-squeeze signal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ranked symbols. Default 20. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| settlement_date | No | Settlement date in YYYY-MM-DD format, within the hosted hot window. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld/non-destructive, so the bar is lower; the description still adds real context — it defaults to the latest date in the hosted snapshot, and it enumerates what is returned (exact quantities, issuer labels, SEC price fields, symbol count, provenance). It also pre-empts a common misinterpretation of FTD data. It does not mention rate limits or the size of the hosted window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and scope, then examples, then the disambiguating negative. Every sentence carries information an agent needs; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the returned fields, and annotations carry the safety profile. The only gap is that it says nothing about ranking criteria or how the default limit affects the result set, which is minor given the schema documents limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds meaning beyond the schema by explaining that settlement_date defaults to the latest date in the hosted snapshot, clarifying the otherwise vague 'hosted hot window' wording. The limit and response_format parameters are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rank) plus a precisely scoped resource (largest ticker-level aggregate fails-to-deliver balances published by the SEC for one settlement date). An agent can distinguish it from sec_ftd_latest, sec_ftd_history, sec_ftd_compare, and sec_ftd_search_securities from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit example phrasings ('largest SEC fail balances today', 'top FTD securities on 2026-08-14') and a use case (market-structure screen), plus a clear exclusion: 'not a misconduct list or short-squeeze signal.' It stops short of naming the sibling tools an agent should use instead for history or comparison, so routing 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.
security_exposureARead-onlyIdempotentInspect
One-call known-vulnerability exposure for a vendor/product/package, built on the LiveDataLink cyber domain. Fans out to NVD (CVE search by vendor+product or keyword), the CISA KEV catalog (actively-exploited flag - the highest signal), FIRST EPSS (exploit-probability scores for the most-severe CVEs), and aggregates MITRE CWE weakness types from the matched CVEs. Returns total CVEs, counts by CVSS severity band, KEV membership with the actively-exploited CVEs listed, the highest EPSS score, the critical CVEs, top CWE weakness types, an overall exposure rollup (KEV present -> high), and an evidence list. No matches returns a friendly 0-exposure result; if the cyber source is unavailable that is noted per-source. Exactly one NVD call per invocation. INFORMATIONAL security research, not advice. Package-registry maintenance/staleness signals are out of scope for this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | No | Optional vendor to narrow the NVD CPE match (e.g. 'apache', 'openbsd'). | |
| product | Yes | Product or package name to assess (e.g. 'log4j', 'openssl', 'struts'). | |
| version | No | Optional version string (informational; shown in the report). | |
| max_cves | No | Max CVEs to pull from NVD for analysis (default 40). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations: it documents the fan-out behavior, the operational constraint ('Exactly one NVD call per invocation'), the graceful empty case ('No matches returns a friendly 0-exposure result'), per-source unavailability handling, and the KEV-present->high rollup logic. This is rich behavioral disclosure an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and despite its length every sentence carries distinct information (sources, return fields, edge cases, scope). It is dense and somewhat list-heavy, which slightly hurts readability but not waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully compensates by enumerating the returned fields (total CVEs, severity-band counts, KEV membership, highest EPSS, critical CVEs, top CWE types, exposure rollup, evidence list) and edge-case behavior. An agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents vendor, product, version, and max_cves. The description adds only marginal semantics (vendor+product narrows NVD CPE match; keyword fallback), leaving the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('one-call known-vulnerability exposure for a vendor/product/package') and enumerates exactly which sources it fans out to (NVD, CISA KEV, EPSS, MITRE CWE). This clearly differentiates it from the single-source siblings cve_lookup, cve_search_by_vendor, kev_status_check, and epss_score, which it aggregates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit scope exclusions ('Package-registry maintenance/staleness signals are out of scope', routing away from npm_package/pypi_package/cargo_crate) and a framing note ('INFORMATIONAL security research, not advice'). However it never explicitly states the condition under which an agent should prefer this aggregate over the individual cve_* / kev_status_check / epss_score tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipper_receiver_counterparty_packARead-onlyIdempotentInspect
Create an evidence-backed counterparty pack for a shipper, receiver, or both. Resolves canonical identifiers, SEC/GLEIF/USAspending/EPA identity signals, sanctions status, and public-record standing, then returns a review checklist for credit terms and load release. Name matches are candidates to verify; this is not a credit report or endorsement.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional 2-letter state to disambiguate either party. | |
| format | No | Report format. Defaults to markdown. | |
| shipper | No | Shipper legal or trading name. | |
| receiver | No | Receiver legal or trading name. |
TDQS
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 meaningful behavioral context: it resolves identity signals from specific sources (SEC/GLEIF/USAspending/EPA), checks sanctions and public-record standing, and returns a review checklist. It also transparently warns that name matches are candidates to verify, which is important uncertainty disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, then adds sources, output, and caveats in a logical order. Every sentence contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool with no output schema, the description covers the main inputs, data sources, output type, and caveats. A minor gap is that both shipper and receiver are optional in the schema, and the description does not explicitly state that at least one should be provided, though 'a shipper, receiver, or both' implies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description does not add much parameter-level meaning beyond the schema, which is acceptable given the high coverage. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create an evidence-backed counterparty pack') for a specific scope ('a shipper, receiver, or both'), and it differentiates itself from related tools by focusing on shipper/receiver counterparty review rather than carrier vetting or generic company lookup. It also clarifies what the tool is not ('not a credit report or endorsement'), which strengthens the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when credit terms and load release decisions need an evidence-backed counterparty review. It does not explicitly name alternative tools or state when-not-to-use conditions, so it falls short of a 5, but the context is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_snapshot_listARead-onlyIdempotentInspect
List the source ids that currently have versioned raw snapshots in LiveDataLink's private R2 evidence store. This reports hosted ingestion coverage; it does not imply that every catalog source already has a normalized query tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 does not need to cover safety. It adds context about the private R2 evidence store and the 'currently have' state, but does not describe pagination, output size limits, or other behavioral traits. This is adequate for a simple list but adds only modest 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence immediately states the verb, resource, and scope. The second sentence adds a clarifying caveat that prevents misinterpretation. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list operation, the description is nearly complete: it states what is listed, where the data lives, and what it does and doesn't mean. It does not specify the exact output format (e.g., array vs. object wrapper), but 'List the source ids' strongly implies a flat list. Adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters)Skip, so schema coverage is trivially 100%. Baseline for zero parameters is 4. The description adds semantic context about what the output represents (which sources have versioned raw snapshots), which is valuable since there is no output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a specific resource ('source ids that currently have versioned raw snapshots in LiveDataLink's private R2 evidence store'), and distinguishes its scope by noting what it does not imply (normalized query tool availability). An agent can clearly understand what this tool does and how it differs from other source-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states its purpose: 'reports hosted ingestion coverage.' It gives context for when this would be relevant (checking which sources have raw snapshots). It does not explicitly name alternative tools or exclusion conditions, but for a zero-parameter list tool, the guidance is sufficient and not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_snapshot_statusARead-onlyIdempotentInspect
Return the current immutable ingestion manifest for one self-hosted LiveDataLink source. Includes official source URL, retrieval time, rights class, byte counts, SHA-256 evidence, record counts when the transformer has computed them, and whether the raw artifact is stored as one object or reconstructable chunks. This is provenance/status, not a raw-data export.
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | Catalog source id, for example cisa-kev, leie, fda-orange-book, ntsb-aviation, or cfpb-complaints. |
TDQS
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. Beyond that, the description adds real value: it discloses that the manifest is 'immutable' (stable across calls) and enumerates the returned evidence fields (URL, retrieval time, rights class, byte counts, SHA-256, record counts, chunk vs single-object storage). It does not cover failure behavior for an unknown source_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and resource, then the returned payload, then the disambiguating scope note. No filler and every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description enumerates precisely what the returned manifest contains, so the agent knows what to expect. With annotations covering the safety profile and full schema coverage on the single parameter, nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single source_id parameter is already well documented with format and examples, so the baseline is 3. The description only adds the constraint that the source is self-hosted LiveDataLink, which is marginal extra detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('the current immutable ingestion manifest') scoped to 'one self-hosted LiveDataLink source', which cleanly distinguishes it from the sibling source_snapshot_list (plural) and from raw-data export tools. The closing clause 'This is provenance/status, not a raw-data export' nails the boundary of what the tool is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for when to reach for it (per-source provenance/status rather than raw data), and the explicit exclusion of raw-data export helps route the agent. It does not, however, explicitly name source_snapshot_list as the alternative to use when the agent needs the full catalog, leaving that 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.
spending_award_detailsARead-onlyIdempotentInspect
Get full detail for one federal award by its award id (the generated id from spending_search_awards): recipient, amount, type, awarding and funding agencies, period of performance, NAICS/PSC, place of performance, and description.
| Name | Required | Description | Default |
|---|---|---|---|
| award_id | Yes | Generated award id from spending_search_awards. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate safety. The description adds the one-award scope and the field list, which is useful, but it does not disclose response shape, error behavior, or any other operational details. This matches the lower bar set by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the action and resource, then lists all relevant output fields with no filler. Every part of the sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup tool, the description is complete: it gives the input source, the scope, and the expected content of the response. With rich annotations and no output schema, this level of detail is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes award_id as 'Generated award id from spending_search_awards.' The description repeats that same provenance rather than adding new meaning, so it adds no value beyond the schema for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get full detail for one federal award by its award id.' It enumerates the exact information returned (recipient, amount, type, agencies, period, NAICS/PSC, place of performance, description), and the explicit link to spending_search_awards distinguishes it from the search/summary siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys the intended workflow: first use spending_search_awards to get a generated award_id, then call this tool with that id for full details. It does not explicitly name alternatives such as spending_recipient_summary or state when not to use this tool, but the context strongly implies the correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spending_recipient_summaryARead-onlyIdempotentInspect
Summarize a company's federal awards: total dollars and top awards for a recipient name in a category (contracts by default). Useful for due diligence and to see who the government pays.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Top awards to list (default 5, max 25). | |
| category | No | Award category: 'contracts' (default), 'grants', 'loans', or 'other'. | |
| recipient | Yes | Recipient company/org name. |
TDQS
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 the federal scope and the aggregation behavior (totals + top N, contracts as default category), which is useful, but says nothing about result format, ordering, or how totals are computed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler; the deliverable (totals and top awards) comes first and the scope details follow. Slightly dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of naming the return content (total dollars, top awards) and the default category. An agent has enough to invoke it correctly; only ordering/formatting of results remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, and the description merely restates the default category value that the schema already specifies. Baseline 3 applies since the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize) plus a precise resource (a company's federal awards), and enumerates the output content: total dollars and top awards, scoped by recipient name and category. An agent can distinguish this from the sibling spending_search_awards (raw search) and spending_award_details (single award) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a use case ("due diligence", "see who the government pays") but never states when to prefer this over its close siblings spending_search_awards or spending_award_details, nor any exclusions or prerequisites. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spending_search_awardsARead-onlyIdempotentInspect
Search federal awards (contracts, grants, loans) from USAspending.gov by recipient company, keyword, and/or awarding agency, with optional fiscal year and minimum amount. Returns each award's id, recipient, amount, awarding agency, type, start date, and description, sorted by amount.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 10, max 50). | |
| agency | No | Awarding agency name, e.g. 'Department of Defense'. | |
| keyword | No | Free-text keyword across the award. | |
| category | No | Award category: 'contracts' (default), 'grants', 'loans', or 'other'. | |
| recipient | No | Recipient company/org name, e.g. 'Lockheed Martin'. | |
| min_amount | No | Minimum award amount in USD. | |
| fiscal_year | No | Federal fiscal year, e.g. 2024. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds genuine context beyond them: the upstream source (USAspending.gov), the sort order (by amount), and the returned field set, which is valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and scope, then the return contract. No filler or redundancy; every clause carries information the caller needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, open-world search with full schema coverage and no output schema, the definition supplies what is missing: data source, sorted-by-amount behavior, and the exact result fields. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters with examples. The description restates the filterable fields (recipient, keyword, agency, fiscal year, minimum amount) without adding syntax, defaults, or combination semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (federal awards: contracts, grants, loans), names the data source (USAspending.gov) and the filterable dimensions, so the agent knows exactly what is retrieved. It is clearly a search tool distinct from spending_award_details, but it never names or contrasts with that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Filter options imply when the tool is useful (by recipient, keyword, agency), but there is no explicit when-to-use guidance, no exclusions, and no pointer to spending_award_details for single-award lookups or spending_recipient_summary for aggregates. Usage 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.
stock_compareARead-onlyIdempotentInspect
Compare 2 to 5 stocks side by side. Returns price, daily change, market cap, P/E ratio, dividend yield, volume, 52-week range, sector, revenue, profit margin, EPS, and beta. Use this for "compare Apple and Microsoft", "which is a better investment, NVDA or AMD?", "tech stock comparison", or any stock-vs-stock analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Ticker symbols, 2-5 stocks. Accept either CSV string ("AAPL,MSFT,GOOGL") or array (["AAPL","MSFT","GOOGL"]). |
TDQS
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, so the bar for the description is lower. The description adds meaningful behavioral context beyond annotations: the 2-5 stock input constraint and the complete list of 12 returned metrics, giving the agent a concrete expectation of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: what it does, what it returns, and when to use it. The purpose is front-loaded in the first sentence, and although the field list is long, it is information-dense and directly useful to the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explicitly listing all returned metrics. Input constraints, parameter formats, and usage examples are all present; only minor gaps remain, such as behavior for invalid or non-existent ticker symbols and data freshness, which are relatively unimportant for a single-parameter read-only comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the symbols parameter fully documented for both CSV string and array formats, so the schema carries the semantic burden. The description only restates the 2-5 range already in the schema and adds illustrative query examples, which is baseline value rather than new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Compare 2 to 5 stocks side by side' — a specific verb, resource, and range constraint. The enumerated return fields (price, P/E ratio, dividend yield, beta, etc.) go beyond what a single-stock quote tool would offer, making the purpose unambiguous and distinguishing it from siblings like stock_quote and stock_quote_batch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit example queries ('compare Apple and Microsoft', 'which is a better investment, NVDA or AMD?') and closes with 'any stock-vs-stock analysis', which gives clear context for when to use it. However, it never names alternative tools or states when not to use it (e.g., for a single stock quote or price history), stopping short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_historyARead-onlyIdempotentInspect
Get historical stock price data - open, high, low, close, and volume (OHLCV). Supports intraday (1-minute) through multi-year (5-year, max) ranges. Use this for "how has AAPL performed this year?", "show me the price chart for Tesla", "what was the stock price last month?", "historical performance", or any stock price history question.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time range (default: "1mo") | |
| symbol | Yes | Stock ticker symbol (e.g., "AAPL") | |
| interval | No | Data interval (default: "1d") |
TDQS
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 on the data shape (OHLCV) and supported time ranges. It does not disclose the response format, behavior for invalid tickers, or whether prices are adjusted for splits/dividends, but with annotations carrying the safety burden, the added context is sufficient for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, followed by a concise range statement and then example queries. The example list is slightly long (four examples plus a catch-all), but each example is short and adds practical routing value for an agent. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with three parameters and annotations covering the safety profile, the description is largely complete: it names the returned data concept (OHLCV), the supported ranges, and typical query phrasings. The main gap is the lack of an output schema combined with no mention of the exact response structure, but naming the OHLCV fields partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — symbol, period, and interval each have documented descriptions and period/interval have enums. The description adds light value by linking period concepts to real queries (e.g., 'what was the stock price last month?' maps to period=1mo, '1-minute' maps to interval=1m), but the schema already does the heavy lifting, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get historical stock price data') and enumerates the data fields (open, high, low, close, volume). It conveys the temporal scope (intraday through multi-year). It distinguishes from siblings like stock_quote and stock_compare implicitly through the word 'historical' and the example queries, but it never names an alternative explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete example queries ('how has AAPL performed this year?', 'show me the price chart for Tesla', 'what was the stock price last month?') that clearly signal when to invoke this tool versus stock_quote or stock_compare. However, it does not state when NOT to use it or name alternative tools for current pricing, so exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_quoteARead-onlyIdempotentInspect
Get the latest available stock price and market data. Returns current price, daily change, volume, market cap, P/E ratio, dividend yield, 52-week high/low, open, and previous close. Use this for "what's the stock price of X?", "how is AAPL doing?", "check the market", "what's Apple trading at?", or any stock/equity price question.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol (e.g., "AAPL", "MSFT", "TSLA") |
TDQS
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 useful behavioral detail about what market data fields are returned (volume, market cap, P/E ratio, etc.) but does not discuss data latency, market hours, symbol validity, or error behavior. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and includes both return fields and representative user queries. It is reasonably concise, though the long field list could be slightly trimmed without losing critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only tool with no output schema, the description is largely complete: it states what the tool does, what data it returns, and when to use it. It does not cover edge cases such as invalid symbols, market closure behavior, or data delay, but those are not critical for selecting and invoking a basic stock quote tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the only parameter, symbol, is already described with examples in the input schema. The description does not add additional semantic meaning beyond restating that this handles stock price questions, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the latest available stock price and market data for a single symbol, which is a specific verb+resource. It differentiates from siblings like stock_history and stock_quote_batch by emphasizing 'latest available' and singular stock/equity price questions, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete example queries ('what's the stock price of X?', 'how is AAPL doing?') and says to use it for any stock/equity price question. This provides clear context for when the tool is appropriate, but it does not mention exclusions or direct users to alternatives for history, comparison, or batch quotes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_quote_batchARead-onlyIdempotentInspect
Get the latest available stock prices for multiple stocks at once (up to 10). Returns a comparison table with price, daily change, volume, market cap, and P/E. Use this for "show me FAANG stocks", "compare tech stock prices", "how are energy stocks doing?", or any multi-stock price check.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Ticker symbols, max 10. Accept either CSV string ("AAPL,MSFT,GOOGL") or array (["AAPL","MSFT","GOOGL"]). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior, so the description's additional context is useful rather than required. It adds the 'latest available' freshness qualifier, the 10-symbol cap, and the output shape (comparison table with specific fields). It does not discuss possible data delays, invalid ticker handling, or response ordering, but these are minor for a safe read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action and limit come first, followed by output details and concrete example queries. Every sentence contributes value, and the structure is easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, full schema coverage, and strong safety annotations, the description is largely complete for selection and invocation. It covers scope, the symbol limit, and return fields, which compensates for the absence of an output schema. A brief note on using stock_quote for a single symbol or on invalid symbol behavior would improve it further, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the only parameter, symbols, including accepted formats (CSV string or array) and the maximum of 10. Since schema description coverage is 100%, the description does not need to add much. It restates 'up to 10' and 'multiple stocks', but adds no substantive semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and scope: 'Get the latest available stock prices for multiple stocks at once (up to 10)' and enumerates the returned comparison fields (price, daily change, volume, market cap, P/E). This distinguishes it from a single-stock quote tool, though it does not explicitly disambiguate from the sibling stock_compare, and its example 'compare tech stock prices' could overlap with that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit example use cases ('show me FAANG stocks', 'compare tech stock prices', 'how are energy stocks doing?') and a general rule ('any multi-stock price check'). It gives clear context for when to use the tool, but it does not explicitly state when not to use it or name single-stock alternatives like stock_quote.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sun_timesARead-onlyIdempotentInspect
Compute sunrise, sunset, solar noon, and civil twilight for any latitude/longitude on a given date. Times are computed in code from the standard NOAA solar-position equations (no third-party API is called, so the result is dependency-free and resale-safe). Times are returned in UTC by default; pass tz_offset (hours from UTC, e.g. -7 for US Pacific Daylight Time) to shift the output to local clock time. Polar day and polar night are reported when the sun does not rise or set. Use it for daylight planning, photography golden-hour timing, or agriculture and energy calculations.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (positive north). | |
| lon | Yes | Longitude in decimal degrees (negative west). | |
| date | No | Date, 'YYYY-MM-DD'. Defaults to today (UTC). | |
| tz_offset | No | Hours from UTC applied to output times, e.g. -7 for US Pacific Daylight Time. Default 0 (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only/idempotent, and the description adds useful non-obvious behavior: computation is local via NOAA equations (no third-party API), outputs default to UTC with a tz_offset shift option, and polar day/night are represented explicitly. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, implementation detail, timezone behavior, edge cases, and use cases. The main action is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateless calculation with a complete schema, it covers inputs, defaults, timezone behavior, edge cases, and use cases. It stops short of specifying the exact return object/field names, which would matter more if an output schema were absent; still, enough information is present for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter with defaults and examples. The description restates the tz_offset behavior rather than adding new 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Compute') and exact resource ('sunrise, sunset, solar noon, and civil twilight') plus the required scope (latitude/longitude/date). This clearly differentiates it from geospatial or weather siblings such as tide_predictions or nrel_solar_resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit application contexts: daylight planning, photography golden-hour timing, agriculture, and energy calculations. It does not name alternatives or exclusions, but among the sibling list there is no direct equivalent, so the use-case guidance is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supplier_esg_scorecardARead-onlyIdempotentInspect
One-call, source-linked ESG / supplier-risk signal read for a company. Joins three public-record governance-signal legs: EPA ECHO/FRS environmental compliance (significant-non-compliance flags, non-compliant quarters, penalties, and formal enforcement actions across the company's facilities, with correct filtering so clean 'No Violation Identified' statuses are never flagged), product recalls (CPSC consumer products + openFDA drug/device/food, keyed by the company), and federal-court litigation (CourtListener v4 dockets whose caption actually names the company). Returns a readable scorecard across Environmental / Product-safety / Litigation dimensions with a rolled-up read (LOW / MODERATE / ELEVATED ESG risk signals) and the evidence behind each. A leg that fails is noted, not fatal. This is informational public-record synthesis of ESG/supplier-risk signals, not an ESG rating, credit/background report, or investment advice. Review source terms before redistributing results.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional 2-letter state to disambiguate the EPA facility search (e.g. 'PA'). | |
| company | Yes | Company / supplier name to score (e.g. 'US Steel', 'Tyson Foods'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, idempotent, non-destructive), the description discloses important behavioral details: the filtering nuance so clean 'No Violation Identified' statuses are never flagged, the fact that a failed leg is noted but not fatal, the returned risk levels (LOW/MODERATE/ELEVATED), and the informational limitations with a redistribution caveat. This is excellent transparency for a composite tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: scope, data sources, filtering nuance, output format, failure handling, and usage caveats are all covered without repetition. It is appropriately front-loaded with the core purpose and then adds necessary detail for a multi-source tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully explains what the agent can expect: a scorecard across Environmental, Product-safety, and Litigation dimensions with a rolled-up risk read and supporting evidence. It also covers edge behavior (failed leg handling) and legal/informational boundaries, making it complete for invocation and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds mild context by explaining the state parameter disambiguates the EPA facility search and the company parameter names the entity to score, but it does not add substantial meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it returns a one-call, source-linked ESG/supplier-risk scorecard for a company. It explicitly names the three data legs (EPA ECHO/FRS compliance, product recalls, federal-court litigation) and distinguishes itself from single-source sibling tools like epa_facility_compliance or cpsc_recall_search by being a composite synthesis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear context: use this when you want a rolled-up ESG/supplier-risk signal across environmental, product-safety, and litigation evidence in one call. However, it never explicitly states when not to use it or names alternatives such as epa_enforcement_search or court_case_search for deeper single-source investigation, so routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
support_resistance_levelsARead-onlyIdempotentInspect
Return key support/resistance price levels for a US ticker from recent daily pivots (swing highs/lows) plus nearby round-number levels, with the latest close for context. HEURISTIC levels for research, not investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | US ticker (e.g. 'TSLA'). | |
| lookback_days | No | Trailing daily bars to derive levels from (default 180). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and open-world traits, so the description's job is to add context. It does so by disclosing the derivation method and, importantly, flagging that the output is HEURISTIC rather than authoritative — a meaningful reliability signal. It stops short of describing rate limits, pagination, or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core capability and the method, with the disclaimer trailing. Efficient and free of padding, though the 'not investment advice' clause is somewhat boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully previews what comes back (levels plus latest close) and characterizes reliability. For a two-parameter read-only tool this is nearly complete; only return format or ordering details are missing, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (symbol, lookback_days with its 20-500 range and default 180) are fully documented in the schema. The description's phrase 'recent daily pivots' loosely gestures at the lookback window but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return key support/resistance price levels for a US ticker') and even discloses the derivation method (swing highs/lows, round-number levels) plus the inclusion of the latest close. It is clearly distinct from siblings like stock_quote or stock_history, though it never names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the disclaimer 'for research, not investment advice,' which is a liability caveat rather than usage direction. It never says when to reach for this tool versus candlestick_signals, bounce_scanner, or stock_history, leaving selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talent_market_briefARead-onlyIdempotentInspect
One-call 'can I hire this role here, and at what cost' read for an occupation in a US geography. Joins two independent federal sources: BLS OEWS (Occupational Employment and Wage Statistics, keyless) for the occupation's employment LEVEL and wage distribution (mean plus 10th / 50th-median / 90th annual percentiles) in the area, and US Census ACS labor-force context (civilian labor force and local unemployment rate - needs a Census API key) to band how TIGHT / BALANCED / SLACK the local hiring market is. Pass an 'occupation' (e.g. 'registered nurses', 'software developers') or an explicit 'soc_code' (e.g. '29-1141'), and an optional 'state' or 'metro' (defaults to national). Returns a readable brief with a headline (employment, median/mean wage, market tightness), the wage percentiles, and per-source evidence. The BLS OEWS leg is the core signal and is keyless; the Census leg degrades gracefully if no key is set. Informational, NOT a guarantee that a role can be filled at any given wage.
| Name | Required | Description | Default |
|---|---|---|---|
| metro | No | Optional 5-digit CBSA/metro code (e.g. '12420' Austin, TX). OEWS metro coverage varies; an unmatched metro is noted, not fatal. | |
| state | No | Optional 2-letter state code or 2-digit FIPS (e.g. 'TX', '48'). Omit for a national read. | |
| soc_code | No | Explicit 6-digit SOC occupation code, with or without a dash (e.g. '29-1141' registered nurses, '15-1252' software developers). Overrides 'occupation'. | |
| occupation | Yes | Free-text occupation to map to a SOC code (e.g. 'registered nurses', 'software developers', 'electricians'). Provide this or 'soc_code'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal read-only, idempotent, non-destructive behavior. The description goes well beyond that by disclosing the two-source composition, that the BLS leg is keyless, that the Census leg requires an API key and degrades gracefully, and that the output is informational and not a hiring guarantee. It also notes that unmatched metros are flagged rather than fatal. This is exemplary behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then moves logically through data sources, input options, output format, and key caveats. Though long, every sentence carries meaningful information; there is no fluff or repetition. The structure makes the complexity easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description correctly takes responsibility for explaining what the caller receives: a readable brief with a headline, wage percentiles, and per-source evidence. Combined with parameter guidance, data-source requirements, and failure-mode notes, the description gives an agent everything needed to invoke the tool correctly and interpret its response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all four parameters at 100% coverage, so the baseline is 3. The description adds meaning beyond the schema by stating national defaults, the occupation-or-soc_code usage pattern, and the metro coverage caveat. That lifts it above the baseline, though much of the schema already covers the override and example details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, memorable framing: one-call 'can I hire this role here, and at what cost' read. It clearly names the resource (occupation in a US geography), the core behavior (joins BLS OEWS and Census ACS), and even differentiates itself from raw sibling data tools by emphasizing the joined, brief-producing nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states exactly what kind of query this answers and how to invoke it: pass an occupation or soc_code, plus optional state or metro. It does not explicitly name sibling alternatives or say when NOT to use this tool, but the context strongly implies it is the composite choice versus single-source tools like bls_series or census_demographics. That is clear enough but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ted_opportunity_radarARead-onlyIdempotentInspect
Find traceable EU procurement opportunities from official TED notices using one of two explainable signals: contracts with reported end dates in a chosen window (renewal) or award results reporting zero received submissions (zero_bid). Filters by buyer country and CPV code. This does not predict awards or allege fraud.
| Name | Required | Description | Default |
|---|---|---|---|
| cpv | No | Optional 8-digit CPV code; TED's hierarchy may include child codes. | |
| page | No | 1-based result page; default 1. | |
| limit | No | Maximum notices; default 20. | |
| signal | Yes | Opportunity signal to retrieve. | |
| country | No | Optional ISO alpha-3 buyer country, e.g. DEU, FRA, NLD. | |
| end_date | No | YYYY-MM-DD upper bound. Defaults to 180 days after start_date. | |
| start_date | No | YYYY-MM-DD. For renewal, contract-end lower bound; for zero_bid, notice publication lower bound. Defaults to today (renewal) or 180 days ago. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds interpretive scope beyond that – it explicitly disclaims that results do not predict awards or allege fraud – which usefully bounds how an agent should frame output. It does not mention rate limits or result size caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose and the two signals front-loaded, filters second, boundary disclaimer last. Every sentence earns its place with no restatement of the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read-only query with full schema coverage and no output schema, the description covers purpose, signal semantics, filters, and scope caveats. It omits any note on the paginated return shape, but the page/limit parameters are self-documenting in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes beyond the terse schema text by giving semantic meaning to the signal enum values (renewal = reported contract end dates in window; zero_bid = awards with zero received submissions). The country/CPV filters are also called out at the semantic level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (traceable EU procurement opportunities from official TED notices), then pins down the two exact usage modes: renewal (contracts with reported end dates in a window) and zero_bid (awards reporting zero submissions). An agent can distinguish this signal-finder from a plain notice search 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains what each of the two signals means and the condition that selects it, plus which filters apply (buyer country, CPV). It does not name or route against the sibling ted_search_notices, so an agent must infer the boundary between a signal radar and a general notice search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ted_search_noticesBRead-onlyIdempotentInspect
Search the official EU Tenders Electronic Daily (TED) corpus with a bounded expert query. Returns latest notice versions with English-preferred titles, buyers, countries, CPV codes, lot signals, official URLs, pagination metadata, and source caveats. Anonymous and read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based result page; default 1. | |
| limit | No | Maximum notices; default 20 and maximum 50. | |
| query | Yes | TED Expert Search query, e.g. 'publication-date >= 20260901 AND buyer-country = DEU'. Maximum 500 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so 'Anonymous and read-only' largely restates structured data. The description does add useful behavior beyond the annotations by enumerating what is returned ('latest notice versions', 'source caveats'), but omits rate limits, error behavior, and freshness windows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the core purpose front-loaded; the return-field list is long but informative rather than filler. Slight trimming possible but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the burden of describing returns (titles, buyers, countries, CPV codes, URLs, pagination metadata, caveats) and covers the safety profile via annotations. It is nearly complete for a search tool, lacking only query-syntax fallback behavior and result-freshness detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents page, limit, and the expert query syntax with an example. The description's 'bounded expert query' and 'pagination metadata' add only marginal meaning beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the official EU Tenders Electronic Daily (TED) corpus') and names the query style. It is clear what the tool does, but it never differentiates itself from the sibling ted_opportunity_radar, which also covers EU tender data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'bounded expert query' hints at the intended use case, but there is no explicit when-to-use, no when-not-to-use, and no routing to the obvious alternative (ted_opportunity_radar or load_tender_fraud_shield). The agent must infer which TED tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tide_predictionsARead-onlyIdempotentInspect
Return high and low tide predictions (times and heights) from the keyless NOAA Tides & Currents (CO-OPS) public API - U.S. Government public-domain data. Give either a NOAA station id (e.g. '9414290' for San Francisco) or a lat/lon (the nearest tide-prediction station is chosen automatically). Returns each high and low tide over the requested inclusive date range, in local station time, relative to the chosen tidal datum (default MLLW). Use it for tide tables, beach and boating planning, or coastal scheduling.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees. Used with lon to pick the nearest station when no station id is given. | |
| lon | No | Longitude in decimal degrees (negative west). | |
| datum | No | Tidal datum: MLLW, MSL, MHW, etc. Default MLLW. | |
| units | No | 'english' (feet) or 'metric' (meters). Default english. | |
| station | No | NOAA CO-OPS station id, e.g. '9414290'. Optional if lat and lon are given. | |
| end_date | No | End date (inclusive), 'YYYY-MM-DD'. Defaults to begin_date + 1 day. | |
| begin_date | No | Start date (inclusive), 'YYYY-MM-DD'. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, openWorldHint, non-destructive), the description discloses several non-obvious behaviors: no API key is required, lat/lon input silently selects the nearest prediction station, results are in local station time, and values are relative to a tidal datum (default MLLW). These are operationally important traits the annotations do not cover. No contradiction with the annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with the core function front-loaded in sentence one. Each sentence earns its place: function and data source, input modes (station vs lat/lon), output characteristics (times, heights, local time, datum), and use cases. 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.
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 output burden and does so well: it characterizes the return as high/low tide times and heights per day over an inclusive range, in local time, datum-relative. It also covers input alternatives and defaults. Minor gaps remain — failure modes for invalid station IDs or date ranges and any limits on range length — but nothing that would block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — all 7 parameters have descriptions, so the baseline is 3. The description largely restates schema content (the '9414290' station example, MLLW default, inclusive date ranges). It adds only marginal interpretive value, such as flagging that results are in local station time, which affects how begin_date/end_date should be interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource: 'Return high and low tide predictions (times and heights) from the keyless NOAA Tides & Currents (CO-OPS) public API'. The data source (NOAA CO-OPS) and output type (high/low tides) make it easy to distinguish from environmental siblings like weather_current, weather_forecast, sun_times, and water_levels without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives explicit use-case routing: 'Use it for tide tables, beach and boating planning, or coastal scheduling.' This tells an agent when to select this tool. However, it does not name alternatives or state when NOT to use it (e.g., real-time observed water levels would belong to the water_levels sibling), leaving exclusions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_auctionsARead-onlyIdempotentInspect
Recent US Treasury securities auction results: term, CUSIP, issue/maturity dates, high yield, interest rate, bid-to-cover ratio, and amounts. Optionally filter by security type (Bill, Note, Bond, TIPS, FRN).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. | |
| security_type | No | Filter by security type: 'Bill', 'Note', 'Bond', 'TIPS', 'FRN'. |
TDQS
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 the dataset's field inventory and recency scope, but discloses nothing about ordering, default row count, or data freshness beyond 'recent'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler; the data scope is front-loaded and the filter option follows. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, enumerating returned columns is valuable and largely completes the picture for a read-only list tool. Minor gaps remain: default ordering, default row count, and how far back 'recent' extends.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (limit, security_type) are documented there, including the same enum-like values the description repeats. The description adds no syntax or default behavior beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Recent US Treasury securities auction results') and enumerates the returned fields (term, CUSIP, dates, high yield, bid-to-cover). This clearly separates it from siblings like treasury_interest_rates, treasury_debt, or fed_board_h15_yield_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says filtering by security type is optional but gives no when-to-use context, no relationship to alternative fixed-income tools, and no hint about what 'recent' means or how to broaden/narrow the query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_cash_balanceARead-onlyIdempotentInspect
Daily operating cash balance of the US Treasury (the Treasury General Account, the government's checking account at the Fed), from the Daily Treasury Statement. Values are in millions of dollars.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower. The description adds genuine value beyond them by disclosing the data's provenance (Daily Treasury Statement), its daily cadence, and the units of the values (millions of dollars) — all traits an agent cannot get from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly constructed sentence that front-loads the resource and appends provenance and units as clarifying parentheticals. Every clause earns its place; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, single-parameter read-only tool with no output schema, the description covers what the data is, where it comes from, and its units. It only omits how results are shaped or paginated, which is a minor gap given the annotations and simple schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional parameter (`limit`) and the schema description coverage is 100%, so the schema already documents it fully. The description adds nothing about pagination, row counts, or the limit parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (the US Treasury's daily operating cash balance / Treasury General Account) and its source, so an agent can immediately tell it apart from other treasury_* tools like auctions, debt, or rates. It stops short of explicitly naming sibling tools, but the resource is distinctive enough that no differentiation is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: explaining that this is the government's checking account at the Fed tells an agent what the data means but not when to prefer it over treasury_debt or treasury_interest_rates. There are no exclusions, prerequisites, or alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_debtARead-onlyIdempotentInspect
US total public debt outstanding (the 'Debt to the Penny' series from the US Treasury). Returns the most recent figure plus history, split into debt held by the public and intragovernmental holdings. Keyless, official Treasury data.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. | |
| end_date | No | Latest record date (YYYY-MM-DD). | |
| start_date | No | Earliest record date (YYYY-MM-DD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds genuinely new context by noting the data is keyless and officially sourced from the Treasury, which tells the agent no credentials or setup are needed and the source is authoritative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. The core identity and returned shape are front-loaded before the supporting provenance note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read-only tool with no output schema, the description usefully describes what comes back (recent figure plus history, with the two debt components split out). It does not clarify default behavior when no date range is supplied, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so limit, start_date, and end_date are fully documented in the schema itself. The description adds no format, default, or interaction detail (e.g., what happens if no dates are given), so it sits at the baseline for a fully-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific series ('Debt to the Penny'), the issuing body, and the exact content returned (most recent figure plus history, split into public debt and intragovernmental holdings). An agent can distinguish this from treasury_auctions, treasury_cash_balance, or treasury_interest_rates 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool's use (US total debt data, recent plus historical), but offers no explicit when-to-use framing, no mention of date-range scoping intent, and no pointer to alternative treasury tools for related questions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_exchange_ratesARead-onlyIdempotentInspect
Official US Treasury Reporting Rates of Exchange (the rates US government agencies use to convert foreign currency balances to dollars). Published quarterly. Provide a country or currency to filter, e.g. 'Canada', 'Euro', 'Yen'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. | |
| query | No | Country or currency name to match, e.g. 'Canada', 'Euro Zone', 'Japan'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description only needs to add context. It does: the data is authoritative government reporting rates and is 'Published quarterly', which tells the agent how fresh results are and that this is not real-time market data. It does not describe pagination or default behavior when no filter is applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences that lead with the source and nature of the data before the optional filter instruction. The example values slightly duplicate the schema's own examples, but nothing is padded or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter lookup with no output schema, the description supplies the essentials: what the data is, its official origin, its quarterly cadence, and how to filter. Missing only edge behavior such as the default result set when no query is given and how limit interacts with large result sets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both the query matcher and the limit, including its min/max. The description repeats the query examples ('Canada', 'Euro', 'Yen') that the schema already provides and says nothing about the limit parameter, so it adds little beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and its provenance: 'Official US Treasury Reporting Rates of Exchange (the rates US government agencies use to convert foreign currency balances to dollars).' It clearly distinguishes this data from market/spot FX rates available via sibling tools like fred_* or worldbank_*, though it never names an alternative directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a filtering hint ('Provide a country or currency to filter, e.g. Canada, Euro, Yen') but no explicit when-to-use vs. when-not, no statement of what happens when no query is supplied, and no routing to alternative rate sources. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_interest_ratesBRead-onlyIdempotentInspect
Average interest rates the US Treasury pays on its marketable and non-marketable securities (Treasury Bills, Notes, Bonds, TIPS, etc.), by month. Optionally filter by security description.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. | |
| security | No | Filter by security type/description, e.g. 'Treasury Notes', 'Bills', 'TIPS'. |
TDQS
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 dataset-level context (marketable vs non-marketable, monthly granularity) but says nothing about row counts, default limit behavior, or data coverage range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the resource is front-loaded and the optional filter is stated last. Efficient, though the parenthetical example list is somewhat redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-required-parameter read tool with full schema coverage and annotations covering safety, the description adequately conveys what data is returned (monthly average rates by security type). No output schema exists, but the description implies the shape well enough; only the default row count / pagination behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the same security examples ('Treasury Notes', 'Bills', 'TIPS'). The description adds no syntax or semantic detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: average interest rates paid on marketable and non-marketable Treasury securities, broken out by month. It enumerates example security types, which clearly separates it from siblings like treasury_auctions or treasury_exchange_rates. It does not explicitly name a sibling to distinguish itself, so no top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage cue is 'Optionally filter by security description', which restates the parameter. There is no when-to-use guidance, no mention of when to prefer this over related Treasury tools, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_tic_compare_holdersARead-onlyIdempotentInspect
Which of two to eight MFH holders changed Treasury holdings most between two exact months? Resolves stable ids, requires primary observations at both endpoints, and ranks by absolute USD-million change. Returns endpoint values, absolute/percent change, raw source line references, provenance, and custodial/methodology caveats. Comparisons across pre-2011 benchmark breaks describe published estimates and are not beneficial-owner flows.
| Name | Required | Description | Default |
|---|---|---|---|
| holders | Yes | Two to eight distinct exact holder ids or unambiguous published labels. | |
| end_month | Yes | Exact calendar month in YYYY-MM format. | |
| start_month | Yes | Exact calendar month in YYYY-MM format. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering safety (readOnly, idempotent, non-destructive, openWorld), the description adds substantive behavior beyond them: id resolution, endpoint-observation requirements, ranking mechanics, and returned provenance/source-line references. It also discloses the key caveat that pre-2011 benchmark-break comparisons are published estimates, not beneficial-owner flows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core question, then adds constraints, output shape, and caveats in dense but well-ordered sentences. Every sentence carries domain information, though the return-value enumeration in sentence three is long and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the return payload (endpoint values, absolute/percent change, source line references, provenance, custodial/methodology caveats). Combined with id-resolution and endpoint requirements, an agent has everything needed to call and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with minItems/maxItems, the YYYY-MM pattern, and enum for response_format all already documented. The description's mention of 'two to eight holders' and 'two exact months' merely restates those constraints rather than adding syntax or format meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource – comparing Treasury holdings changes across two to eight MFH holders between two exact months – and specifies the ranking basis (absolute USD-million change). An agent can distinguish this from siblings like treasury_tic_rank_holders or treasury_tic_holder_history without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear preconditions for use: two-to-eight holders, two exact months, and the requirement that primary observations exist at both endpoints. It never names the adjacent sibling tools (find_holders, rank_holders, holder_history) or states when to prefer them, so no explicit alternative routing exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_tic_find_holdersARead-onlyIdempotentInspect
Which holder names and stable ids are available in the hosted Treasury International Capital Major Foreign Holders archive? Searches publisher-listed holders, historical aggregates, totals, residuals, and foreign-official memorandum rows. Returns primary-series coverage, latest value, pagination, immutable source hashes, run id, and caveats. Use this before history or comparison when a label is uncertain; this is not the complete TIC country universe.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches. Default 20. | |
| query | No | Optional case-insensitive fragment of a holder label or id. | |
| offset | No | Matches to skip. Default 0. | |
| entity_type | No | Optional exact normalized row class. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered; the description earns credit by disclosing the return payload (primary-series coverage, latest value, pagination, immutable source hashes, run id, caveats) in the absence of an output schema. It also warns of incomplete universe coverage, a behavioral caveat beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core identification and followed by scope, returns, and usage routing. It is dense but each sentence carries distinct information; the framing as a question is slightly less direct than a declarative verb-first statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only discovery tool with no output schema, the description adequately covers what it searches, what it returns, and its relationship to sibling tools. The only residual gap is that the 'not the complete universe' limitation is stated without explaining what is excluded or how to enumerate the remainder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents limit, query, offset, entity_type, and response_format. The description mentions the row classes that map to the entity_type enum but adds no syntax, default, or filter-behavior 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb/resource: it searches publisher-listed holder names and stable ids in the Treasury International Capital Major Foreign Holders archive. It further enumerates the row classes it covers (holders, historical aggregates, totals, residuals, foreign-official memorandum rows), which pins down scope precisely and separates it from the history/comparison siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: 'Use this before history or comparison when a label is uncertain,' which directs the agent to call this discovery tool ahead of the history/comparison siblings. It also flags a scope limit ('this is not the complete TIC country universe') but does not name the specific alternative tools, so it stops short of the fully explicit when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_tic_holder_historyARead-onlyIdempotentInspect
How did one publisher-listed major foreign holder's U.S. Treasury holdings change over a fixed monthly window? Returns bounded/paginated holdings in integer USD millions, exact month, primary/comparison-series identity, raw-asset line references, snapshot vintage, hashes, and methodology caveats. Primary values are returned by default; set include_comparison_series only to inspect duplicate benchmark-break comparison columns.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum observations. Default 24. | |
| holder | Yes | Exact MFH holder id or unambiguous published label. Use treasury_tic_find_holders first if unsure. | |
| offset | No | Observations to skip. Default 0. | |
| end_month | No | Exact calendar month in YYYY-MM format. | |
| start_month | No | Exact calendar month in YYYY-MM format. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| include_comparison_series | No | Include separately preserved prior-series comparison values at historical breaks. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnly, idempotent, non-destructive, openWorld), so credit goes to what the description adds: units in integer USD millions, a fixed (non-arbitrary) monthly window, snapshot vintage, hashes, methodology caveats, and the primary-vs-comparison default. The pagination bounds are conveyed by the schema rather than the description, keeping this just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A question front-loads the purpose and the second sentence packs return shape plus the one conditional parameter. It is dense but every clause carries information; only slight compression would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so competently (units, month, series identity, line references, vintage, hashes, caveats). Routing to sibling tools and explicit alternatives remain the only meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value beyond the schema: holdings are integer USD millions, the window is fixed monthly, and the comparison series are 'duplicate benchmark-break comparison columns' used only for historical breaks, sharpening the schema's vaguer wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb+resource with scope: one holder's U.S. Treasury holdings over a monthly window. That is clear, but the description never names the sibling tools (compare_holders, rank_holders, official_share) it must be distinguished from, so the agent must infer the difference from the name and schema alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is limited to parameter-level routing: 'set include_comparison_series only to inspect duplicate benchmark-break comparison columns.' There is no when-to-use-this-vs-alternatives guidance; the useful pointer to treasury_tic_find_holders lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_tic_rank_holdersARead-onlyIdempotentInspect
Which named major foreign holders had the largest Treasury holdings in a specified month? Ranks only the named holder rows published in Treasury's MFH table, excluding Grand Total, All Other, and foreign-official memo rows. Historical publisher aggregates are excluded unless requested. Returns bounded pagination, integer USD millions, exact source lines, hashes, vintage, and the custodial-attribution caveat. If month is omitted, uses the hosted snapshot vintage.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ranked rows. Default 20. | |
| month | No | Exact calendar month in YYYY-MM format. | |
| offset | No | Ranked rows to skip. Default 0. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. | |
| include_historical_aggregates | No | Include discontinued publisher aggregates such as Oil Exporters in older rankings. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds real operational context: the custodial-attribution caveat, snapshot-vintage fallback, bounded pagination, and inclusion of exact source lines and hashes. It does not state rate limits or failure modes, but for a read-only ranking tool this is substantial added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opens with the core question, then layers scope, exclusions, and return characteristics in a tight sequence with no filler. It is denser than average but every clause carries information; only the enumeration of return fields is slightly list-like.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return burden and does so: pagination bounds, USD millions units, exact source lines, hashes, vintage, and the attribution caveat. Combined with full schema coverage and clear annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema for two parameters: include_historical_aggregates is explained as discontinued publisher aggregates (e.g., Oil Exporters) in older rankings, and the month-omitted fallback to the hosted snapshot vintage is not in the schema. Limit/offset/response_format behavior is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (ranks) and resource (named major foreign Treasury holders in a specified month) and immediately scopes what is ranked and what is excluded. An agent can distinguish it from treasury_tic_compare_holders, treasury_tic_find_holders, treasury_tic_holder_history, and treasury_tic_official_share 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear inclusion/exclusion rules (Grand Total, All Other, foreign-official memo rows excluded; historical aggregates excluded unless requested) and states the default behavior when month is omitted. It does not explicitly name which sibling to use instead for aggregate or official-flow questions, so it stops short of a full when/when-not routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trials_detailsARead-onlyIdempotentInspect
Get full detail for one clinical trial by its NCT id (e.g. 'NCT02562313'): title, status, conditions, sponsor, phase, interventions, brief summary, enrollment, start/completion dates, number of sites, and the study URL.
| Name | Required | Description | Default |
|---|---|---|---|
| nct_id | Yes | ClinicalTrials.gov NCT id, e.g. 'NCT02562313'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive operation, so the safety profile is covered. The description adds value by specifying exactly what the response contains, including study status, sponsor, phase, enrollment, dates, site count, and URL. No behavioral contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence conveys the operation, the identifier format, and a full list of returned fields. There is no filler, redundancy, or unnecessary qualification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup tool, the description is complete: it states how to call it, what input is expected, and what output fields to expect. No output schema exists, so the enumerated field list effectively fills that gap. Error handling or rate limits are not essential for this simple, safe operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single required parameter nct_id and provides the same example ('NCT02562313') found in the description. The description adds no new parameter semantics beyond what the schema supplies, so the baseline of 3 applies per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get full detail') and resource ('one clinical trial by its NCT id'), with a concrete example. It enumerates the returned fields, making it unmistakable what this tool does. It is clearly differentiated from its sibling trials_search, which is for finding trials rather than retrieving details for one known trial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this tool when you have a specific NCT id and need comprehensive details for one clinical trial. It does not explicitly mention that trials_search should be used when only keywords or filters are available, nor does it give explicit exclusions, 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.
trials_searchARead-onlyIdempotentInspect
Search ClinicalTrials.gov for clinical studies by condition, intervention/drug, sponsor, recruitment status, and/or location. Returns each trial's NCT id, title, status, conditions, lead sponsor, phase, and study type.
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | General search term. | |
| limit | No | Max rows (default 10, max 50). | |
| status | No | Recruitment status, e.g. 'RECRUITING', 'COMPLETED', 'TERMINATED'. | |
| sponsor | No | Sponsor/organization, e.g. 'Pfizer'. | |
| location | No | Location, e.g. 'Houston' or 'Texas'. | |
| condition | No | Disease/condition, e.g. 'breast cancer'. | |
| intervention | No | Drug/intervention, e.g. 'semaglutide'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuine value by disclosing the return shape (NCT id, title, status, conditions, lead sponsor, phase, study type), which matters because there is no output schema. It omits pagination/rate-limit behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences: the first establishes the operation and facets, the second the return payload. No filler, and the most important information (what it searches and what it filters by) leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, filter facets, and return fields, which is adequate for a 7-optional-param search tool with no output schema. The one gap is default behavior with no filters supplied, which an agent would want to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented with examples. The description restates the filter dimensions but adds no syntax, format, or combination semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (clinical studies) and names the data source (ClinicalTrials.gov), plus enumerates the filterable dimensions and returned fields. It does not explicitly distinguish itself from the sibling trials_details, but the search-vs-detail split is self-evident from the wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The list of filter facets implies how to use it (search by condition, intervention, sponsor, status, location), but there is no explicit when-to-use guidance, no mention of when to prefer trials_details, and no statement about what happens with zero filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tx_wells_nearARead-onlyIdempotentInspect
Find Texas oil & gas wells near a location using the Texas Railroad Commission (RRC) public well map (keyless public record). Given a longitude/latitude and a radius, returns the wells within it, each with its API well number, well number, and type/status (e.g. 'Oil Well', 'Gas Well', 'Permitted Location', 'Dry Hole', 'Injection/Disposal'), plus a breakdown by type. Use geocode_address first to turn a street address into coordinates. Texas covers the Permian and Eagle Ford basins. This is well LOCATION + type data; operator, production volumes, and permit dates are not in this layer.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude of the center point (WGS84), e.g. 31.9974. | |
| lon | Yes | Longitude of the center point (WGS84), e.g. -102.0779. | |
| limit | No | Max wells to return (default 25, max 100). | |
| radius_km | No | Search radius in kilometers (default 1.5, max 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real context: keyless public record (no auth), a concrete enumeration of return fields and type/status values, and a breakdown-by-type note. With no output schema, this return-shape disclosure is genuinely useful; it just doesn't cover pagination or truncation behavior near the limit cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and resource, then layers prerequisite, scope, and exclusions in tight clauses with zero filler. Every sentence (data source, return fields, geocode routing, exclusions) carries information an agent needs to call the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so fully by naming the fields and type/status values plus the by-type breakdown. Combined with auth (keyless), geography, a prerequisite step, and explicit limitations, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so lat, lon, limit, and radius_km are already fully documented with types, bounds, and examples. The description restates 'longitude/latitude and a radius' but adds no syntax, units, or ordering detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) plus a precisely scoped resource (Texas oil & gas wells near a location) and the underlying data source (Texas RRC public well map). The geographic limitation (Texas, Permian/Eagle Ford basins) distinguishes it from the sibling ok_wells_search for Oklahoma without the agent opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite and routing instruction: 'Use geocode_address first to turn a street address into coordinates.' It also clarifies the data scope boundaries (location + type only, not operator/production/permit dates). It never states when NOT to use it or names a competing alternative, 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.
urlhaus_lookup_hostARead-onlyIdempotentInspect
Look up an IPv4 address, hostname, or domain in URLhaus and return a bounded list of associated malware URLs. The host is sent only to URLhaus; LiveDataLink never connects to it.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | IPv4 address, hostname, or domain name; no scheme, port, or path. | |
| limit | No | Maximum records to return (default 20, max 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive. The description adds genuine context beyond them: the host is sent only to URLhaus and LiveDataLink never connects to it, disclosing third-party data egress and that this is a passive lookup rather than active scanning. It also flags the result as bounded, aligning with the limit cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, then the privacy/behavioral note. No filler and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description states the return shape at a high level (a bounded list of associated malware URLs) and the annotations cover the safety profile. It is complete enough to invoke correctly, with only the exact record fields left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (host and limit) are fully documented in the schema, including format constraints and the default/max for limit. The description reinforces the accepted host forms and the bounded result size but adds no syntax or semantics 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (IPv4/hostname/domain in URLhaus) and says what it returns (a bounded list of associated malware URLs). The accepted input types implicitly separate it from sibling lookups keyed on URL, payload hash, or tag, though no sibling is named directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the accepted input types and the URLhaus context, but there is no explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as urlhaus_lookup_url or urlhaus_lookup_payload. An agent can infer the fit but must do the comparison itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
urlhaus_lookup_payloadARead-onlyIdempotentInspect
Look up URLhaus metadata for an MD5 or SHA-256 malware-payload hash and return a bounded set of associated URLs. This tool does not download the payload.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | Exactly 32 hexadecimal MD5 characters or 64 hexadecimal SHA-256 characters. | |
| limit | No | Maximum records to return (default 20, max 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and openWorld, so the bar is lower. The description adds real value by noting the result set is bounded and, notably, that the tool does not download the payload - a meaningful boundary for a threat-intel lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero waste. The core purpose is front-loaded, and the disambiguating non-download caveat is placed second where it belongs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description gives the return shape at a high level ('bounded set of associated URLs') and annotations carry the safety profile, so an agent has enough to call it correctly. Only minor gaps remain (pagination/empty-result behavior).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so hash format and the limit default/max are fully documented in the schema. The description restates the hash types but adds no syntax or semantics beyond the schema, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (URLhaus metadata) tied to a precise input type (MD5/SHA-256 malware-payload hash), which differentiates it from lookup_host/lookup_url siblings. It stops short of explicitly naming alternatives, but the hash-keyed 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the input type: this tool is for when you have a payload hash. However, it never states when to prefer it over sibling tools like urlhaus_lookup_signature or urlhaus_recent_payloads, or any exclusions. Guidance 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.
urlhaus_lookup_signatureBRead-onlyIdempotentInspect
Look up a URLhaus malware-family signature and return counts plus a bounded list of associated URL and payload observations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum records to return (default 20, max 50). | |
| signature | Yes | Malware-family signature, 1-64 safe text characters. |
TDQS
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 that results come back as counts plus a bounded list of URL and payload observations, which is modest but real 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler: action, resource, then return shape. It earns its place, though it stops just short of the routing information that would make it maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does give a rough return sketch (counts plus bounded URL/payload observations), which is the main thing it needs to supply. It omits what happens with an unknown or malformed signature and how the "bounded" limit interacts with the returned observations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema documents both `signature` (1-64 safe text characters) and `limit` (default 20, max 50) with full constraints. The description adds only the word "bounded," so baseline 3 is appropriate – the schema carries this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Look up") plus a precise resource ("URLhaus malware-family signature"), and it even previews the return shape (counts plus URL/payload observations). The word "signature" implicitly separates it from sibling lookups keyed on host/url/tag/payload, but no sibling is named, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to choose this tool over urlhaus_lookup_host, urlhaus_lookup_tag, urlhaus_lookup_url, or urlhaus_lookup_payload, and gives no exclusions or prerequisites. The only usable cue is the word "signature" in the description, which is no more than the name already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
urlhaus_lookup_tagARead-onlyIdempotentInspect
Look up a URLhaus classification tag and return observation dates plus a bounded list of associated malware URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | URLhaus tag, 1-64 letters, digits, spaces, periods, plus signs, underscores, or hyphens. | |
| limit | No | Maximum records to return (default 20, max 50). |
TDQS
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 still adds real value by disclosing the return content (observation dates plus a bounded list of malware URLs) in the absence of any output schema, though it does not explain how the bound is applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the action and the resource. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with full schema coverage and complete annotations, the definition supplies what an agent needs to call it correctly, and it compensates for the missing output schema by naming the returned fields. The only gap is the absence of any disambiguation from the other urlhaus lookup tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the tag format/character rules and the limit default (20) and maximum (50) are fully documented in the schema. The description's phrase 'bounded list' gestures at the limit parameter but adds no syntax or default detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up a URLhaus classification tag') and previews the return payload (observation dates plus associated malware URLs). It is clear, but it never distinguishes itself from the sibling lookups (urlhaus_lookup_host, urlhaus_lookup_url, urlhaus_lookup_payload, urlhaus_lookup_signature), so an agent must infer the routing from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description never says to reach for this tool when the key you hold is a tag rather than a host, URL, payload hash, or signature, even though four near-identical siblings exist. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
urlhaus_lookup_urlARead-onlyIdempotentInspect
Look up URLhaus threat intelligence for exactly one HTTP(S) URL or numeric URLhaus record ID. Returns status, tags, blacklist metadata, and a bounded payload summary without contacting the reported URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | HTTP(S) URL to query as an indicator, max 2048 characters. | |
| limit | No | Maximum records to return (default 20, max 50). | |
| url_id | No | Numeric URLhaus record ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond them: 'without contacting the reported URL' reassures the agent this lookup is passive, and 'bounded payload summary' signals a size-capped response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the identifier scope front-loaded and the return/safety note second. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully summarizes return contents (status, tags, blacklist metadata, bounded payload summary) and the passive behavior. Annotations cover safety, so the definition is nearly complete, missing only explicit guidance on mutually exclusive url vs url_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url, url_id and limit are fully documented in the schema. The description's 'URL or numeric URLhaus record ID' phrasing hints that url and url_id are alternate identifiers, but it doesn't clarify that exactly one (not both) must be supplied, so it adds only marginal meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (URLhaus threat intelligence for a URL or record ID), and the 'exactly one HTTP(S) URL' scoping implicitly separates it from the list-oriented urlhaus_recent_urls and the urlhaus_lookup_host/payload/signature/tag siblings. It never names those siblings, so differentiation is inferable 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'exactly one' implies this is the single-indicator lookup rather than a bulk/recent listing, giving implied usage guidance. But there is no explicit when-to-use or when-not-to-use statement, and no routing to the host/payload/signature/tag alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
urlhaus_recent_payloadsARead-onlyIdempotentInspect
List metadata and cryptographic hashes for payloads recently observed by URLhaus. This tool does not download malware samples.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum records to return (default 20, max 100). |
TDQS
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 genuinely new information by explicitly stating it does not download malware samples, which tells the agent the payload bytes are out of reach and only metadata/hashes come back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the primary capability is front-loaded before the safety caveat. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does say what comes back at a high level (metadata and cryptographic hashes), which is enough for an agent to understand the return shape. Minor gaps remain around result ordering and whether the list is paginated or capped by the single limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional parameter with 100% schema description coverage, so the schema fully documents 'limit' including its default and max. The description adds nothing about pagination or ordering, matching the baseline-3 expectation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List metadata and cryptographic hashes for payloads') with a scope qualifier ('recently observed by URLhaus'). It does not differentiate itself from the sibling urlhaus_recent_urls or urlhaus_lookup_payload, so an agent must infer which one applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives named, and no indication of when to prefer this over urlhaus_recent_urls or urlhaus_lookup_payload. The only implicit guidance is the word 'recent', which is thin for a family of five sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
urlhaus_recent_urlsARead-onlyIdempotentInspect
List recent malware-distribution URLs added to URLhaus in its rolling three-day window. Returns bounded metadata and indicators only; it never visits the reported URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum records to return (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and open-world, so the safety profile is covered. The description adds genuinely new context beyond them: output is bounded to "metadata and indicators" and the service "never visits the reported URLs" — an important assurance that no malware is fetched or executed. Pagination, ordering and rate limits are still undisclosed, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the scope-defining clause is front-loaded and the behavioral caveat follows. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter read-only listing tool with no output schema, the description covers what is returned (bounded metadata and indicators) and the temporal window. It falls short only on ordering/pagination and the specific indicator fields, which matter slightly more here because there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single `limit` parameter (default 20, max 100), so the schema already carries the semantics. The description adds nothing about the limit or about ordering/capping of the returned window, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("List"), a precise resource ("recent malware-distribution URLs added to URLhaus") and the exact scope ("rolling three-day window"). This is clearly distinguishable from the sibling urlhaus_lookup_* tools (point lookups) and urlhaus_recent_payloads (payloads rather than URLs) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the rolling three-day window tells an agent this is for fresh, unfiltered threat-intel listings, not for resolving a known URL or host. However, no explicit when-to-use/when-not guidance is given and no alternative (urlhaus_lookup_url, urlhaus_lookup_host, urlhaus_recent_payloads) is named, so the agent must infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usda_nass_compare_crop_yearsARead-onlyIdempotentInspect
Compare 2–7 requested crop years across every hosted area, yield, and production metric for one USDA NASS crop/class. Returns each component value with its own unit and source release file, missing-year evidence, provenance, and caveats. Use this for 'compare 2019 and 2025 corn', '2020 vs 2025 soybean acres and yield', or 'compare winter wheat output across these years'. Final national annual summaries only.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | Yes | Crop name or supported alias: corn, soybeans, cotton, wheat, winter wheat, durum wheat, or spring wheat. | |
| years | Yes | Two to seven distinct crop years. | |
| crop_class | No | Optional class. Required for bare 'wheat': winter, durum, or spring (excluding durum). | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
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 useful behavioral context by disclosing return components (units, source release file, missing-year evidence, provenance, caveats) and a scope boundary (national annual summaries only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core operation, then adds return information and usage examples. Every sentence earns its place without redundancy or excessive length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately explains what is returned and includes provenance and missing-year caveats. The schema already covers parameters at 100%, and annotations cover safety, so the agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including crop aliases, year limits, crop_class handling, and response_format. The description reinforces the 2–7 year range and single crop/class constraint but adds no parameter syntax or format details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair (compare crop years) and constrains it to one USDA NASS crop/class and final national annual summaries. It clearly distinguishes a multi-year comparison tool from sibling search/history/trend tools by defining the comparison scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage examples ('compare 2019 and 2025 corn', '2020 vs 2025 soybean acres and yield') and a scope limitation ('Final national annual summaries only'). It does not explicitly name alternative sibling tools or state when not to use it, so it stops 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.
usda_nass_crop_evidence_packARead-onlyIdempotentInspect
Combine all hosted final annual USDA NASS national metrics for one major crop/class into a provenance-backed evidence pack with latest/as-of values, prior-year changes, and exact five-year comparisons. Use this for 'build a corn production evidence pack', 'summarize national soybean acreage yield and output', or as an agriculture leg to combine with weather, freight, fuel, or futures data. Covers crop years 2019–2025 and is not a current forecast or trading recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | Yes | Crop name or supported alias: corn, soybeans, cotton, wheat, winter wheat, durum wheat, or spring wheat. | |
| as_of_year | No | Four-digit crop year. Hosted snapshot coverage is 2019–2025. | |
| crop_class | No | Optional class. Required for bare 'wheat': winter, durum, or spring (excluding durum). | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds real context beyond that: provenance backing, latest/as-of values with prior-year changes and five-year comparisons, and an explicit scope limit that it is not a forecast or trading recommendation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action before examples and scope caveats; every sentence carries information. Slightly dense but 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns, and it does reasonably well (latest/as-of values, prior-year changes, five-year comparisons, provenance). Combined with full annotation coverage of the safety profile, an agent has enough to call it correctly, though the exact shape of the pack remains loosely specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so crop, crop_class, as_of_year, and response_format are all documented in the schema itself. The description only echoes 'one major crop/class' and the 2019-2025 coverage, adding no syntax or aliasing detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (combine) and resource (hosted final annual USDA NASS national metrics) and names the deliverable (provenance-backed evidence pack). It does not, however, distinguish itself from the sibling usda_nass_crop_history / crop_trend / compare_crop_years tools, so an agent still has to infer why this pack beats a plain history call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering phrasings ('build a corn production evidence pack') and a composition hint ('as an agriculture leg to combine with weather, freight, fuel, or futures data'). It stops short of explicit when-not-to-use guidance or naming a sibling alternative for simpler single-metric lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usda_nass_crop_historyARead-onlyIdempotentInspect
Return bounded final annual USDA NASS national history for one major-crop metric from the self-hosted 2020–2026 annual-summary releases. Includes values, units, crop class, source release file, pagination, evidence hash, and attribution. Use this for 'US corn yield from 2019 to 2025', 'soybean production history', or 'winter wheat acres harvested'. Available crop years are 2019–2025; this is not a forecast or state/county result.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | Yes | Crop name or supported alias: corn, soybeans, cotton, wheat, winter wheat, durum wheat, or spring wheat. | |
| limit | No | Maximum crop years. Default 20. | |
| metric | Yes | Annual statistic to return. | |
| offset | No | Crop years to skip. Default 0. | |
| end_year | No | Four-digit crop year. Hosted snapshot coverage is 2019–2025. | |
| crop_class | No | Optional class. Required for bare 'wheat': winter, durum, or spring (excluding durum). | |
| start_year | No | Four-digit crop year. Hosted snapshot coverage is 2019–2025. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower; the description adds real value by disclosing the 2019–2025 coverage bound, the self-hosted 2020–2026 release provenance, national-only granularity, and the returned artifacts (evidence hash, attribution, pagination). It stops short of describing pagination semantics or the failure mode when a year falls outside coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then examples, then the exclusion clause. The enumerated return fields add length but each item earns its place given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned fields, and it declares the year-coverage ceiling that the schema merely echoes. Missing only error/edge behavior, which is minor for a bounded read-only history tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and two enums are documented, so the schema already does the heavy lifting for crop, metric, crop_class, and year bounds. The description reinforces year coverage and crop-class relevance but adds no syntax or defaulting 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Return bounded final annual USDA NASS national history for one major-crop metric', and pins the scope to national, final (non-forecast) annual summaries. The 'not a forecast or state/county result' clause cleanly separates it from siblings like usda_nass_crop_trend or usda_nass_search_crop_series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides three concrete example queries and gives explicit exclusions (not a forecast, not state/county). It does not name a specific sibling to use instead for forecasts or sub-national data, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usda_nass_crop_trendARead-onlyIdempotentInspect
Calculate prior-year and exact five-year changes for one final annual USDA NASS national crop series. Returns component observations, absolute and percent changes, five-year CAGR when valid, exact units, evidence hash, and caveats. Use this for 'how has corn yield changed?', 'five-year soybean production trend', or 'trend in upland cotton planted acres'. The optional as-of year never mixes future releases into a historical result.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | Yes | Crop name or supported alias: corn, soybeans, cotton, wheat, winter wheat, durum wheat, or spring wheat. | |
| metric | Yes | Annual statistic to return. | |
| as_of_year | No | Four-digit crop year. Hosted snapshot coverage is 2019–2025. | |
| crop_class | No | Optional class. Required for bare 'wheat': winter, durum, or spring (excluding durum). | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuine value beyond that: it enumerates the returned components (observations, absolute/percent changes, CAGR, units, evidence hash, caveats) and discloses the as-of-year behavior of never mixing future releases into a historical result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core purpose, followed by return contents, example queries, and a caveat. Every sentence carries information with no obvious padding, though the example list is slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately describes what is returned and the semantics of the as-of parameter. It is complete enough for an agent to call correctly, though it omits explicit sibling routing that would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the semantic effect of the optional as-of year ('never mixes future releases into a historical result'), adding meaning that the schema field text does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (calculate) and resource (prior-year and exact five-year changes for one final annual USDA NASS national crop series), which is clear and distinctive. It does not explicitly differentiate itself from siblings like usda_nass_crop_history or usda_nass_compare_crop_years, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete example queries ('how has corn yield changed?', 'five-year soybean production trend'), which implies when to use it. However, it never states when NOT to use it or names the alternatives (crop_history, compare_crop_years, evidence_pack), 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.
usda_nass_search_crop_seriesARead-onlyIdempotentInspect
Search LiveDataLink's self-hosted official USDA NASS Crop Production Annual Summary series. Returns canonical crop/class/metric combinations, units, exact 2019–2025 coverage, pagination, evidence hash, and attribution. Use this for 'what NASS crop series are hosted?', 'find durum wheat yield', or to resolve a series before history/trend calls. Scope is final national annual summaries, not the full Quick Stats catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum series. Default 20. | |
| query | No | Optional crop, class, metric, unit, or description words. | |
| offset | No | Series to skip. Default 0. | |
| response_format | No | Human-readable markdown or machine-readable JSON. Default markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so that burden is lifted. The description still adds useful behavioral context beyond the annotations: the 2019–2025 coverage window, the self-hosted/canonical nature of the data, and the evidence hash and attribution returned. It does not mention rate limits or result-ordering behavior, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler, front-loading the purpose before the usage examples and the scope caveat. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on return-value disclosure and does so reasonably (canonical crop/class/metric combinations, units, coverage, pagination, evidence hash, attribution). Combined with the scope exclusion and resolver role, an agent has what it needs; only the ordering/shape of paged results is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (limit, query, offset, response_format) with types, ranges, defaults, and the enum. The description adds only an implicit hint of query content via the 'durum wheat yield' example, which is the correct baseline-3 profile 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and a precisely scoped resource (self-hosted official USDA NASS Crop Production Annual Summary series). It explicitly distinguishes its role from siblings by framing itself as the series resolver used before history/trend calls, so an agent can separate it from usda_nass_crop_history and usda_nass_crop_trend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering questions ('what NASS crop series are hosted?', 'find durum wheat yield') and an explicit alternative workflow ('resolve a series before history/trend calls'). It also states when NOT to use it via a scope exclusion: 'final national annual summaries, not the full Quick Stats catalog.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usgs_earthquake_detailARead-onlyIdempotentInspect
Get full detail for a specific earthquake event by USGS event ID. Returns origin, magnitude details, focal mechanism (if available), shake-map link, felt reports, tsunami flag, and impact estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | USGS event ID (e.g. 'us7000m5dt'). Get from feed or search results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive, so no safety contradiction exists. The description adds meaningful behavioral context beyond annotations by listing what the response covers (origin, magnitude details, focal mechanism with an 'if available' caveat, shake-map link, felt reports, tsunami flag, and impact estimates), which is especially useful because 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Both sentences are dense and useful: the first states the action and key input, the second lists return contents. There is no filler, repetition, or buried context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup, this description is complete: it explains what the tool does, what input identifies the target, and what the response will contain, with an explicit conditional for focal mechanism. The lack of an output schema is compensated by the return-field enumeration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents event_id with a type and a concrete example, so the schema carries the semantic weight. The tool description adds only that lookup is by USGS event ID, not enough to raise the score above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), names the exact resource ('full detail for a specific earthquake event'), and identifies the key identifier ('USGS event ID'). It also enumerates the returned data categories, making it easy to distinguish this detail tool from sibling list/search tools like usgs_earthquake_feed and usgs_earthquake_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for a single known event rather than discovery, and the parameter schema reinforces that by instructing the agent to obtain the event_id from feed or search results. It does not explicitly name alternatives or state when not to use the tool, so it stops 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.
usgs_earthquake_feedARead-onlyIdempotentInspect
USGS official earthquake summary feed by period and minimum magnitude. period: hour|day|week|month. min_mag: 1.0|2.5|4.5|significant. Returns all events worldwide above the threshold within the period, with magnitude, location, depth, and event detail URL.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time window (default 'day') | |
| min_mag | No | Minimum magnitude threshold (default '2.5') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context about global scope and returned fields, but it does not mention pagination, rate limits, or any limits on the number of events returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the core purpose front-loaded. It lists the key parameters, allowed values, and return fields without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only feed with complete schema annotations, the description is sufficient: it defines input choices, scope ('all events worldwide above the threshold'), and output contents ('magnitude, location, depth, and event detail URL'). No important invocation information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% and each parameter already has an enum and description. The description repeats the allowed values (hour|day|week|month and 1.0|2.5|4.5|significant) but adds no new meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as 'USGS official earthquake summary feed by period and minimum magnitude' and specifies that it returns all events worldwide above a threshold. This is a specific verb-resource pairing, though it does not explicitly contrast itself with sibling tools like usgs_earthquake_search or usgs_earthquake_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: select a period and minimum magnitude to get a worldwide summary feed. However, there is no explicit guidance on when to prefer this tool over the sibling earthquake_recent, usgs_earthquake_search, or usgs_earthquake_detail tools, and no mention of 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.
usgs_earthquake_searchARead-onlyIdempotentInspect
Custom earthquake search via USGS fdsnws. Filter by magnitude, time range, and lat/lon bounding box. Returns up to 100 events sorted by time. Use this for analytical queries instead of the feed when you need historical or geographic filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 100) | |
| end_time | No | ISO date or full datetime | |
| start_time | No | ISO date or full datetime YYYY-MM-DD[THH:MM:SS] | |
| max_latitude | No | Bounding box north | |
| min_latitude | No | Bounding box south | |
| max_longitude | No | Bounding box east | |
| min_longitude | No | Bounding box west | |
| min_magnitude | No | Minimum magnitude (e.g. 4.5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive=false, so the safety profile is covered. The description adds genuinely new context: the backing API (USGS fdsnws), the 100-event result cap, and time-sorted ordering. No mention of rate limits or failure behavior, but the additions go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, filter scope, return shape, then the routing rule. The alternative-to-feed guidance is placed last where it matters, and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully discloses the return shape (up to 100 time-sorted events). Filters, scope, and the sibling alternative are all covered. Minor gaps remain around pagination/offset behavior and the default limit of 25, but 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents ISO formats, defaults, and the limit bounds. The description only restates the filter categories (magnitude, time range, bbox) at the same abstraction level, adding no syntax or interaction detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (earthquake search) and immediately scopes it: filtering by magnitude, time range, and bounding box. It explicitly distinguishes itself from the feed sibling, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this 'instead of the feed when you need historical or geographic filtering,' naming the alternative and the selecting condition. It does not mention the usgs_earthquake_detail sibling, so routing against that tool 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.
usgs_water_realtimeARead-onlyIdempotentInspect
Real-time water data from USGS NWIS streamgages. Filter by site code, state, or parameter (e.g. '00060' = streamflow cfs, '00065' = gage height ft). Useful for flood-stage monitoring, drought tracking, and hydrological research.
| Name | Required | Description | Default |
|---|---|---|---|
| sites | No | Comma-separated USGS site codes (e.g. '01646500') | |
| state_cd | No | Two-letter state code; returns all active sites in the state | |
| parameter_cd | No | USGS parameter code (default '00060' streamflow). Common: 00060=streamflow, 00065=gage height, 00010=water temp, 00400=pH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive behavior. The description adds useful context: real-time freshness, NWIS data source, and units for common parameters. It doesn't disclose return format, pagination, or rate limits, so it adds moderate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first states the core purpose, the second covers filters with an example, and the third gives use cases. It 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query tool with well-documented parameters and rich safety annotations, the description is sufficiently complete: it gives source, filters, examples, and use cases. It doesn't spell out the response shape or data limitations, but the absence of an output schema is not critical for selecting and invoking this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds lightweight examples and units (streamflow cfs, gage height ft), but doesn't substantially improve on the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (USGS NWIS streamgages) and the operation (retrieving real-time water data), with explicit filter dimensions. It doesn't explicitly differentiate from sibling tools like water_levels or tide_predictions, so it doesn't earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context by naming concrete use cases ('flood-stage monitoring, drought tracking, and hydrological research') and notes the filter options. However, it doesn't state when not to use it or point to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vehicle_recallsARead-onlyIdempotentInspect
Check for safety recalls on a vehicle by year, make, and model. Returns all NHTSA recall campaigns including affected component, description, safety risk, and recommended remedy. Use this for 'are there recalls on my car?', 'check recalls for 2020 Toyota Camry', 'is this vehicle safe?', 'any open recalls?', or any vehicle recall check. Covers all US vehicles from all manufacturers.
| Name | Required | Description | Default |
|---|---|---|---|
| make | Yes | Vehicle make (e.g., 'Toyota', 'Ford') | |
| year | Yes | Model year (e.g., 2020) | |
| model | Yes | Vehicle model (e.g., 'Camry', 'F-150') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety behavior is covered. The description adds meaningful behavioral context by stating it returns 'all NHTSA recall campaigns' and enumerates the output fields (affected component, description, safety risk, recommended remedy), plus US vehicle/manufacturer coverage. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the opening sentence states the core purpose, the second explains the return value, and the third gives concrete usage examples and coverage scope. The example list is slightly repetitive but useful for intent matching, and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description compensates by specifying exactly what will be returned (recall campaigns with component, description, safety risk, remedy) and the coverage scope (all US vehicles). The required inputs are unambiguous. It could have mentioned when to use a VIN-based sibling, but the definition 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented with clear examples. The description only restates the input combination in prose ('by year, make, and model') without adding new parameter-level semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Check for safety recalls') on a specific resource ('a vehicle by year, make, and model'), and clarifies it returns NHTSA recall campaigns. This clearly distinguishes it from product, drug, food, or device recall tools among the siblings, and the example queries further pin down the intended use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear invocation context by listing representative user phrasings like 'check recalls for 2020 Toyota Camry' and 'any open recalls?', and covers the general case with 'or any vehicle recall check'. However, it does not explicitly contrast with alternatives such as vin_decode for VIN-based queries or CPSP/FDA recall tools, so it lacks when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vin_decodeARead-onlyIdempotentInspect
Decode a Vehicle Identification Number (VIN) to get full vehicle specifications. Returns year, make, model, trim, body style, engine specs (cylinders, displacement, HP), drivetrain, transmission, fuel type, doors, manufacturer, and assembly plant location. Use this for 'decode this VIN', 'what car is this VIN?', 'look up a VIN number', 'what are the specs on this vehicle?', 'identify this car', or any VIN lookup. Works for all US vehicles - cars, trucks, SUVs, motorcycles, trailers.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | Yes | 17-character Vehicle Identification Number (VIN) |
TDQS
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 clear. The description adds useful behavioral context by listing the exact fields returned and the scope of supported vehicles (all US vehicles including motorcycles and trailers).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient and front-loaded: it states the core function, then lists outputs, then gives query examples, then scope. Every sentence adds useful information, and the example phrases are practical for an agent matching user intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one well-documented parameter, strong annotations, and no output schema, the description is complete: it explains what the tool returns, the vehicle types covered, and the user phrasings that should trigger it. No critical selection or invocation information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single 'vin' parameter, including its 17-character format. The description adds no additional parameter-level semantics beyond restating 'VIN', so the baseline score of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Decode a VIN') and resource, and enumerates the returned vehicle attributes. It does not explicitly distinguish itself from the sibling 'vehicle_recalls' tool, though the specifications-focused output makes the difference mostly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete example queries and says to use it for 'any VIN lookup', giving an agent clear trigger phrases. However, it does not state when not to use it, such as when the user is asking about recalls rather than vehicle specifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_contractor_license_historyBRead-onlyIdempotentInspect
Return the material status, expiration, specialty, and profile transitions observed for one Washington contractor license. Results include before/after values, observation time, source-as-of date, and raw snapshot hash.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum transitions; default 50. | |
| license_number | Yes | Exact Washington contractor license number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description goes beyond that by disclosing the substance of the result (before/after values, observation time, source-as-of date, raw snapshot hash), signaling an audit-grade historical record. It omits ordering of transitions and how the limit interacts with completeness, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and then the returned evidence fields. Every clause carries information and there is no filler, though the second sentence is a dense field list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does a reasonable job of enumerating returned fields. However, it supplies no routing guidance against the two very similar contractor-license siblings, which is the main gap an agent faces when selecting this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (license_number, limit) are already documented in the schema, including the default of 50. The description adds only the notion of 'one license' and does not clarify transition ordering or the effect of the limit, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Return') and a well-scoped resource ('material status, expiration, specialty, and profile transitions observed for one Washington contractor license'), so an agent knows it retrieves a per-license change log. It does not, however, distinguish itself from the sibling wa_contractor_recent_changes, which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus wa_contractor_recent_changes (a change feed) or wa_contractor_verify (a point-in-time check). The phrase 'for one Washington contractor license' implies single-license lookup, but the choice among the three siblings is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_contractor_recent_changesARead-onlyIdempotentInspect
List material Washington contractor-registration changes observed by LiveDataLink's official daily snapshot pipeline. Filter by observed timestamp, change type, or trade. Missing source rows are never labeled revoked; only observed field transitions are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows; default 20. | |
| since | No | ISO date or timestamp. Defaults to 30 days ago. | |
| trade | No | Optional specialty/trade substring. | |
| offset | No | Rows to skip for pagination. | |
| change_type | No | Optional material transition type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive behavior, so the bar is lower, and the description adds real value: it discloses the data source cadence ('official daily snapshot pipeline') and a key semantic caveat ('Missing source rows are never labeled revoked; only observed field transitions are returned'). That is meaningful disclosure about what is and is not reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and followed by the filtering options and the key data caveat. Both sentences carry information, though the 'LiveDataLink's official' branding is slightly heavier than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, full annotations, and no output schema, the description supplies the semantics an agent needs: it is a change feed with defined filters and a caveat about revocation labeling. It could say more about the returned row shape, but the observation-transition note partially covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each of the five parameters is documented in the schema, so the baseline is 3. The description's mention of filtering by timestamp, change type, and trade merely restates available filters and adds no syntax, format, or default detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (material Washington contractor-registration changes) with clear scope: changes captured by the daily snapshot pipeline. An agent can tell it is a changes-feed, not a full license lookup, but it never explicitly names or contrasts with siblings like wa_contractor_license_history or wa_contractor_verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says the tool lists changes and what can be filtered, which implies usage for recent-change monitoring rather than history or verification. However, it never states when to prefer this over wa_contractor_license_history, nor any exclusion conditions, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_contractor_verifyARead-onlyIdempotentInspect
Verify a Washington contractor registration against the official Washington L&I open-data API by exact license number or partial business name. Returns current status, expiration, trade, registration type, UBI, locality, freshness source, and official link. Principal-person and direct-contact fields are intentionally excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches; default 10 and maximum 25. | |
| business_name | No | Partial registered business name, at least 2 characters. | |
| license_number | No | Exact Washington contractor license number. Preferred when known. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior, so the bar is lower, and the description still adds real context: it names the upstream data authority and explicitly discloses that principal-person and direct-contact fields are intentionally excluded, which preempts an agent wondering why those fields are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then return contents, then a deliberate exclusion note. Every sentence carries information and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the return fields (status, expiration, trade, registration type, UBI, locality, freshness source, official link) and flags the intentional field exclusions. It omits match/pagination behavior and any note on source freshness limits, but for a read-only lookup with full annotation coverage it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (license_number, business_name, limit) are already documented, including the 'preferred when known' note on license_number. The description restates the exact-vs-partial distinction but adds no format, validation, or behavioral detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource (verify a Washington contractor registration) plus the authoritative source (WA L&I open-data API) and the two lookup keys. It implies a current-state lookup, but it never names its obvious siblings wa_contractor_license_history or wa_contractor_recent_changes, so the agent must infer the routing itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can tell it's for verification by exact license number or partial business name. There is no explicit when-to-use, when-not-to-use, or alternative named (e.g. history/recent-changes siblings), so the routing guidance rests on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
water_levelsARead-onlyIdempotentInspect
Return the latest observed water level from a NOAA Tides & Currents (CO-OPS) station using the keyless public API - U.S. Government public-domain data. Give either a NOAA station id or a lat/lon (the nearest station is chosen automatically). Returns the observed water level relative to the chosen datum (default MLLW), the observation time in local station time, and the sample standard deviation when reported. Use it to check current real-world water level versus prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees. Used with lon to pick the nearest station when no station id is given. | |
| lon | No | Longitude in decimal degrees (negative west). | |
| datum | No | Tidal datum: MLLW, MSL, MHW, etc. Default MLLW. | |
| units | No | 'english' (feet) or 'metric' (meters). Default english. | |
| station | No | NOAA CO-OPS station id, e.g. '9414290'. Optional if lat and lon are given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, so the safety profile is already clear. The description adds meaningful behavioral context beyond annotations: it is a keyless public API, uses U.S. Government public-domain data, automatically chooses the nearest station for lat/lon, and returns water level relative to a datum with observation time in local station time and sample standard deviation when reported. It doesn't disclose all edge cases (e.g., what happens if no station is found), but it goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with the main purpose, then key usage alternatives and return details. Every clause earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent tool with all parameters documented in schema and a rich description of what it returns, it is largely complete. The only gap is lack of explicit behavior on errors or missing station, and no explicit mention of output format, but since there's no output schema and the tool is straightforward, the description covers what an agent needs to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 5 parameters. The description adds useful context about the relationship between station and lat/lon ('nearest station is chosen automatically') and that datum defaults to MLLW, which is already in the schema. Baseline 3 is right because the description adds marginal context but doesn't need to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the latest observed water level from a NOAA station, specifies the data source, keyless public API, how to identify a station (station id or lat/lon), and what the return includes. This is a specific verb+resource with clear scope, distinct from the sibling 'tide_predictions' (predictions vs observed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use it ('check current real-world water level versus prediction') and gives context about the data source. However, it does not explicitly identify alternatives or say when not to use it. Given the sibling list contains 'tide_predictions' which is a natural alternative, the description does not explicitly exclude or route to it, so a 4 is appropriate rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weather_currentARead-onlyIdempotentInspect
Get current weather conditions for any location worldwide. Returns temperature, feels-like, humidity, wind speed and direction, cloud cover, pressure, precipitation, UV index, and visibility. Use this for 'what's the weather?', 'is it raining in Houston?', 'how hot is it outside?', 'what's the temperature in New York?', 'do I need a jacket?', or any current weather question. Works for any city, zip code, or place name globally.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | City, zip code, or place name (e.g., 'Houston, TX', '77001', 'Paris') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description goes beyond these by specifying the exact set of returned conditions, such as temperature, humidity, wind, cloud cover, pressure, precipitation, UV index, and visibility, and by emphasizing global location coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and return fields, then gives practical example queries. It is slightly longer than necessary due to some repetition between 'any location worldwide' and 'Works for any city, zip code, or place name globally,' but the example queries earn their place for routing accuracy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is complete: it states what the tool does, what data it returns, what kinds of queries it supports, and what location formats are accepted. No critical information is missing 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the location parameter with examples like 'Houston, TX' and '77001', and schema coverage is 100%. The description restates that any city, zip code, or place name works, which reinforces the parameter's semantics but does not add meaningful new detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get current weather conditions for any location worldwide.' It enumerates the returned fields and uses 'current' to distinguish itself from the sibling weather_forecast tool. This makes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use examples such as 'is it raining in Houston?' and 'what's the temperature in New York?', plus a catch-all 'or any current weather question.' It gives clear context for when to use the tool, though it does not explicitly state when not to use it or name weather_forecast as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weather_forecastARead-onlyIdempotentInspect
Get a multi-day weather forecast for any location worldwide. Returns daily high/low temperatures, conditions, precipitation probability, wind speed, UV index, sunrise and sunset. Use this for 'what's the forecast this week?', 'will it rain tomorrow?', 'weekend weather', 'should I plan outdoor activities?', '7-day forecast for Dallas', or any future weather question. Supports 1-16 day forecasts.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Forecast days (default: 7) | |
| location | Yes | City, zip code, or place name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, openWorldHint, idempotentHint, and non-destructiveness. The description adds useful behavioral context by specifying returned fields (high/low, conditions, precipitation probability, wind, UV, sunrise/sunset) and the 1-16 day range. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and returned data, followed by concrete usage examples and a parameter range. Every sentence adds value; the example queries are practical rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining return values, which it does well by listing the forecast fields. It also covers the main invocation need: location, range of days, and use cases. A small gap is the lack of mention of units or the default of 7 days, though the schema covers the default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents location and days well. The description adds that the tool works for "any location worldwide" and supports 1-16 day forecasts, but it does not go much beyond the schema's own parameter descriptions. This matches the baseline for fully self-documenting schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Get a multi-day weather forecast for any location worldwide." It lists the exact data fields returned and clearly distinguishes itself from future-weather vs. current-weather tools by emphasizing "future weather question" and "multi-day." This differentiates it from weather_current and other weather-adjacent siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives rich usage guidance with many concrete example queries like "what's the forecast this week?" and "7-day forecast for Dallas." It makes the intended context clear, though it does not explicitly name an alternative tool or state when not to use this tool in favor of weather_current or another sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_compareARead-onlyIdempotentInspect
Compare the most recent value of a World Bank indicator across multiple countries (up to 6). Provide a comma-separated list of country codes or names.
| Name | Required | Description | Default |
|---|---|---|---|
| countries | Yes | Comma-separated country codes/names, e.g. 'US,CN,DE,JP'. | |
| indicator | No | Indicator name (one of: gdp, gdp_per_capita, gdp_growth, inflation, population, unemployment, life_expectancy, exports, imports, gni_per_capita, poverty_rate, internet_users) or a raw WB code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral constraints — it returns the 'most recent value' (not a time series) and caps input at 'up to 6' countries — but it does not disclose what happens with invalid country codes, missing data, or how results are formatted and ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first states the purpose and the 6-country cap, the second states the required input format. The purpose 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-parameter tool with 100% schema coverage and safety annotations, the description is nearly sufficient. The only meaningful gap is the absence of any mention of the return shape or error behavior (e.g., invalid country codes, unavailable indicator data), which matters because there is no output schema to cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both countries and indicator are already documented in the schema with the enumerated indicator list. The description adds the 'up to 6' limit and the comma-separated format for countries, but adds no meaning for the indicator parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Compare') plus a clear resource ('a World Bank indicator') and scope ('across multiple countries (up to 6)'). This cleanly distinguishes it from sibling tools like worldbank_indicator and worldbank_country_profile 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case — comparing a single indicator's most recent value across several countries — but never explicitly names alternatives or exclusions. It does not tell the agent to use worldbank_indicator for single-country or historical data, nor worldbank_country_profile for a country dossier, so routing guidance 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.
worldbank_country_profileARead-onlyIdempotentInspect
Snapshot of a country's key development indicators (GDP, GDP per capita, growth, inflation, population, unemployment, life expectancy), each at its most recent available year.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country ISO2/ISO3 code or name (default 'US'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile with readOnlyHint, idempotentHint, and destructiveHint false. The description adds one useful behavioral detail: each indicator is at its most recent available year, implying no time-series retrieval. It does not discuss missing data, units, or country-code normalization, so the added behavioral context is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly written sentence, front-loaded with 'Snapshot', that packs in the indicator list and the temporal behavior. There is no filler, repetition, or irrelevant context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with no output schema, the description is largely sufficient: it names the subject, the indicators returned, and the temporal granularity. Minor gaps like units or missing-indicator behavior exist, but they do not seriously hinder correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single country parameter as an ISO2/ISO3 code or name with a default of 'US', so schema description coverage is 100%. The tool description reinforces that the parameter is the profile subject but adds no meaning beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear deliverable: a snapshot of a country's key development indicators, and lists exactly which indicators are included. The 'most recent available year' scoping helps separate it from time-series tools, though it does not explicitly name sibling Worldbank tools like worldbank_indicator or worldbank_compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The snapshot wording implies the intended use case: a quick at-a-glance country profile. However, it gives no explicit guidance on when to prefer this tool over worldbank_indicator or worldbank_compare, nor does it state exclusions such as 'not for historical trends.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_indicatorARead-onlyIdempotentInspect
Time series for a World Bank development indicator for one country. Friendly indicators: gdp, gdp_per_capita, gdp_growth, inflation, population, unemployment, life_expectancy, exports, imports, gni_per_capita, poverty_rate, internet_users (or pass a raw World Bank code). Country accepts ISO2/ISO3 codes or common names (e.g. 'US', 'China', 'Germany'). Keyless, official World Bank data.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country ISO2/ISO3 code or name (default 'US'). Use 'WLD' for world. | |
| end_year | No | End year (optional). | |
| indicator | No | Indicator name (one of: gdp, gdp_per_capita, gdp_growth, inflation, population, unemployment, life_expectancy, exports, imports, gni_per_capita, poverty_rate, internet_users) or a raw WB code. | |
| start_year | No | Start year (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds that the data is 'Keyless, official World Bank data,' which is useful context about authentication (none required) and source authority. However, it doesn't describe return format (e.g., list of year-value pairs), pagination, rate limits, or how missing data is handled. With annotations handling the core behavior, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, followed by helpful examples. No filler or repetition. Efficient and well-structured, though it could be slightly more concise by omitting some redundancy (e.g., the country examples).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full annotation coverage and 100% schema description, the description is adequate but not complete. It doesn't mention that there is no output schema and doesn't describe the return structure (e.g., a time series of values). It also doesn't clarify default behavior (e.g., default country 'US' and full year range if no start/end specified). Missing these details leaves some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds marginal value by listing friendly indicator names and country code formats, but these are also present in the schema descriptions (e.g., the schema lists the same friendly indicators and mentions ISO2/ISO3 codes). The description does mention 'WLD' for world in the schema but not in the description; however, the description provides no additional parameter semantics beyond what the schema offers. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Time series for a World Bank development indicator for one country.' Names the data source (official World Bank) and the output type (time series). This clearly distinguishes it from siblings worldbank_compare (multi-country) and worldbank_country_profile (broader profile).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples ('Friendly indicators: ...', 'Country accepts ISO2/ISO3 codes or common names'), which helps an agent know it can pass friendly names. However, it doesn't explicitly say when to use this tool vs. worldbank_compare or worldbank_country_profile. No exclusions or alternatives are named.
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.
221 tool updates
- Changed
affordable_housing_refinance_evidence_pack6 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
bea_compare_states9 fields changed- added
Input schema / properties / geographies / items / maxLengthAdded value: +100 - added
Input schema / properties / geographies / items / minLengthAdded value: +1 - added
Input schema / properties / geographies / maxItemsAdded value: +8 - added
Input schema / properties / geographies / minItemsAdded value: +2 - added
Input schema / properties / indicator / maxLengthAdded value: +100 - added
Input schema / properties / indicator / minLengthAdded value: +1 - added
Input schema / properties / year / maximumAdded value: +2100 - added
Input schema / properties / year / minimumAdded value: +1900 - changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
bea_search_state_indicators7 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +1000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120
- Changed
bea_state_economic_history16 fields changed- added
Input schema / properties / end_year / maximumAdded value: +2100 - added
Input schema / properties / end_year / minimumAdded value: +1900 - changed
Input schema / properties / end_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / geography / maxLengthAdded value: +100 - added
Input schema / properties / geography / minLengthAdded value: +1 - added
Input schema / properties / indicator / maxLengthAdded value: +100 - added
Input schema / properties / indicator / minLengthAdded value: +1 - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +1000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_year / maximumAdded value: +2100 - added
Input schema / properties / start_year / minimumAdded value: +1900 - changed
Input schema / properties / start_year / typePrevious value: -"number"New value: +"integer"
- Changed
bea_state_economic_profile5 fields changed- added
Input schema / properties / as_of_year / maximumAdded value: +2100 - added
Input schema / properties / as_of_year / minimumAdded value: +1900 - changed
Input schema / properties / as_of_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / geography / maxLengthAdded value: +100 - added
Input schema / properties / geography / minLengthAdded value: +1
- Changed
bea_state_economic_trend7 fields changed- added
Input schema / properties / as_of_year / maximumAdded value: +2100 - added
Input schema / properties / as_of_year / minimumAdded value: +1900 - changed
Input schema / properties / as_of_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / geography / maxLengthAdded value: +100 - added
Input schema / properties / geography / minLengthAdded value: +1 - added
Input schema / properties / indicator / maxLengthAdded value: +100 - added
Input schema / properties / indicator / minLengthAdded value: +1
- Changed
bls_indicator2 fields changed- changed
Input schema / properties / end_year / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / start_year / typePrevious value: -"number"New value: +"integer"
- Changed
bls_series2 fields changed- changed
Input schema / properties / end_year / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / start_year / typePrevious value: -"number"New value: +"integer"
- Changed
book_details1 field changed- changed
Input schema / properties / gutenberg_id / typePrevious value: -"number"New value: +"integer"
- Changed
book_fulltext_search4 fields changed- changed
Input schema / properties / gutenberg_id / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
book_get_text6 fields changed- added
Input schema / properties / from_seq / minimumAdded value: +0 - changed
Input schema / properties / from_seq / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / gutenberg_id / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / max_passages / maximumAdded value: +200 - added
Input schema / properties / max_passages / minimumAdded value: +1 - changed
Input schema / properties / max_passages / typePrevious value: -"number"New value: +"integer"
- Changed
book_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
bounce_scanner10 fields changed- added
Input schema / properties / lookback_days / maximumAdded value: +500 - added
Input schema / properties / lookback_days / minimumAdded value: +30 - changed
Input schema / properties / lookback_days / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / ma_period / maximumAdded value: +200 - added
Input schema / properties / ma_period / minimumAdded value: +2 - changed
Input schema / properties / ma_period / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / proximity_pct / maximumAdded value: +25 - added
Input schema / properties / proximity_pct / minimumAdded value: +0.1 - added
Input schema / properties / rsi_threshold / maximumAdded value: +100 - added
Input schema / properties / rsi_threshold / minimumAdded value: +1
- Changed
bts_transport_border_activity_pack5 fields changed- added
Input schema / properties / port / maxLengthAdded value: +120 - added
Input schema / properties / port / minLengthAdded value: +1 - added
Input schema / properties / trailing_months / maximumAdded value: +24 - added
Input schema / properties / trailing_months / minimumAdded value: +1 - changed
Input schema / properties / trailing_months / typePrevious value: -"number"New value: +"integer"
- Changed
bts_transport_border_trend10 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +120 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / port / maxLengthAdded value: +120 - added
Input schema / properties / port / minLengthAdded value: +1 - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-\\d{2}$"
- Changed
bts_transport_compare_ports8 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-\\d{2}$" - added
Input schema / properties / ports / items / maxLengthAdded value: +120 - added
Input schema / properties / ports / items / minLengthAdded value: +1 - added
Input schema / properties / ports / maxItemsAdded value: +8 - added
Input schema / properties / ports / minItemsAdded value: +2 - added
Input schema / properties / trailing_months / maximumAdded value: +24 - added
Input schema / properties / trailing_months / minimumAdded value: +1 - changed
Input schema / properties / trailing_months / typePrevious value: -"number"New value: +"integer"
- Changed
bts_transport_search_ports10 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / state / maxLengthAdded value: +40 - added
Input schema / properties / state / minLengthAdded value: +1
- Changed
candlestick_signals3 fields changed- added
Input schema / properties / lookback_days / maximumAdded value: +400 - added
Input schema / properties / lookback_days / minimumAdded value: +5 - changed
Input schema / properties / lookback_days / typePrevious value: -"number"New value: +"integer"
- Changed
carrier_monitor_recheck2 fields changed- changed
Input schema / properties / dot / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / mc / typePrevious value: -"number"New value: +"integer"
- Changed
carrier_vetting_batch1 field changed- changed
Input schema / properties / dot_numbers / items / typePrevious value: -"number"New value: +"integer"
- Changed
carrier_vetting_evidence_pack2 fields changed- changed
Input schema / properties / dot / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / mc / typePrevious value: -"number"New value: +"integer"
- Changed
carrier_vetting_score2 fields changed- changed
Input schema / properties / dot / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / mc / typePrevious value: -"number"New value: +"integer"
- Changed
caselaw_case_details1 field changed- changed
Input schema / properties / id / typePrevious value: -"number"New value: +"integer"
- Changed
caselaw_opinion_text4 fields changed- changed
Input schema / properties / id / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / max_chars / maximumAdded value: +500000 - added
Input schema / properties / max_chars / minimumAdded value: +1000 - changed
Input schema / properties / max_chars / typePrevious value: -"number"New value: +"integer"
- Changed
caselaw_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_dataset_query3 fields changed- added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_drug_overdose_deaths3 fields changed- added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_excess_deaths_covid3 fields changed- added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_flu_surveillance3 fields changed- added
Input schema / properties / limit / maximumAdded value: +500 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_leading_causes_of_death4 fields changed- added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_outbreak_reports4 fields changed- added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_vaccination_coverage3 fields changed- added
Input schema / properties / limit / maximumAdded value: +500 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cdc_weekly_deaths_by_state4 fields changed- added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
census_business1 field changed- changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
census_commute_employment1 field changed- changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
census_demographics1 field changed- changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
census_geography_lookup3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
census_income_housing1 field changed- changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
census_population1 field changed- changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
cfpb_complaint_trends3 fields changed- added
Input schema / properties / trend_depth / maximumAdded value: +20 - added
Input schema / properties / trend_depth / minimumAdded value: +1 - changed
Input schema / properties / trend_depth / typePrevious value: -"number"New value: +"integer"
- Changed
cfpb_search_complaints5 fields changed- added
Input schema / properties / from / minimumAdded value: +0 - changed
Input schema / properties / from / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / size / maximumAdded value: +100 - added
Input schema / properties / size / minimumAdded value: +1 - changed
Input schema / properties / size / typePrevious value: -"number"New value: +"integer"
- Changed
cftc_cot_compare6 fields changed- added
Input schema / properties / category / maxLengthAdded value: +64 - added
Input schema / properties / category / minLengthAdded value: +1 - added
Input schema / properties / markets / items / maxLengthAdded value: +160 - added
Input schema / properties / markets / items / minLengthAdded value: +1 - added
Input schema / properties / markets / maxItemsAdded value: +8 - added
Input schema / properties / markets / minItemsAdded value: +2
- Changed
cftc_cot_evidence_pack2 fields changed- added
Input schema / properties / market / maxLengthAdded value: +160 - added
Input schema / properties / market / minLengthAdded value: +1
- Changed
cftc_cot_history12 fields changed- added
Input schema / properties / category / maxLengthAdded value: +64 - added
Input schema / properties / category / minLengthAdded value: +1 - added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +260 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / market / maxLengthAdded value: +160 - added
Input schema / properties / market / minLengthAdded value: +1 - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
cftc_cot_latest2 fields changed- added
Input schema / properties / market / maxLengthAdded value: +160 - added
Input schema / properties / market / minLengthAdded value: +1
- Changed
cftc_cot_search_markets8 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
cms_home_health_search5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
cms_hospice_search5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
cms_hospital_search5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
cms_nursing_home_search5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
college_compare2 fields changed- added
Input schema / properties / unit_ids / maxItemsAdded value: +5 - added
Input schema / properties / unit_ids / minItemsAdded value: +2
- Changed
cpsc_recall_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +200 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
cpsc_recent_recalls6 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / lookback_days / maximumAdded value: +365 - added
Input schema / properties / lookback_days / minimumAdded value: +1 - changed
Input schema / properties / lookback_days / typePrevious value: -"number"New value: +"integer"
- Changed
edgar_company_lookup3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
edgar_filing_content3 fields changed- added
Input schema / properties / max_chars / maximumAdded value: +200000 - added
Input schema / properties / max_chars / minimumAdded value: +1000 - changed
Input schema / properties / max_chars / typePrevious value: -"number"New value: +"integer"
- Changed
edgar_filings_by_form_type3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
edgar_full_text_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
edgar_insider_transactions3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
edgar_recent_filings3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_electricity_state3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_energy_consumption3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_gasoline_prices3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_natural_gas3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_oil_supply3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_renewable_generation3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
eia_series_lookup3 fields changed- added
Input schema / properties / limit / maximumAdded value: +5000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
energy_market_snapshot3 fields changed- added
Input schema / properties / lookback_days / maximumAdded value: +2000 - added
Input schema / properties / lookback_days / minimumAdded value: +60 - changed
Input schema / properties / lookback_days / typePrevious value: -"number"New value: +"integer"
- Changed
entity_dossier3 fields changed- added
Input schema / properties / limit / maximumAdded value: +15 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
epa_facility_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
faa_public_aviation_airport_profile2 fields changed- added
Input schema / properties / airport / maxLengthAdded value: +120 - added
Input schema / properties / airport / minLengthAdded value: +1
- Changed
faa_public_aviation_compare_airports4 fields changed- added
Input schema / properties / airports / items / maxLengthAdded value: +120 - added
Input schema / properties / airports / items / minLengthAdded value: +1 - added
Input schema / properties / airports / maxItemsAdded value: +8 - added
Input schema / properties / airports / minItemsAdded value: +2
- Changed
faa_public_aviation_search_airports12 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / min_runway_length_ft / maximumAdded value: +20000 - added
Input schema / properties / min_runway_length_ft / minimumAdded value: +0 - changed
Input schema / properties / min_runway_length_ft / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
faa_public_aviation_search_runways15 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / min_length_ft / maximumAdded value: +20000 - added
Input schema / properties / min_length_ft / minimumAdded value: +0 - changed
Input schema / properties / min_length_ft / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / min_width_ft / maximumAdded value: +10000 - added
Input schema / properties / min_width_ft / minimumAdded value: +0 - changed
Input schema / properties / min_width_ft / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$" - added
Input schema / properties / surface / maxLengthAdded value: +30 - added
Input schema / properties / surface / minLengthAdded value: +1
- Changed
fbi_cde_compare_state_to_national9 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / limit / maximumAdded value: +60 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +120 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
fbi_cde_national_crime_trend8 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / limit / maximumAdded value: +60 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +120 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$"
- Changed
fbi_cde_state_crime_trend9 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / limit / maximumAdded value: +60 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +120 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
fbi_cde_state_month_snapshot2 fields changed- added
Input schema / properties / month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
fbi_cde_state_reporting_coverage9 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / limit / maximumAdded value: +60 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +120 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
fbi_wanted3 fields changed- added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fda_device_510k3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fda_device_recalls3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fda_drug_adverse_events3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fda_drug_lookup3 fields changed- added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fda_drug_recalls3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fda_food_recalls3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fdic_deposits3 fields changed- added
Input schema / properties / limit / maximumAdded value: +200 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fdic_failures5 fields changed- added
Input schema / properties / limit / maximumAdded value: +200 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
fdic_financials4 fields changed- changed
Input schema / properties / cert / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fdic_history4 fields changed- changed
Input schema / properties / cert / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fdic_search_institutions5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
fdic_summary3 fields changed- added
Input schema / properties / limit / maximumAdded value: +60 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fec_candidate_financials4 fields changed- changed
Input schema / properties / cycle / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fec_candidate_search4 fields changed- changed
Input schema / properties / cycle / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fec_committee_search4 fields changed- changed
Input schema / properties / cycle / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fec_independent_expenditures4 fields changed- changed
Input schema / properties / cycle / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fed_board_h15_evidence_pack1 field changed- added
Input schema / properties / date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
fed_board_h15_rate_history10 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +260 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +25000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / series / maxLengthAdded value: +160 - added
Input schema / properties / series / minLengthAdded value: +1 - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
fed_board_h15_rate_spread12 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +260 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +25000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / series_a / maxLengthAdded value: +160 - added
Input schema / properties / series_a / minLengthAdded value: +1 - added
Input schema / properties / series_b / maxLengthAdded value: +160 - added
Input schema / properties / series_b / minLengthAdded value: +1 - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
fed_board_h15_search_series7 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120
- Changed
fed_board_h15_yield_curve1 field changed- added
Input schema / properties / date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
fed_z1_catalog8 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +1000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +160 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
fed_z1_change4 fields changed- added
Input schema / properties / end_period / patternAdded value: +"^[0-9]{4}:Q[1-4]$" - added
Input schema / properties / series / maxLengthAdded value: +160 - added
Input schema / properties / series / minLengthAdded value: +1 - added
Input schema / properties / start_period / patternAdded value: +"^[0-9]{4}:Q[1-4]$"
- Changed
fed_z1_series10 fields changed- added
Input schema / properties / end_period / patternAdded value: +"^[0-9]{4}:Q[1-4]$" - added
Input schema / properties / limit / maximumAdded value: +320 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / series / maxLengthAdded value: +160 - added
Input schema / properties / series / minLengthAdded value: +1 - added
Input schema / properties / start_period / patternAdded value: +"^[0-9]{4}:Q[1-4]$"
- Changed
fed_z1_snapshot4 fields changed- added
Input schema / properties / series / items / maxLengthAdded value: +160 - added
Input schema / properties / series / items / minLengthAdded value: +1 - added
Input schema / properties / series / maxItemsAdded value: +8 - added
Input schema / properties / series / minItemsAdded value: +1
- Changed
fema_nfhl_compare_inventory_items3 fields changed- added
Input schema / properties / dfirm_ids / items / patternAdded value: +"^[0-9A-Za-z]{6}(?:-NFHL)?$" - added
Input schema / properties / dfirm_ids / maxItemsAdded value: +10 - added
Input schema / properties / dfirm_ids / minItemsAdded value: +2
- Changed
fema_nfhl_get_inventory_item1 field changed- added
Input schema / properties / dfirm_id / patternAdded value: +"^[0-9A-Za-z]{6}(?:-NFHL)?$"
- Changed
fema_nfhl_search_inventory14 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / max_advertised_mb / maximumAdded value: +1000000 - added
Input schema / properties / max_advertised_mb / minimumAdded value: +0 - added
Input schema / properties / min_advertised_mb / maximumAdded value: +1000000 - added
Input schema / properties / min_advertised_mb / minimumAdded value: +0 - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / state / maxLengthAdded value: +60 - added
Input schema / properties / state / minLengthAdded value: +2
- Changed
fema_nfhl_summarize_state_inventory2 fields changed- added
Input schema / properties / state / maxLengthAdded value: +60 - added
Input schema / properties / state / minLengthAdded value: +2
- Changed
fhfa_hpi_compare3 fields changed- added
Input schema / properties / geography_level / maxLengthAdded value: +100 - added
Input schema / properties / places / maxItemsAdded value: +8 - added
Input schema / properties / places / minItemsAdded value: +2
- Changed
fhfa_hpi_series15 fields changed- added
Input schema / properties / end_year / maximumAdded value: +2100 - added
Input schema / properties / end_year / minimumAdded value: +1970 - changed
Input schema / properties / end_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / geography_level / maxLengthAdded value: +100 - added
Input schema / properties / limit / maximumAdded value: +240 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / place / maxLengthAdded value: +120 - added
Input schema / properties / place / minLengthAdded value: +1 - added
Input schema / properties / start_year / maximumAdded value: +2100 - added
Input schema / properties / start_year / minimumAdded value: +1970 - changed
Input schema / properties / start_year / typePrevious value: -"number"New value: +"integer"
- Changed
fhfa_hpi_trend3 fields changed- added
Input schema / properties / geography_level / maxLengthAdded value: +100 - added
Input schema / properties / place / maxLengthAdded value: +120 - added
Input schema / properties / place / minLengthAdded value: +1
- Changed
fred_category_series4 fields changed- changed
Input schema / properties / category_id / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +100000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fred_compare5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / series_ids / maxItemsAdded value: +5 - added
Input schema / properties / series_ids / minItemsAdded value: +2
- Changed
fred_observations3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fred_quick_indicator3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
fred_releases4 fields changed- added
Input schema / properties / limit / maximumAdded value: +100000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / release_id / typePrevious value: -"number"New value: +"integer"
- Changed
fred_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
geocode_batch1 field changed- added
Input schema / properties / addresses / maxItemsAdded value: +10
- Changed
govinfo_legislation_committee_path3 fields changed- added
Input schema / properties / bill_number / maximumAdded value: +99999 - added
Input schema / properties / bill_number / minimumAdded value: +1 - changed
Input schema / properties / bill_number / typePrevious value: -"number"New value: +"integer"
- Changed
govinfo_legislation_evidence_pack6 fields changed- added
Input schema / properties / action_limit / maximumAdded value: +50 - added
Input schema / properties / action_limit / minimumAdded value: +1 - changed
Input schema / properties / action_limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / bill_number / maximumAdded value: +99999 - added
Input schema / properties / bill_number / minimumAdded value: +1 - changed
Input schema / properties / bill_number / typePrevious value: -"number"New value: +"integer"
- Changed
govinfo_legislation_relationships9 fields changed- added
Input schema / properties / bill_number / maximumAdded value: +99999 - added
Input schema / properties / bill_number / minimumAdded value: +1 - changed
Input schema / properties / bill_number / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
govinfo_legislation_search10 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / policy_area / maxLengthAdded value: +200 - added
Input schema / properties / policy_area / minLengthAdded value: +1 - added
Input schema / properties / query / maxLengthAdded value: +200 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
govinfo_legislation_version_lineage3 fields changed- added
Input schema / properties / bill_number / maximumAdded value: +99999 - added
Input schema / properties / bill_number / minimumAdded value: +1 - changed
Input schema / properties / bill_number / typePrevious value: -"number"New value: +"integer"
- Changed
grants_search3 fields changed- added
Input schema / properties / rows / maximumAdded value: +100 - added
Input schema / properties / rows / minimumAdded value: +1 - changed
Input schema / properties / rows / typePrevious value: -"number"New value: +"integer"
- Changed
gsa_per_diem_lookup13 fields changed- added
Input schema / properties / city / maxLengthAdded value: +100 - added
Input schema / properties / city / minLengthAdded value: +1 - added
Input schema / properties / fiscal_year / maximumAdded value: +2100 - added
Input schema / properties / fiscal_year / minimumAdded value: +2000 - changed
Input schema / properties / fiscal_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$" - added
Input schema / properties / zip / patternAdded value: +"^\\d{5}$"
- Changed
gsa_per_diem_mie_breakdown3 fields changed- added
Input schema / properties / fiscal_year / maximumAdded value: +2100 - added
Input schema / properties / fiscal_year / minimumAdded value: +2000 - changed
Input schema / properties / fiscal_year / typePrevious value: -"number"New value: +"integer"
- Changed
hud_fha_lender_exposure9 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
hud_fha_maturity_search12 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / lender / maxLengthAdded value: +120 - added
Input schema / properties / lender / minLengthAdded value: +1 - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / min_balance / minimumAdded value: +0 - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
hud_lihtc_year15_radar11 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / min_units / minimumAdded value: +0 - changed
Input schema / properties / min_units / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / state / patternAdded value: +"^[A-Za-z]{2}$"
- Changed
iv_analytics3 fields changed- added
Input schema / properties / lookback_days / maximumAdded value: +2520 - added
Input schema / properties / lookback_days / minimumAdded value: +2 - changed
Input schema / properties / lookback_days / typePrevious value: -"number"New value: +"integer"
- Changed
lei_hierarchy3 fields changed- added
Input schema / properties / children_limit / maximumAdded value: +50 - added
Input schema / properties / children_limit / minimumAdded value: +1 - changed
Input schema / properties / children_limit / typePrevious value: -"number"New value: +"integer"
- Changed
lei_lookup3 fields changed- added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
leie_search_exclusions3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
load_tender_fraud_shield2 fields changed- changed
Input schema / properties / dot / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / mc / typePrevious value: -"number"New value: +"integer"
- Changed
nasa_firms_search_fires18 fields changed- added
Input schema / properties / day_range / maximumAdded value: +5 - added
Input schema / properties / day_range / minimumAdded value: +1 - changed
Input schema / properties / day_range / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / east / maximumAdded value: +180 - added
Input schema / properties / east / minimumAdded value: +-180 - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / north / maximumAdded value: +90 - added
Input schema / properties / north / minimumAdded value: +-90 - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / south / maximumAdded value: +90 - added
Input schema / properties / south / minimumAdded value: +-90 - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / west / maximumAdded value: +180 - added
Input schema / properties / west / minimumAdded value: +-180
- Changed
nonprofit_search_location3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
nonprofit_search_name3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
npi_search_organization3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
npi_search_provider3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
npi_search_specialty3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
nport_compare_funds3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
nport_fund_holdings3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
nrel_alt_fuel_station_detail1 field changed- changed
Input schema / properties / station_id / typePrevious value: -"number"New value: +"integer"
- Changed
nrel_alt_fuel_stations3 fields changed- added
Input schema / properties / limit / maximumAdded value: +200 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
nrel_pvwatts2 fields changed- changed
Input schema / properties / array_type / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / module_type / typePrevious value: -"number"New value: +"integer"
- Changed
ok_wells_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_by_company3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_by_specialty3 fields changed- added
Input schema / properties / limit / maximumAdded value: +200 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_ownership3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_research3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_state_totals3 fields changed- added
Input schema / properties / limit / maximumAdded value: +200 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
open_payments_top3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
opportunity_zones_compare_jurisdictions4 fields changed- added
Input schema / properties / jurisdictions / items / maxLengthAdded value: +100 - added
Input schema / properties / jurisdictions / items / minLengthAdded value: +1 - added
Input schema / properties / jurisdictions / maxItemsAdded value: +10 - added
Input schema / properties / jurisdictions / minItemsAdded value: +2
- Changed
opportunity_zones_lookup_designation2 fields changed- added
Input schema / properties / tract_geoid / patternAdded value: +"^[0-9]{11}$" - changed
Input schema / properties / tract_vintage / typePrevious value: -"number"New value: +"integer"
- Changed
opportunity_zones_search_designations12 fields changed- added
Input schema / properties / county / maxLengthAdded value: +120 - added
Input schema / properties / county / minLengthAdded value: +1 - added
Input schema / properties / jurisdiction / maxLengthAdded value: +100 - added
Input schema / properties / jurisdiction / minLengthAdded value: +1 - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
opportunity_zones_summarize_designations8 fields changed- added
Input schema / properties / jurisdiction / maxLengthAdded value: +100 - added
Input schema / properties / jurisdiction / minLengthAdded value: +1 - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
paper_fulltext_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
paper_get_text5 fields changed- added
Input schema / properties / from_seq / minimumAdded value: +0 - changed
Input schema / properties / from_seq / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / max_passages / maximumAdded value: +200 - added
Input schema / properties / max_passages / minimumAdded value: +1 - changed
Input schema / properties / max_passages / typePrevious value: -"number"New value: +"integer"
- Changed
paper_search4 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
parcel_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
patent_assignee_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
patent_inventor_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
patent_recent3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
patent_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
realestate_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
realestate_trend3 fields changed- added
Input schema / properties / months / maximumAdded value: +360 - added
Input schema / properties / months / minimumAdded value: +1 - changed
Input schema / properties / months / typePrevious value: -"number"New value: +"integer"
- Changed
recall_screen1 field changed- changed
Input schema / properties / vehicle_year / typePrevious value: -"number"New value: +"integer"
- Changed
recreation_nearby3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
recreation_search_campsites3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
recreation_search_facilities3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
recreation_search_recareas3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
reg_cfr_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
reg_cfr_section3 fields changed- added
Input schema / properties / title / maximumAdded value: +50 - added
Input schema / properties / title / minimumAdded value: +1 - changed
Input schema / properties / title / typePrevious value: -"number"New value: +"integer"
- Changed
reg_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
sanctions_get_changes3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
sanctions_screen_address5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / threshold / maximumAdded value: +1 - added
Input schema / properties / threshold / minimumAdded value: +0
- Changed
sanctions_screen_batch6 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / names / maxItemsAdded value: +50 - added
Input schema / properties / threshold / maximumAdded value: +1 - added
Input schema / properties / threshold / minimumAdded value: +0
- Changed
sanctions_screen_entity5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / threshold / maximumAdded value: +1 - added
Input schema / properties / threshold / minimumAdded value: +0
- Changed
sanctions_search_alias5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / threshold / maximumAdded value: +1 - added
Input schema / properties / threshold / minimumAdded value: +0
- Changed
sec_ftd_compare6 fields changed- added
Input schema / properties / settlement_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / symbols / items / maxLengthAdded value: +10 - added
Input schema / properties / symbols / items / minLengthAdded value: +1 - added
Input schema / properties / symbols / items / patternAdded value: +"^[A-Za-z0-9.\\-^]+$" - added
Input schema / properties / symbols / maxItemsAdded value: +8 - added
Input schema / properties / symbols / minItemsAdded value: +2
- Changed
sec_ftd_history11 fields changed- added
Input schema / properties / end_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / limit / maximumAdded value: +250 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / symbol / maxLengthAdded value: +10 - added
Input schema / properties / symbol / minLengthAdded value: +1 - added
Input schema / properties / symbol / patternAdded value: +"^[A-Za-z0-9.\\-^]+$"
- Changed
sec_ftd_latest4 fields changed- added
Input schema / properties / as_of / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / symbol / maxLengthAdded value: +10 - added
Input schema / properties / symbol / minLengthAdded value: +1 - added
Input schema / properties / symbol / patternAdded value: +"^[A-Za-z0-9.\\-^]+$"
- Changed
sec_ftd_search_securities8 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
sec_ftd_top4 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / settlement_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
security_exposure3 fields changed- added
Input schema / properties / max_cves / maximumAdded value: +200 - added
Input schema / properties / max_cves / minimumAdded value: +1 - changed
Input schema / properties / max_cves / typePrevious value: -"number"New value: +"integer"
- Changed
source_snapshot_status1 field changed- added
Input schema / properties / source_id / patternAdded value: +"^[a-z0-9][a-z0-9-]*$"
- Changed
spending_recipient_summary3 fields changed- added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
spending_search_awards4 fields changed- changed
Input schema / properties / fiscal_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
support_resistance_levels3 fields changed- added
Input schema / properties / lookback_days / maximumAdded value: +500 - added
Input schema / properties / lookback_days / minimumAdded value: +20 - changed
Input schema / properties / lookback_days / typePrevious value: -"number"New value: +"integer"
- Changed
ted_opportunity_radar6 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / page / maximumAdded value: +60 - added
Input schema / properties / page / minimumAdded value: +1 - changed
Input schema / properties / page / typePrevious value: -"number"New value: +"integer"
- Changed
ted_search_notices6 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / page / maximumAdded value: +60 - added
Input schema / properties / page / minimumAdded value: +1 - changed
Input schema / properties / page / typePrevious value: -"number"New value: +"integer"
- Changed
treasury_auctions3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
treasury_cash_balance3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
treasury_debt3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
treasury_exchange_rates3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
treasury_interest_rates3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
treasury_tic_compare_holders6 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / holders / items / maxLengthAdded value: +120 - added
Input schema / properties / holders / items / minLengthAdded value: +1 - added
Input schema / properties / holders / maxItemsAdded value: +8 - added
Input schema / properties / holders / minItemsAdded value: +2 - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$"
- Changed
treasury_tic_find_holders8 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
treasury_tic_holder_history10 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / holder / maxLengthAdded value: +120 - added
Input schema / properties / holder / minLengthAdded value: +1 - added
Input schema / properties / limit / maximumAdded value: +120 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$"
- Changed
treasury_tic_official_share8 fields changed- added
Input schema / properties / end_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / limit / maximumAdded value: +120 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +5000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$"
- Changed
treasury_tic_rank_holders7 fields changed- added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / month / patternAdded value: +"^\\d{4}-(0[1-9]|1[0-2])$" - added
Input schema / properties / offset / maximumAdded value: +500 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
trials_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
tx_wells_near5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / radius_km / maximumAdded value: +10 - added
Input schema / properties / radius_km / minimumAdded value: +0.1
- Changed
urlhaus_lookup_host3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
urlhaus_lookup_payload3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
urlhaus_lookup_signature3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
urlhaus_lookup_tag3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
urlhaus_lookup_url3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
urlhaus_recent_payloads3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
urlhaus_recent_urls3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
usda_nass_compare_crop_years9 fields changed- added
Input schema / properties / crop / maxLengthAdded value: +80 - added
Input schema / properties / crop / minLengthAdded value: +1 - added
Input schema / properties / crop_class / maxLengthAdded value: +80 - added
Input schema / properties / crop_class / minLengthAdded value: +1 - added
Input schema / properties / years / items / maximumAdded value: +2100 - added
Input schema / properties / years / items / minimumAdded value: +1900 - changed
Input schema / properties / years / items / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / years / maxItemsAdded value: +7 - added
Input schema / properties / years / minItemsAdded value: +2
- Changed
usda_nass_crop_evidence_pack7 fields changed- added
Input schema / properties / as_of_year / maximumAdded value: +2100 - added
Input schema / properties / as_of_year / minimumAdded value: +1900 - changed
Input schema / properties / as_of_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / crop / maxLengthAdded value: +80 - added
Input schema / properties / crop / minLengthAdded value: +1 - added
Input schema / properties / crop_class / maxLengthAdded value: +80 - added
Input schema / properties / crop_class / minLengthAdded value: +1
- Changed
usda_nass_crop_history16 fields changed- added
Input schema / properties / crop / maxLengthAdded value: +80 - added
Input schema / properties / crop / minLengthAdded value: +1 - added
Input schema / properties / crop_class / maxLengthAdded value: +80 - added
Input schema / properties / crop_class / minLengthAdded value: +1 - added
Input schema / properties / end_year / maximumAdded value: +2100 - added
Input schema / properties / end_year / minimumAdded value: +1900 - changed
Input schema / properties / end_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +1000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / start_year / maximumAdded value: +2100 - added
Input schema / properties / start_year / minimumAdded value: +1900 - changed
Input schema / properties / start_year / typePrevious value: -"number"New value: +"integer"
- Changed
usda_nass_crop_trend7 fields changed- added
Input schema / properties / as_of_year / maximumAdded value: +2100 - added
Input schema / properties / as_of_year / minimumAdded value: +1900 - changed
Input schema / properties / as_of_year / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / crop / maxLengthAdded value: +80 - added
Input schema / properties / crop / minLengthAdded value: +1 - added
Input schema / properties / crop_class / maxLengthAdded value: +80 - added
Input schema / properties / crop_class / minLengthAdded value: +1
- Changed
usda_nass_search_crop_series7 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +1000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / query / maxLengthAdded value: +120
- Changed
usgs_earthquake_search3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
wa_contractor_license_history3 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
wa_contractor_recent_changes6 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / offset / typePrevious value: -"number"New value: +"integer"
- Changed
wa_contractor_verify3 fields changed- added
Input schema / properties / limit / maximumAdded value: +25 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
worldbank_indicator2 fields changed- changed
Input schema / properties / end_year / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / start_year / typePrevious value: -"number"New value: +"integer"
4 tool updates
- Added
affordable_housing_refinance_evidence_pack - Added
hud_fha_lender_exposure - Added
hud_fha_maturity_search - Added
hud_lihtc_year15_radar
14 tool updates
- Added
fema_nfhl_compare_inventory_items - Added
fema_nfhl_get_inventory_item - Added
fema_nfhl_get_snapshot_metadata - Added
fema_nfhl_search_inventory - Added
fema_nfhl_summarize_state_inventory - Added
opportunity_zones_compare_jurisdictions - Added
opportunity_zones_lookup_designation - Added
opportunity_zones_search_designations - Added
opportunity_zones_summarize_designations - Added
treasury_tic_compare_holders - Added
treasury_tic_find_holders - Added
treasury_tic_holder_history - Added
treasury_tic_official_share - Added
treasury_tic_rank_holders
14 tool updates
- Added
bea_compare_states - Added
bea_search_state_indicators - Added
bea_state_economic_history - Added
bea_state_economic_profile - Added
bea_state_economic_trend - Added
fbi_cde_compare_state_to_national - Added
fbi_cde_national_crime_trend - Added
fbi_cde_state_crime_trend - Added
fbi_cde_state_month_snapshot - Added
fbi_cde_state_reporting_coverage - Added
fed_z1_catalog - Added
fed_z1_change - Added
fed_z1_series - Added
fed_z1_snapshot
65 tool updates
- Added
bts_transport_border_activity_pack - Added
bts_transport_border_trend - Added
bts_transport_compare_ports - Added
bts_transport_search_ports - Changed
carrier_monitor_recheck5 fields changed- changed
Input schema / properties / dot / descriptionPrevious value: -"USDOT number (preferred). Accepts 3405079 or USDOT 3405079."New value: +"USDOT number (preferred)." - changed
Input schema / properties / dot / typePrevious value: -[ - "number", - "string" -]New value: +"number" - changed
Input schema / properties / mc / descriptionPrevious value: -"MC/MX number. Accepts 123456 or MC-123456."New value: +"MC/MX number without the prefix." - changed
Input schema / properties / mc / typePrevious value: -[ - "number", - "string" -]New value: +"number" - removed
Input schema / properties / previous_snapshot / anyOfRemoved value: -[ - { - "type": "string" - } -]
- Changed
carrier_vetting_batch3 fields changed- removed
Input schema / properties / dot_numbers / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "string" - } -] - added
Input schema / properties / dot_numbers / itemsAdded value: +{ + "type": "number" +} - added
Input schema / properties / dot_numbers / typeAdded value: +"array"
- Changed
carrier_vetting_evidence_pack4 fields changed- changed
Input schema / properties / dot / descriptionPrevious value: -"USDOT number (preferred). Accepts 3405079 or USDOT 3405079."New value: +"USDOT number (preferred exact identifier)." - changed
Input schema / properties / dot / typePrevious value: -[ - "number", - "string" -]New value: +"number" - changed
Input schema / properties / mc / descriptionPrevious value: -"MC/MX number. Accepts 123456 or MC-123456."New value: +"MC/MX number without the prefix." - changed
Input schema / properties / mc / typePrevious value: -[ - "number", - "string" -]New value: +"number"
- Changed
carrier_vetting_score4 fields changed- changed
Input schema / properties / dot / descriptionPrevious value: -"USDOT number (preferred). Accepts 76830 or USDOT 76830."New value: +"USDOT number of the carrier (most precise). Example: 76830." - changed
Input schema / properties / dot / typePrevious value: -[ - "number", - "string" -]New value: +"number" - changed
Input schema / properties / mc / descriptionPrevious value: -"MC number. Accepts 123456 or MC-123456."New value: +"MC (motor carrier) number, without the 'MC-' prefix. Used if no DOT number is given." - changed
Input schema / properties / mc / typePrevious value: -[ - "number", - "string" -]New value: +"number"
- Added
cftc_cot_compare - Added
cftc_cot_evidence_pack - Added
cftc_cot_history - Added
cftc_cot_latest - Added
cftc_cot_search_markets - Removed
contractor_license_sources - Removed
contractor_multistate_route - Added
faa_public_aviation_airport_profile - Added
faa_public_aviation_compare_airports - Added
faa_public_aviation_search_airports - Added
faa_public_aviation_search_runways - Added
fed_board_h15_evidence_pack - Added
fed_board_h15_rate_history - Added
fed_board_h15_rate_spread - Added
fed_board_h15_search_series - Added
fed_board_h15_yield_curve - Added
fhfa_hpi_compare - Added
fhfa_hpi_series - Added
fhfa_hpi_trend - Added
govinfo_legislation_committee_path - Added
govinfo_legislation_evidence_pack - Added
govinfo_legislation_relationships - Added
govinfo_legislation_search - Added
govinfo_legislation_version_lineage - Added
gsa_per_diem_lookup - Added
gsa_per_diem_mie_breakdown - Added
leie_exclusion_details - Added
leie_lookup_npi - Added
leie_search_exclusions - Changed
load_tender_fraud_shield4 fields changed- changed
Input schema / properties / dot / descriptionPrevious value: -"USDOT number (preferred). Accepts 3405079 or USDOT 3405079."New value: +"USDOT number (preferred)." - changed
Input schema / properties / dot / typePrevious value: -[ - "number", - "string" -]New value: +"number" - changed
Input schema / properties / mc / descriptionPrevious value: -"MC/MX number. Accepts 123456 or MC-123456."New value: +"MC/MX number without the prefix." - changed
Input schema / properties / mc / typePrevious value: -[ - "number", - "string" -]New value: +"number"
- Added
nasa_firms_search_fires - Added
nport_compare_funds - Added
nport_fund_holdings - Added
sec_ftd_compare - Added
sec_ftd_history - Added
sec_ftd_latest - Added
sec_ftd_search_securities - Added
sec_ftd_top - Added
source_snapshot_list - Added
source_snapshot_status - Added
ted_opportunity_radar - Added
ted_search_notices - Added
urlhaus_lookup_host - Added
urlhaus_lookup_payload - Added
urlhaus_lookup_signature - Added
urlhaus_lookup_tag - Added
urlhaus_lookup_url - Added
urlhaus_recent_payloads - Added
urlhaus_recent_urls - Added
usda_nass_compare_crop_years - Added
usda_nass_crop_evidence_pack - Added
usda_nass_crop_history - Added
usda_nass_crop_trend - Added
usda_nass_search_crop_series - Added
wa_contractor_license_history - Added
wa_contractor_recent_changes - Changed
wa_contractor_verify3 fields changed- changed
Input schema / properties / business_name / descriptionPrevious value: -"Business name or distinctive name fragment. Used only when license_number is not supplied."New value: +"Partial registered business name, at least 2 characters." - changed
Input schema / properties / license_number / descriptionPrevious value: -"Exact Washington contractor license number, if known."New value: +"Exact Washington contractor license number. Preferred when known." - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidate records when searching by business name. Default 5."New value: +"Maximum matches; default 10 and maximum 25."
294 tool updates
- First observed
air_quality - First observed
bank_health_report - First observed
beneficial_owner_screen - First observed
bls_indicator - First observed
bls_series - First observed
book_details - First observed
book_fulltext_search - First observed
book_get_text - First observed
book_search - First observed
book_status - First observed
bounce_scanner - First observed
candlestick_signals - First observed
cargo_crate - First observed
carrier_monitor_recheck - First observed
carrier_vetting_batch - First observed
carrier_vetting_evidence_pack - First observed
carrier_vetting_score - First observed
caselaw_case_details - First observed
caselaw_citation_lookup - First observed
caselaw_opinion_text - First observed
caselaw_search - First observed
cdc_dataset_query - First observed
cdc_drug_overdose_deaths - First observed
cdc_excess_deaths_covid - First observed
cdc_flu_surveillance - First observed
cdc_leading_causes_of_death - First observed
cdc_outbreak_reports - First observed
cdc_vaccination_coverage - First observed
cdc_weekly_deaths_by_state - First observed
census_business - First observed
census_commute_employment - First observed
census_demographics - First observed
census_geography_lookup - First observed
census_income_housing - First observed
census_population - First observed
cfpb_complaint_aggregations - First observed
cfpb_complaint_detail - First observed
cfpb_complaint_trends - First observed
cfpb_search_complaints - First observed
cfpb_state_complaints - First observed
cfpb_suggest_company - First observed
chemical_hazards - First observed
chemical_lookup - First observed
clinical_site_selector - First observed
cms_home_health_search - First observed
cms_hospice_search - First observed
cms_hospital_search - First observed
cms_nursing_home_search - First observed
college_accreditation - First observed
college_compare - First observed
college_demographics - First observed
college_metrics - First observed
college_outcomes_by_program - First observed
college_search - First observed
college_trends - First observed
college_value_score - First observed
company_complaint_profile - First observed
company_info - First observed
company_trust_check - First observed
congress_bill_actions - First observed
congress_bill_cosponsors - First observed
congress_bill_details - First observed
congress_house_votes - First observed
congress_member_details - First observed
congress_recent_laws - First observed
congress_search_bills - First observed
congress_search_members - First observed
contractor_license_sources - First observed
contractor_multistate_route - First observed
corporate_ownership_tree - First observed
cost_of_doing_business_index - First observed
counterparty_risk_score - First observed
court_case_search - First observed
court_citation_resolver - First observed
court_docket_lookup - First observed
court_judge_lookup - First observed
court_opinion_search - First observed
court_oral_argument_search - First observed
court_recent_filings - First observed
cpsc_recall_search - First observed
cpsc_recent_recalls - First observed
crypto_compare - First observed
crypto_info - First observed
crypto_price - First observed
crypto_trending - First observed
cve_lookup - First observed
cve_recent - First observed
cve_search_by_keyword - First observed
cve_search_by_vendor - First observed
cwe_lookup - First observed
disaster_declarations - First observed
disaster_history_summary - First observed
disaster_recovery_profile - First observed
earthquake_recent - First observed
edgar_company_facts - First observed
edgar_company_lookup - First observed
edgar_filing_content - First observed
edgar_filings_by_form_type - First observed
edgar_full_text_search - First observed
edgar_insider_transactions - First observed
edgar_recent_filings - First observed
eia_electricity_state - First observed
eia_energy_consumption - First observed
eia_gasoline_prices - First observed
eia_natural_gas - First observed
eia_oil_supply - First observed
eia_renewable_generation - First observed
eia_series_lookup - First observed
energy_market_snapshot - First observed
entity_dossier - First observed
entity_resolve - First observed
environmental_site_risk - First observed
epa_enforcement_search - First observed
epa_facility_compliance - First observed
epa_facility_details - First observed
epa_facility_search - First observed
epa_water_or_air_violations - First observed
epss_score - First observed
facility_care_quality - First observed
fbi_wanted - First observed
fda_device_510k - First observed
fda_device_recalls - First observed
fda_drug_adverse_events - First observed
fda_drug_lookup - First observed
fda_drug_recalls - First observed
fda_food_recalls - First observed
fdic_deposits - First observed
fdic_failures - First observed
fdic_financials - First observed
fdic_history - First observed
fdic_search_institutions - First observed
fdic_summary - First observed
fec_candidate_details - First observed
fec_candidate_financials - First observed
fec_candidate_search - First observed
fec_committee_search - First observed
fec_independent_expenditures - First observed
flood_zone_lookup - First observed
fmcsa_carrier_authority - First observed
fmcsa_carrier_compare - First observed
fmcsa_carrier_lookup - First observed
fmcsa_carrier_search - First observed
fmcsa_safety_scores - First observed
fred_category_series - First observed
fred_compare - First observed
fred_observations - First observed
fred_quick_indicator - First observed
fred_releases - First observed
fred_search - First observed
fred_series_info - First observed
geocode_address - First observed
geocode_batch - First observed
geocode_coordinates - First observed
github_repo - First observed
grants_get_opportunity - First observed
grants_search - First observed
hurricane_tracker - First observed
influence_network_map - First observed
ip_reputation - First observed
issuer_diligence_dossier - First observed
iv_analytics - First observed
kev_status_check - First observed
kyb_aml_evidence_case_file - First observed
lane_location_risk_pack - First observed
lei_hierarchy - First observed
lei_lookup - First observed
list_tool_groups - First observed
load_tender_fraud_shield - First observed
lobbying_contributions - First observed
lobbying_detail - First observed
lobbying_lobbyists - First observed
lobbying_registrants - First observed
lobbying_search - First observed
local_search - First observed
location_risk_report - First observed
market_size_estimator - First observed
nfip_flood_claims - First observed
nonprofit_details - First observed
nonprofit_lookup_ein - First observed
nonprofit_search_location - First observed
nonprofit_search_name - First observed
nonprofit_status - First observed
npi_lookup - First observed
npi_search_organization - First observed
npi_search_provider - First observed
npi_search_specialty - First observed
npm_package - First observed
nrel_alt_fuel_station_detail - First observed
nrel_alt_fuel_stations - First observed
nrel_pvwatts - First observed
nrel_solar_resource - First observed
nrel_utility_rates - First observed
nws_active_alerts - First observed
ok_wells_search - First observed
open_payments_by_company - First observed
open_payments_by_specialty - First observed
open_payments_national_summary - First observed
open_payments_ownership - First observed
open_payments_research - First observed
open_payments_search - First observed
open_payments_state_totals - First observed
open_payments_top - First observed
options_chain - First observed
options_history_atm_iv - First observed
options_history_chain - First observed
options_history_contract - First observed
options_history_volhist - First observed
org_funding_profile - First observed
package_track - First observed
paper_details - First observed
paper_fulltext_search - First observed
paper_get_text - First observed
paper_search - First observed
paper_status - First observed
parcel_coverage - First observed
parcel_details - First observed
parcel_sales_history - First observed
parcel_search - First observed
patent_assignee_search - First observed
patent_details - First observed
patent_inventor_search - First observed
patent_recent - First observed
patent_search - First observed
prescriber_ties_profile - First observed
price_to_rent_ratio - First observed
product_liability_screen - First observed
property_lookup - First observed
property_search_area - First observed
property_search_owner - First observed
property_value_history - First observed
pypi_package - First observed
rdap_domain - First observed
rdap_ip - First observed
realestate_home_values - First observed
realestate_market_screen - First observed
realestate_rents - First observed
realestate_search - First observed
realestate_status - First observed
realestate_trend - First observed
recall_screen - First observed
recreation_facility_detail - First observed
recreation_nearby - First observed
recreation_search_campsites - First observed
recreation_search_facilities - First observed
recreation_search_recareas - First observed
reg_cfr_search - First observed
reg_cfr_section - First observed
reg_cfr_titles - First observed
reg_document - First observed
reg_search - First observed
resolve_entity - First observed
sanctions_get_changes - First observed
sanctions_get_entity - First observed
sanctions_screen_address - First observed
sanctions_screen_batch - First observed
sanctions_screen_entity - First observed
sanctions_search_alias - First observed
sanctions_status_summary - First observed
search_available_datasets - First observed
security_exposure - First observed
shipper_receiver_counterparty_pack - First observed
spending_award_details - First observed
spending_recipient_summary - First observed
spending_search_awards - First observed
stock_compare - First observed
stock_history - First observed
stock_quote - First observed
stock_quote_batch - First observed
sun_times - First observed
supplier_esg_scorecard - First observed
support_resistance_levels - First observed
talent_market_brief - First observed
tide_predictions - First observed
treasury_auctions - First observed
treasury_cash_balance - First observed
treasury_debt - First observed
treasury_exchange_rates - First observed
treasury_interest_rates - First observed
trials_details - First observed
trials_search - First observed
tx_wells_near - First observed
usgs_earthquake_detail - First observed
usgs_earthquake_feed - First observed
usgs_earthquake_search - First observed
usgs_water_realtime - First observed
vehicle_recalls - First observed
vin_decode - First observed
wa_contractor_verify - First observed
water_levels - First observed
weather_current - First observed
weather_forecast - First observed
worldbank_compare - First observed
worldbank_country_profile - First observed
worldbank_indicator
Related MCP Connectors
66 public tools: semantic search, queues, inboxes, webhooks, approvals, DNS, images, PDF and more.
Read-only US public-data screening tools with free Basic and Evidence tiers.
Normalized official data with provenance, aggregations, insights, free samples and agent access.
Normalized official data with provenance, aggregations, insights, free samples and agent access.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying, sampling, and exporting datasets from over twenty keyless free public data sources spanning the EU, Switzerland, Germany, the US, and global providers through one uniform set of tools. A single consistent interface lets users list databases and tables, inspect schemas and query guides, run queries, and export results as CSV or JSON without per-API clients.Apache 2.0
- AlicenseNot gradedqualityDmaintenance26 US federal data domains as 23 MCP tools. Ed25519 signed responses. Free, no API key.93 npm1MIT
- AlicenseBqualityAmaintenanceMCP server + TypeScript SDK for 36 U.S. government data APIs — 188 tools. Treasury, FRED, Congress, FDA, CDC, FEC, lobbying, and more. Works with VS Code Copilot, Claude Desktop, Cursor.345662 npm112MIT

dynamicfeed-mcpofficial
AlicenseNot gradedqualityCmaintenance62 live, cryptographically signed data tools for AI agents and robots: weather, natural hazards, flights, shipping, space, CVEs, sanctions, software versions, sea ice and more. Every datapoint carries source, licence, timestamp and an Ed25519 signature.13 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.