Skip to main content
Glama

Server Details

284 public-data tools across 59 domains; freshness varies by source. Free tier.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Server Listing
LiveDataLink

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.1/5 across 272 of 284 tools scored. Lowest: 2.9/5.

Server CoherenceA
Disambiguation4/5

Most tools have distinct purposes and detailed descriptions that clarify their roles. However, the sheer number (284) and some overlapping tool groups (e.g., multiple FMCSA carrier tools, several options history tools) could still cause confusion for an agent, especially without careful reading.

Naming Consistency5/5

The vast majority of tools follow a consistent `domain_action` or `domain_detail` snake_case pattern (e.g., `census_demographics`, `fda_drug_lookup`). Only a few utility tools like `get_free_api_key` deviate, but these are clearly separate and do not undermine overall consistency.

Tool Count2/5

With 284 tools, the surface is far too large for effective agent navigation and selection. Even though the server covers many domains, a typical MCP server should be well-scoped (3-15 tools). The current count will likely overwhelm context windows and lead to poor tool selection.

Completeness4/5

Within the covered domains, the tool set is impressively thorough, offering search, detail, comparison, and analysis functions. Minor gaps exist (e.g., no direct social media or news data), but the overall coverage of business, government, and public data is comprehensive.

Available Tools

284 tools
air_qualityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
locationYesCity, zip code, or place name
Behavior4/5

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

Annotations already declare read-only, idempotent, safe behavior. Description adds the specific data fields returned (e.g., PM2.5, ozone) and health category rating, providing context beyond annotations. No behavioral contradictions.

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

Conciseness5/5

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

Three sentences, front-loaded with core function and return fields, followed by examples. No filler or repetition. Every sentence adds value.

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

Completeness4/5

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

Despite no output schema, description lists key return fields (AQI, pollutants, health rating) giving the agent sufficient context. Simple tool with few parameters, so completeness is high.

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

Parameters3/5

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

Schema coverage is 100%; both parameters (dry_run, location) are described in schema. Description does not add meaning beyond schema, only mentions 'any location' implicitly. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool gets current air quality data for any location, listing specific pollutants returned. It distinguishes itself from siblings as the only tool for air quality. The example queries reinforce purpose.

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

Usage Guidelines5/5

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

Explicitly lists example use cases and query phrasings, covering a range of common questions. No direct alternatives in siblings, so guidance is complete.

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

bank_health_reportA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bankNoBank or savings institution name (e.g. 'JPMorgan Chase Bank', 'Cross River Bank'). Use the full legal name for best matching.
certNoOptional FDIC certificate (CERT) number for an exact institution match, used instead of a name.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds critical context: the composite nature, graceful degradation of CFPB data, and that it produces a rating. This goes beyond annotations and fully informs the agent of behavioral traits.

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

Conciseness4/5

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

The description is a single paragraph that efficiently covers purpose, inputs, data sources, output format, limitations, and use cases. It is front-loaded with the core purpose. While dense, every sentence serves a purpose; no redundancy.

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

Completeness4/5

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

Given no output schema, the description explains the output (rating and numbers) and lists the specific financial metrics and complaint data included. It also notes the best-effort nature of CFPB data. This is sufficient for an agent to understand what the tool returns and the reliability.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The tool description restates parameter inputs (bank name or CERT) but does not add significant new detail beyond the schema. The schema parameter descriptions are already thorough, so the description adds marginal value.

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

Purpose5/5

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

The description clearly states the tool provides a one-call financial-health read for US banks, combining FDIC and CFPB data into a composite rating (HEALTHY/STABLE/WATCH/FAILED). It specifies valid inputs (bank name or FDIC cert) and distinguishes itself from sibling tools like individual FDIC/CFPB tools by offering a consolidated assessment.

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

Usage Guidelines4/5

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

The description explicitly lists use cases (sponsor/partner bank selection, treasury checks, deposit-safety) and states it is informational. However, it does not explicitly advise against using this tool when, for example, raw FDIC data is needed, or when CFPB data must be complete. The alternatives are implied 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.

beneficial_owner_screenA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
leiNoOptional exact 20-character LEI code to anchor the ownership chain directly (e.g. '5493006MHB84DD0ZWV18'). Overrides a name search.
companyNoCompany / organization name (e.g. 'Alphabet Inc.', 'JPMorgan') or a 20-character LEI code. Provide this or 'lei'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

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

Annotations already provide readOnlyHint, idempotentHint, openWorldHint. The description adds significant behavioral context: best-effort nature, fallback behavior when GLEIF fails or sanctions binding is unavailable, entity cap of ~15, reliance on self-reported data, and disclaimer about name matches. 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.

Conciseness3/5

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

The description is informative but verbose, containing several clauses and details that could be condensed. It is front-loaded with purpose but includes some extraneous phrases ('keyless CC0 reference data'). Adequate but not optimally concise.

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

Completeness5/5

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

Given the complexity of the tool (ownership mapping and sanctions screening), the description covers input options, process, limitations, output structure (ownership structure, per-entity results, overall verdict), and caveats. No output schema exists, so the description's detail on returns is essential and thorough.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the LEI override behavior and the dry_run preview purpose, beyond the schema descriptions. It provides example LEI and clarifies that company can also be a LEI.

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

Purpose5/5

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

The description uses a specific verb ('screens') and resource ('ownership chain'), and immediately distinguishes itself from single-entity screenings by stating it answers the real question about sanctioned ownership chain members. It clearly differentiates from sibling tools like company_trust_check and sanctions_screen_entity.

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

Usage Guidelines4/5

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

The description explains when to use this tool (for ownership-chain screening) and mentions the alternative company_trust_check for single-entity screening. However, it does not explicitly state when not to use it (e.g., for a simple name check), though the context implies it.

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

bls_indicatorA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_yearNoEnd year (optional; defaults to current year).
indicatorNoIndicator 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_yearNoStart year (optional; defaults to ~3 years back).
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint false. Description adds 'Returns a monthly time series' and 'Keyless', but lacks details on rate limits, caching, or data freshness. Adequate but not enhanced beyond annotations.

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

Conciseness4/5

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

Description is two concise sentences, front-loaded with purpose. Every sentence adds value. Could be slightly more structured by highlighting key points (e.g., monthly, keyless) but is efficient overall.

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

Completeness3/5

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

Tool has 4 parameters with full schema coverage and no output schema. Description states returns 'monthly time series' but does not specify response format or behavior for start/end year defaults. Adequate for a simple retrieval tool but could be more complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents parameters. The description lists the same indicator names as the schema, adding no new meaning beyond what is in the structured fields.

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

Purpose5/5

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

Description clearly states 'US labor & price statistics from the Bureau of Labor Statistics by friendly name' and lists specific indicators. It distinguishes from sibling tools like bls_series (likely raw series API) and fred_* (FRED data) by being keyless and using friendly names.

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

Usage Guidelines3/5

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

Description implies usage for BLS data retrieval with friendly names and mentions 'Keyless official BLS data', but does not explicitly state when to use vs alternatives (e.g., bls_series for custom series IDs). No when-not-to-use guidance.

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

bls_seriesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_yearNoEnd year (optional).
series_idYesBLS series ID, e.g. 'LNS14000000'.
start_yearNoStart year (optional).
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description doesn't need to cover safety. It adds that the tool fetches time series data, which is a behavioral constraint (time series vs single value). However, no additional details on rate limits or response size are provided, which 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.

Conciseness5/5

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

The description is two sentences with zero fluff. The first sentence states purpose with an example, and the second clarifies usage context. Every sentence earns its place, making it highly concise and front-loaded.

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

Completeness4/5

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

For a tool with 4 parameters and no output schema, the description is adequate. It explains what the tool does, when to use it, and provides an example. It does not describe the response format, which might be a gap, but the tool's simplicity and the annotations partly compensate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds an example series ID (LNS14000000) which provides concrete context. It does not elaborate on optional parameters like dry_run, start_year, or end_year beyond what the schema already offers, so marginal added value.

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

Purpose5/5

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

The description clearly states the tool fetches any BLS time series by raw series ID and gives a concrete example (LNS14000000 for unemployment rate). It implicitly distinguishes from siblings by specifying 'when you know the exact series ID', which implies alternative tools like bls_indicator exist for when the ID is unknown.

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

Usage Guidelines4/5

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

The description explicitly says to use this tool when you know the exact BLS series ID, providing clear context. It does not explicitly name alternatives or state when not to use, but the implied guidance is sufficient for most agents.

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

book_detailsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
gutenberg_idYesProject Gutenberg ebook id, e.g. 84 (Frankenstein).
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by listing the returned metadata fields (e.g., title, authors, subjects) and specifically noting 'whether its full text is indexed here', which is beyond the annotation coverage.

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

Conciseness5/5

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

The description is a single sentence that front-loads the verb and resource, lists key fields, and contains no extraneous information.

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

Completeness4/5

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

For a simple retrieval tool with good annotations and no output schema, the description covers the essential behavior (fields returned). It lacks mention of error handling or rate limits, but those are low priority for such a tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description mentions 'by its Project Gutenberg id' which aligns with gutenberg_id, but adds no additional semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'get' and resource 'full catalog metadata for a single book', listing specific fields (title, authors, etc.). It distinguishes from sibling tools like book_search and book_get_text by specifying the input is a Project Gutenberg ID.

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

Usage Guidelines3/5

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

The description implies use when metadata for a single Gutenberg book is needed, but it does not explicitly contrast with alternative tools (e.g., when to use book_fulltext_search instead) or provide exclusion criteria.

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

book_get_textA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
from_seqNoPassage index to start from (0-based, default 0).
gutenberg_idYesProject Gutenberg ebook id.
max_passagesNoMaximum passages to return per call (default 40, max 200).
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint=false), the description discloses key behavioral nuances: for non-indexed books it returns a public gutenberg.org URL instead of text, and it explains the pagination mechanism. This provides valuable context about expected outputs beyond what annotations alone offer.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, and includes practical usage guidance without unnecessary fluff. Every sentence contributes meaning: the first states functionality, the second explains pagination and fallback behavior.

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

Completeness4/5

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

For a simple read-only tool with a small schema and no output schema, the description covers the essential aspects: what it returns (text or URL), how to page, and when the fallback applies. It could optionally define what a 'passage' is or describe the exact response format, but current detail is sufficient for an agent to invoke correctly.

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

Parameters4/5

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

The schema already describes each parameter with 100% coverage, so the baseline is 3. The description adds value by explicitly linking from_seq and max_passages as a pagination pair, which clarifies their combined intent beyond individual descriptions. It also highlights the required gutenberg_id as the core input.

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

Purpose5/5

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

The description starts with 'Return the full text of an indexed book by Gutenberg id, paginated by passage,' which clearly states the tool's specific action and resource. It also distinguishes itself from siblings like book_fulltext_search by explicitly focusing on retrieving full text rather than searching within it. The fallback behavior for non-indexed books is an additional clarifying detail.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: when you need the full text of a book by Gutenberg ID. It also explains pagination usage with from_seq and max_passages. However, it does not explicitly mention alternatives or when not to use it, such as using book_fulltext_search for snippet-level searches.

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

book_statusA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

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

The description discloses that the tool queries an external API (Gutendex) and a local database (D1), which adds valuable context beyond the annotations (readOnlyHint, idempotentHint). It does not contradict any annotations and provides a transparent view of data sources and what is reported.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys all essential information without any wasted words. It efficiently communicates the tool's purpose and scope.

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

Completeness4/5

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

Given the simplicity of the tool (one optional parameter, no output schema), the description adequately covers what the tool does. It specifies the data sources and elements reported. While it could describe the output format or structure in more detail, it remains sufficient for an agent to understand the tool's behavior.

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

Parameters3/5

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

The only parameter is 'dry_run', which is fully described in the input schema (100% coverage). The description does not add any additional context about the parameter beyond what the schema already provides. Baseline 3 is appropriate since the schema carries the full burden.

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

Purpose5/5

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

The description clearly states the tool reports the 'books store status' and specifies exactly what it reports: the catalog via Gutendex and local D1 indexed-corpus counts. It uses a specific verb 'Report' and differentiates from siblings like book_search, book_details, etc., which are for retrieving content rather than status.

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

Usage Guidelines4/5

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

The description implicitly indicates this tool is for checking system status and data freshness, but it does not explicitly state when to use it versus alternatives. However, given the context of sibling tools (e.g., book_search, book_details), it is clear that this is the only status-reporting tool among them.

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

bounce_scannerA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoA single ticker (e.g. 'AAPL'). Use this or `symbols`.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
symbolsNoMultiple tickers to scan (max 15).
ma_periodNoSimple moving-average period used as a dynamic support reference (default 50).
lookback_daysNoTrailing daily bars to analyze (default 180).
proximity_pctNoHow close (percent) price must be to support/MA to count as 'near' (default 3).
rsi_thresholdNoRSI(14) must be at or below this to qualify as oversold (default 35).
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is known. The description adds rich behavioral context: the signal logic, the per-symbol return fields, tunable thresholds for calibration, and the 'HEURISTIC signal... not investment advice' disclaimer.

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

Conciseness5/5

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

The description is four sentences, each serving a distinct purpose: what it scans, what it returns, how to calibrate, and a risk disclaimer. It is dense but entirely relevant, with no fluff.

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

Completeness5/5

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

With no output schema, the description supplies the exact return structure per symbol. It also covers the tunable parameters and the heuristic nature of the signal. For a moderately complex scanning tool, this is sufficient to select and invoke correctly.

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

Parameters4/5

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

Schema covers 100% of parameters with defaults and ranges, so the baseline is 3. The description adds semantic grouping by identifying rsi_threshold, ma_period, proximity_pct, and lookback_days as tunable thresholds for calibration, which clarifies their role beyond individual schema entries.

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

Purpose5/5

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

The description opens with 'Screen one or more US tickers for a mean-reversion 'bounce' setup on daily bars', clearly naming the action and resource. It lists concrete criteria (support, moving average, RSI, volume) that distinguish it from sibling tools like stock_quote or candlestick_signals.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool—when screening tickers for a bounce setup—by specifying the exact strategy and conditions. It does not explicitly name alternatives or exclusions, but the context is unambiguous enough to guide selection.

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

candlestick_signalsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesUS ticker (e.g. 'MSFT').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
lookback_daysNoTrailing daily bars to scan for patterns (default 60).
Behavior4/5

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

Adds behavioral context beyond annotations: discloses heuristic detection, conservative thresholds, research-only disclaimer, and describes the return fields ({pattern, date, direction, barIndex}). Annotations already cover read-only/idempotent, so this is additional useful context.

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

Conciseness5/5

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

Three sentences: purpose, return format, and caveat. Every sentence earns its place, with no redundancy and front-loaded with the primary action.

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

Completeness4/5

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

For a moderate tool with 3 params and no output schema, the description covers purpose, output structure, and heuristic caveat. It doesn't discuss edge cases or error behavior, but it is sufficiently complete for an agent to decide whether to use it.

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

Parameters3/5

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

Schema coverage is 100% for all 3 parameters, so the baseline is 3. The description adds no extra parameter semantics beyond mentioning 'recent daily bars' which maps to lookback_days; it doesn't go beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states 'Detect classic candlestick patterns on a ticker's recent daily bars' and lists specific patterns (hammer, engulfing, doji, etc.). It uses a specific verb and resource, and differentiates from siblings like stock_quote or stock_history by focusing on pattern detection.

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

Usage Guidelines4/5

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

Provides clear context: it scans daily bars, is heuristic with conservative defaults, and is for research. It doesn't explicitly name alternatives or exclusions, but the use case is well implied for detecting candlestick patterns.

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

cargo_crateA
Read-onlyIdempotent
Inspect

Look up a Rust crate on crates.io: latest version, description, total downloads, repository, and homepage. Keyless.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCrate name, e.g. 'serde'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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 that it is 'Keyless' and lists return fields, providing some added context but no further behavioral details beyond annotations.

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

Conciseness5/5

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

Description is a single, front-loaded sentence with no superfluous words. It efficiently communicates purpose and return fields.

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

Completeness4/5

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

For a simple lookup tool with strong annotations and full schema coverage, the description covers the return fields and lack of authentication. It does not mention error handling for missing crates, but this 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.

Parameters3/5

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

Schema coverage is 100%, and both parameters have clear descriptions. The tool description does not add parameter-specific meaning beyond the schema, so baseline of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool looks up a Rust crate on crates.io and lists specific return fields (latest version, description, total downloads, repository, homepage). The focus on Rust crates distinguishes it from sibling tools like npm_package or pypi_package.

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

Usage Guidelines4/5

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

The description implicitly indicates use for Rust crate lookup and mentions 'Keyless' for no authentication. However, it does not explicitly state when to use or not to use this tool versus siblings, leaving context largely inferred from the tool name.

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

carrier_vetting_scoreA
Read-onlyIdempotent
Inspect

Vet a US motor carrier (trucking company) for a freight-brokerage 'is this safe and legit to broker a load to?' decision, in one call. Give a USDOT number, MC number, or carrier name. Joins FMCSA safety data (operating authority, insurance on file, BASIC safety scores, crash and out-of-service history vs the national average, safety rating) 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 verdict with the reasons, plus all the underlying fields. NO-GO is triggered by a sanctions match or lack of active operating authority; CAUTION by BASIC alerts, fatal crashes, missing liability insurance, high out-of-service rates, or litigation. This is an analytical aid, not a substitute for your own carrier-onboarding checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
mcNoMC (motor carrier) number, without the 'MC-' prefix. Used if no DOT number is given.
dotNoUSDOT number of the carrier (most precise). Example: 76830.
nameNoCarrier 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.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Annotations include readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context: tool joins multiple data sources, returns a verdict with triggers for NO-GO and CAUTION, and emphasizes it is an analytical aid. No contradictions with annotations.

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

Conciseness4/5

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

The description is moderately long but every sentence adds value: purpose, inputs, data sources, verdict types, triggers, disclaimer. It is front-loaded with the core action ('Vet a US motor carrier...') and structured logically.

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

Completeness4/5

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

Given no output schema, the description adequately explains the output: a GO/CAUTION/NO-GO verdict with reasons and underlying fields. It details triggers for each verdict and data sources, providing sufficient context for an agent to understand what the tool returns.

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

Parameters4/5

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

Schema coverage is 100% with detailed descriptions for each parameter (dot, mc, name, dry_run). The description adds value by explaining input precedence (prefer DOT number for exact match) and clarifying dry_run behavior ('do not call any upstream data source').

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Vet a US motor carrier for a freight-brokerage decision' and specifies inputs (USDOT, MC, name) and outputs (GO/CAUTION/NO-GO verdict with reasons). It distinguishes from sibling tools like fmcsa_carrier_lookup by mentioning combined data sources (FMCSA safety data, sanctions, litigation, federal awards), making it unique.

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

Usage Guidelines4/5

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

The description identifies the use case ('is this safe and legit to broker a load to?') and includes a disclaimer ('analytical aid, not a substitute for your own carrier-onboarding checks'). While it does not explicitly name alternatives, the comprehensive nature implies it should be used over simpler FMCSA lookups for vetting decisions.

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

caselaw_case_detailsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCAP case id, e.g. 11301409 (Brown v. Board of Education).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds behavioral context about the returned metadata fields (name, citations, etc.), which is useful beyond annotations.

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

Conciseness5/5

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

A single 34-word sentence that front-loads the verb and resource, with no wasted words. Extremely concise.

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

Completeness4/5

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

The description covers what metadata is returned (name, citations, court, etc.) and mentions the source URL for full text. It lacks details on error handling but is sufficient for a simple retrieval tool with good annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already documented. The description provides an example for the id parameter (Brown v. Board of Education) but adds minimal additional meaning.

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

Purpose5/5

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

The description clearly states 'Get full metadata for a single case by its CAP id' (verb+resource) and lists specific metadata fields. It implicitly distinguishes from sibling tools like caselaw_search or caselaw_opinion_text.

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

Usage Guidelines3/5

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

The description implies usage for retrieving metadata by CAP id but does not explicitly state when to use this tool over alternatives or provide exclusions.

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

caselaw_citation_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
citationYesA reporter citation, e.g. '347 U.S. 483'.
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by specifying that it matches official and parallel citations and returns the CAP id, which goes beyond the annotations' safety profile.

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

Conciseness5/5

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

The description is extremely concise—just two sentences—and immediately states the action (resolve), avoiding any filler. It is front-loaded with the primary purpose and includes essential examples and output details.

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

Completeness5/5

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

For a simple tool with only two parameters and no output schema, the description adequately covers functionality (resolution of citations, parallel matching), output (metadata, CAP id), and linkage to a related tool (caselaw_opinion_text). No gaps are evident.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both parameters. The description provides example citation formats (e.g., '347 U.S. 483'), which adds practical guidance for the citation parameter beyond the schema. The dry_run parameter is not elaborated in the description, but the schema description is sufficient.

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

Purpose5/5

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

The description clearly states the tool resolves reporter citations to cases, provides examples of valid citations, and explicitly mentions that it returns case metadata including the CAP id, distinguishing it from sibling tools like caselaw_search and caselaw_opinion_text.

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

Usage Guidelines4/5

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

The description indicates when to use the tool (to resolve a citation) and implies a workflow by mentioning the CAP id for use with caselaw_opinion_text. However, it does not explicitly state when not to use it or list alternative tools for other scenarios.

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

caselaw_opinion_textA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCAP case id (from caselaw_search / caselaw_citation_lookup).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
max_charsNoMaximum total characters of opinion text (default 50000, max 500000).
Behavior4/5

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

The description adds meaningful context beyond the annotations by explaining that text is 'retrieved live from the public-domain CAP static mirror (not stored),' which indicates the data source and lack of caching. It also discloses that the output contains each opinion with its author, giving insight into the response structure. Since annotations already cover read-only and idempotent behavior, this extra detail is valuable, although error handling and response format are not addressed.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and then providing relevant behavioral context and a usage tip. Every sentence adds necessary information without redundancy, making it concise and well-structured.

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

Completeness4/5

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

Given the lack of an output schema, the description effectively summarizes the return content (opinion text with authors) and the mechanism for bounding response size. It also clarifies the live retrieval nature. However, it does not specify the response format (e.g., plain text vs. structured JSON), error behavior for invalid ids, or default values, leaving some gaps. Overall, it is adequate for a focused read-only tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining that max_chars is used to 'bound the response,' which clarifies its purpose beyond the schema's 'maximum total characters.' It also reinforces that the id is a CAP id. Dry_run is not mentioned in the description, but since the schema already documents it, the description sufficiently complements the schema.

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

Purpose5/5

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

The description opens with 'Fetch the full opinion text of a case on demand by its CAP id,' clearly stating the verb, resource, and required identifier. It further specifies that the response includes each opinion (majority, dissent, concurrence) with its author, distinguishing it from sibling tools that handle case search or metadata. This is specific and not a tautology.

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

Usage Guidelines4/5

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

The phrase 'by its CAP id' establishes a clear prerequisite, implicitly directing the agent to obtain an id from caselaw_search or caselaw_citation_lookup first. It also advises using max_chars to bound the response, which is practical guidance. However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of a 5.

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

cdc_dataset_queryA
Read-onlyIdempotent
Inspect

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/

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50)
orderNoSoQL order clause (e.g. 'date DESC')
whereNoSoQL where clause (e.g. "state='Texas' AND year=2024")
selectNoSoQL select clause (default '*')
datasetYesSocrata 4x4 dataset ID (e.g. 'muzy-jte6')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds context about being a generic raw query tool and provides a SoQL reference link, but it does not describe the return format, error behavior, or pagination beyond the schema. This is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences plus a reference link, front-loaded with the core purpose. Every sentence adds value: purpose, usage guidance, key parameters, and a documentation reference. There is no wasted text.

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

Completeness3/5

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

With six parameters and no output schema, the description is somewhat brief. It adequately covers the generic query nature and usage context, but does not explain the return payload or how the output is structured. However, the schema covers parameter semantics, and the SoQL reference helps fill gaps, making it minimally complete.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all six parameters. The description highlights 'a 4x4 Socrata ID and a where-clause,' which maps to the dataset and where parameters, but adds no additional meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Generic SoQL query against any data.cdc.gov dataset.' It distinguishes itself from sibling curated tools with 'Use this when none of the curated tools fit,' making its unique role explicit.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Use this when none of the curated tools fit.' This tells the agent when to select this tool and implies that curated tools are preferred for their specific datasets. It does not name specific alternative tools, but the sibling list contains many curated CDC tools, making the context clear.

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

cdc_drug_overdose_deathsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
indicatorNoDrug class (e.g. 'Opioids (T40.0-T40.4,T40.6)', 'Synthetic opioids, excl. methadone (T40.4)')
state_nameNoFull state name
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the '12-month rolling counts' detail, which is helpful, but it does not disclose other behavioral traits like pagination, return format, or any access constraints. This is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences long and front-loaded. The first sentence states what the tool provides and includes the dataset ID; the second gives a clear use case. No filler or repetition, every word earns its place.

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

Completeness3/5

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

The description gives enough context for a simple data-query tool: dataset source, dimensions, rolling-count framing, and a use case. However, with no output schema, it does not describe the expected return fields or row structure. The agent is left to infer the output from the tool name and limited description. Acceptable but with gaps.

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

Parameters3/5

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

The input schema provides 100% coverage with descriptions for all four parameters (limit, dry_run, indicator, state_name). The description's phrase 'by state and indicator' echoes the schema but adds no additional meaning beyond what is already in the parameter descriptions. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the resource (CDC drug overdose deaths dataset with ID 9j2v-jamp) and the dimensions (by state and indicator), and notes the 12-month rolling counts. It lacks an explicit verb like 'list' or 'get', but the intent to return data is clear and distinguishes it from sibling CDC tools.

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

Usage Guidelines3/5

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

The description provides a useful context ('opioid/fentanyl/stimulant policy research and treatment-program siting') but does not explicitly compare to alternatives or state when not to use this tool. The usage guidance is implied rather than prescriptive, and no exclusions are mentioned.

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

cdc_excess_deaths_covidA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50)
stateNoFull state name (e.g. 'Texas') or 'United States'
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
outcomeNoOutcome (e.g. 'All causes', 'All causes, excluding COVID-19')
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context by explaining that the data is modeled (expected vs observed), which is crucial for interpreting the numbers as estimates rather than exact counts. No contradictions with annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the dataset identifier and purpose. It is concise, with no redundant filler, and efficiently conveys the core value and use case.

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

Completeness4/5

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

Given the lack of an output schema, the description still provides sufficient context: the data source, the modeled nature of the data, the granularity (state and week), and the use case. It doesn't describe the return format, but for a read-only query with well-documented parameters, this is adequate.

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

Parameters3/5

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

Schema coverage is 100% and every parameter has a description in the schema. The description itself does not elaborate on parameter usage beyond mentioning 'by state and week,' which aligns with the state and limit parameters. The baseline of 3 applies since the schema does the heavy lifting and the description adds minimal additional param semantics.

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

Purpose4/5

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

The description clearly identifies the tool as providing CDC excess deaths data associated with COVID-19, with modeled expected vs observed deaths by state and week. It distinguishes itself from reported COVID death counts, but lacks an explicit verb like 'query' or 'list' and does not directly compare to sibling tools such as cdc_weekly_deaths_by_state.

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

Usage Guidelines4/5

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

The description states its intended use: 'Used to estimate true pandemic impact beyond reported COVID deaths,' which provides clear context. It does not explicitly name alternative tools or exclusionary criteria, but the context is strong enough to guide an agent toward this tool for excess death analysis.

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

cdc_flu_surveillanceA
Read-onlyIdempotent
Inspect

CDC FluView state-level influenza surveillance (vh55-3he6). Returns weekly ILI (influenza-like illness) activity levels per state.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50)
seasonNoFlu season (e.g. '2023-24')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
statenameNoFull state name
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, lowering the bar. The description adds that data is weekly and state-level, but does not disclose pagination, rate limits, or the existence of the dry_run parameter. No contradiction with annotations.

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

Conciseness5/5

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

Two focused sentences: the first names the tool and dataset, the second states the return value. No filler or redundancy, and the key information is front-loaded.

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

Completeness4/5

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

For a read-only data retrieval tool with comprehensive schema descriptions and annotations, the description provides sufficient context about the data source and output. It could mention the season filter or dry_run behavior, but these are already captured in the schema, so the overall completeness is strong.

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

Parameters3/5

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

Schema coverage is 100% with individual parameter descriptions. The description adds context about state-level granularity and the specific dataset ID, but does not explain parameter semantics beyond the schema. Baseline 3 applies due to high schema coverage.

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

Purpose5/5

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

The description clearly states the tool returns weekly ILI activity levels per state, using a specific verb and resource. It distinguishes itself from sibling CDC tools by naming the exact data type (influenza-like illness activity) and geographic scope (state-level).

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The description implies usage for state-level flu surveillance but does not mention alternatives like cdc_outbreak_reports or cdc_vaccination_coverage, leaving selection to inference.

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_deathA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear
limitNoMax rows (default 50)
stateNoFull state name or 'United States'
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
cause_nameNoCause name (e.g. 'Heart disease', 'Cancer', 'Suicide')
Behavior4/5

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

Annotations already convey read-only, open-world, idempotent, and non-destructive behavior. The description adds value beyond those by explaining the exact return contents and citing the source dataset ID (bi63-dtpu), which is especially useful given there is no output schema. It does not detail edge-case behaviors like default filtering or rate limits, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

The description is three sentences with no filler. It front-loads the dataset name and source, then explains the return shape, then gives the primary 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.

Completeness4/5

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

Given there is no output schema, the description adequately conveys what the tool returns and the domain it supports. However, it omits practical details like available years or how to combine filters, leaving minor gaps for a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents each parameter with descriptions. The description loosely aligns parameters (cause, state, year) with the data dimensions but adds no new semantics or syntax details, justifying the baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool returns NCHS leading causes of death by state, specifying the exact metrics (total deaths and age-adjusted death rates) per cause, state, and year. This distinguishes it from sibling CDC tools like cdc_drug_overdose_deaths or cdc_flu_surveillance.

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

Usage Guidelines4/5

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

It explicitly states the use case 'chronic disease + injury mortality research,' giving clear context on when to use it. However, it does not explicitly name alternative tools or provide when-not-to-use guidance, 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.

cdc_outbreak_reportsA
Read-onlyIdempotent
Inspect

CDC NORS foodborne / waterborne / enteric outbreak reports (iezt-77pi). Returns outbreak date, state, etiology, illnesses, hospitalizations, deaths, and implicated food/exposure.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoOutbreak year
limitNoMax rows (default 50)
stateNoFull state name
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
etiologyNoCausative agent (e.g. 'Salmonella', 'Norovirus', 'E. coli')
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so safety profile is covered. The description adds the data source and return fields but no additional behavioral context such as data freshness, pagination, or prerequisite conditions. It does not contradict annotations, but offers limited extra transparency.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core purpose and includes the dataset ID and output fields. Every phrase adds value, with no filler or redundant repetition of the tool name.

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

Completeness4/5

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

For a read-only query tool with well-annotated schema and safety hints, the description is largely complete: it names the source, defines the subject, and lists return fields. However, it omits any mention of filtering capabilities (which the schema provides) and does not clarify how it differs from the generic cdc_dataset_query sibling, leaving a slight gap in selection confidence.

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

Parameters3/5

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

All five parameters have explicit descriptions in the schema (year, limit, state, dry_run, etiology), giving 100% schema coverage. The tool description itself provides no additional parameter meaning, so it meets the baseline but does not enhance the schema.

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

Purpose5/5

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

The description clearly specifies the resource ('CDC NORS foodborne / waterborne / enteric outbreak reports') and the dataset identifier (iezt-77pi), which distinguishes it from sibling CDC tools. It also enumerates the return fields (outbreak date, state, etiology, etc.), making its purpose concrete and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for outbreak report data but provides no explicit guidance on when to choose this tool over alternatives like cdc_dataset_query or other CDC-specific tools. There are no exclusions or alternative tool references, leaving the agent to infer the appropriate context.

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

cdc_vaccination_coverageA
Read-onlyIdempotent
Inspect

COVID-19 vaccination coverage by US county (8xkx-amqh). Returns booster + primary series percentages over time. Useful for public-health gap analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
recip_stateNoTwo-letter state code (e.g. 'CA')
recip_countyNoCounty name
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds that it returns booster and primary series percentages, which explains the output, but does not discuss data freshness, limits, or other behavioral nuances. This meets the baseline for annotation-covered tools.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose, and ends with a practical use case. Every word earns its place with no filler.

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

Completeness4/5

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

For a simple read-only data tool with well-described parameters and thorough annotations, the description provides the essential context: what data is returned and why it might be used. It doesn't need to enumerate parameters since the schema does, making it complete for its complexity.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter (limit, dry_run, recip_state, recip_county) already has a description. The tool description does not add parameter-specific meaning beyond what the schema provides, maintaining the baseline.

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

Purpose5/5

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

The description clearly identifies the tool as 'COVID-19 vaccination coverage by US county' and states it 'Returns booster + primary series percentages over time.' This specific verb-resource pairing distinguishes it from sibling tools like cdc_drug_overdose_deaths or cdc_flu_surveillance.

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

Usage Guidelines4/5

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

The description explicitly notes it is 'Useful for public-health gap analysis,' providing a clear use case. However, it does not name alternative tools or state when not to use it, so it stops short of full guidance.

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_stateA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear (e.g. 2024)
causeNoCause category (e.g. 'All Cause', 'COVID-19 (U071, Multiple Cause of Death)', 'Influenza and pneumonia')
limitNoMax rows (default 50)
stateNoFull state name or 'United States' for national. Default 'United States'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the 'provisional' nature of the data and the dataset source, but does not disclose update cadence, potential data revisions, or pagination. It provides some context beyond annotations but is not rich in behavioral detail.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and data scope, followed by a targeted use case. No filler or redundancy; every word earns its place.

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

Completeness5/5

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

Despite lacking an output schema, the description clearly communicates the return structure ('death counts per state per ISO week'), identifies the dataset, and mentions practical use cases. All essential information for a read-only data tool is present. The dry_run behavior is documented in the schema, so no gap there.

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

Parameters3/5

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

All 5 parameters have schema descriptions (100% coverage). The description's mention of 'state' and 'cause' aligns with the schema but adds no 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.

Purpose5/5

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

The description uses a specific verb ('Returns') and resource ('CDC weekly provisional deaths by state and cause') with the NCHS dataset identifier. It clearly states the data granularity (death counts per state per ISO week), which distinguishes it from sibling tools like cdc_drug_overdose_deaths or cdc_flu_surveillance.

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

Usage Guidelines4/5

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

The description gives explicit use cases: 'excess-mortality and respiratory-disease seasonality analysis.' This provides clear context for when to use the tool, though it does not explicitly name alternative tools or exclusion criteria.

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

census_businessA
Read-onlyIdempotent
Inspect

Business establishments, employment, and annual payroll from County Business Patterns. Optional NAICS industry filter. Used for industry research, competitive intel, supply chain analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
msaNo5-digit Metropolitan Statistical Area code. Required for msa level.
yearNoACS 5-year endpoint year (default 2023).
zctaNo5-digit ZIP Code Tabulation Area. Required for zcta level.
levelYesGeography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'.
naicsNoOptional NAICS 2017 industry code (2 to 6 digits). E.g. '23' for Construction, '54' for Professional Services.
placeNoCensus place FIPS (city). Required for place level.
stateNo2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels.
tractNo6-digit census tract code. Use '*' for all tracts in a county.
countyNo3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds minimal context about the optional filter but no additional behavioral traits.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with core information, and every sentence adds value. No redundant or irrelevant content.

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

Completeness4/5

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

For a tool with 10 parameters and no output schema, the description covers the core purpose, filtering capability, and use cases. It could briefly mention the type of data returned (e.g., yearly totals) but is still complete enough for agent use.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter is already described in detail. The description only mentions the NAICS filter, adding 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.

Purpose5/5

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

The description clearly states the tool retrieves business establishments, employment, and annual payroll from County Business Patterns, with an optional NAICS industry filter. It distinguishes from sibling tools like census_demographics and census_population by specifying business data and use cases.

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

Usage Guidelines4/5

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

The description lists use cases (industry research, competitive intel, supply chain analysis) and mentions the optional NAICS filter. However, it does not explicitly state when not to use this tool or provide comparisons to siblings.

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

census_commute_employmentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
msaNo5-digit Metropolitan Statistical Area code. Required for msa level.
yearNoACS 5-year endpoint year (default 2023).
zctaNo5-digit ZIP Code Tabulation Area. Required for zcta level.
levelYesGeography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'.
placeNoCensus place FIPS (city). Required for place level.
stateNo2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels.
tractNo6-digit census tract code. Use '*' for all tracts in a county.
countyNo3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the description's safety profile is covered. The description adds typical use cases but no additional behavioral traits like pagination, rate limits, or authentication needs.

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

Conciseness4/5

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

The description is two sentences, front-loading the metrics and use cases. While concise, it could be more structured by adding a brief usage note or parameter guidance without becoming wordy.

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

Completeness3/5

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

Given the tool has 9 parameters (though only 1 required) and no output schema, the description is somewhat brief. It does not explain parameter dependencies (e.g., level determines required fields) or overall usage logic. The schema helps, but the description could be more complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 9 parameters. The tool description mentions 'US geography' but does not add per-parameter semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the specific metrics (labor force, unemployment, commute times, public transit, work-from-home rates) and the intended use cases (site selection, workforce analysis, commercial real estate). This distinguishes it from sibling tools like census_demographics and census_income_housing.

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

Usage Guidelines3/5

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

The description provides context on when to use (site selection, workforce analysis, commercial real estate) but does not explicitly state when not to use or mention alternative tools. It lacks explicit guidance on prerequisites or exclusions.

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

census_demographicsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
msaNo5-digit Metropolitan Statistical Area code. Required for msa level.
yearNoACS 5-year endpoint year (default 2023).
zctaNo5-digit ZIP Code Tabulation Area. Required for zcta level.
levelYesGeography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'.
placeNoCensus place FIPS (city). Required for place level.
stateNo2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels.
tractNo6-digit census tract code. Use '*' for all tracts in a county.
countyNo3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Annotations already declare the tool read-only and idempotent. The description adds value by specifying the exact return fields (racial groups, ethnicity, median age) and source (ACS 5-year), going beyond what annotations provide.

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

Conciseness5/5

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

The description is two sentences long, front-loads the purpose, and includes key output details without any extraneous information. Every sentence is necessary.

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

Completeness4/5

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

The description explains the output fields and source, which is helpful given no output schema. However, for a tool with 9 parameters, more context on typical usage patterns could improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-described in the schema. The description adds no additional meaning to parameters beyond what is in the schema, meeting the baseline expectation.

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

Purpose4/5

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

The description clearly states the tool returns race, ethnicity, and age breakdowns for US geographies, listing specific demographic categories. However, it does not explicitly differentiate from sibling census tools like census_population, which also provide demographic data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention when to choose census_demographics over other census tools or any exclusions.

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

census_geography_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoOptional filter: state, county, zcta, place.
limitNoMax matches (default 10).
queryYesFree-text: state name ('Texas'), state code ('TX'), or 5-digit ZIP ('77301').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds input format nuances (state name/code, ZIP, substring matching) but does not mention return format, ambiguity handling, or upstream call behavior (though dry_run is in schema). This is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences, with the purpose front-loaded and every sentence providing relevant information. No filler or redundancy.

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

Completeness4/5

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

Given the good annotations and full schema parameter descriptions, the description covers the tool's purpose and usage context. It misses return format and edge-case behavior, but these are less critical for a lookup tool with a clear schema. Overall, it is 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.

Parameters3/5

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

Schema descriptions cover 100% of parameters, including examples for query and a clear description for dry_run. The description adds only the substring-matching nuance for states, which is a minor addition. Baseline 3 is appropriate since the schema already explains parameters well.

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

Purpose5/5

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

The description clearly states the resource ('Census FIPS codes') and the action ('look up by name'), and explicitly distinguishes it from siblings by noting it produces codes needed by other census_* tools. This makes its role unambiguous.

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

Usage Guidelines4/5

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

The description provides a clear use case: 'Use this to find the FIPS codes needed by other census_* tools.' It does not name alternatives or exclusions, but the context is sufficiently clear for an agent to know when to invoke this tool.

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

census_income_housingA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
msaNo5-digit Metropolitan Statistical Area code. Required for msa level.
yearNoACS 5-year endpoint year (default 2023).
zctaNo5-digit ZIP Code Tabulation Area. Required for zcta level.
levelYesGeography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'.
placeNoCensus place FIPS (city). Required for place level.
stateNo2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels.
tractNo6-digit census tract code. Use '*' for all tracts in a county.
countyNo3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint and destructiveHint, so the description adds marginal value. It provides context on output fields (income, housing, rent) but does not disclose behavioral traits like pagination, error handling, or data recency beyond the schema.

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

Conciseness5/5

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

The description has two succinct sentences. The first lists key data points, the second states use cases. No unnecessary words, and the essential information is front-loaded.

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

Completeness4/5

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

Given the tool has 9 parameters (most optional) and no output schema, the description covers the returned data and typical use cases. It does not explain geography level selection, but the schema descriptions cover that. It is sufficiently complete for a read-only tool with rich annotations.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. The description lists output fields but does not enhance understanding of parameters beyond the schema. It adds use-case context but not parameter semantics.

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

Purpose5/5

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

The description clearly lists the specific data returned (median income, housing units, rent, etc.) and states the geography scope ('for a US geography'). It also differentiates from sibling census tools by focusing on income and housing, rather than demographics, business, or population.

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

Usage Guidelines3/5

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

The description implies usage for real estate and market analysis, but does not explicitly state when to use this tool vs. alternatives like census_demographics or census_commute_employment. There is no guidance on prerequisites 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.

census_populationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
msaNo5-digit Metropolitan Statistical Area code. Required for msa level.
yearNoACS 5-year endpoint year (default 2023).
zctaNo5-digit ZIP Code Tabulation Area. Required for zcta level.
levelYesGeography level: 'us', 'state', 'county', 'zcta' (ZIP), 'place' (city), 'tract', 'msa'.
placeNoCensus place FIPS (city). Required for place level.
stateNo2-letter state code (e.g. 'TX') or 2-digit FIPS. Required for state/county/place/tract levels.
tractNo6-digit census tract code. Use '*' for all tracts in a county.
countyNo3-digit county FIPS. Use '*' for all counties in a state. Required for county/tract levels.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already indicate readOnlyHint, idempotentHint, and non-destructive nature. The description adds that it returns total, male, female, and median age, and mentions usage contexts. No additional behavioral traits beyond annotations, so description adds moderate value.

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

Conciseness5/5

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

Three sentences: purpose, output, use cases. Information is front-loaded and concise with no extraneous content. Every sentence adds value.

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

Completeness4/5

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

Given the tool has no output schema, the description provides essential information about return fields (total, male, female, median age). Schema covers parameters well. A brief mention of wildcard support would improve completeness, but the description adequately prepares an agent for invocation.

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

Parameters3/5

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

Schema has 100% description coverage for all 9 parameters. The description lists geography levels and return fields but does not add significant extra meaning beyond the schema's parameter descriptions. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the verb 'Get', the resource 'total population for a US geography', and lists specific geography levels. It returns specific fields (total, male, female, median age) and mentions use cases like market sizing, which distinguishes it from sibling census tools like census_business or census_demographics.

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

Usage Guidelines4/5

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

Description explicitly lists when to use the tool (for population data at various geography levels). It provides clear context but does not explicitly state when not to use it or name alternative tools for other census data.

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

cfpb_complaint_aggregationsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
facetYesField to aggregate by
companyNoOptional company filter
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the aggregation behavior and facet options but does not disclose additional traits like rate limits or return size. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single concise sentence with a colon separating purpose from examples. No unnecessary words, front-loaded with the main action.

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

Completeness4/5

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

The description covers the core functionality and provides examples. However, without an output schema, it does not describe the return format. Given the tool's simplicity, the description is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100% with each parameter documented. The description adds usage context (e.g., 'ranking companies') but does not enhance the semantic meaning beyond the schema enums and descriptions.

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

Purpose5/5

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

The description clearly states the tool aggregates complaint counts by a single facet, listing the six allowed fields. Examples of use cases (ranking companies, finding common issues) distinguish it from sibling tools like cfpb_complaint_detail 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.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (aggregation, ranking) but does not explicitly exclude cases or compare to alternatives. It gives practical examples but lacks 'when not to use' guidance.

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

cfpb_complaint_detailA
Read-onlyIdempotent
Inspect

Fetch a single CFPB complaint by complaint_id. Returns the full record including narrative if consented.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
complaint_idYesCFPB complaint ID
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds context about returning the full record including narrative if consented, which is useful but not extensive. No further behavioral details like pagination or rate limits are disclosed.

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

Conciseness5/5

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

The description is a single sentence of 15 words that front-loads the core action and includes return information. Every word is earned; no unnecessary content.

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

Completeness4/5

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

For a simple read-only tool with full parameter documentation in schema and annotations covering safety, the description is adequate. It covers purpose and key return behavior, though it does not mention the dry_run parameter or optionality, which are in schema.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters (complaint_id, dry_run). The tool description mentions complaint_id but adds no new information beyond what the schema already provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Fetch a single CFPB complaint by complaint_id' with a specific verb and resource, and distinguishes itself from sibling CFPB tools (aggregations, trends, search) by focusing on a single record lookup.

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

Usage Guidelines3/5

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

The description implies usage when a complaint_id is known and a single record is needed, but does not explicitly mention alternatives like cfpb_search_complaints or cfpb_complaint_aggregations. Guidance is implicit rather than explicit.

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

cfpb_search_complaintsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoPagination offset (default 0)
sizeNoPage size (default 25, max 100)
stateNoTwo-letter state code
companyNoExact company name (use cfpb_suggest_company for fuzzy matching)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
productNoCFPB product category (e.g. 'Credit reporting', 'Mortgage', 'Debt collection')
search_termNoFree-text search across all complaint fields
has_narrativeNoOnly complaints with consumer narratives
date_received_maxNoYYYY-MM-DD upper bound
date_received_minNoYYYY-MM-DD lower bound
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context beyond this: the database size and time range (4M+ since 2011), and the caveat that narratives are public only 'when available,' which is useful behavioral nuance. No contradictions with annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action ('Search the CFPB Consumer Complaint Database'), followed by filter types and return value. No redundant words; every word earns its place.

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

Completeness4/5

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

For a search tool with 10 parameters and no output schema, the description is reasonably complete: it states the dataset scope, filter capabilities, and response nature. It does not explain pagination behavior or the dry_run parameter, but those are covered in the schema. Overall, sufficient but not exhaustive.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description summarizes filter options but does not add new semantic detail beyond what each parameter's description already provides. It does not clarify relationships between params (e.g., ranges must be YYYY-MM-DD) or mention pagination defaults, which are in the schema.

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

Purpose4/5

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

The description clearly states the tool searches the CFPB Consumer Complaint Database, names the key filter dimensions (free-text, company, product, state, date range, narrative-presence), and describes the return content (metadata plus public narratives). It is specific in verb and resource, but it does not explicitly contrast with sibling CFPB tools like cfpb_complaint_aggregations or cfpb_complaint_detail.

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

Usage Guidelines3/5

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

The description implies usage for searching/filtering complaints but gives no explicit guidance on when to prefer this tool over siblings (e.g., aggregations, trends, detail, suggest_company). It does not mention exclusions or prerequisites, so it is minimally adequate but lacks clear contextual direction.

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

cfpb_state_complaintsA
Read-onlyIdempotent
Inspect

Complaint counts and percentages per US state, with optional product filter and date range. Useful for state-level financial-consumer risk maps.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
productNoOptional product filter
date_received_maxNoYYYY-MM-DD upper bound
date_received_minNoYYYY-MM-DD lower bound
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds that the tool returns counts and percentages, but does not detail output structure or potential limitations like 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.

Conciseness5/5

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

The description is two sentences: the first states the core functionality, the second provides a practical use case. No extraneous information; every word earns its place.

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

Completeness4/5

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

Given no output schema, the description explains the return type (counts and percentages per state). It is fairly complete for a simple read-only tool, though it could clarify whether all states are included or only those with complaints.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all four parameters. The description only paraphrases 'optional product filter and date range' without adding new semantic information beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool returns complaint counts and percentages per US state with optional filters, distinguishing it from sibling tools like cfpb_complaint_detail or cfpb_complaint_trends which handle other aggregations or details.

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

Usage Guidelines4/5

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

The description suggests use for state-level risk maps, providing clear context for when to use this tool. However, it does not explicitly exclude other tools or mention when not to use it.

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

cfpb_suggest_companyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesPartial company name
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the return limit (up to 10 suggestions) but does not detail the format of suggestions.

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

Conciseness5/5

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

Two efficient sentences that front-load the purpose and immediately provide usage context with no waste.

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

Completeness4/5

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

For a simple autocomplete tool with comprehensive annotations, the description covers purpose, return limit, and usage context. Lacks output format details but adequate.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already states for 'text' (partial company name) and 'dry_run'.

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

Purpose5/5

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

The description clearly states it auto-completes company names and returns suggestions, which distinguishes it from sibling tools like cfpb_search_complaints that perform full searches.

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

Usage Guidelines5/5

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

Explicitly tells the agent to use the results as exact values for cfpb_search_complaints' company parameter, providing clear when-to-use guidance and a specific alternative.

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

chemical_hazardsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA chemical name (e.g. 'acetone', 'aspirin') or a numeric PubChem CID.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Beyond annotations (readOnly, idempotent, etc.), the description adds value by detailing behavior: it resolves the compound, returns signal word and hazard statements, handles missing data gracefully, and clarifies the data is informational from a free public source. No contradiction with annotations.

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

Conciseness4/5

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

The description is front-loaded with purpose and is efficiently structured. Every sentence adds value, though it could be slightly more concise. Still, no fluff or redundancy, and it fits in a few clear sentences.

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

Completeness4/5

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

Given no output schema, the description adequately explains return values (signal word, hazard statements) and error handling (graceful reporting when no classification). It also notes data source and limitations, making it self-contained for a simple lookup tool.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description adds slight context (e.g., 'chemical name or PubChem CID' for query, and a brief explanation for dry_run) but mostly restates schema info. Baseline 3 is appropriate since schema does heavy lifting.

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

Purpose5/5

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

The description clearly states the tool returns GHS hazard classification for a chemical from PubChem, using specific verbs ('Return') and resource ('GHS hazard classification') with data source and purpose. It distinguishes from sibling tools like 'chemical_lookup' by focusing on GHS classification specifically.

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

Usage Guidelines3/5

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

The description implies when to use (given a chemical name or CID) and provides a caveat about verifying against an SDS, but does not explicitly mention when not to use or compare to alternative tools like 'chemical_lookup'. Usage guidance is implicit and lacks exclusionary context.

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

chemical_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA chemical name (e.g. 'aspirin', 'sodium chloride') or a numeric PubChem CID (e.g. '2244').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

The description adds value beyond annotations by specifying the data source (NIH/NLM PubChem) and that it is keyless and public-domain. Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. No contradictions.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the action and key outputs, making it efficient and scannable.

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

Completeness4/5

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

For a simple read-only tool with 2 parameters and no output schema, the description covers purpose, inputs, outputs, data source, and use case. It does not mention pagination or rate limits, but these are not critical given the keyless public data.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds meaning by explaining that the 'query' can be a chemical name or numeric PubChem CID, and implicitly explains 'dry_run' via its schema description. This goes beyond the schema's built-in description.

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

Purpose5/5

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

The description clearly states the tool resolves a chemical name or PubChem CID to core identity and physical properties, listing specific outputs (CID, IUPAC name, molecular formula, molecular weight, SMILES). It distinguishes itself from siblings like 'chemical_hazards' by focusing on identity and properties.

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

Usage Guidelines4/5

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

The description explicitly states the tool should be used to disambiguate a substance and obtain a stable CID join key for further chemistry or safety lookups. While it doesn't mention when not to use or alternatives, the context is clear and sufficient.

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

clinical_site_selectorA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoOptional city to further localize the trial-location and provider search (e.g. 'Houston'); use with state.
stateNoOptional 2-letter US state to scope trial and provider counts (e.g. 'TX'). Omit for a national read.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
conditionYesMedical condition / disease to evaluate (e.g. 'melanoma', 'type 2 diabetes', 'Alzheimer disease').
specialtyNoOptional NPPES specialty taxonomy keyword to override the condition-to-specialty mapping (e.g. 'Cardiology', 'Endocrinology').
Behavior5/5

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

Beyond annotations (readOnlyHint, etc.), the description details joining three public sources, heuristic specialty mapping with override, graceful degradation, and the return format (readable brief with banding). This provides rich behavioral insight without contradictions.

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

Conciseness4/5

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

The description is front-loaded with the core purpose in the first sentence. Subsequent sentences add necessary detail without excessive verbosity. A small amount of redundancy could be trimmed, but overall it is well-structured.

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

Completeness4/5

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

Given no output schema, the description adequately explains the return format (readable brief with trial activity banding and specialist availability) and failure handling. It covers key aspects for an agent to understand tool output and behavior.

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

Parameters4/5

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

Schema has 100% description coverage, so baseline 3. The description adds value by explaining that 'condition' maps to specialty heuristically and that 'specialty' overrides it, and that 'dry_run' validates the call. These details enhance understanding beyond the schema.

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

Purpose5/5

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

The description explicitly states the tool combines clinical trial activity and specialist availability for a medical condition in a US geography, using a single call. It clearly distinguishes from sibling tools like trials_search or npi_lookup by emphasizing the synthesis of multiple data sources for site-feasibility analysis.

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

Usage Guidelines4/5

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

The description defines the target user (trial sponsor, CRO, feasibility analyst) and the question it answers. It explains that sources degrade gracefully and failures are noted. While it doesn't explicitly list when not to use it, the context is clear enough for an agent to infer appropriate scenarios.

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

college_accreditationA
Read-onlyIdempotent
Inspect

Current institutional accreditation status, accreditor, and (when published by DAPIP) last action date and programmatic accreditations.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
unit_idYesIPEDS UNITID.
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context about DAPIP publication but doesn't disclose behavior beyond annotations (e.g., no mention of data freshness or pagination).

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

Conciseness4/5

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

Single sentence efficiently lists what the tool returns. Front-loaded with 'accreditation status'. Slightly dense but no wasted words.

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

Completeness4/5

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

For a simple lookup tool with no output schema, the description adequately conveys expected return fields (status, accreditor, last action date, programmatic accreditations). Sufficient for an agent to understand the tool's output.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both 'dry_run' and 'unit_id'. The description adds no additional parameter meaning beyond the schema.

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

Purpose5/5

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

The description clearly specifies the tool provides 'current institutional accreditation status, accreditor, and (when published by DAPIP) last action date and programmatic accreditations.' It distinguishes from sibling college tools by focusing on accreditation details.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., college_search, college_metrics). No prerequisites or exclusions mentioned; usage context is implied but not explicit.

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

college_compareA
Read-onlyIdempotent
Inspect

Side-by-side comparison of 2-5 schools across cost, outcomes, and admissions metrics. Pass UNITIDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
unit_idsYesArray of 2-5 IPEDS UNITIDs.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the requirement to pass UNITIDs and the 2-5 school range, but does not disclose return format, data sources, or other behavioral traits. This is adequate but not rich.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose and ending with a direct instruction. Every word earns its place—no redundancy or fluff.

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

Completeness4/5

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

For a simple comparison tool with strong annotations and a clear description, this is nearly complete. The absence of an output schema is somewhat compensated by the metric categories listed, which imply the return content. A slight gap remains around the exact output structure, but the tool is not complex enough to require more.

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

Parameters3/5

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

Schema description coverage is 100%, with unit_ids and dry_run both described. The description's 'Pass UNITIDs' simply restates the schema's unit_ids field and adds no new meaning beyond 'cost, outcomes, and admissions metrics,' which describes the comparison scope rather than parameter semantics.

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

Purpose5/5

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

The description states the tool performs a 'side-by-side comparison of 2-5 schools across cost, outcomes, and admissions metrics,' which is a specific verb+resource+scope. It clearly distinguishes itself from sibling tools like college_metrics or college_search by emphasizing comparison and listing the metric categories.

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

Usage Guidelines4/5

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

The instruction 'Pass UNITIDs' gives a clear prerequisite and the phrase '2-5 schools' indicates the intended use case for multi-school comparisons. However, it does not explicitly name alternatives or 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.

college_demographicsA
Read-onlyIdempotent
Inspect

Student-body demographics for one school: race/ethnicity, gender, age (under/over 25), and geographic origin (in-state, out-of-state, foreign).

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
unit_idYesIPEDS UNITID.
Behavior3/5

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 that it returns specific demographic categories but does not disclose any additional behavioral aspects such as data source 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.

Conciseness5/5

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

The description is a single concise sentence that efficiently communicates the tool's purpose and data content without extraneous information.

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

Completeness4/5

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

Despite lacking an output schema, the description lists the demographic categories returned, which is reasonably complete for a simple read tool. It could be enhanced by mentioning the format (e.g., counts or percentages).

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description does not add information about parameters beyond the schema, listing only output content. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the tool retrieves student-body demographics for one school, listing specific categories (race/ethnicity, gender, age, geographic origin). This clearly distinguishes it from sibling tools like college_metrics or college_accreditation.

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

Usage Guidelines4/5

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

The description implies usage for obtaining demographic breakdowns for a single school based on the listed categories. However, it does not explicitly state when to prefer this tool over alternatives or 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_metricsB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
unit_idYesIPEDS UNITID (Scorecard 'id').
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering core behavioral traits. The description adds value by listing specific metrics but does not disclose additional behavioral details like authorization needs or response format.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the purpose and lists metrics efficiently. Every word adds value with no redundancy.

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

Completeness4/5

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

For a straightforward read-only metrics tool with two parameters and annotation coverage, the description adequately covers the output content. However, it lacks details on response format or potential errors, which would enhance completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented structurally. The tool description does not add any additional parameter semantics beyond the schema, maintaining the baseline score.

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

Purpose4/5

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

The description clearly states the tool provides 'cost and outcome metrics for one school' and lists specific metrics, making the purpose explicit. However, it does not explicitly differentiate this tool from sibling tools like college_compare or college_demographics, which offer related college data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Given many sibling college tools, the description should indicate context for selection, such as comparing multiple schools or demographic focus.

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

college_outcomes_by_programA
Read-onlyIdempotent
Inspect

Program-level outcomes (4-digit CIP code) for one school: median earnings one year after completion, median debt at completion, and award counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
unit_idYesIPEDS UNITID.
Behavior4/5

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

Annotations already mark the tool as readOnly and idempotent. The description adds context about the specific data returned (median earnings, debt, award counts), which is beyond the annotation hints. No contradictions with annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently captures the tool's scope and data outputs.

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

Completeness2/5

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

The description mentions '4-digit CIP code' but the input schema only requires a school ID (unit_id), omitting a CIP code parameter. This mismatch makes the description incomplete. While it does explain return values well (earnings, debt, awards), the missing input parameter is a significant gap.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (dry_run, unit_id) are already described. The tool description does not add new meaning beyond the schema. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it provides program-level outcomes (median earnings, debt, award counts) for one school. This distinguishes it from sibling tools like college_metrics or college_demographics, which cover different scopes. However, the mention of '4-digit CIP code' is ambiguous—it suggests an input parameter that does not exist in the schema, slightly reducing clarity.

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

Usage Guidelines4/5

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

The description implies this tool is for detailed program-level data for a specific school, contrasting with broader tools like college_search or college_trends. It does not explicitly state when to use it over alternatives, but the context of sibling tools makes the scope clear.

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

college_value_scoreA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoOptional 2-letter state to disambiguate the school name (e.g. 'OH').
collegeYesUS college/university name (e.g. 'University of Michigan', 'Ohio State University').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
programNoOptional program name or CIP prefix (e.g. 'Nursing', 'Computer Science') to add program-level debt-vs-earnings evidence.
Behavior5/5

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

The description adds significant value beyond annotations. It explains the data joining process (College Scorecard + BLS), the nature of the output (rating with itemized evidence), and highlights limitations (data lags, only federally-aided students). No contradiction with annotations (readOnlyHint, etc.).

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

Conciseness4/5

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

The description is fairly long but well-structured: it starts with the core purpose, then details the data sources, output, and limitations. It is front-loaded and every sentence adds value. Could be slightly more concise, but it earns its length.

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

Completeness5/5

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

Given the complexity of the tool (multiple data sources, no output schema) the description is complete. It explains the output rating, the evidence breakdown, and the handling of failing sources. Annotations further clarify read-only and idempotent behavior.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds context by explaining the effect of the optional `program` parameter and the role of `dry_run` for validation. It reinforces parameter purpose but does not add extensive new detail beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose as a 'one-call' read assessing whether a US college degree is worth the cost. It specifies the data sources and the output rating (STRONG VALUE, FAIR, etc.), distinguishing it from sibling tools like college_search or college_metrics which likely provide raw data without synthesis.

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

Usage Guidelines4/5

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

The description provides good context on usage: it's a read-only tool for evaluating college value, with optional program-specific analysis. It also warns that it's informational only, not advice. However, it does not explicitly compare to alternatives or specify when not to use it (e.g., for non-US colleges).

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

company_complaint_profileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOptional lower-bound date (YYYY-MM-DD) for FDA recalls.
stateNoOptional 2-letter state to scope the CFPB complaint leg (e.g. 'CA').
companyYesCompany or brand name to profile (e.g. 'Wells Fargo', 'Peloton').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

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

The description discloses behavioral traits beyond annotations: it details the three data sources, specifies that a failed leg is noted but not fatal, describes the returned risk level (LOW/MODERATE/ELEVATED), and states it is informational public-record synthesis, not legal advice. Annotations already mark readOnlyHint=true, and description is fully consistent.

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

Conciseness4/5

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

The description is front-loaded with the main purpose and structured clearly. It is relatively long but each sentence adds value by explaining legs, alternatives, and limitations. Could be slightly more concise, but no extraneous information.

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

Completeness5/5

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

Given the tool's complexity (multi-source aggregation) and the absence of an output schema, the description fully covers what the tool does, what it returns, when to use alternatives, and limitations. It provides all necessary context for an agent to decide to invoke it.

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

Parameters4/5

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

Schema documentation coverage is 100%, so baseline is 3. The description adds context by explaining how parameters like 'since' (for FDA recalls) and 'state' (for CFPB scope) relate to the tool's legs, providing integration-level meaning beyond the schema descriptions. However, dry_run is not elaborated in the description, though the schema description is clear.

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

Purpose5/5

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

The description clearly states it is a 'CONSUMER-RISK read' for a company or brand, led by the consumer-complaint picture. It explains the three data legs (CFPB, recalls, litigation) and explicitly distinguishes it from sibling tools like product_liability_screen and recall_screen, providing specific differentiation.

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

Usage Guidelines5/5

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

The description gives explicit guidance on when to use this tool (for consumer-complaint-centered risk) and when not to use it (NHTSA vehicle recalls out of scope, directing to recall_screen). It also names an alternative (product_liability_screen) for recall/litigation-centered needs.

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

company_infoA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., "AAPL")
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no behavioral details beyond listing return fields, so it provides minimal additional transparency.

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

Conciseness4/5

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

The description is concise and front-loaded with the purpose, followed by a list of returned data and usage examples. It is effective without being verbose.

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

Completeness4/5

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

The description enumerates many return fields (sector, industry, revenue, etc.), providing a good understanding of the output. Without an output schema, this is fairly complete for a data retrieval tool.

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

Parameters3/5

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

The input schema is fully described in the schema itself (100% coverage). The description does not add any new semantic information about the parameters, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get company profile and financial fundamentals.' It lists the specific data returned and provides example queries, making it easy to understand what the tool does.

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

Usage Guidelines4/5

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

The description provides example queries like 'tell me about Apple' and 'company financials', giving clear usage context. However, it does not explicitly state when not to use this tool or mention alternatives among sibling tools.

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

company_trust_checkA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoOptional 2-letter state to disambiguate the EPA facility search.
tickerNoOptional stock ticker hint to pin the SEC EDGAR match (e.g. 'LMT').
companyYesCompany or organization name to check (e.g. 'Lockheed Martin', 'Acme Widgets LLC').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

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

The description thoroughly explains the tool's behavior: lists data sources (OFAC, SEC, USAspending, EPA), describes verdict bands, and clarifies that failures are noted but not fatal. Annotations already mark it as read-only, idempotent, and non-destructive; the description adds rich context beyond annotations.

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

Conciseness4/5

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

The description is moderately long but well-structured, front-loading the purpose and then detailing sources, verdicts, and disclaimers. Each sentence adds value, though some redundancy could be trimmed.

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

Completeness5/5

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

Despite lacking an output schema, the description fully explains the return values: plain-English verdict bands, positive signals, flags, and resolved identifiers. It also covers edge cases like failed sources and disclaimers about absence of records.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds some context (e.g., 'disambiguate the EPA facility search', 'pin the SEC EDGAR match'), but does not significantly enhance the parameter understanding beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'One-call public-record trust read for a company - answers 'can I trust this company?' for KYB/vendor-diligence agents.' It specifies the verb 'read' and resource 'public-record trust', and distinguishes from siblings by describing its unique multi-source aggregation.

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

Usage Guidelines4/5

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

The description defines target users ('KYB/vendor-diligence agents') and states what it does (sanctions, SEC, USAspending, EPA checks). It includes disclaimers about what it is not (credit report, background check). However, it does not explicitly compare to 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.

congress_bill_actionsA
Read-onlyIdempotent
Inspect

Get the chronological legislative action history for one bill (introductions, committee referrals, votes, becoming law). Requires Congress number, bill type, and bill number.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax actions (default 50).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressYesCongress number.
bill_typeYesBill type code: hr (House Bill), s (Senate Bill), hjres, sjres, hconres, sconres, hres, sres.
bill_numberYesBill number.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about the chronological nature and example actions, but does not disclose additional behavioral traits like pagination, rate limits, or response structure beyond annotations.

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

Conciseness5/5

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

The description is a single sentence with front-loaded verb and resource, listing example actions concisely. Every word adds value, and there is no redundancy.

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

Completeness3/5

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

While the description covers the basic purpose and required parameters, it does not explain the output format or pagination behavior (despite the limit parameter). For a list-returning tool, this missing context reduces completeness.

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

Parameters3/5

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

Schema coverage is 100%, and the description simply restates the three required parameters without adding new semantic meaning. It does not enhance understanding beyond the schema.

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

Purpose5/5

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

The description clearly specifies the verb 'Get' and the resource 'chronological legislative action history for one bill', with examples of actions. It distinguishes from siblings like congress_bill_details by focusing on the action history timeline.

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

Usage Guidelines3/5

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

The description states required parameters but lacks explicit guidance on when to use this tool over siblings. No when-not or alternative tools are mentioned, leaving the agent to infer from context.

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

congress_bill_cosponsorsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax cosponsors (default 250).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressYesCongress number.
bill_typeYesBill type code: hr (House Bill), s (Senate Bill), hjres, sjres, hconres, sconres, hres, sres.
bill_numberYesBill number.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's safety profile is clear. The description adds that it returns party and state, and requires specific parameters, but does not describe pagination or limit behavior beyond the schema. With annotations covering the core traits, a 3 is appropriate.

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

Conciseness5/5

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

The description is two concise sentences with no fluff. It front-loads the purpose and includes a usage hint, earning its place.

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

Completeness4/5

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

The description covers the input requirements and what is returned (party, state). With no output schema, this is sufficient. The tool is simple and fits well among sibling congress tools.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters are well-documented. The description repeats the required parameters (congress, bill_type, bill_number) but does not add new meaning beyond what the schema provides. Baseline 3 is correct.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'cosponsors of one bill', and specifies what is returned (party and state). It implicitly distinguishes from sibling tools like congress_bill_details or congress_search_bills by focusing on cosponsors.

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

Usage Guidelines4/5

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

The description mentions it is 'useful for mapping coalitions behind legislation', providing context for when to use it. However, it does not explicitly state when not to use or compare to alternatives like congress_bill_actions or congress_member_details.

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

congress_bill_detailsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressYesCongress number, e.g. 118.
bill_typeYesBill type code: hr (House Bill), s (Senate Bill), hjres, sjres, hconres, sconres, hres, sres.
bill_numberYesBill number, e.g. 3076.
Behavior4/5

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

Annotations indicate readOnlyHint, idempotentHint, and no destructiveness. The description adds value by listing specific return fields (title, sponsor, etc.), which is useful contextual information beyond the annotations. No contradictions.

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

Conciseness5/5

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

Single sentence that front-loads the return fields and then states requirements. Every word earns its place; no redundancy or waste.

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

Completeness4/5

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

No output schema, but the description lists several return fields, providing a useful overview. For a tool with few parameters and clear purpose, this is largely sufficient, though a complete list would be ideal.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description mentions the three required params and gives an example, but adds little meaning beyond what the schema already provides for each parameter.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'full detail for one bill', listing specific fields. It distinguishes from sibling tools like congress_bill_actions and congress_bill_cosponsors, which are more narrow in scope.

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

Usage Guidelines3/5

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

The description specifies required parameters and gives an example, but does not explicitly state when to use this tool versus alternatives or when not to use it. The usage context is implied but not fully articulated.

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

congress_house_votesA
Read-onlyIdempotent
Inspect

List recent U.S. House roll-call votes for a Congress, with vote number, question, result, and date. Defaults to the current Congress.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax votes (default 20).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressNoCongress number (default current, 91).
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the default congress (91) and fields returned, but no additional behavioral traits beyond what annotations provide. Adequate.

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

Conciseness5/5

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

A single, well-structured sentence with all essential information front-loaded. No superfluous words.

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

Completeness4/5

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

Description covers purpose, output fields (vote number, question, result, date), and defaults. With good annotations and simple parameters, it is sufficiently complete. Lacks mention of pagination or sorting, but acceptable for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. The description adds default values for congress (current Congress 91) and limit (20), and clarifies that dry_run is a preview mode. This adds meaningful context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists recent U.S. House roll-call votes, specifying key fields (vote number, question, result, date) and default congress. It distinguishes itself from sibling congress tools (e.g., bills, members) by focusing on votes.

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

Usage Guidelines4/5

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

The description implies usage for retrieving House vote data, but does not explicitly exclude cases or mention alternatives among sibling tools. The context is clear enough for selection.

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

congress_member_detailsA
Read-onlyIdempotent
Inspect

Get detailed profile for one member of Congress by bioguide ID (e.g. 'P000197'), including party history, terms served, and leadership roles.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
bioguide_idYesBioguide ID, e.g. 'P000197'.
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds useful context about the type of data returned (party history, terms, leadership) but does not discuss other behavioral aspects like rate limits or authentication.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the tool's purpose, input, and output. It is front-loaded and contains no extraneous information.

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

Completeness3/5

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

With no output schema, the description provides a high-level list of content fields but lacks detail on the response structure or any pagination. While it gives a reasonable overview, it could be more complete for an AI agent to fully understand the return format.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are well-documented in the schema. The description only repeats the example bioguide ID without adding new semantic meaning, resulting in no extra value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves a detailed profile for one member of Congress using a bioguide ID, and specifies included data (party history, terms, leadership). This distinctively separates it from search-focused siblings like congress_search_members.

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

Usage Guidelines4/5

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

The description implies the tool is for retrieving details of a single member, contrasting with search alternatives. However, it lacks explicit when-not or alternative suggestions, leaving some ambiguity for agents unfamiliar with sibling tools.

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

congress_recent_lawsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressNoCongress number (default current, 91).
law_typeNoLaw type: 'pub' or 'priv'.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description is consistent. It adds the specific behavior of listing laws and default congress, which is helpful extra context beyond the annotations.

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

Conciseness5/5

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

Two concise sentences with no extraneous information. Front-loaded with the core action and key defaults. Every sentence earns its place.

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

Completeness3/5

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

No output schema exists, and the description does not describe what the tool returns (e.g., format or fields). While the tool's purpose is clear, an agent might benefit from knowing the response structure. Adequate but incomplete.

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

Parameters4/5

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

Schema coverage is 100% with each parameter described, so baseline is 3. The description adds value by explicitly stating the default behavior for congress and explaining the meaning of law_type values, going beyond what the schema provides.

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

Purpose5/5

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

The description explicitly states the action ('List'), the resource ('bills that have become public or private law'), and the scope ('in a given Congress'). It clearly differentiates from sibling tools like congress_search_bills by focusing only on enacted laws.

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

Usage Guidelines4/5

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

The description provides clear usage context: defaults to current Congress and explains how to use law_type ('pub' or 'priv'). While it doesn't explicitly state when not to use it, the context is sufficient for an agent to decide.

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

congress_search_billsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order, e.g. 'updateDate+desc' (default) or 'updateDate+asc'.
limitNoMax results (1-250, default 20).
queryNoOptional free-text keyword filter (e.g. 'inflation', 'semiconductor').
offsetNoPagination offset.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressNoCongress number (e.g. 91 is current). Omit for all.
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds that it returns 'most recently updated bills' and allows scoping/filtering, but does not disclose pagination, default sort, or other behavioral nuances. Some value added, but not rich.

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

Conciseness5/5

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

Two efficient sentences: first defines the tool's action and scope, second provides usage guidance. No fluff, front-loaded, every sentence adds value.

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

Completeness3/5

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

For a search tool with 6 parameters and no output schema, the description covers the core purpose and key parameters, but omits what the returned data includes (bill number, title, etc.). Adequate but could be more complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description mentions Congress number and free-text query parameters, helping the agent understand key filters, but doesn't elaborate on other parameters (sort, limit, offset, dry_run) beyond schema.

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

Purpose4/5

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

The description clearly states it searches/lists recent U.S. federal bills from Congress.gov, with optional Congress number or free-text filter. It distinguishes the tool's search purpose from sibling tools like congress_bill_details, but does not explicitly name alternatives.

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

Usage Guidelines4/5

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

The description advises using the tool to 'find legislation by topic or to see what is currently moving,' providing clear context. However, it does not specify when to avoid this tool in favor of more specific tools (e.g., congress_bill_details for individual bill info).

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

congress_search_membersA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20).
stateNoTwo-letter state code, e.g. 'TX'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
congressNoCongress number.
districtNoHouse district number.
current_memberNoLimit to currently-serving members.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds return fields and a cross-reference hint but no additional behavioral traits like pagination, rate limits, or default ordering. No contradiction with annotations.

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

Conciseness5/5

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

Two concise sentences: first states purpose and filters, second states output and a usage tip. No extraneous words or repetition.

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

Completeness4/5

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

For a search tool with 6 optional parameters and no output schema, the description covers key filters and output fields. It omits mention of limit, current_member, and dry_run, but those are in the schema. Overall sufficient for agent understanding.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3 applies. The description merely reiterates the optional filters (congress, state, district) already documented in the schema. It does not add meaning beyond what the parameter descriptions provide.

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

Purpose5/5

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

Description clearly states the tool searches members of Congress, lists optional filters (congress, state, district), and specifies return fields (name, party, chamber, bioguide ID). This distinguishes it from sibling tools like congress_member_details or congress_search_bills.

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

Usage Guidelines3/5

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

The description implies usage via filters but does not explicitly state when to use this tool versus alternatives. The hint to use bioguide ID with congress_member_details provides minimal guidance, but no when-not-to-use or exclusion criteria are given.

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

corporate_ownership_treeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
leiNoOptional exact 20-character LEI code to anchor the tree directly (e.g. '5493006MHB84DD0ZWV18'). Overrides a name search.
companyNoCompany / organization name (e.g. 'Alphabet Inc.', 'JPMorgan') or a 20-character LEI code. Provide this or 'lei'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description adds significant behavioral context: how the tree is constructed (climbs to ultimate parent, walks down), output structure (LEI, jurisdiction, status), marking of queried entity, tree cap with 'and N more', handling of failing hierarchy hops, and data source (GLEIF). No contradictions with annotations.

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

Conciseness5/5

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

Description is comprehensive yet efficient. Each sentence adds value, starting with a strong purpose statement, then detailing process, output, differentiation, and limitations. No fluff; well-structured for an agent to quickly understand.

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

Completeness5/5

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

Given the tool's complexity and lack of output schema, description covers all necessary aspects: input, process, output structure, limitations (tree cap, coverage variability), and use cases. It answers likely questions an agent would have about what the tool does and its constraints.

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

Parameters4/5

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

Schema coverage is 100% so baseline 3. Description enhances parameter understanding: explains that 'company' can be name or LEI, that 'lei' overrides name search, and that 'dry_run' provides a preview without executing. This adds value beyond the schema descriptions.

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

Purpose5/5

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

Description clearly states it provides a full corporate-ownership tree from GLEIF for a given company. It specifies the input (company name or LEI) and the output (tree with subsidiaries, LEI, jurisdiction, status). It also distinguishes itself from the sibling tool resolve_entity, which only returns ultimate parent and count.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'for M&A, diligence, and counterparty mapping.' It contrasts with resolve_entity, telling the agent that this tool returns the actual subsidiary list/tree rather than just a count. Also provides caveats about tree cap and data coverage.

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_indexA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
metroNoOptional 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.
stateYesUS state as a 2-letter code (e.g. 'TX', 'CA', 'NY') or 2-digit FIPS (e.g. '48'). Required.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds behavioral details: joins three sources, returns relative indices and banding, handles source failures gracefully, and notes it is informational. No contradiction with annotations.

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

Conciseness4/5

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

The description is front-loaded with the main purpose and is structured logically. It is somewhat verbose but every sentence adds necessary context. Could be slightly more concise but remains clear.

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

Completeness5/5

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

Given the complexity (3 datasources, 3 params, no output schema), the description adequately explains the index construction, return format (banding and numbers), failure handling, and degradation. It is complete for an agent to understand behavior and return value.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning: explains how 'metro' refines only context and label while labor/energy remain state-level, and clarifies 'state' accepts codes or FIPS. 'dry_run' is well-described.

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

Purpose5/5

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

The description clearly states it provides a comparative 'cost of operating a business here' read for a US state, joining three public sources. The verb 'read' and resource 'cost of doing business index' are specific, and the purpose distinguishes it from sibling tools that focus on single data sources.

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

Usage Guidelines4/5

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

The description implies when to use: when a comparative business cost index is needed. It mentions optional metro context and graceful degradation, but lacks explicit when-not or alternatives to other tools.

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

counterparty_risk_scoreA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
company_nameYesCompany or entity name to score. Examples: 'Lockheed Martin', 'Acme Holdings BV', 'Pfizer Inc'. Common suffixes (Inc/LLC/Ltd/Corp) are normalized automatically.
Behavior5/5

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

Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds substantial behavioral context: it combines findings from multiple sources, returns a weighted metric with evidence chain, and includes special handling for sanctions (zeroing the score). It also explains the dry_run parameter behavior, which is not covered by annotations.

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

Conciseness4/5

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

The description is front-loaded with the main action and is well-structured. However, it is somewhat verbose, listing all data sources and output components. While every sentence adds value, it could be slightly more concise without losing clarity.

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

Completeness5/5

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

Given the absence of an output schema, the description thoroughly explains the return format: score, risk band, itemized evidence with citations, sources queried, sources that failed, and a plain-text summary. It also covers the dry_run behavior. This makes the tool fully understandable.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaningful context beyond the schema: it notes that common suffixes are normalized automatically for company_name, and for dry_run it explains that it returns a preview to validate a call before querying. This enriches the parameter understanding.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Compute a composite 0-100 Counterparty Risk Score for a company name.' It lists the data sources and explicitly distinguishes from sibling tools by framing it as a single-call alternative to 'stitching five separate queries.'

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Use this when you need a single-call counterparty risk verdict instead of stitching five separate queries.' It also explains that sanctions hits zero the score, which is a key rule. However, it does not explicitly mention when not to use or list alternative tools by name.

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

court_citation_resolverB
Read-onlyIdempotent
Inspect

Resolve a legal citation (e.g. '410 U.S. 113') to its CourtListener case record.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
citationYesCitation string, e.g. '410 U.S. 113'.
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds that it resolves citations to case records, which is consistent but does not add substantial behavioral context beyond what annotations provide.

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

Conciseness5/5

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

The description is a single, well-structured sentence that immediately conveys the tool's purpose with an example. No unnecessary words.

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

Completeness4/5

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

For a simple resolver tool, the description is adequate. It explains the input (citation string) and the expected output (case record). However, it does not specify the structure of the return value, which is acceptable given no output schema.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters (`citation` and `dry_run`) described in the schema. The description adds an example but no additional semantic detail beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('resolve') and the resource ('legal citation to its CourtListener case record'), with a concrete example. However, it does not explicitly differentiate from the sibling tool `caselaw_citation_lookup`, which may serve a similar purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like `caselaw_citation_lookup`. There is no mention of prerequisites, limitations, or scenarios where this tool should not be used.

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

court_docket_lookupA
Read-onlyIdempotent
Inspect

Look up a federal docket by court ID and docket number. Returns party list and recent entries from PACER/RECAP.

ParametersJSON Schema
NameRequiredDescriptionDefault
courtYesCourt ID, e.g. 'nysd'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
docket_numberYesDocket number, e.g. '1:23-cv-04567'.
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it fetches from PACER/RECAP, which provides context beyond the annotations. No contradictions.

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

Conciseness5/5

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

Two sentences with no wasted words. Front-loaded with the main action. Every sentence adds value.

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

Completeness4/5

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

For a tool with no output schema, the description includes return content (party list and recent entries) and data source, which is sufficient for moderate complexity. Slightly incomplete regarding potential limitations or formatting details.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters are already described. The description does not add additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool looks up a federal docket by court ID and docket number, and specifies it returns party list and recent entries. This distinguishes it from sibling tools like court_case_search or 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.

Usage Guidelines3/5

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

The description implies usage for federal docket lookups but provides no explicit guidance on when to use this tool versus alternatives (e.g., court_recent_filings) or any preconditions.

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

court_judge_lookupA
Read-onlyIdempotent
Inspect

Look up a judge profile by name or CourtListener person ID. Returns positions, education, and bench history.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesJudge full or partial name, or numeric person ID.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds what the tool returns, but does not disclose limitations (e.g., partial name matching behavior, case sensitivity, or dry_run semantics beyond schema).

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

Conciseness5/5

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

Single sentence, 15 words, no fluff. Immediately states action, lookup method, and returned data. Front-loaded and efficient.

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

Completeness4/5

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

Given no output schema, the description explains the return content (positions, education, bench history). However, it does not clarify if multiple matches can be returned for partial names or how results are structured. Minor gap for a simple tool.

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

Parameters3/5

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

Schema coverage is 100% and both parameters have clear descriptions. The tool description adds no new information about parameters beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool looks up a judge profile by name or CourtListener person ID, and specifies it returns positions, education, and bench history. It distinguishes from sibling court tools like court_case_search or court_docket_lookup, which focus on other aspects of court records.

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

Usage Guidelines3/5

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

Usage is implied by the description (when you need a judge profile), but there is no explicit guidance on when not to use this tool or mention of alternatives. No exclusions or comparative context provided.

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

court_recent_filingsB
Read-onlyIdempotent
Inspect

Recent docket entries filed in a specific court, ordered newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
courtYesCourt ID, e.g. 'nysd', 'cand'.
limitNoMax results (1-50, default 10).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations indicate read-only, idempotent, non-destructive, and open-world hints. The description adds ordering behavior ('ordered newest first') but lacks details about pagination, rate limits, or the nature of 'docket entries'. With annotations covering safety, the description provides marginal additional context.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the key action and result. No wasted words. Every part is purposeful.

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

Completeness3/5

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

The tool has no output schema, so the description should provide some idea of the return format or content. It does not mention what fields are returned, how results are paginated, or behavior when no results exist. For a simple retrieval tool with 3 well-documented params, the description is minimally adequate but leaves gaps.

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

Parameters3/5

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

Schema coverage is 100%; all parameters have descriptions. The tool description does not add new meaning beyond the schema. It implies date-range filtering implicitly via 'recent', but no specific format or constraints are given. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool retrieves recent docket entries for a specific court with newest-first ordering. It uses a specific verb ('filed') and resource ('docket entries'). However, it does not explicitly differentiate from siblings like court_docket_lookup or court_case_search, so it gets a 4.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description provides no context for when it is appropriate, nor does it mention any prerequisites or limitations. Sibling tools exist with overlapping functionality, but no comparison is given.

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

cpsc_recent_recallsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent recalls to return (default 10).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
lookback_daysNoHow many days back to scan (default 90).
Behavior4/5

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 valuable operational context: the data source (SaferProducts.gov/CPSC), keyless access, sorting behavior, and that each result links to an official CPSC recall page. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is short, front-loaded with the core action, and every sentence earns its place. It includes the source line and key behavioral details without any filler or redundant boilerplate.

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

Completeness4/5

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

For a simple read-only list tool, the description adequately covers source, time window, sort order, and output behavior (links to official recall pages). Some output fields are unspecified, but the low complexity and rich schema make this sufficient.

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

Parameters3/5

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

The input schema covers all three parameters with descriptions, defaults, and bounds, achieving 100% schema description coverage. The description only restates the 90-day default and the notion of 'most recent', adding no new parameter-level semantics beyond what the schema already provides.

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

Purpose5/5

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

The first sentence names the specific action (Return), resource (most recent U.S. CPSC product recalls), and behavior (date-sorted, newest first). The mention of SaferProducts.gov and configurable window distinguishes it from keyword-oriented sibling tools like cpsc_recall_search.

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

Usage Guidelines3/5

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

The description clearly frames the tool for time-bounded recent-recall lookups (default 90 days), but it never states when to prefer it over cpsc_recall_search or other recall-focused tools. No explicit exclusions or alternative tool guidance is provided, leaving the comparison to inference.

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

crypto_compareA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinsYesCoin names or tickers, 2-5 coins. Accept either CSV string ('bitcoin,ethereum,solana') or array (['bitcoin','ethereum','solana']).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's main addition is the output format (comparison table with specific metrics). No contradictions. Could mention data freshness or limits, but overall adequate.

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

Conciseness5/5

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

The description is very concise: two sentences plus example list. No fluff, front-loaded with the purpose.

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

Completeness5/5

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

Given no output schema, the description adequately describes the return format (comparison table with price, change, market cap, etc.). It covers input constraints and examples, making the tool self-contained.

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

Parameters4/5

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

Schema coverage is 100%, so the description adds context by reinforcing the 2-5 coin constraint and providing example formats (CSV vs array). This is helpful beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool compares 2-5 cryptocurrencies side by side, listing specific metrics. It provides example queries that distinguish it from single-coin tools like crypto_price 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.

Usage Guidelines4/5

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

The description explicitly lists use cases and example intents, making it clear when to use this tool. However, it does not explicitly mention alternatives or when not to use it, though sibling tools exist.

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

crypto_infoA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesCryptocurrency name or ticker (e.g., 'bitcoin', 'BTC', 'ethereum')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. Description adds no contradictory info and aligns with read-only nature but doesn't provide additional behavioral insights beyond the annotations.

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

Conciseness4/5

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

Description is a single paragraph, concise, and includes example queries. It wastes no words but could be slightly more structured; still above average.

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

Completeness3/5

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

No output schema exists, and description does not specify return format or structure. While it lists included data points, it leaves out how the data is organized, which is a minor gap.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters (coin, dry_run). Description does not add meaning beyond schema, so baseline score of 3 applies.

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

Purpose5/5

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

Description clearly specifies verb 'get' and resource 'detailed profile for any cryptocurrency', listing specific data points. It distinguishes from siblings like crypto_compare, crypto_price, and crypto_trending by focusing on comprehensive background info.

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

Usage Guidelines4/5

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

Description provides explicit example queries ('tell me about bitcoin', 'what is ethereum?'), guiding when to use. It lacks explicit 'when not to use' but the examples effectively illustrate context.

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

crypto_priceA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesCryptocurrency name or ticker (e.g., 'bitcoin', 'BTC', 'ethereum', 'ETH')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds details about return fields (price, change, market cap, etc.) but does not reveal additional behaviors like API latency or data freshness. It is consistent and provides modest 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.

Conciseness4/5

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

The description is a single paragraph that front-loads the purpose. It is somewhat lengthy due to many example queries, but each sentence adds value. Could be slightly more concise, but overall well-structured.

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

Completeness4/5

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

Given no output schema, the description adequately explains return fields (price, 24h change, market cap, volume, ATH). It also covers coin support. For a simple read tool, this is sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema for the 'coin' parameter, but it does mention support for many cryptocurrencies via CoinGecko ID, which slightly enriches the parameter context.

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

Purpose4/5

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

The description clearly states the tool retrieves current price and market data for any cryptocurrency, listing specific fields returned. It does not explicitly differentiate from sibling tools like crypto_compare or crypto_info, but the verb 'get' and the data fields imply it is a straightforward price query.

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

Usage Guidelines4/5

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

The description provides numerous example queries ('what's the price of bitcoin?', etc.) and lists supported cryptocurrencies, giving clear guidance on when to use. It lacks explicit exclusions or alternatives, 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.

cve_lookupA
Read-onlyIdempotent
Inspect

Full detail for a single CVE by ID (format CVE-YYYY-NNNN). Returns CVSS scores, weakness IDs, references, and affected products from the NVD.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. CVE-2024-3094.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by specifying the returned data (CVSS scores, weakness IDs, references, affected products) and that data comes from NVD. No contradictions.

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

Conciseness5/5

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

Single sentence front-loaded with 'Full detail for a single CVE by ID.' No wasted words; all information is necessary and well-structured.

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

Completeness5/5

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

For a simple lookup tool without an output schema, the description covers the purpose, input format, and key output fields. No gaps in context given the tool's complexity and supporting annotations.

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

Parameters4/5

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

Schema description coverage is 100% with descriptions for both cve_id and dry_run. The tool description reinforces the cve_id format (CVE-YYYY-NNNN) beyond the schema's example, adding useful context. Baseline 3, so 4.

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

Purpose5/5

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

The description clearly states 'Full detail for a single CVE by ID (format CVE-YYYY-NNNN).' It specifies the exact input format and what is returned (CVSS scores, weakness IDs, etc.), distinguishing it from sibling tools like cve_search_by_keyword and cve_recent.

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

Usage Guidelines4/5

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

The description explicitly says 'Full detail for a single CVE by ID,' implying when to use this tool. It does not mention alternatives or when not to use, but the sibling context provides differentiation, so it is clear enough.

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

cve_recentA
Read-onlyIdempotent
Inspect

Recent CVEs published in the last N days (default 7, max 120). Optional vendor and severity filters (CRITICAL, HIGH, MEDIUM, LOW).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (1-120).
limitNoMax results (default 50).
vendorNoOptional vendor filter.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
severityNoOptional CVSS severity filter: CRITICAL, HIGH, MEDIUM, or LOW.
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as false. The description adds no additional behavioral context beyond what annotations provide, such as rate limits or data source.

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

Conciseness5/5

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

The description is two short sentences, front-loading key details. Every word earns its place, with no fluff.

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

Completeness4/5

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

For a simple filtered list tool with good annotations and full schema coverage, the description is adequate. It covers date range and filters but omits mention of the return format, which is a minor gap.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds value for days (default and max) and mentions severity filter values, but does not cover limit or dry_run. This is marginal improvement over the schema.

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

Purpose5/5

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

The description uses specific verbs ('published') and clearly states it retrieves recent CVEs with optional filters. It distinguishes well from siblings like cve_lookup (specific CVE) and cve_search_by_keyword.

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

Usage Guidelines4/5

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

The description provides clear context (default 7 days, max 120, optional filters) but does not explicitly exclude alternatives or give when-not-to-use guidance. The usage is implied but could be stronger.

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

cve_search_by_keywordA
Read-onlyIdempotent
Inspect

Free-text CVE search with optional date range. Matches keyword against CVE description text in the NVD.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (1-2000, default 20).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
keywordYesFree-text search phrase.
pub_end_dateNoOptional YYYY-MM-DD upper bound.
pub_start_dateNoOptional YYYY-MM-DD lower bound.
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds that it searches against NVD description text, providing useful context without contradicting annotations.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and key options, no fluff or repetition. Every word adds value.

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

Completeness4/5

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

The description covers the essential functionality (keyword search, date range, source). It does not specify the output format, but given no output schema, it's adequately complete for its moderate complexity.

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

Parameters3/5

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

Schema descriptions cover all 5 parameters fully (100% coverage). The description adds no new semantic information beyond what the schema already provides, earning the baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool performs a free-text search of CVE descriptions with optional date range, distinguishing it from sibling tools like cve_lookup (by ID) or cve_search_by_vendor (by vendor).

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

Usage Guidelines4/5

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

The description implies when to use this tool (keyword-based search) by specifying free-text search and optional date range, but lacks explicit exclusions or alternatives.

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

cve_search_by_vendorA
Read-onlyIdempotent
Inspect

Search CVEs by vendor with optional product and date range filters. Vendor is matched against the NVD CPE namespace, e.g. 'apache', 'microsoft'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (1-2000, default 20).
vendorYesVendor name, lowercase preferred.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
productNoOptional product name filter.
pub_end_dateNoISO date or YYYY-MM-DD upper bound on published date.
pub_start_dateNoISO date or YYYY-MM-DD lower bound on published date.
Behavior4/5

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

Annotations (readOnlyHint, idempotentHint, destructiveHint=false) already indicate safe behavior. Description adds value by specifying that vendor is matched against the NVD CPE namespace and explaining filter options. No contradictions.

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

Conciseness5/5

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

Description is two sentences with no redundancy. First sentence defines purpose and optional filters; second sentence clarifies vendor matching with examples. Every word adds value.

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

Completeness3/5

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

Description covers input parameters well but lacks any detail about the output format or structure. With no output schema, the agent might need to infer return shape from sibling tools. Could briefly mention typical return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. Description adds meaning beyond schema by explaining vendor matching against the CPE namespace and providing examples. This helps agent understand vendor input format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it searches CVEs by vendor, with optional product and date range filters. The specificity about matching against the NVD CPE namespace and the example vendor names ('apache', 'microsoft') distinguishes it from siblings like cve_search_by_keyword or cve_lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides context on vendor matching (CPE namespace) but does not explicitly state when to prefer this tool over alternatives like cve_search_by_keyword or cve_recent. The user must infer usage from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cwe_lookupA
Read-onlyIdempotent
Inspect

MITRE CWE detail by ID (format CWE-NNN or NNN). Returns name, abstraction, status, description, and parent/child CWE relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwe_idYesCWE identifier, e.g. CWE-79.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint. Description adds behavioral context by listing return fields (name, abstraction, status, description, relationships), which is useful but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, well-structured sentence with all key information front-loaded; no redundant text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explicitly lists all returned fields. Input format and purpose are fully covered, making the tool self-contained for a simple lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. Description adds input format guidance (CWE-NNN or NNN) beyond the schema's example, though dry_run parameter is not elaborated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb (lookup/details), resource (MITRE CWE), input format (CWE-NNN or NNN), and expected output fields, distinguishing it from sibling CVE tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied for known CWE IDs, but there is no explicit guidance on when to use vs. alternatives (e.g., search vs. lookup) or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disaster_declarationsA
Read-onlyIdempotent
Inspect

Recent FEMA disaster declarations filtered by state, county, incident type, or date range. Returns disaster number, title, dates, and incident category.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return (1-1000, default 50).
stateNoTwo-letter state code, e.g. 'TX'.
countyNoDesignated area / county name as FEMA records it.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoISO date upper bound on declarationDate.
start_dateNoISO date lower bound on declarationDate.
incident_typeNoIncident type filter, e.g. 'Hurricane', 'Flood', 'Severe Storm', 'Wildfire'.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context about the data source (FEMA), filtering options, and the dry_run parameter behavior (preview without upstream call). No contradictions; behavioral traits are well-disclosed beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and filtering capabilities. Every word is necessary, and no extraneous information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description specifies the return fields (disaster number, title, dates, incident category). It covers filtering context well but does not mention pagination or the limit parameter's role in row count, which is documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description only briefly mentions filtering parameters without adding new semantics beyond what the schema provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves recent FEMA disaster declarations with filtering options (state, county, incident type, date range) and specifies the return fields (disaster number, title, dates, incident category). It distinguishes from sibling tools like disaster_history_summary by focusing on recent declarations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for filtering disaster declarations, but lacks explicit guidance on when to use this tool versus alternatives, such as disaster_history_summary or disaster_recovery_profile. No when-not or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disaster_history_summaryA
Read-onlyIdempotent
Inspect

Multi-year FEMA disaster summary for a location. Buckets declarations by incident type and year so insurance brokers and realtors can assess cumulative risk on the same address used in property_lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesTwo-letter state code.
yearsNoLookback window in years (default 10).
countyNoCounty name.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds context about the data source (FEMA), aggregation method (bucketing by type and year), and purpose (cumulative risk), enhancing behavioral understanding without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and efficient. Every word adds value, avoiding redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multi-year FEMA data, 4 parameters, no output schema), the description provides a solid purpose, data source, and use case. It lacks output format details, but the intended audience (insurance brokers/realtors) is addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description adds value by explaining that 'years' is a lookback window and that the tool aggregates by incident type and year, which is not evident from the schema alone. However, it could more explicitly map parameters to the summary logic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool produces a multi-year FEMA disaster summary for a location, bucketing declarations by incident type and year. It specifies the use case (insurance brokers/realtors assessing cumulative risk) and relates it to the sibling tool property_lookup, effectively distinguishing it from raw declaration tools like disaster_declarations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage after property_lookup and for cumulative risk assessment but lacks explicit when-to-use or when-not-to-use guidance versus sibling tools like disaster_declarations or disaster_recovery_profile. No alternatives are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disaster_recovery_profileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaYesCounty or place name to profile (e.g. 'Harris', 'Orleans', 'New Orleans'). Use the name without the word 'County'.
stateNo2-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.
countyNoAlias for area; either may be supplied.
addressNoOptional street address to attach a sample parcel/property record (Maryland statewide or Texas-Harris County only).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds valuable context: joins FEMA declarations with optional Census and parcel data, degrades gracefully on failures, returns a headline banding (LOW/MODERATE/HIGH), and is informational only. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively long but well-structured: starting with a clear purpose and distinction, then detailing data sources, optional components, and disclaimers. It is front-loaded with the most important information. Some minor redundancy could be trimmed, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of multiple data sources and optional parameters, the description covers key aspects: what data is joined, graceful degradation, the output headline banding, and limitations (parcel coverage). The lack of an output schema is partially compensated by explaining the return format (readable profile with banding).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning beyond the schema by explaining the 'area' parameter should exclude 'County', that 'state' is strongly recommended, that 'county' is an alias, and that 'address' is limited to specific regions. It also clarifies the overall keying by name+state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides a one-call disaster-history and recovery read for a US county or place, keyed by name and state. It immediately distinguishes itself from the sibling tool 'location_risk_report', which scores a single site by address/lat-lon. The verb 'read' indicates a retrieval operation, and the resource is precisely defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly contrasts with the sibling tool 'location_risk_report' and explains when to use this tool: for area-level disaster history vs. site-specific risk scores. It also clarifies optional dependencies (Census and parcel data) and states what the tool is not (insurance rating, flood-risk score). However, it does not explicitly state when not to use it beyond the sibling distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

earthquake_recentA
Read-onlyIdempotent
Inspect

Recent earthquakes from USGS. Filter by region (lat/lon + radius), state name, magnitude threshold, or time window.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
limitNoMax events (default 50).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_timeNoISO datetime upper bound (default now).
locationNoAddress, zip, city, or 'lat,lon' to center the search. Optional.
radius_kmNoSearch radius around lat/lon (max ~20000).
start_timeNoISO datetime lower bound (default 30 days ago).
min_magnitudeNoMinimum magnitude (default 2.5).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint false. Description adds data source (USGS) and filter types but does not disclose rate limits, output format, or any additional behavioral traits beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence clearly front-loading the purpose and listing filters. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a read-only tool with good annotation coverage. Missing details on pagination or output structure, but the schema covers defaults (limit). Output schema absence is noted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78% with descriptions. Description adds value by grouping filters (region, state, magnitude, time) that clarify parameter semantics beyond raw names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves recent earthquakes from USGS and lists filtering options. Distinguishes from siblings like usgs_earthquake_search implicitly by focusing on recent data but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use (for recent earthquakes with filters) but provides no guidance on when to avoid or use alternatives like usgs_earthquake_feed or usgs_earthquake_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_company_factsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptNoOptional XBRL concept name (e.g. 'Revenues', 'Assets', 'NetIncomeLoss'). If omitted, returns the catalog of available concepts.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
taxonomyNoOptional XBRL taxonomy (default 'us-gaap').
identifierYesTicker symbol or CIK.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description adds value by disclosing the dual behavior (catalog vs. time series) and the effect of the 'concept' parameter, which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste. Front-loaded with the main purpose, then explains the two modes efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema provided, but the description adequately covers the two modes and parameter usage. It does not describe the return format for time series, but for a data retrieval tool this is acceptable. The description is complete enough for an agent to understand when and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description adds context by explaining how the 'concept' parameter changes the output, but this is already implied by the parameter description. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it gets structured XBRL financial facts. It distinguishes two modes: without 'concept' returns catalog, with 'concept' returns time series. This differentiates it from sibling Edgar tools like edgar_company_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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to use the tool with or without the 'concept' parameter, providing clear context. However, it does not explicitly mention when not to use this tool or suggest alternatives among the many sibling Edgar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_company_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
queryYesTicker (e.g. 'AAPL') or company-name fragment (e.g. 'Apple').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral details beyond annotations: it states that results are 'ranked exact-ticker first,' which is not an annotation-derived behavior. It also notes the prerequisite relationship to other EDGAR tools, enriching the behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action ('Look up a public company's CIK'), followed by a succinct statement of importance and ranking. Every word earns its place; no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with strong annotations and fully documented parameters, the description is almost complete. It explains the purpose, the ranking behavior, and the tool's role in the EDGAR ecosystem. The only minor omission is the exact output structure (e.g., whether it returns CIK plus company name), but this is not critical given the tool's simplicity and clear purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage; each parameter (limit, query, dry_run) already has a meaningful description. The tool description itself does not add any parameter-specific semantics beyond echoing that the query accepts a ticker or name, which is already in the schema. Therefore, the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Look up') and identifies the resource ('a public company's CIK') and the search keys ('ticker symbol or company name'). It clearly distinguishes this tool from siblings by stating that CIK is required for all other EDGAR tools, making its role as the preliminary lookup unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'CIK is required for all other EDGAR tools.' This is a clear usage directive, though it does not name specific alternative tools or document explicit exclusions. The strong implication that this must be used before other EDGAR tools is sufficient guidance for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_filing_contentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikYesFiler CIK (with or without leading zeros).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
max_charsNoMaximum characters of text to return (default 20000, max 200000).
accession_numberYesAccession number (e.g. '0000320193-25-000006' or '000032019325000006').
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds valuable context beyond annotations by explaining that the output is the primary document stripped of HTML and suitable for LLM consumption, which sets expectations about the returned format. It doesn't mention rate limits or pagination, but the schema documents max_chars and dry_run.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences: it front-loads the action, then describes the output format and purpose, and ends with a clear prerequisite instruction. Every sentence earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool is a simple read-only fetch with comprehensive schema coverage and no output schema, the description is sufficiently complete. It provides the purpose, the exact output nature (plain text stripped of HTML), and a clear workflow for obtaining the accession number, which is all the agent needs to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are well-documented. The description goes beyond the schema by recommending edgar_recent_filings to obtain the accession_number, providing workflow context that helps the agent understand how to supply the required parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and a clear resource ('text content of a specific SEC filing'). It also specifies the output form ('primary document ... stripped of HTML'), which distinguishes it from sibling tools like edgar_recent_filings (which lists filings) and edgar_full_text_search (which searches).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent to use edgar_recent_filings first to obtain the accession number, establishing a clear prerequisite workflow. It doesn't explicitly list alternatives for cases like full-text search, but the purpose statement and the instruction to get the accession number convey when this tool is appropriate.

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_typeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
form_typeYesSEC form type (e.g. '8-K', 'S-1', 'DEF 14A', '13F-HR').
start_dateNoISO date lower bound (YYYY-MM-DD). Defaults to 30 days ago.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnly, idempotent, openWorld, and non-destructive, the description adds useful context such as 'recent' and the return fields (accession numbers, filers, filing dates). However, it does not disclose pagination or the limit behavior, and the word 'all' could be misleading given the limit parameter's max of 100.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The first sentence states the core function, the second gives concrete usage examples. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists return fields, and the schema fully covers parameters including defaults. No output schema exists, but the description compensates by naming the key returned data. Minor gap: the 'all' wording vs the limit cap is not clarified in the description, but the schema handles it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description provides example values for form_type ('8-K', 'S-1') and date contexts, but adds little beyond what the schema offers. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Pull'), resource ('SEC filings'), and scope ('of a specific form type across all companies'). It distinguishes itself from siblings like edgar_company_facts (company-specific) and edgar_full_text_search (text search) by emphasizing form type and cross-company coverage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases ('monitoring', 'all 8-Ks today', 'all S-1s this week') that imply when to use it. It does not explicitly mention alternatives or exclusions, but the examples are helpful enough to guide an agent toward appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_insider_transactionsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
identifierYesTicker symbol or CIK.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it returns accession numbers and filing dates, which is useful output context, but does not disclose other behavioral details like pagination or how 'recent' is defined. It adds some value beyond the annotations but is not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action and resource, and every sentence earns its place. The first sentence states what it does; the second clarifies return contents and points to the sibling tool for more detail. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with strong annotations and fully described parameters, the description is complete. It tells the agent exactly what to expect (accession numbers and filing dates) and how to get more detail. No additional context is needed for correct selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have descriptive text in the input schema (100% coverage), so the schema already documents `identifier`, `limit`, and `dry_run` clearly. The description adds no additional parameter-level meaning, so it correctly remains at the baseline for schema-covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a specific resource ('recent Form 4 insider transaction filings for a company'). It also clarifies the scope (Form 4 insider transactions) and distinguishes itself from sibling tools by pointing to edgar_filing_content for detailed data, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool (when you need a list of recent Form 4 filings) and provides an explicit alternative (edgar_filing_content) for a related but different need (detailed transaction data). It does not explicitly state when not to use it, such as when looking for other form types, but the alternative covers a key distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_recent_filingsB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
form_typeNoOptional form type filter (e.g. '10-K', '10-Q', '8-K', '4').
identifierYesTicker symbol or CIK. Examples: 'AAPL', '0000320193'.
start_dateNoOptional ISO date lower bound (YYYY-MM-DD).
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral context beyond parameter filters—no mention of pagination, default limits, rate limits, or the dry_run behavior. It does not contradict annotations, but it fails to add meaningful transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences that lead with the core purpose, followed by filtering and identifier instructions. No filler, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with full schema coverage and annotations, the description covers the essential usage (company identifier, filters). It doesn't discuss pagination or dry_run, but those are documented in the schema. It could be improved with a pointer to sibling tools for different use cases, but overall it's sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds example form types (10-K, 10-Q, etc.) and reiterates ticker/CIK, but these are already in the schema. No additional semantics for limit or dry_run are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists recent SEC filings for a company, with a specific verb and resource. It mentions filtering by form type and start date, making its scope clear. However, it doesn't explicitly distinguish from sibling tools like edgar_filings_by_form_type, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on how to use the tool (identify company by ticker/CIK, filter by form type/date) but does not explicitly contrast with alternatives or state when not to use it. Given the multiple EDGAR sibling tools, this is a gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_electricity_stateA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
stateNoTwo-letter state code (e.g. 'TX', 'CA') or 'US' for national rollup. Default 'US'.
metricNoMetric: 'price', 'sales', 'revenue', 'customers', 'generation'. Default 'price'.
sectorNoSector: 'all', 'residential', 'commercial', 'industrial', 'transportation'. Default 'all'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the bar is lower. The description adds useful behavioral context by specifying the monthly cadence and default parameter values (US, all sectors, price), which tells the agent what will happen if the tool is called without arguments. No contradictions with annotations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long and front-loaded: the first sentence states the core purpose and source, the second lists filter dimensions and defaults. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only data retrieval tool with no output schema, the description covers the essential elements: data source, granularity, filter dimensions, and defaults. It doesn't explain pagination or return format, but the schema includes the limit parameter, and the tool's simplicity mitigates the need. It is strong overall, though mentioning the ability to query time ranges via start/end could have been a small addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all seven parameters, so the baseline is 3. The description provides a concise summary of the filter options and defaults, but this adds convenience rather than new meaning. It does not elaborate on format details, but the schema already handles that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool returns monthly state-level electricity data from EIA, and enumerates the filter dimensions (state, sector, metric). It naturally distinguishes itself from sibling EIA tools that cover other energy types (natural gas, oil, renewables) by focusing specifically on electricity metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving state-level electricity data and provides defaults, but it does not explicitly mention when to prefer this tool over sibling EIA tools or offer any exclusionary guidance. For example, it doesn't state 'for national electricity aggregates, use X.' This leaves the agent to infer the appropriate context from the tool's name and the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_energy_consumptionA
Read-onlyIdempotent
Inspect

Monthly US energy consumption by sector from EIA. Sectors: residential, commercial, industrial, transportation, total. Returns total energy consumed in BTU equivalents.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
stateNoTwo-letter state code or 'US' for national rollup. Default 'US'.
sectorNoSector: 'total', 'residential', 'commercial', 'industrial', 'transportation'. Default 'total'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that data is monthly, sector-based, and expressed in BTU equivalents, but does not describe pagination, state filtering, or the exact return structure—though annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff, front-loading the core purpose. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basics, but with no output schema it leaves the return format ambiguous (e.g., single total vs. a table of all sectors×periods). It also doesn't mention the state parameter or defaults, though these are in the schema. Acceptable but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented there. The description adds the sector list and BTU unit, but does not enrich understanding of parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns monthly US energy consumption by sector from EIA, listing the sectors and output unit. This distinguishes it from EIA siblings like eia_gasoline_prices or eia_electricity_state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool vs. alternatives. It does not mention related EIA tools or exclusion criteria, leaving the agent to infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_gasoline_pricesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
gradeNoFuel grade: 'all', 'regular', 'midgrade', 'premium', 'diesel'. Default 'all'.
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
regionNoPADD region code or 'national'. Examples: 'national', 'PADD1', 'PADD3'. Default 'national'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds context that data is weekly and from EIA but does not disclose other behavioral traits such as pagination, rate limits, or data freshness. With strong annotations, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, then filters and use cases. Every sentence adds value with no waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 params, no output schema), the description covers the essential aspects: data source, frequency, filtering, and use cases. It does not explain return format, but that is mitigated by the absence of an output schema and the rich parameter descriptions. The description is adequate for an agent to understand what the tool does and when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description only restates how to filter by region and grade, adding no new meaning beyond the schema. Baseline 3 is correct for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Weekly US retail gasoline prices from EIA' which clearly identifies the tool's output and source. It distinguishes itself from sibling EIA tools (electricity, natural gas, oil supply) by focusing specifically on gasoline prices, and the filter options (region, grade) further clarify its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'Useful for fuel-cost analysis, transportation logistics, and consumer price tracking.' However, it does not explicitly mention alternatives or when not to use it. Since the use cases are clear and no exclusions are necessary, this is above average but lacks direct sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_natural_gasA
Read-onlyIdempotent
Inspect

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
seriesNoSubset to query: 'spot', 'futures', 'residential', 'storage'. Default 'spot'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the cadence of each series (daily, weekly, monthly) which is useful context, but it does not disclose other behavioral aspects like pagination, rate limits, or response structure. No contradictions with annotations found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the core purpose and clearly enumerates the series options with explanations. No redundant or filler content; every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately simple data retrieval tool with a well-described schema covering all parameters, the description provides the essential series semantics. It does not explain return format or pagination, but the schema covers limit, start, and end; given no output schema, a brief note on return structure would have been beneficial, but the description is still sufficient for the agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters with descriptions (100% coverage), but the description significantly enriches the 'series' parameter by explaining what each enum value means (Henry Hub daily spot, NYMEX front-month futures, monthly residential retail, weekly storage). This goes beyond the schema's bare enum listing and aids correct selection. Other parameters are already well-described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as providing US natural gas data from EIA and enumerates the specific series options with their meanings (Henry Hub spot, NYMEX futures, residential, storage). While it lacks an explicit verb like 'retrieve' or 'fetch,' the intent is unambiguous and it distinguishes itself from sibling EIA tools by focusing on natural gas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying the natural gas series available, but it does not explicitly state when to use this tool versus related EIA tools (e.g., eia_gasoline_prices, eia_oil_supply) nor does it provide exclusion criteria. The series options themselves offer some guidance on data selection, but no direct reference to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_oil_supplyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
metricNoMetric: 'production', 'imports', 'stocks', 'refinery_inputs'. Default 'production'.
regionNoPADD region or 'national'. Examples: 'national', 'PADD1', 'PADD3'. Default 'national'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds the default behavior (national production) and metrics, but does not disclose extra traits like pagination, rate limits, or return structure. With annotations present, this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the core purpose, and every sentence adds useful detail. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only data retrieval tool with full schema coverage and annotations, the description provides enough context to select and invoke correctly. It covers the key dimensions (what, metrics, region, default) and does not need to explain return values without an output schema. Minor gap: no mention of cadence or time units beyond 'weekly' is already stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining metric meanings (e.g., 'production' = US field production) and the default, which goes beyond the schema's terse parameter descriptions. This elevates the score slightly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as retrieving weekly US crude oil supply data from EIA, with specific metrics and region filtering. It distinguishes from siblings by explicitly naming the domain (crude oil) and the metrics, making it unambiguous which tool to choose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: weekly US crude oil supply data, metrics, PADD region filter, and default national production. It implies usage scenarios but does not explicitly contrast with sibling tools like eia_gasoline_prices or eia_natural_gas, though the resource specificity makes the intended use fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_renewable_generationB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
stateNoTwo-letter state code or 'US' for national rollup. Default 'US'.
sourceNoGeneration source: 'all', 'solar', 'wind', 'hydro', 'nuclear', 'geothermal', 'biomass'. Default 'all'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description is not burdened with safety disclosure. It adds useful context about the monthly cadence, optional state filter, and megawatt-hour units, but does not describe potential default date ranges or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and lists key options efficiently. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and six parameters, the description could be more complete. It states the return unit (MWh) but does not describe the row structure (e.g., one row per month per source?) or the default time range when start/end are omitted, which is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema thoroughly documents all six parameters. The description mentions the source list and state filter, which adds minimal value beyond the schema, but it does not clarify interactions between parameters (e.g., how start/end format depends on cadence).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as providing monthly US electricity generation data by source from EIA, listing the supported sources. It is specific enough to distinguish it from general EIA data tools, though it lacks an explicit verb like 'retrieve' or 'get'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for monthly generation data but provides no guidance on when to prefer this over sibling tools like eia_electricity_state or eia_series_lookup. It does not state any exclusions or alternative tools for different data needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eia_series_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound period (ISO date or YYYY-MM).
limitNoMaximum rows to return (default 50, max 5000).
startNoInclusive lower-bound period (ISO date or YYYY-MM depending on series cadence).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
series_idYesEIA series ID. See https://www.eia.gov/opendata/browser/ for the full catalog.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it returns time-series data and is flexible, but it does not disclose additional behavioral details like rate limits, response format, or the dry_run preview behavior beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only four sentences, front-loaded with the core purpose, followed by examples and a usage rule. Every sentence earns its place with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the relatively simple lookup nature, the description provides purpose, examples, and a clear usage rule. With no output schema, it could have described the return object in more detail, but the example series and the schema's parameter descriptions are sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the schema descriptions cover 100% of the parameters, the baseline is 3. The description adds genuine value by giving three concrete series ID examples that illustrate the expected format and domain usage, which helps the agent construct valid inputs for the key parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states this is a 'Flexible EIA series lookup' and provides concrete examples of series IDs (e.g., PET.RWTC.D, NG.RNGWHHD.D). It distinguishes itself from specialized sibling tools by framing itself as the general fallback: 'Use this when no other tool covers your specific need.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage rule: 'Use this when no other tool covers your specific need,' which tells the agent when to choose this over alternatives. It provides illustrative examples but does not name specific sibling tools to avoid, so it 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.

energy_market_snapshotA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
lookback_daysNoTrailing daily history to pull per benchmark for the derived context (default 400 ~ 1.3 years; min 60, max 2000).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive). The description adds useful behavioral context: failure handling ('A source that fails is noted, not fatal'), the exact derived context fields, and a disclaimer ('informational market data, not trading 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with 'One-call US energy market snapshot' and is dense with useful information. It is slightly longer than necessary but each clause adds value; the 'premium synthesis' phrasing is somewhat redundant but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two optional parameters, no output schema, and strong annotations, the description sufficiently explains what the tool returns (benchmarks with derived context) and how failures are handled. No significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters (dry_run, lookback_days) with detailed descriptions, giving 100% coverage. The tool description does not add parameter-specific meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a one-call snapshot of US energy benchmarks (WTI, Brent, Henry Hub) with derived context, using specific verbs and resource names. It distinguishes itself from sibling EIA data tools by emphasizing 'One-call' and 'Premium synthesis over the EIA domain'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use case: answering 'what is oil/gas doing right now, and is it historically high or low' in a single call. It implies when to use it versus raw EIA data tools, but does not explicitly name alternatives or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entity_dossierA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompany / organization name, e.g. 'Chevron Corporation', 'Acme Trucking LLC'.
limitNoMax records to surface per source (default 5, max 15).
stateNoOptional 2-letter US state to disambiguate location-based sources (e.g. 'TX').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnly, idempotent, etc.), the description discloses that matches are name-based, warns to verify identity, and describes the return structure (per-source summary plus top records, confidence score). This adds meaningful behavioral context beyond the schema and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the core purpose and sources, followed by return format and a caveat. Every sentence earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex with no output schema, but the description explains what is returned (per-source summary plus top records, confidence score) and flags the name-matching caveat. It does not explicitly differentiate from similar siblings like issuer_diligence_dossier, but the source list provides enough context. Minor gap: no mention of the dry_run behavior in the description (though schema covers it).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific detail beyond mentioning name-based matching, which is already implied by the schema's name description. No additional semantic value for limit, state, or dry_run.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool builds a consolidated cross-source dossier for a company, listing specific sources (SEC/EDGAR, EPA ECHO, OFAC/UN/EU/BIS). This differentiates it from sibling tools via the 'single AI-native lookup across data that otherwise lives in separate silos' phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use: when a consolidated multi-source view is needed in one call. It does not explicitly exclude alternatives or list when not to use, but the cross-source positioning implicitly distinguishes it from single-source tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entity_resolveA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompany / organization name, e.g. 'Chevron Corporation', 'Acme Trucking LLC'.
stateNoOptional 2-letter US state to disambiguate location-based sources (e.g. 'TX').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds important behavioral details: matches are name-based candidates (not certain identity links), and it searches three specific sources. This goes beyond the annotations to set expectations about match reliability and scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: first states core purpose and sources, second states usage guidance and output, third adds a critical caveat. No redundant words, front-loaded with action, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no output schema, and moderate complexity, the description covers all essential aspects: what it does, what it returns (candidate match + identifiers), which sources, usage workflow, and match reliability. No gaps remain for an agent to misinterpret.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description loosely references the 'name' parameter in context but does not add syntax or additional meaning beyond the schema fields. The 'state' and 'dry_run' parameters are implicitly understood from the overall purpose but not enriched.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Resolve a company across US government sources'), names explicit resources (SEC EDGAR, EPA ECHO, sanctions lists), and clearly states the output (candidate match and identifiers). It distinguishes from siblings by positioning this tool for identity confirmation before pulling detail, e.g., contrasting with 'entity_dossier' 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this to confirm WHO an entity is and gather its IDs before pulling detail.' This provides clear context and implies a workflow step. However, it does not explicitly list when not to use it or name alternative tools for subsequent steps, though the sibling list offers obvious candidates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

environmental_site_riskA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite, facility, or operator name to screen (e.g. 'Smith Manufacturing', 'Acme Plating Inc').
stateNoOptional 2-letter state to disambiguate the EPA facility and parcel search.
addressNoOptional street address to pin the parcel record.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint, idempotentHint, destructiveHint. The description adds rich behavioral detail: it drills into EPA records via ECHO/FRS, returns a verdict band, flags, evidence; mentions best-effort parcel record; states that a source failure is noted but not fatal. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with front-loaded purpose, sibling contrast, detailed behavior, return format, and disclaimer. Each sentence adds value, though some details could be slightly condensed. Still highly effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must explain returns. It does so by listing the verdict band, flags, and evidence. It covers data sources (EPA ECHO/FRS), failure handling, and includes a disclaimer. For a 4-parameter tool, this is thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with each parameter described. The description adds context by tying 'address' to 'parcel record' and mentioning 'premium cross-source synthesis', but does not add new meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'read' and resource 'environmental-compliance and contamination liability for a SPECIFIC site or operator'. It explicitly distinguishes from sibling tool 'location_risk_report' by contrasting depth and focus (deep EPA record vs natural hazards).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the target audience ('buyer, lender, or Phase-I ESA asks before a deal'), contrasts with 'location_risk_report', and warns: 'This is an EPA public-record screen, not a Phase-I Environmental Site Assessment or a substitute for one.' It also notes that a failing source is non-fatal, providing clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_facility_complianceA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
registry_idYesEPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271').
Behavior3/5

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 clear. The description adds behavioral details (shows quarters in non-compliance, etc.) but does not disclose potential limitations like data freshness, pagination, or rate limits. It adds moderate value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences with no redundant information. The main purpose is front-loaded, and every sentence adds value: the first states the core function, the second lists specific outputs and prerequisites. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, inputs, and outputs without an output schema. It mentions the key return values (quarters in non-compliance, etc.) and the required input. While it could specify whether all statutes are returned, it is sufficiently complete for a read-only query tool without nested objects or enums.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions 'Requires an EPA Registry ID', which duplicates the schema's required field. It adds minimal extra meaning, though it implies the ID should come from epa_facility_search. No parameter enums exist. Score reflects adequate but not enhanced semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Report') and clearly identifies the resource ('facility compliance status and non-compliance history by environmental program'). It lists specific outputs (quarters in non-compliance, quarters in significant non-compliance, last inspection) and distinguishes from sibling tools like epa_enforcement_search and epa_water_or_air_violations by focusing on compliance status rather than enforcement or violations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states a prerequisite ('Requires an EPA Registry ID') implying it should follow epa_facility_search, but it does not explicitly guide when to use this tool versus alternatives such as epa_enforcement_search or epa_facility_details. Usage context is implied but not fully clarified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epa_facility_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
registry_idYesEPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271').
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's job is lighter. It adds context on the report's contents (permits, compliance) and the statutes covered (CAA/CWA/RCRA/SDWA). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose and contents, second gives prerequisite guidance. No fluff, well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description covers return contents in sufficient detail. Does not address error handling for invalid registry_id, but given the tool's complexity and annotation coverage, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with clear parameter descriptions. The tool description reinforces that registry_id comes from epa_facility_search but adds no semantic details beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a 'Detailed Facility Report' for a single facility by registry ID, listing specific content: name, address, permits, and compliance summaries. It distinguishes from sibling tool epa_facility_search by specifying it requires a registry_id and is a detailed report for one facility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to 'Use epa_facility_search first to obtain the registry_id,' providing clear sequential guidance and when to use this tool vs. the search tool. No additional exclusions needed.

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_violationsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mediaNoWhich media to report: 'air', 'water', or 'all' (default 'all').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
registry_idYesEPA Registry ID (FRS ID), the numeric facility identifier returned by epa_facility_search (e.g. '110001136271').
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to repeat safety traits. It adds the prerequisite of an EPA Registry ID, but does not disclose behavioral details like the effect of the dry_run parameter, external data source calls, or potential rate limits. The description aligns with annotations 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no wasted words. It front-loads the main action and important details, such as the requirement for a Registry ID and the media parameter. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (3 parameters, no output schema) and rich annotations, the description is reasonably complete. It covers the purpose, prerequisite, and parameter options. However, it could be improved by briefly describing the return value (e.g., types of violations and summaries) or the purpose of the dry_run parameter, though the latter is in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reiterates the media parameter values ('air', 'water', 'all') and the requirement for registry_id, but does not add new semantics beyond what the schema already provides. The dry_run parameter is not mentioned in the description, though it is documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports air and water violations and compliance summaries for a facility, specifying the verb 'report' and resource. It mentions the Clean Air Act, Clean Water Act, and Safe Drinking Water Act, but does not explicitly differentiate from sibling tools like epa_facility_compliance or epa_enforcement_search, though the focus on violations and summaries provides implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing violations and compliance summaries for a known facility with an EPA Registry ID, and mentions the media parameter. However, it lacks explicit guidance on when to use this tool versus alternatives, such as epa_facility_compliance for broader compliance data or epa_enforcement_search for enforcement actions. No when-not-to-use or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

epss_scoreA
Read-onlyIdempotent
Inspect

FIRST EPSS exploit prediction score for a CVE. Returns probability (0-1) of exploitation in the next 30 days plus the percentile rank.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by specifying the exact output (probability 0-1 and percentile rank) and the time frame, beyond what annotations provide. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently communicates the core functionality and output without extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description is mostly complete. It covers purpose and return value. It could mention input validation or error conditions, but the schema covers parameter descriptions. Output schema is not present, but description specifies return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description does not add additional parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: returning the EPSS exploit prediction score for a CVE, including a probability and percentile rank, with a specific time frame (next 30 days). This distinguishes it from sibling tools like kev_status_check or cve_lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention when not to use it. With many sibling tools, such context is lacking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facility_care_qualityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional provider category to pin the CMS dataset: 'hospital', 'nursing_home', 'home_health', or 'hospice'. Omit to auto-detect.
stateNoOptional 2-letter state to disambiguate the facility (e.g. 'OH', 'AZ').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
facilityYesFacility name to look up (e.g. 'Cleveland Clinic', 'Mayo Clinic Hospital', 'Burns Nursing Home').
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds important behavioral context: it is an informational read only, not medical advice, not a substitute for CMS Care Compare, how leg failures are handled, and the auto-inference process. This fully discloses operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by clear sections on sources, outputs, inputs, and disclaimers. Every sentence serves a purpose, and the structure is logical and easy to parse despite its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—combining two data sources, handling multiple facility types, and inferring categories—the description covers all necessary aspects: inputs, process, output details, failure modes, and legal disclaimers. Without an output schema, the description sufficiently describes expected return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant value over the input schema by providing concrete examples (e.g., 'Cleveland Clinic'), explaining the inference when type is omitted, and detailing the dry_run parameter's purpose. Though schema coverage is 100%, the description enriches understanding substantially.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it is a 'One-call care-quality + provider-identity read' for a named US healthcare facility, combining data from two federal sources. It distinguishes itself from individual CMS search tools and NPI lookups by offering a combined read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to use the tool: provide a facility name, optionally a state and type, and describes auto-inference behavior. However, it does not explicitly guide when to use this tool vs the more specific sibling tools like cms_hospital_search or npi_lookup, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fbi_wantedA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-25, default 10).
queryNoName or keyword to search (optional; omit for the current featured list).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds valuable context beyond that: it is keyless (no authentication needed), returns specific fields (aliases, field offices, a link), and searches a public FBI list. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is remarkably concise, using four short sentences each carrying essential information: search target, return fields, complementary use case, and keyless access. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with no output schema, the description adequately explains return values and provides context for use in due diligence. It could mention pagination or the optional query behavior, but the schema already covers these, so the description is sufficiently complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all parameters with detailed descriptions, achieving 100% schema coverage. The description adds 'by name or keyword' which maps to the query parameter, but does not provide extra semantics for limit or dry_run beyond what the schema offers. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search the FBI's public Wanted/fugitive list by name or keyword', naming a specific verb, resource, and search method. It explicitly returns matching subjects with aliases and field offices, distinguishing it from sanctions screening tools and other sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context by stating it 'Complements sanctions screening for person due diligence', indicating when an agent might use it alongside sanctions checks. However, it does not explicitly mention when not to use it or name alternative tools, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_510kA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
queryNoManufacturer (applicant) name or device name search term.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoInclusive ISO date upper bound (YYYY-MM-DD).
start_dateNoInclusive ISO date lower bound (YYYY-MM-DD).
product_codeNoOptional product code (e.g. 'DXJ' for ECG).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds domain context (the 510(k) pathway) and filter capabilities, but does not disclose any additional behavioral traits such as pagination or rate limits beyond what annotations and schema provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: the first states the core purpose, the second provides helpful domain context, and the third lists filters and use cases. Every sentence adds value and is front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, filter-based retrieval tool with 6 self-describing parameters and no output schema, the description is complete. It explains what data is returned, how to filter it, and why one would use it, and it clearly distinguishes from recall-oriented sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed parameter descriptions. The tool description summarizes the filter dimensions (manufacturer, device name, product code, date range) but adds no new semantic information beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource ('FDA 510(k) clearances for medical devices') and the verb is implicit but unmistakable (retrieve/search). It distinguishes from sibling tools like fda_device_recalls by specifying the 510(k) clearance pathway.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit use cases are given: competitive intel, device R&D scouting, M&A research. This provides clear context for when to use the tool, though it does not explicitly mention alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_device_recallsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
queryNoOptional device name or recalling firm search term.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoInclusive ISO date upper bound (YYYY-MM-DD).
start_dateNoInclusive ISO date lower bound (YYYY-MM-DD).
classificationNoRecall classification: 1 (Class I, most severe), 2, 3.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds filter behavior but does not disclose response format, pagination, or rate limits. With strong annotations, this is adequate but not enriched beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no filler. The first sentence is a fragment but clear, and the second front-loads the key filters and intended use. It is efficient and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 optional parameters and no output schema. The description covers the primary filters and practical use cases, which is sufficient for an agent to understand the tool's scope. It does not describe return values, but given the straightforward nature of the tool and the detailed schema, this is not a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the query, classification, and date range parameters, and adds 'Class 1 most severe' context which is also present in the schema. It does not add 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies this as an FDA medical device recall lookup tool with specific filters (device name, manufacturer, classification, date range). It distinguishes from sibling tools like fda_drug_recalls and fda_food_recalls by explicitly saying 'device'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use cases ('medical device supply chain monitoring and hospital biomed compliance') and indicates the types of filters available. It does not explicitly contrast with alternative recall tools, but the device-specific wording gives enough context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_adverse_eventsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
drugYesDrug name (brand or generic) to query FAERS for. Example: 'Lipitor' or 'atorvastatin'.
limitNoMaximum rows to return (default 25, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoInclusive ISO date upper bound (YYYY-MM-DD).
reactionNoOptional MedDRA-preferred-term reaction filter (e.g. 'headache', 'nausea', 'liver injury').
start_dateNoInclusive ISO date lower bound (YYYY-MM-DD).
serious_onlyNoIf true, only return serious adverse events (death, hospitalization, life-threatening, disability).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to repeat these. The description adds that each result includes patient demographics, reactions, outcome, and seriousness, which is useful output context but not a behavioral trait beyond what annotations provide. It does not disclose rate limits, pagination, or other behavioral nuances, so the description adds marginal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that accurately convey the tool's purpose and result content. It avoids fluff and front-loads the key information: what the tool returns and its use case. Every sentence is informative and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters and no output schema, the description partially compensates by describing the output fields (demographics, reactions, outcome, seriousness). It does not mention optional filters like date range or seriousness, but the schema covers those thoroughly. Given the rich schema, the description is sufficiently complete for an agent to understand the tool's core function.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed descriptions for all 7 parameters, including examples and defaults. The tool description does not add parameter-level information beyond what the schema already provides. Baseline 3 is correct because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves FDA Adverse Event Reporting System (FAERS) reports for a specific drug, which distinguishes it from sibling tools like fda_drug_lookup and fda_drug_recalls. It specifies the resource (FAERS reports) and scope (per drug) with a concrete verb ('reports for'), and adds context about result fields (adverse reaction, demographics, outcome, seriousness). This meets the bar for a specific verb+resource+scope description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Used for pharmacovigilance and post-market safety analysis,' which provides clear context for when to use this tool. It does not explicitly name alternatives or exclusions, but the context strongly implies it is for adverse events rather than drug lookups or recalls. This is clear context without exclusions, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
queryYesNDC code (e.g. '0002-1407'), brand name (e.g. 'Lipitor'), or generic name (e.g. 'atorvastatin').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false, and idempotentHint, so the safety profile is covered. The description adds return-value context but does not disclose additional behavioral traits such as rate limits, authentication requirements, or error handling. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long and front-loaded with the core purpose in the first sentence. Each sentence provides distinct value—what it does, what it returns, and when to use it—without redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup tool with well-annotated safety and high schema coverage, the description is nearly complete. It lists the return fields, which is important given no output schema, and gives concrete use cases. It could be more complete by explicitly distinguishing from FDA siblings, but it remains adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all three parameters, so the baseline is 3. The description itself adds no parameter-level detail beyond the schema, which already explains query types, limit bounds, and dry_run behavior. Note a schema inconsistency: the limit property description says 'max 100' while the schema sets maximum=25, but the tool description does not address this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Look up FDA drug label info' using a specific verb and resource, and specifies search keys (NDC code, brand name, generic name). It also lists return content (indications, dosage, warnings, etc.), which distinguishes it from siblings like fda_drug_adverse_events or fda_drug_recalls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides use cases ('clinical decision support, pharmacy automation, drug-info chatbots') which imply when the tool is relevant, but it does not explicitly state when to use this over alternatives or when not to use it. No siblings are named for exclusions, so guidance remains implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_drug_recallsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
queryNoOptional product description / generic name / brand name search term.
stateNoOptional 2-letter state filter.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoInclusive ISO date upper bound (YYYY-MM-DD).
start_dateNoInclusive ISO date lower bound (YYYY-MM-DD).
classificationNoRecall severity: I (most severe), II, III.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about recall severity classes (I, II, III) but does not disclose other behavioral traits such as output format, pagination, or the dry_run preview behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, with the core purpose front-loaded. It is concise and free of filler, though the first sentence is a noun phrase rather than a complete verb-driven action statement, which is a minor structural weakness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with full schema coverage and rich annotations, the description provides enough context for an agent to select this tool for drug recall queries. It does not describe the return format, but that is not required in the absence of an output schema and is offset by the detailed parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates the filter fields (product name, classification, state, date range) and explains severity (I=most severe), which aligns with the schema's enum but adds limited new semantic information beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as 'FDA drug enforcement actions (recalls)' and specifies the filtering capabilities (product name, classification, state, date range). This distinguishes it from sibling tools like fda_device_recalls and fda_food_recalls, making the purpose explicitly clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists concrete use cases ('pharmacy compliance, supply chain monitoring, pharmacovigilance') that indicate when this tool is appropriate. However, it does not mention when not to use it or explicitly name alternatives like fda_device_recalls for device recalls, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_food_recallsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
queryNoOptional product description search term.
stateNoOptional 2-letter state filter.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoInclusive ISO date upper bound (YYYY-MM-DD).
start_dateNoInclusive ISO date lower bound (YYYY-MM-DD).
classificationNoRecall severity: I (most severe), II, III.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety profile. The description adds the domain scope (food recalls) but does not disclose additional behavioral traits like rate limits, auth needs, or response shape. Given the annotations, this is adequate but not enhanced; a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, followed by filter summary and use cases. Every sentence earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema, the description does not need to explain return values. It clearly communicates the domain, filters, and context. It is slightly less complete than ideal because it doesn't mention the dry_run parameter or the nature of results, but the schema covers dry_run and the tool name implies recall records.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all 7 parameters with descriptions. The description only summarizes filters ('product description, recall classification, state, or date range') without adding new syntax or format details. Baseline 3 applies because the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb+resource: 'FDA food enforcement actions (food recalls)' with explicit filter dimensions. It distinguishes from sibling tools like fda_drug_recalls and fda_device_recalls by specifying 'food'. The stated use cases also reinforce purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: 'Used for retail food safety monitoring, supply chain compliance, restaurant management.' This implies appropriate usage scenarios. However, it does not explicitly mention alternatives or when not to use it, such as 'for drug recalls use fda_drug_recalls', 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.

fdic_depositsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name
limitNoMax branches (default 25)
stateNoTwo-letter state code
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds context about the annual snapshot and sorting by deposit volume, but does not disclose other behavioral traits such as data freshness implications or pagination. With annotations covering safety, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that covers the source, return value, sorting, and use case. Every word earns its place, with no fluff or repetition. This is a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (4 optional parameters, no output schema) and good schema coverage, the description provides sufficient high-level understanding. It explains the return format (deposits per branch, sorted) and the annual snapshot source. It doesn't enumerate output fields, but that is acceptable for such a simple read-only tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — every parameter (city, limit, state, dry_run) has a description in the schema. The tool description itself adds no parameter information, so the baseline of 3 applies as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns branch-office deposit data from the FDIC Summary of Deposits, sorted by deposit volume. This specific verb+resource+scope effectively distinguishes it from sibling FDIC tools like fdic_financials or fdic_search_institutions, which focus on other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions the use case "useful for measuring local-market banking concentration," providing clear context for when to use this tool. It does not mention alternatives or exclusion criteria, but the context is clear and not merely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_failuresA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
stateNoTwo-letter state code
offsetNoPagination offset
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoEnd date YYYY-MM-DD
start_dateNoStart date YYYY-MM-DD
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already document the safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=true). The description adds useful behavioral details like 'Sorted most-recent first' and the returned fields, but it does not disclose other behaviors such as pagination quirks or rate limits. This is adequate 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and followed by filtering, output, sorting, and use cases. There is zero filler or redundancy; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately explains the return fields, filters, sorting, and use cases. For a read-only list tool with well-designed annotations and full schema coverage, this is sufficient for an agent to invoke it correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All six parameters have schema descriptions (100% coverage), so the description adds no new semantics—it only paraphrases the schema ('Filter by state and/or date range'). The baseline of 3 applies because the schema carries the full explanatory burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's action ('List FDIC bank failures') and specifies its distinct resource—bank failures—differentiating it from sibling FDIC tools like deposits, financials, or institutions. It also lists output fields and sorting, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('systemic-risk research, historical bank-stability analysis, or compliance work'), providing clear context. However, it does not mention when not to use it or name alternative tools, 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.

fdic_financialsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
certYesFDIC Certificate Number (get this from fdic_search_institutions)
limitNoNumber of recent quarters (default 4)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already indicating a read-only, idempotent, non-destructive operation, the description adds value by revealing output behavior: it returns multiple recent quarters, most recent first, with specific financial metrics. It does not mention potential limitations like data availability, but the annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose and data categories, with no filler or redundancy. Every sentence adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description adequately explains the return value categories and ordering. However, it could be more complete by noting the default number of quarters (though the schema covers 'limit'), or any data coverage limitations, which prevents a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are fully described in the schema (100% coverage), so the baseline is 3. The description does not add meaningful per-parameter semantics beyond repeating the CERT concept; it omits details about 'limit' and 'dry_run' that are already clearly documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the specific resource ('quarterly financial data for a specific bank'), and the identifier ('CERT number'). It also lists the data categories (assets, deposits, loans, capital ratios, income, asset quality), which differentiates it from sibling tools like fdic_failures or fdic_deposits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys when to use this tool: when you have a CERT number and need a bank's financials. The schema further reinforces this by suggesting how to obtain the CERT via fdic_search_institutions. However, it does not explicitly name alternatives or state when not to use it, 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.

fdic_historyA
Read-onlyIdempotent
Inspect

Institution history events for a specific bank by CERT: mergers, acquisitions, name changes, charter conversions, failures. Returns most-recent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
certYesFDIC Certificate Number
limitNoMax events (default 25)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring this a safe, read-only, idempotent operation, the description doesn't need to cover safety. It does add a useful behavioral detail (most-recent-first ordering) and the event categories, but it doesn't go beyond that into richer context like response format or handling of missing data. This is consistent with the baseline for annotated tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose, enumerates event types, and adds ordering. There is zero wasted language, making it both concise and highly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While there is no output schema, the description still conveys the core scope, the identifier, and the ordering of results. The parameter schema covers the rest. It could be more explicit about the shape of returned events, but for a tool of this simplicity, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters are fully described in the input schema (100% coverage), so the baseline is 3. The description reinforces the cert parameter by mentioning 'by CERT' but adds no syntax or format details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns institution history events for a specific bank identified by CERT, listing concrete event types (mergers, acquisitions, name changes, charter conversions, failures). This distinguishes it from siblings like fdic_failures and fdic_search_institutions by emphasizing the specific-bank historical scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context for when to use the tool: when you need historical events for a particular bank, not for listing or searching institutions. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_search_institutionsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name (exact)
nameNoInstitution name (partial match)
limitNoMax results (default 25)
stateNoTwo-letter state code (e.g. 'CA', 'TX')
offsetNoPagination offset (default 0)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
active_onlyNoOnly currently-active banks (default true)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds value beyond annotations by listing the exact return fields (CERT, name, location, assets, deposits, net income, ROA, ROE, charter class) and the intended workflow to other tools. This is useful context, though 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first front-loads the purpose and filters, the second lists return fields and follow-up guidance. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 7 optional, well-described schema parameters and strong annotations, the description is complete. It covers the search purpose, key return fields, and the relationship to fdic_financials/fdic_history. It does not mention other FDIC sibling tools like fdic_summary or fdic_failures, but the description is sufficient to guide an agent without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 7 parameters have schema descriptions (100% coverage), so the baseline is 3. The description restates that search can be by name, state, or city, but adds no new semantics beyond what the schema already provides. It does not compensate for anything missing in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' with the resource 'FDIC-insured banks and savings institutions' and identifies filters by name, state, or city. It distinguishes from sibling tools by instructing to use the CERT number for follow-up queries to fdic_financials or fdic_history, giving it a clear, specific scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description frames this as the entry-point search tool and explicitly says to use the CERT number for follow-up queries to fdic_financials or fdic_history, providing some alternative guidance. However, it does not explicitly exclude other FDIC sibling tools like fdic_deposits or fdic_failures, so it stops short of full when-to-use/not-to-use clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fdic_summaryA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of years (default 20)
stateNoTwo-letter state code (omit for national)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds functional details: it returns year-by-year aggregates, covers all FDIC-insured institutions, and can be filtered by state. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the core purpose, the second adds a use case and the optional state filter. It is front-loaded and contains no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no output schema and full parameter documentation, the description adequately conveys purpose, scope, and usage. It mentions the aggregate nature, optional state filtering, and macro-analysis use case, making it complete enough for an agent to decide to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all three parameters (limit, state, dry_run), including defaults and formats, so schema coverage is 100%. The description adds no additional parameter semantics, but none are needed given the complete schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Industry-level summary financials' and states it 'Returns year-by-year aggregates across all FDIC-insured institutions', using a specific verb and resource scope. This clearly distinguishes it from sibling tools like fdic_deposits or fdic_failures that focus on individual institutions or specific events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Useful for macro banking-sector analysis' provides clear context for when to use this tool. It does not explicitly name alternatives or exclusions, but the 'Industry-level' and 'across all FDIC-insured institutions' framing implies it is for aggregate analysis, not institution-level lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_candidate_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
candidate_idYesFEC candidate ID (e.g. 'P80001571', 'S2MA00170').
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds value by detailing the specific output fields (office, party, status, election years, mailing address), providing context on what the tool returns beyond what annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first states purpose and example, the second directs to the sibling tool. Every word serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with only two parameters and no output schema, the description provides enough context: it states the tool's purpose, lists returned information categories, and tells how to obtain the required ID. Minor omission: no mention of error handling or rate limits, but acceptable given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already explains both parameters (candidate_id and dry_run). The description reinforces the candidate_id parameter with an example but does not add new meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the action ('Get full detail') and the resource ('single federal candidate by FEC candidate_id'), gives a concrete example ('P80001571'), and lists included fields (office, party, status, election years, mailing address). This clearly distinguishes it from sibling tools like fec_candidate_search and 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to use this tool: after obtaining the candidate_id via fec_candidate_search. This directly addresses the decision between this tool and its sibling for finding the ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_candidate_financialsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoTwo-year election cycle (even year, e.g. 2024). Optional.
limitNoMaximum cycles to return (default 10, max 50).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
candidate_idYesFEC candidate ID (e.g. 'S2MA00170').
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds context about the breakdown by election cycle and included financial categories, but does not discuss output formatting, pagination, or upstream data 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, informative sentences with no filler. The core action is front-loaded, and every sentence contributes meaningful detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only aggregate query, the description covers purpose, key data fields, and the primary filter. There is no output schema, but the included-field list gives a reasonable expectation of what will be returned. It is complete enough for straightforward use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description only restates that the cycle parameter filters to one cycle, which adds little beyond the schema's own description. No additional meaning is provided for limit or dry_run.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Get') and names the exact resource: aggregate campaign finance totals for a candidate by FEC candidate_id, broken down by election cycle. It also lists the key data fields, making it clearly distinct from sibling tools like fec_candidate_search or fec_candidate_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use the tool: with a FEC candidate_id and optionally filtered to one cycle via the cycle parameter. It does not explicitly name alternatives or exclusions, but the usage context is strong enough for tool selection among FEC-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fec_independent_expendituresA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNoTwo-year election cycle (even year, e.g. 2024). Optional.
limitNoMaximum expenditures to return (default 20, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
candidate_idNoFEC candidate ID the spending targets (e.g. 'P80001571'). Provide this or committee_id.
committee_idNoFEC committee ID of the spender (e.g. 'C00804856'). Provide this or candidate_id.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds contextual detail like the Schedule E source and displayed fields, but it does not disclose edge-case behaviors such as what happens if neither ID is provided or if both are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three compact sentences, front-loaded with the core action and resource. Every sentence adds value: what the tool lists, what data it shows, and the required ID relationship.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the strong annotations and fully described parameters, the description provides sufficient context: source schedule, output fields, and ID filters. It does not explain mutually exclusive handling or defaults, but the schema covers cycle/limit, making this adequate for a read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, including explicit notes on candidate_id and committee_id. The description restates the 'provide this or that' relationship but adds little beyond the schema, so it earns the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and clearly identifies the resource ('independent expenditures (FEC Schedule E)') with scope ('supporting or opposing a candidate or made by a committee'). This distinguishes it from sibling FEC tools like fec_candidate_details or fec_committee_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: list independent expenditures with either candidate_id or committee_id. It states the required input relationship ('Provide candidate_id or committee_id') but does not explicitly say when not to use this tool or name alternative tools, 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.

flood_zone_lookupB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
locationNoAddress or zip to geocode.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds output details but does not disclose rate limits, authentication needs, or potential pitfalls. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with purpose. Efficiently lists outputs without fluff. Could be slightly more structured but very concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description enumerates all returned fields (zone code, risk, BFE, FIRM panel, NFIP mandate). For a simple lookup tool, this is sufficient. Implicitly covers input requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; lat and lon lack descriptions. The description mentions address or coordinate but adds no parameter-specific guidance beyond what the schema provides. Does not fully compensate for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns FEMA flood zone designation for an address or coordinate, and lists specific outputs. It distinguishes from siblings implicitly but does not explicitly differentiate from similar tools like nfip_flood_claims.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., nfip_flood_claims). No when-not-to-use or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fmcsa_carrier_authorityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
dot_numberYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, destructiveHint. The description adds behavioral context by detailing what checks are performed (authority, insurance types, bond). It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with main purpose and includes useful example queries. It could be slightly more concise by trimming the example list, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without output schema, the description fully explains return fields (authority status, insurance types, bond, freight allowance) and provides example questions. Adequate for a read-only tool with simple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 2 parameters, 50% coverage (dry_run described). Description implies dot_number usage but does not explicitly describe it or its format. It adds context on tool purpose but not parameter details beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks legal authorization and insurance of a trucking company, listing specific return fields. It distinguishes itself from sibling tools like fmcsa_carrier_lookup by focusing on authority status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit example queries ('can this carrier legally operate?', 'do they have insurance?', etc.), giving clear context for when to use it. However, it does not explicitly mention when not to use or suggest alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fmcsa_carrier_compareA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
dot_numbersYes2-5 USDOT numbers, as an array or comma-separated string.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, destructiveHint, and idempotentHint. Description adds context by listing specific output fields and states it returns a comparison table, which aligns with annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with main action, then structured list of output fields and example queries. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description comprehensively lists all return fields. Parameter count is 2 with full schema coverage. Sibling tools are distinct. Complete for a comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. Description does not add additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Compare 2 to 5 trucking companies side by side' with a clear verb and resource, and distinguishes from siblings like fmcsa_carrier_search by focusing on side-by-side comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit example queries and states use for carrier vetting decisions, but does not explicitly mention when not to use or list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fmcsa_carrier_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
mc_numberNo
dot_numberNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the description does not need to disclose safety. However, it adds value by detailing the types of data returned (e.g., safety rating, crash history), providing behavioral context beyond what annotations offer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the main purpose and lists specific return fields. While it is somewhat verbose, every sentence adds value and there is no redundant content. A more structured list might improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, the description covers the expected return data comprehensively (name, address, safety rating, insurance, crash history, etc.). It also provides example questions. Minor gaps include error handling and behavior when both numbers are provided, but overall it is sufficiently complete for a lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only dry_run has a description). The description clarifies that dot_number and mc_number are used for lookup, adding meaning to these otherwise undocumented parameters. However, it does not specify whether one is required or if they can be combined, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's action ('look up a trucking company') and the resource ('by DOT number or MC number'), listing specific return fields. It clearly differentiates from siblings like fmcsa_carrier_search or fmcsa_safety_scores by focusing on direct lookup by regulatory numbers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases ('is this carrier safe?', 'check this DOT number') and confirms coverage of all US FMCSA carriers. While it does not explicitly state when not to use this tool or name alternatives, the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fmcsa_safety_scoresA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
dot_numberYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, not destructive. The description adds valuable behavioral context: explains the two possible result types (BASIC scores vs public summary), their rarity, and interpretation guidelines (higher BASIC = worse, lower OOS rates better, with national averages). This 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, efficiently covering purpose, outputs, usage examples, and interpretation. It is front-loaded with the core purpose and well-structured, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 parameters (1 required), no output schema, and low complexity, the description provides complete context: the input (dot_number), the two possible outputs, and how to interpret results. It is sufficient for an agent to understand what the tool returns without further clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (dry_run described, dot_number not described). The description mentions 'by DOT number' but adds no specific format or constraints beyond the schema's integer >0. For dot_number, the schema already provides the type and exclusiveMinimum. The description does not add significant parameter semantics beyond what's given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves safety information for a trucking company by DOT number, and distinguishes between two possible output types (CSA BASIC scores or public safety summary). It lists multiple example questions, making its purpose very specific and differentiating it 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists several use cases ('is this carrier safe?', 'how many crashes?', etc.) and explains the rare vs always available data, guiding when the tool is appropriate. It does not directly name alternative tools, but the examples implicitly differentiate from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_category_seriesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 50 for observations, 25 for catalog queries).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
category_idYesFRED category ID. See https://fred.stlouisfed.org/categories/ for the hierarchy.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructiveness. The description adds behavioral detail like 'most popular' (sorting/filtering behavior) and provides numeric ID examples that aid understanding. It does not contradict the annotations, and the added context is valuable beyond the structured info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences and front-loaded with the primary action. It includes a usage hint and relevant examples without wasted words. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only catalog tool with a small parameter set and strong annotations, the description is sufficiently complete. It covers the core purpose, category IDs, and usage context. It doesn't detail return structure, but with no output schema and a straightforward list operation, this is not a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes slightly further by giving concrete examples for category_id (e.g., 32991 = Interest Rates), which helps the agent understand the parameter's values. Limit and dry_run are already well-described in the schema, so the description's incremental contribution is modest but positive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists the most popular FRED series in a category, using the specific verb 'List' and identifying the resource and scope. It distinguishes itself from sibling FRED search tools by explicitly positioning it as structural browsing rather than search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use this tool ('Use this to browse FRED structurally rather than via search'), which contrasts with the search-based alternative. It doesn't enumerate all sibling exclusions but provides a clear contextual trigger for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_compareA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound ISO date (YYYY-MM-DD).
limitNoMaximum rows to return (default 50 for observations, 25 for catalog queries).
startNoInclusive lower-bound ISO date (YYYY-MM-DD).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
series_idsYes2 to 5 FRED series IDs.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing a safe read operation. The description adds behavioral context beyond annotations by explicitly stating the return type ('Returns observations for each series') and the side-by-side comparison behavior. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long and front-loaded with the core action and scope. The first sentence states what the tool does, the second adds the return type and usage examples. No wasted words or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient given the rich annotations and complete schema. It states the return type ('Returns observations') even though there is no output schema. It effectively communicates the purpose, scope, and typical use cases. A more detailed return structure might be helpful, but it is not necessary for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (series_ids, start, end, limit, dry_run) are already well-documented. The description adds 'same date range' which clarifies that start/end apply to all series, and gives a domain example (10Y vs 2Y) that helps understanding but does not deeply enrich parameter meanings beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Compare 2 to 5 FRED series side-by-side over the same date range.' It identifies the verb 'compare', the resource (FRED series), and the scope (2 to 5 series, same date range). It also mentions what it returns ('Returns observations'), which helps distinguish it from single-series tools like fred_observations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases: 'Useful for ratio analysis (e.g. compare 10Y vs 2Y yield) or cross-series correlation.' This gives context for when to choose this tool. However, it does not explicitly mention when not to use it or name alternative tools (e.g., using fred_observations for a single series), so it stops short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_observationsA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound ISO date (YYYY-MM-DD).
limitNoMaximum rows to return (default 50 for observations, 25 for catalog queries).
startNoInclusive lower-bound ISO date (YYYY-MM-DD).
unitsNoUnits transformation: 'lin' (default), 'chg' (change), 'ch1' (change YoY), 'pch' (% change), 'pc1' (% change YoY), 'log', etc.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
frequencyNoAggregate to a different frequency: 'd', 'w', 'bw', 'm', 'q', 'sa', 'a'.
series_idYesFRED series ID (e.g. 'GDP', 'UNRATE'). See https://fred.stlouisfed.org/ for the catalog.
aggregation_methodNoAggregation method when changing frequency: 'avg', 'sum', or 'eop' (end of period).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds optional date range, units, and frequency aggregation, which are more parameter-focused than behavioral. It does not disclose return format, pagination, or rate limits, so transparency is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: three sentences, front-loaded with the primary action, then a concise summary of optional capabilities. Every sentence 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only data retrieval tool with no output schema, the description explains what it returns (observations) and key options. It could mention pagination or limit behavior, but the schema covers those details. Overall, it provides enough context for selection and basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage with detailed descriptions for all parameters. The description's mention of 'date range, units transformation, and frequency aggregation' mirrors the schema without adding new meaning. Since schema coverage is high, a baseline of 3 is appropriate; the description doesn't compensate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb ('Get') and resource ('time-series observations for a FRED series ID'), clearly distinguishing it from siblings like fred_series_info or fred_search. The phrase 'Workhorse query for any economic indicator' reinforces its primary role without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong contextual guidance ('Workhorse query for any economic indicator') indicating when to use it, but it does not explicitly mention exclusions or alternatives (e.g., when to use fred_quick_indicator or fred_compare). The guidance is clear enough for most agents, but not fully explicit about when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_quick_indicatorB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoInclusive upper-bound ISO date (YYYY-MM-DD).
limitNoMaximum rows to return (default 50 for observations, 25 for catalog queries).
startNoInclusive lower-bound ISO date (YYYY-MM-DD).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
indicatorYesFriendly indicator name. See description for valid options.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's burden is reduced. The description adds that it is a quick-access wrapper that maps friendly names to FRED series, which is useful context. However, it does not disclose return format or behavior such as how data is organized or whether start/end parameters are respected for all indicators. No contradiction with annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded with the tool's purpose. However, the second sentence is a long list of all valid indicators, duplicating the schema enum. This makes the description needlessly lengthy. It could have been shortened to 'See schema for valid indicators' while preserving clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, and the description does not mention what the function returns (e.g., observations, latest value, or metadata). The schema parameters (start, end, limit) suggest time-series data, but the agent is left guessing about the actual response structure. For a wrapper tool with no output schema, the description should explain the return format or at least state that it returns FRED observations for the chosen indicator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the parameters with descriptions, including an enum for 'indicator'. The description repeats the full list of valid indicator names, which adds no new meaning beyond the schema. No additional parameter context (e.g., default values or interaction between start/end and limit) is provided in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool is a 'Quick-access wrapper for the most-queried FRED indicators by friendly name' with a specific verb ('wrapper'), resource ('FRED indicators'), and scope ('most-queried'). It distinguishes itself from sibling fred_* tools by emphasizing the friendly-name approach to avoid memorizing series IDs, though it does not explicitly name an alternative tool for full FRED access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used when working with the listed common indicators via friendly names, avoiding series ID lookup. However, it does not explicitly state when to use fred_series_info or fred_observations for other indicators, nor provide exclusions. The usage context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_releasesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 50 for observations, 25 for catalog queries).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
release_idNoOptional. If provided, return only that release's metadata.
upcoming_datesNoIf true, return upcoming release date schedule instead of release metadata. Default false.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds the conditional behavior of upcoming_dates (returns calendar instead) and the purpose of the tool, which is useful behavioral context beyond the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise, front-loaded sentences: the main action, the alternate mode, and a use case. No redundant wording; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 optional parameters, no output schema, and strong annotations. The description covers the main purpose, the alternate upcoming_dates mode, and a use case, which is sufficient for a simple read-only browse tool. It does not explain return fields, but no output schema is provided, and the schema covers parameters like release_id and limit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions 'upcoming_dates=true' and the calendar behavior, but the schema already describes this parameter. It adds minimal extra value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('browse') and resource ('FRED economic releases') with concrete examples (Employment Situation, CPI, GDP). It does not explicitly distinguish from sibling tools like fred_observations or fred_series_info, but 'releases' is a distinct resource, making the purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use: browsing releases or, with upcoming_dates=true, getting the release calendar. 'Useful for knowing when fresh data is expected' gives a concrete use case. No explicit when-not or alternatives, but the conditional mode is clearly explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fred_series_infoA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
series_idYesFRED series ID (e.g. 'GDP', 'UNRATE', 'CPIAUCSL', 'DGS10').
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context by specifying the output fields (title, units, frequency, etc.) and the verification purpose. However, it does not disclose additional behavioral traits beyond what annotations imply, such as any limitations or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two sentences, no redundant information, and is front-loaded with the core purpose. Every sentence adds value, making it concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, no output schema, and the presence of annotations, the description adequately explains what the tool returns (specifically listing metadata fields) and how it should be used. An agent would have sufficient understanding to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage: each parameter (series_id and dry_run) has a clear description with examples. The tool description does not add new meaning to these parameters beyond what the schema already provides. Thus, according to the baseline, a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get metadata for a FRED economic data series by ID' and lists the specific metadata fields returned. It clearly identifies the verb, resource, and scope. Although it does not explicitly contrast with sibling tools like fred_search or fred_compare, the mention of 'before pulling observations' implies its role relative to fred_observations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Useful for verifying a series exists and understanding its measurement before pulling observations,' which provides clear guidance on when to use this tool. It does not explicitly state when not to use it or name alternatives, but the context is sufficient for an agent to infer the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geocode_addressA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZIP code for a structured query.
cityNoCity for a structured query.
stateNoTwo-letter state code for a structured query (e.g. 'DC').
streetNoStreet line for a structured query (e.g. '4600 Silver Hill Rd').
addressNoOne-line address, e.g. '4600 Silver Hill Rd, Washington, DC 20233'. Provide this OR the structured parts.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate read-only, open-world, idempotent, non-destructive. Description adds keyless, return fields (address, lat/lng, census geographies), and explicit not-found handling. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each adding critical information. Front-loaded with core action and data source. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking output schema, description adequately specifies return fields. For a geocoding tool, it covers input options, source, output, and error behavior. No missing details for agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 6 parameters (100% coverage). Description adds context on one-line vs. structured usage and explains dry_run parameter. Provides value beyond schema without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool geocodes US street addresses using the Census Geocoder, accepts one-line or structured address parts, and lists specific output fields. It distinguishes from siblings like geocode_batch and geocode_coordinates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions keyless access and US-only scope. Notes that unmatched inputs return a clear not-found message. Lacks explicit guidance on when to use batch or coordinate tools, but context from sibling names implies singe-address use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geocode_batchA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
addressesYesArray of one-line address strings. Max 10.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, establishing a safe read-only operation. The description adds behavioral context by specifying the output format (one block with matched address, coordinates, GEOIDs) and the relationship to the Census batch API, which is useful beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. The first sentence states the core action and limit, the second explains the output and provides an alternative for larger jobs. Every sentence contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers the essential aspects: input limit, output structure, and use case distinction. Since there is no output schema, the description compensates by outlining the return contents. The annotations cover safety and idempotency, leaving no major gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both 'addresses' and 'dry_run' described. The description supplements the schema by clarifying that addresses are 'one-line US addresses' and indicating the output includes county/tract GEOIDs, adding interpretive value beyond the raw parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Geocode') with a clear resource ('up to 10 one-line US addresses in a single call') and explicitly states the output structure ('one block per input address (matched address, coordinates, and county/tract GEOIDs)'). It distinguishes itself from sibling tools by highlighting the batch nature and the 10-address limit, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names an alternative ('Census batch file API supports up to 10k rows') and frames this tool as covering 'small ad-hoc batches', providing a clear when-to-use vs. when-not-to-use boundary. This goes beyond mere context and offers actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geocode_coordinatesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
latitudeYesLatitude (y), e.g. 38.84
longitudeYesLongitude (x), e.g. -76.92
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it uses the Census Geocoder (keyless) and details the return type. This is valuable context beyond annotations, though the tool is simple and non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately conveys the action and return. No extraneous words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description fully explains what the tool returns (Census geographies with GEOIDs). For a simple read-only tool with three parameters, this is complete and adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description adds little new information about parameters beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reverse-geocodes a latitude/longitude pair using the Census Geocoder. It specifies the exact geographies returned (state, county, tract, block, congressional district) and mentions it is keyless. This clearly distinguishes it from siblings like geocode_address and geocode_batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (reverse geocoding coordinates to Census geographies) but does not explicitly state when to use this over alternative tools. However, the context is clear enough for an agent to infer that this is for coordinate-based geocoding.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_free_api_keyA
Read-onlyIdempotent
Inspect

Get a free LiveDataLink API key instantly, without leaving this conversation. Call this when a data tool reports that the anonymous allowance is used up, or up front if you expect to make more than a handful of calls. Returns a working key with 1,000 monthly tool calls; no signup form, no email confirmation, no browser. Free to call and consumes no credits. IMPORTANT: pass the real email address of the human you are working for. Ask them for it if you do not already have it -- do not invent, guess, or use a placeholder like user@example.com. The key is tied to that address, and it is how they recover or upgrade it later. Calling twice with the same email never issues another key, and this unauthenticated tool never returns an existing credential.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe human user's real email address. Ask them for it if unknown. Placeholder addresses are rejected.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
use_caseNoOptional: one line on what they're building or what data they need (e.g. 'KYB checks on trucking carriers'). Helps us prioritise new data sources.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it confirms idempotency ('Calling twice with the same email never issues another key'), safety ('unauthenticated tool never returns an existing credential'), and side-effects ('Free to call and consumes no credits'). The annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) are fully aligned and reinforced. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: it opens with the core action and immediacy, then provides usage conditions, then details what the key offers and important instructions. Every sentence adds value with no redundancy or filler. The 'IMPORTANT' section is clearly demarcated. Length is appropriate—enough to be helpful without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description covers all necessary aspects: purpose, invocation triggers, parameter semantics (especially email), behavioral guarantees (idempotent, safe, free), and explicit instructions for correct use. It addresses the key context an agent needs to select and invoke the tool correctly, given its 3 parameters and 1 required field.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description goes beyond the schema for the email parameter by providing strict usage rules: 'pass the real email address of the human you are working for... do not invent, guess, or use a placeholder.' This adds critical semantic guidance. For dry_run and use_case, the schema descriptions are sufficient, and the description does not elaborate further, but the extra email guidance justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a free LiveDataLink API key instantly, without leaving this conversation.' The verb 'Get' and resource 'free API key' are specific, and the tool is distinctly not a data-retrieval tool like its siblings—it's a meta-tool for obtaining authentication credentials. The description differentiates well by explaining that it provides a key for accessing other data tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Call this when a data tool reports that the anonymous allowance is used up, or up front if you expect to make more than a handful of calls.' This tells the agent exactly when to invoke it versus alternatives. It also clarifies that the tool is free and returns a key with 1,000 monthly calls, setting clear expectations for usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_repoA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository as 'owner/repo', e.g. 'facebook/react'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by listing the specific data fields returned and the rate limit. It also states 'keyless,' confirming no authentication is needed, which aligns with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently cover functionality, use case, and rate limit. No extraneous information; front-loaded with the most critical details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately lists the returned fields. It also notes rate limits and keyless access. However, it does not mention error handling (e.g., for invalid repos) or confirm the return format, which would be needed for a perfect 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with descriptions (repo and dry_run). The description adds no further parameter-level detail beyond what the schema provides; it merely restates the repo format briefly. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves public GitHub repository stats including description, stars, forks, open issues, etc. It specifies the resource ('GitHub repo') and the action ('stats'). It is distinct from all sibling tools, as no other tool targets GitHub repositories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly suggests usage for 'assessing the health and maintenance of an open-source dependency' and notes the rate limit ('60 req/hr unauthenticated'). While it does not list when to avoid or alternative tools, the context is clear enough for typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

grants_get_opportunityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
opportunityIdYesNumeric opportunity id from a grants_search result (e.g. '334326').
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is clear. The description adds value by listing returned fields, but does not disclose potential upstream data source calls or rate limits beyond what annotations provide. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose and return fields. It is front-loaded with the action and resource, and every word adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the return values (description, eligibility, funding, key dates, CFDA numbers, agency contact) for a fetch tool. With no output schema, this provides sufficient guidance. It could mention error handling or format, but for this simplicity, it is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters (dry_run, opportunityId) well-described in the schema. The tool description only reiterates the purpose of opportunityId without adding new semantics. Therefore, it meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Fetch'), the resource ('full detail for a Grants.gov opportunity'), and specifies the identifier ('numeric opportunity id'). It also distinguishes the tool from the sibling 'grants_search' by mentioning the id field comes from that search, making its purpose precise and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used after a search by referencing 'the id field from grants_search', providing clear context for when to use it. However, it lacks explicit 'when-not' guidance or alternative tools, which would elevate it to a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hurricane_trackerA
Read-onlyIdempotent
Inspect

Currently-active hurricanes and tropical systems from NOAA NHC, with category, wind/pressure, current position, movement, and forecast cone link.

ParametersJSON Schema
NameRequiredDescriptionDefault
basinNoOptional basin filter: 'AL' (Atlantic), 'EP' (Eastern Pacific), 'CP' (Central Pacific).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive. Description adds that data comes from NOAA NHC and lists returned fields, but does not mention any additional behavioral traits like rate 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with all essential information front-loaded. Zero filler, efficient use of words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no output schema, the description lists the key return fields. Missing details like pagination or limits, but acceptable given low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions (basin filter and dry_run). Description does not add meaning to parameters—the schema already suffices. Baseline 3 for 100% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (track implied) and resource (hurricanes/tropical systems) and lists exact data fields (category, wind/pressure, position, movement, forecast cone link). It clearly distinguishes this tool from siblings like general weather alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear—only for currently active hurricanes—but there is no explicit guidance on when not to use it or mention of alternative tools like nws_active_alerts for broader weather warnings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

influence_network_mapA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoOptional 4-digit lobbying filing year (e.g. '2024'); defaults to the most recent year with filings.
stateNoOptional 2-letter state to scope the FEC committee search.
companyNoAlias for organization.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
organizationYesOrganization / company name (e.g. 'Lockheed Martin', 'Boeing').
Behavior5/5

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 context: the tool synthesizes public records, skips unavailable sources gracefully, and returns a readable map. It clarifies the output is not a risk score, providing behavioral insights beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that effectively conveys purpose, usage, and behavior. It is not overly verbose but could benefit from slight restructuring (e.g., bullet points) for easier scanning. No unnecessary sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately describes the return value as a 'readable map' and names the data sources. It covers the key aspects of the tool's functionality. However, more detail on the map's structure would improve completeness for agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context for the 'dry_run' parameter (validate before spending a query) and clarifies that 'company' is an alias for 'organization'. This extra information justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: creating a 'follow the money and influence' map for an organization by joining three federal data streams (FEC, Lobbying Disclosure Act, USAspending). It specifies the output is a readable map and distinguishes itself from the sibling tool 'counterparty_risk_score' by noting it is informational, not a risk score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: for investigative journalism, govcon, and due-diligence research. It provides context on what happens if a data source fails (noted, not fatal) and that the FEC leg requires an api.data.gov key. It also contrasts with 'counterparty_risk_score' to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ip_reputationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIPv4 or IPv6 address to screen.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive. Description adds that the tool is keyless (no API key) and specifies the exact abuse signals (Tor exit node, Feodo blocklist). This is good additional context, though no rate limits or caching details are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is brief (3 sentences) and front-loaded with the core purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description only lists high-level output categories (geolocation, network, abuse signals). It does not specify the structure or fields of the response (e.g., whether geolocation includes country, city, coordinates), leaving an agent uncertain about return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The tool description does not add further meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it provides a risk profile for an IP with geolocation, network info, and two specific abuse signals. It mentions usage for fraud, abuse, and security screening. However, it does not explicitly differentiate from sibling tools like rdap_ip or other screening tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for fraud, abuse, and security screening, but provides no when-not-to-use guidance or explicit alternatives. Sibling tools exist for similar purposes but are not referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

issuer_diligence_dossierA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoOptional 2-letter state hint for disambiguation (currently informational).
tickerNoOptional stock ticker hint to pin the SEC EDGAR match (e.g. 'LMT').
companyYesPublic company / SEC issuer name (e.g. 'Lockheed Martin', 'Pfizer').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, openWorld, idempotent, non-destructive. Description adds behavioral context like graceful degradation of sources and narrative synthesis, but does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is informative but relatively long; however, it is well-structured with a clear hierarchy of purpose, content, and exclusions. Front-loaded with main verb phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the output format (narrative brief with sections) and input requirements. It covers fallback behavior and what the tool is not, providing good context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description does not add extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a narrative public-record dossier for public companies/SEC issuers, listing sources and structure, and distinguishes it from sibling tools counterparty_risk_score and entity_dossier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use (for public companies) and what it is not (not a background check or legal/financial advice). It also differentiates from sibling tools, providing clear usage boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iv_analyticsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoOptional as-of date (YYYY-MM-DD); defaults to the latest available day.
tickerYesUS stock ticker with listed options (e.g. 'AAPL', 'SPY').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
lookback_daysNoTrailing window for rank/percentile (default 252 ~ 1 trading year).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive. The description adds meaningful behavioral context: the data source (LiveDataLink, 2019–2024), the fact that results are derived/computed rather than raw, and a disclaimer that it is not investment advice. It also implies cross-store synthesis without a full cost/rate-limit disclosure, which is acceptable given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence with a list of metrics and a final caveat. It is longer than minimal but every clause adds useful context (source, date range, metrics, disclaimer). It is front-loaded with the core purpose and avoids tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an analytics tool with no output schema, the description covers the main inputs, computation source, and the set of derived metrics. It could further clarify exact output formatting or limitations of the 2019–2024 range, but it is sufficiently complete for an agent to decide if this tool fits the task.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all four parameters with descriptions (100% coverage), so the baseline is 3. The description adds semantic value by explaining what the lookback window affects (IV rank/percentile range) and by defining metrics like IV Percentile and Variance Risk Premium, which helps the agent choose appropriate parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Compute derived options-volatility analytics for a US ticker.' It enumerates concrete outputs (IV Rank, IV Percentile, Variance Risk Premium, 52-week high/low, 1-week/1-month momentum), which clearly differentiates it from sibling raw-data tools like options_history_volhist or options_chain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool by contrasting it with raw data: it is 'premium synthesis over the options-history store.' It also frames itself as an 'analytical aid' rather than direct market data. However, it does not explicitly name alternative tools or state when not to use it, so it falls just 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.

kev_status_checkA
Read-onlyIdempotent
Inspect

Check whether a CVE is in the CISA Known Exploited Vulnerabilities catalog. Returns date added, due date, ransomware association, and required action.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by specifying the catalog queried and the returned fields, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences that efficiently convey purpose and return fields without any unnecessary words. It is front-loaded and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool and the thorough annotations and schema, the description covers the essential aspects. It lacks details on error handling or response format, but the listed return fields and the open-world annotation sufficiently inform the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions for both parameters (cve_id and dry_run) are detailed, especially dry_run. The tool description does not add additional parameter semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks if a CVE is in the CISA Known Exploited Vulnerabilities catalog, which is a specific and distinct purpose from sibling CVE tools. It also lists the return fields, making the functionality unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (checking KEV status), but does not explicitly mention when not to use it or suggest alternatives. However, the purpose is specific enough that an agent can infer the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lei_hierarchyA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA company legal name (e.g. 'Apple Inc') or a 20-character LEI code. Names resolve to the top-ranked match.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
children_limitNoMax direct children to list (default 15, max 50). The total count is always reported.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent behavior, so the description adds value by disclosing that the data is 'keyless, CC0 open data' (no authentication needed) and that missing relationships are reported as 'none reported' rather than an error—a useful behavioral nuance. It also details node contents, giving agents a clearer picture of what to expect from responses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, with each earning its place: the first defines the core action, the second frames the business questions, the third describes fields returned, and the fourth clarifies absence behavior. It is front-loaded and free of redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description adequately explains return content by stating direct parent, ultimate parent, child list, total count, and node fields. It also addresses a potential misinterpretation ('none reported' is not an error). While it could be more explicit about response format or pagination, it is complete enough given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline applies. The description does add one relevant detail—'the total count is always reported'—which helps interpret children_limit, but the parameter meanings are already well-documented in the schema. No substantial new parameter semantics are introduced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Map a company's corporate family tree from the GLEIF relationship register.' It precisely enumerates the outputs (direct parent, ultimate parent, direct children/subsidiaries, total count) and names the questions it answers, making it highly specific. It differentiates from siblings like lei_lookup by emphasizing the relationship hierarchy and GLEIF data source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear usage context by framing the tool around 'core due-diligence and beneficial-ownership questions' and explicitly enumerating the questions it answers ('who ultimately owns this company?'). However, it does not name alternative tools or provide exclusion criteria, so guidance is context-rich but not comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lei_lookupA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax candidate records for a name search (default 10, max 25). Ignored for an exact LEI.
queryYesA company legal name (e.g. 'Apple Inc') or a 20-character LEI code (e.g. 'HWUPKR0MPOU8FGXBT394').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false. The description adds valuable behavioral context: fuzzy matching, ranked candidates, exact LEI lookup, and the specific fields returned (status, jurisdiction, legal-form code, etc.). It also notes the data source is keyless and CC0 open data, enhancing transparency beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but well-structured, starting with purpose, then return fields, then use case, and finally input modes. It is information-dense without being bloated, though it could be slightly more concise by removing the promotional sentence about LEI being the 'global standard join key'. Overall, it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 params, no output schema), the description is quite complete: it lists all return fields, explains input modes, notes the data source, and gives downstream use cases. It does not mention pagination or rate limits, but for a lookup tool with readOnly annotations, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description enriches these by clarifying that 'query' can be a name or 20-character LEI, and that name searches are fuzzy with ranked candidates. It also reiterates that 'limit' is ignored for exact LEI lookups. This adds semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: resolving a company name to an LEI or looking up an LEI code directly. The verb 'resolve' and specific resource 'Legal Entity Identifier' are present, and the description distinguishes the tool from generic entity lookups by focusing on LEI. However, it does not explicitly contrast with sibling tools like lei_hierarchy 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool: to disambiguate a company and cross-reference it against sanctions, SEC EDGAR, federal spending, and due-diligence tools. It also explains the input modes (name fuzzy match or exact LEI). It lacks explicit 'when not to use' guidance or alternatives, but the use case is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tool_groupsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional substring to filter group names (case-insensitive).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnly, idempotent, non-destructive hints. Description adds value by stating it's free, no credits consumed, and detailing how filtering helps agent accuracy and context usage. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with main purpose. Informative but slightly wordy with additional context about connection URL and filtering benefits. Still efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description covers what it returns (domain count, tool count), its role in the workflow, and how to use results. Missing minor details like pagination but adequate for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents both parameters. Description mentions optional 'query' filter but doesn't add meaning beyond schema. dry_run parameter not described in text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists every tool group with domain count and tool count. It uses specific verbs and resource, and distinguishes itself from sibling tools by being a discovery tool for groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context: use to discover groups, then connect to LiveDataLink to load only those groups. Mentions free to call and optional query. Lacks explicit when-not-to-use but gives clear workflow guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_contributionsA
Read-onlyIdempotent
Inspect

Search LDA contribution reports (political contributions disclosed by lobbyists/registrants). Filter by year, registrant, or lobbyist name.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
page_sizeNoResults per page (default 20).
filing_yearNoFiling year, e.g. 2025.
lobbyist_nameNoLobbyist name, partial match.
registrant_nameNoRegistrant (firm) name, partial match.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, idempotentHint, destructiveHint=false) already declare it safe and idempotent. The description adds no behavioral context beyond 'Search,' such as pagination behavior, data latency, or result limits. Minimal extra value beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: first states purpose, second lists key filters. No redundancy or unnecessary words. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should clarify the return format or structure, but it doesn't. It mentions pagination implicitly via page_size parameter, but does not describe pagination behavior or typical fields returned. Adequate for a simple search, but gaps exist for an agent to fully understand the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully describes all 5 parameters. The description lists three filters (year, registrant, lobbyist name) but omits dry_run and page_size. It does not add semantic details beyond what the schema provides (e.g., 'partial match' is only in schema). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches LDA contribution reports from lobbyists/registrants, specifying the resource and filtering options. It distinguishes from sibling tools like lobbying_detail or lobbying_search by focusing specifically on contributions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use (when needing contribution reports) and lists filters, but lacks explicit guidance on when not to use it or how it compares to alternatives (e.g., lobbying_search). The agent would benefit from knowing this is for contributions only, not general lobbying data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_detailA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
filing_uuidYesFiling UUID from lobbying_search results.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the main behavioral traits are covered. The description adds value by detailing the return contents (activities, issues, officials, lobbyists), which is useful since there is no output schema. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 25 words, front-loaded with purpose. No unnecessary information. Every word is earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters and no output schema, the description adequately explains what the tool does and how to use it (UUID from lobbying_search). It lists the major output components, which is sufficient for an agent to understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters described in the input schema. The description does not add meaning beyond what the schema already provides (e.g., filing_uuid is already described as 'Filing UUID from lobbying_search results'). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the full detail of one lobbying filing by its UUID', specifying the verb and resource. It lists included components (activities, issues, officials, lobbyists) and references the sibling tool lobbying_search, distinguishing it from search and other lobbying tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description instructs to obtain the UUID from lobbying_search results, providing clear context for when to use this tool. It could explicitly state when not to use alternatives, but the reference to lobbying_search implies the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_lobbyistsA
Read-onlyIdempotent
Inspect

Search individual lobbyists by name (and optionally by their registrant firm). Returns lobbyist records with their associated firm.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
page_sizeNoResults per page (default 20).
lobbyist_nameNoLobbyist name, partial match.
registrant_nameNoOptional registrant (firm) name to scope the search.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds context by stating that it returns lobbyist records with their associated firm, which is consistent with a read-only operation. No contradictions; the description complements the annotations well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the main action and return. Every word serves a purpose, no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (5 simple params, no output schema), the description, combined with annotations and schema, provides complete context for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (page, dry_run, page_size, lobbyist_name, registrant_name) with descriptions. The tool description does not add additional semantic value beyond what the schema provides. Baseline 3 is appropriate because the schema covers everything.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'search' and the resource 'individual lobbyists'. It specifies the filtering options (by name and optionally by registrant firm) and the return value ('lobbyist records with their associated firm'). This effectively distinguishes it from siblings like lobbying_registrants and lobbying_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use: 'search individual lobbyists by name (and optionally by their registrant firm)'. While it doesn't provide explicit when-not-to-use or alternatives, the context is clear enough for an agent to infer that this tool is for lobbyist searches, not registrant or broad lobbying searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lobbying_registrantsA
Read-onlyIdempotent
Inspect

Search registered lobbying firms (registrants) by name. Returns registrant profile records.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
page_sizeNoResults per page (default 20).
registrant_nameNoRegistrant (firm) name, partial match.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no further behavioral context (e.g., about pagination or rate limits) but is consistent with the read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no unnecessary words. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema, the description provides minimal context. It does not describe what a 'registrant profile record' contains, but this is acceptable for a simple search tool. Slightly below the ideal for a more complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; all parameters have descriptions. The tool description does not add extra meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') and resource ('registered lobbying firms (registrants)'), and indicates the output ('registrant profile records'). It clearly distinguishes from sibling tools like lobbying_search, lobbying_lobbyists, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the tool is for searching registrants by name. However, it does not explicitly differentiate when to use this vs. siblings like lobbying_search or lobbying_lobbyists. With many lobbying-related siblings, this is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

location_risk_reportA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude (use with lon instead of address).
lonNoLongitude (use with lat instead of address).
stateNoOptional 2-letter state override (helps EPA/parcel/declaration scoping).
addressNoFull US street address to geocode.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, not destructive. The description adds how the score is computed (deductions), that failing sources are non-fatal, and geographic scope for parcels. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense paragraph with a clear front-loaded purpose. It covers key points without fluff, though slightly longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should detail the return value structure. It explains the score and sources but lacks specifics on the output format (e.g., fields, nesting).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds context beyond the schema: explains the two addressing modes (address vs lat/lon) and the purpose of the state override parameter, which reduces ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool produces a 'site-bound hazard + environmental profile with an explainable 0-100 risk score' and lists its data sources. It distinguishes well from sibling tools like flood_zone_lookup or earthquake_recent by emphasizing multi-source synthesis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a consolidated hazard profile ('One-call') and explicitly states it is 'not a substitute for a professional site assessment.' However, it does not explicitly say when not to use it or point to alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_size_estimatorA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
metroNoOptional 5-digit CBSA/metro code (e.g. '12420' Austin, TX). Census leg only; requires the Census key.
naicsNoExplicit 2 to 6 digit NAICS industry code (e.g. '722' food services, '5112' software publishers). Overrides 'industry'.
stateNoOptional 2-letter state code or 2-digit FIPS (e.g. 'TX', '48'). Omit for a national estimate.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
industryNoFree-text industry to map to a NAICS code (e.g. 'restaurants', 'software publishers', 'construction'). Provide this or 'naics'.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate read-only, open-world, and idempotent behavior. The description adds significant context: it uses two federal sources (Census and BLS), explains the data types (establishments, employment, payroll), notes API key requirements, states that a failing source is non-fatal, and declares the output as informational. This fully discloses behavioral traits beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single coherent paragraph that efficiently conveys purpose, data sources, usage details, and caveats. It is front-loaded with the primary function and maintains conciseness without omitting essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description details what is returned (establishment count, employment, wage/payroll anchor with per-source evidence). It covers input parameters, output expectations, source behavior, error handling, and limitations, providing a complete picture for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters have schema descriptions (100% coverage). The description adds meaning by explaining how 'industry' maps to NAICS, when 'naics' overrides, the purpose of 'dry_run', and how 'state' and 'metro' function. This enriches understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a TAM/market-size read for an industry in a US geography using two independent federal sources. It specifies the verb ('read'), resource ('market size'), and scope (industry + geography), distinguishing it from sibling tools that cover different data domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use: for industry market size estimation in the US, with optional state or metro filtering. It mentions that one source requires a Census API key and that a source failure is noted but not fatal. However, it does not explicitly state when not to use or name alternatives, though the sibling context implies distinct purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nfip_flood_claimsA
Read-onlyIdempotent
Inspect

National Flood Insurance Program claim history aggregated by zip, county, or state. Useful for insurance brokers and homebuyers assessing prior loss patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoFive-digit zip code.
limitNoMax rows (default 200).
stateNoTwo-letter state code.
countyNoFEMA county code.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_yearNoLatest year of loss.
start_yearNoEarliest year of loss.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and no destructive behavior. The description adds that data is 'aggregated by zip, county, or state'. This provides some behavioral context but does not add details on pagination, rate limits, or what happens with multiple aggregation parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core functionality, and every word adds value. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 7 parameters, no required fields, high schema coverage, and annotations present, the description adequately covers the tool's purpose and aggregation levels. It could mention that multiple filters can be combined or that output is aggregated, but is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with all parameters documented. The tool description does not add additional meaning to parameters beyond what is already in the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool provides NFIP claim history aggregated by zip, county, or state. It specifies the target users (insurance brokers, homebuyers) and the use case (assessing prior loss patterns). This differentiates it from sibling tools like flood_zone_lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('useful for insurance brokers and homebuyers assessing prior loss patterns') but does not explicitly state when to use this tool versus alternatives, mention prerequisites, or provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nonprofit_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEmployer Identification Number (EIN). Accepts 9 digits with or without a dash, e.g. "13-1837418" or "131837418".
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by specifying the data source (IRS EO BMF) and that coded fields are decoded. However, it does not disclose potential limitations like data freshness, rate limits, or that the tool only covers US organizations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence but packs relevant details concisely. It is front-loaded with the main purpose. Minor improvement could be splitting into two sentences for readability, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only two simple parameters and no output schema, the description covers the key data returned (decoded fields, address, NTEE code, financial figures). It implies a single record is returned. It lacks explicit mention of error handling or output format, but is largely complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters (ein, dry_run) already described. The description adds no additional meaning to the parameters beyond what the schema provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a full IRS EO BMF record for one organization by EIN, with decoded fields. It specifies the source, identifier, and output contents (address, NTEE code, financial figures), distinguishing it from siblings like nonprofit_lookup_ein or nonprofit_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it is for a detailed record lookup by EIN, but does not explicitly state when to use this tool versus alternatives (e.g., nonprofit_lookup_ein, nonprofit_status). No guidance on when not to use or prerequisites is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nonprofit_lookup_einA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEmployer Identification Number (EIN). Accepts 9 digits with or without a dash, e.g. "13-1837418" or "131837418".
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. Description adds context about data source (IRS BMF) and output fields, going beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no unnecessary words. First sentence states purpose and output; second sentence provides guidance on alternative tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only 2 params and no output schema, the description fully explains purpose, source, output fields, and usage guidance. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters well-documented. Description does not add extra meaning beyond schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool looks up a US tax-exempt organization by exact EIN from a specific data source (IRS Business Master File), including what it returns (name, address, IRC subsection, EO status). It distinguishes from sibling tool nonprofit_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool vs alternative: 'Use nonprofit_details for the fully decoded record.' Also implies exact EIN required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nonprofit_search_locationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNo5-digit ZIP code.
cityNoCity name (combine with state for best results).
limitNoMax results to return (default 20, max 100).
stateNo2-letter US state/territory code, e.g. "TX".
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful constraints: at least one filter must be provided, and results are capped at 100 organizations. This goes beyond annotation-only context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences each convey distinct information: purpose, usage requirement, and output limit. No redundant or vague language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with good annotations, this description is complete enough. It states required filter conditions, output size, and sample use cases. It does not describe the return format, but no output schema exists and the context is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description names city, state, and ZIP as location filters but does not add new semantics beyond what the schema already provides. It mentions the output cap, which relates to the limit parameter, but this is minimal extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds tax-exempt organizations by location (city, state, ZIP), which is a specific verb+resource+scope. It distinguishes itself from siblings like nonprofit_search_name by emphasizing location-based searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: at least one filter is required and it is useful for discovering charities, churches, and foundations in an area. It does not explicitly contrast with sibling tools, but the location-based focus is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nonprofit_search_nameA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesOrganization name or partial name to search for.
limitNoMax matches to return (default 10, max 50).
stateNoOptional 2-letter US state/territory code to narrow results, e.g. "NY", "TX", "CA".
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this readOnly, idempotent, and non-destructive. The description adds that search is tolerant of word reordering and minor spelling differences, returns ranked matches with EIN, location, and IRC subsection, and prepares the agent for result structure. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: purpose, matching behavior, and output/next step. No filler, front-loaded with the action verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description covers search behavior, output fields, and follow-up guidance. With full parameter schema and no output schema, it adequately equips the agent to invoke the tool and use the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage, so baseline is 3. Description adds semantic value by explaining fuzzy matching behavior for 'name' and limiting results by state, enriching beyond the schema's static definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Fuzzy-search tax-exempt organizations by name, optionally filtered to a US state.' It uses a specific verb+resource and distinguishes from siblings like nonprofit_details and nonprofit_lookup_ein by focusing on name-based fuzzy search, with an explicit pointer to those EIN-based tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers clear context on when to use: search by name with optional state filter. It tells the agent to use the returned EIN with nonprofit_details or nonprofit_lookup_ein for follow-up, but doesn't explicitly exclude alternatives like nonprofit_search_location. Still, the workflow guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nonprofit_statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEmployer Identification Number (EIN). Accepts 9 digits with or without a dash, e.g. "13-1837418" or "131837418".
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds context about returned fields (status, label, deductibility, date) but does not disclose data freshness, rate limits, or authorization requirements. With annotations covering the safety profile, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the core function and ending with the purpose. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists the returned fields but does not describe the output structure (e.g., JSON shape, data types). Since there is no output schema, the description should provide more detail on the return format to fully inform the agent. However, for a simple query tool, it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (ein and dry_run). The description does not add extra meaning or usage context beyond what is in the schema, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool returns the current exempt-organization status for one organization by EIN, including status label, contribution deductibility, and ruling date. It also states the intended audience (donors and grantmakers), distinguishing it from sibling tools like nonprofit_search_name or nonprofit_lookup_ein which serve broader search or lookup purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for checking a single organization's current standing using an EIN, but it does not explicitly state when to use this tool versus sibling search tools (e.g., when you already know the EIN vs. when you need to search by name). No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

npi_lookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npiYes10-digit NPI number.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, providing strong safety signals. The description adds that data is 'Keyless CMS data,' implying no authentication needed. It does not disclose error behavior (e.g., invalid NPI) or rate limits. Given the annotation coverage, the description provides moderate additional context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the action ('Look up a single US healthcare provider'), and lists key return fields efficiently. No redundant or vague language. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with no output schema, the description covers the essential return fields and data source. It does not mention potential errors (e.g., no result for invalid NPI) or response format. However, given the tool's simplicity and the availability of dry_run parameter for validation, it is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with clear descriptions for both parameters ('10-digit NPI number' for npi, and dry_run explained). The tool description does not add semantic detail beyond the schema, such as formatting requirements or validation rules. Since schema already does the heavy lifting, score is baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: looking up a single US healthcare provider by their 10-digit NPI. It lists the specific returned fields (name, type, credential, specialty, location, status) and mentions data source ('Keyless CMS data'). This distinguishes it from sibling search tools like npi_search_provider or npi_search_organization, which are for broad searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for single NPI lookups, which is distinct from sibling search tools. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide context like prerequisites or when not to use it. The guidance is clear enough but could be more explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

npi_search_organizationA
Read-onlyIdempotent
Inspect

Search healthcare organizations (hospitals, clinics, group practices, labs) by name. Requires organization_name; state and city optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity to narrow results (optional).
limitNoMax results (1-50, default 10).
stateNoTwo-letter state code to narrow results (optional).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
organization_nameYesOrganization name (required).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds context about the types of organizations searched, which is helpful, but it does not mention the dry_run behavior, external data source usage, or any rate limits. It adds some value beyond annotations but not rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that front-loads the main purpose and includes necessary parameter details. There is no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool without an output schema, the description is minimal. It explains the search scope and required parameter, but does not describe the return format, pagination, or the dry_run behavior. The schema covers parameters, but the lack of output schema means the agent must infer what results look like. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters clearly. The description merely restates that organization_name is required and state/city are optional, which is already in the schema. No new semantic information is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Search') and resource ('healthcare organizations') with specific subtypes (hospitals, clinics, group practices, labs). It differentiates from sibling tools like npi_search_provider by focusing on organizations rather than individual providers or specialties. The required parameter is explicitly stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides basic parameter requirements ('Requires organization_name; state and city optional') but does not explicitly say when to use this tool instead of alternative NPI search tools. There is no mention of when not to use or how it compares to npi_search_provider or npi_search_specialty. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

npi_search_providerA
Read-onlyIdempotent
Inspect

Search individual US healthcare providers by name. Requires a last_name (first_name, state, city optional). Returns NPI, specialty, location for each match.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity to narrow results (optional).
limitNoMax results (1-50, default 10).
stateNoTwo-letter state code to narrow results (optional).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
last_nameYesProvider last name (required).
first_nameNoProvider first name (optional).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds that it returns NPI, specialty, location, and the required/optional parameters, which adds some context but does not disclose pagination, rate limits, or behavior around the 'limit' or 'dry_run' parameters that are present in the schema. With strong annotations, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core action ('Search individual US healthcare providers by name'), followed by essential parameter requirements and return fields. No filler or redundant content; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only search tool with a well-documented schema (100% parameter coverage) and strong annotations, the description adequately covers the tool's purpose, key parameters, and output fields. The return values are explicitly mentioned, and the absence of an output schema does not create ambiguity for this straightforward use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a clear description in the schema. The description paraphrases the requirement for last_name and the optional nature of first_name, state, and city, but adds no new semantic meaning beyond what the schema already provides. It does not clarify the 'dry_run' or 'limit' behavior, but those are already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'search' with the resource 'individual US healthcare providers by name', clearly distinguishing it from sibling tools like npi_search_organization and npi_search_specialty. It also states the key required parameter (last_name) and what it returns (NPI, specialty, location), making the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool (searching by individual provider name) and lists required vs. optional parameters, giving the agent a good sense of how to structure a query. However, it does not explicitly mention alternatives or exclusions (e.g., 'use npi_search_organization for organizational providers'), so it stops short of full alternative differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

npi_search_specialtyA
Read-onlyIdempotent
Inspect

Find healthcare providers by specialty (taxonomy description) in a location. Requires taxonomy (e.g. 'Cardiology', 'Pediatrics', 'Nurse Practitioner'); state and city optional but recommended.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity to narrow results (optional).
limitNoMax results (1-50, default 10).
stateNoTwo-letter state code to narrow results (optional).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
taxonomyYesSpecialty / taxonomy description, e.g. 'Cardiology'.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds little behavioral context beyond the operation itself, but there is no contradiction or missing critical behavior for a simple 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that is front-loaded with the core purpose and includes essential usage guidance. No filler or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich with parameter descriptions and annotations cover safety traits. For a straightforward search tool, the description is sufficient for selection and invocation, though it does not describe return format or the dry_run parameter (already in schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all parameters, so the baseline is 3. The description adds value by providing taxonomy examples and advising that state/city are optional but recommended, which enriches parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Find healthcare providers') with a clear resource ('by specialty/taxonomy description') and location scope. This differentiates it from sibling tools like npi_search_provider and npi_search_organization by focusing on taxonomy-based lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly indicates that taxonomy is required and state/city are optional but recommended, giving practical usage context. It does not explicitly mention alternatives or exclusion scenarios, but the guidance is sufficient for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

npm_packageA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name, e.g. 'express' or '@scope/pkg'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond annotations by noting 'Keyless' (no authentication needed) and listing exact data returned. Annotations already declare readOnly, idempotent, and non-destructive, which the description aligns with.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with key purpose, no wasted words. Each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description enumerates all relevant return fields (version, description, license, etc.), covers pairing for vulnerability checking, and is sufficient for a simple lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have clear descriptions. The description adds no additional meaning beyond the schema; it merely restates the name parameter in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it looks up an npm package and enumerates the specific data fields returned (latest version, description, license, etc.), distinguishing it from sibling tools like pypi_package or cargo_crate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It suggests pairing with cve_search_by_keyword for vulnerability checks and mentions keyless access, but does not explicitly state when not to use this tool versus alternative package lookup tools.

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_detailA
Read-onlyIdempotent
Inspect

Detailed info for a single alternative fuel station by station ID. Get the ID from nrel_alt_fuel_stations results.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
station_idYesStation ID from the alt-fuel stations dataset.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, etc. The description ('Detailed info') adds little beyond that. No contradictions. Acceptable since annotations carry the behavioral burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with purpose, followed by usage hint. Efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple lookup tool with good annotations. Lacks output schema hints, but the term 'detailed info' is sufficient. Could mention fields returned, but not mandatory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters documented. The tool description echoes the schema ('Get the ID from nrel_alt_fuel_stations results') but does not add new meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'detailed info' for a single resource (alternative fuel station) using a unique station ID. It distinguishes itself from the sibling tool nrel_alt_fuel_stations, which presumably lists stations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Get the ID from nrel_alt_fuel_stations results.' This tells when to use it (after obtaining an ID) but does not explicitly list alternatives or when not to use it. Still effective.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_alt_fuel_stationsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude. Use with lon as alternative to location.
lonNoLongitude. Use with lat as alternative to location.
limitNoMax stations to return (default 25, max 200).
stateNoOptional 2-letter state code filter.
radiusNoSearch radius in miles (default 5, max 500).
statusNoOptional status filter: E (available, default), P (planned), T (temporarily unavailable).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
locationNoAddress or city/state. Either location OR lat+lon required.
fuel_typeNoComma-separated fuel types: ELEC (default), CNG, LNG, E85, HY, LPG, BD.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which conveys the read-only, safe nature of the tool. The description adds fuel type coverage and use cases but does not disclose additional behavioral traits like rate limits, response shape, or any limitations. This is adequate given the strong annotation coverage, but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first sentence front-loads the core function and fuel types; the second provides audience context. No wasted words or redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, the schema fully documents them, and annotations cover safety. The description adds purpose and target users, making the tool well-understood for selection. It does not mention the output structure, but the tool's name and description imply a list of stations, and no output schema exists to require further detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all 9 parameters, and each parameter has a detailed description (e.g., radius default and max, status filter meanings). The tool description does not add any parameter-level meaning beyond what the schema already provides, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Find') and resource ('alternative fuel stations near a location'), and enumerates the fuel types covered. This clearly distinguishes it from sibling NREL tools like nrel_alt_fuel_station_detail (which focuses on station details) and nrel_solar_resource (solar calculations).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names target users (route planning agents, fleet operators, EV/clean-fuel tech), giving clear context on when to use the tool. However, it does not mention alternatives or exclusions, such as when to use nrel_alt_fuel_station_detail for a specific station's details instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_pvwattsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude in decimal degrees. Use with lon as alternative to address.
lonNoLongitude in decimal degrees. Use with lat as alternative to address.
tiltNoArray tilt angle in degrees (default 20).
lossesNoTotal system losses percent (default 14).
addressNoStreet address, city/state, or place name. Either address OR lat+lon required.
azimuthNoArray azimuth in degrees (default 180 = south for northern hemisphere).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
array_typeNo0=fixed open rack, 1=fixed roof (default), 2=1-axis tracking, 3=1-axis backtracking, 4=2-axis tracking.
module_typeNo0=standard (default), 1=premium, 2=thin film.
system_capacityYesSystem size in kilowatts DC (e.g. 5 for a 5 kW residential system).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side effects. The description adds context about using NREL's PVWatts v8 model and returning specific metrics, but this is not significantly beyond what annotations provide. The description does not contradict annotations (annotation_contradiction=false).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of only two sentences, is front-loaded with the primary action ('Estimate solar PV system production'), and every sentence serves a purpose. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description explicitly lists the return values (annual and monthly AC energy output, solar resource, capacity factor). Combined with comprehensive annotations and full schema coverage, the description provides sufficient context for an AI agent to understand the tool's capabilities and constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not elaborate on individual parameters, so it adds no meaning beyond the schema. With full schema coverage, this is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool estimates solar PV system production using NREL's PVWatts v8 model, specifies the return values (annual and monthly AC energy output, solar resource, capacity factor), and identifies target users (solar developers, homeowners, ESG analysts). This is a specific verb+resource combination that distinguishes it from siblings like 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by stating the tool is used for sizing and estimating solar arrays by specific user groups. However, it does not explicitly mention when not to use this tool or suggest alternatives, so it lacks exclusions but is not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_solar_resourceA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude in decimal degrees. Use with lon as alternative to address.
lonNoLongitude in decimal degrees. Use with lat as alternative to address.
addressNoStreet address, city/state, or place name. Either address OR lat+lon required.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, idempotentHint, and no destructiveness. The description adds that data is annual and monthly, but does not disclose rate limits, data source staleness, or output format. With good annotation coverage, the description adds marginal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence front-loads the key information (data types and output granularity). Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description mentions the types of solar data returned but lacks detail on output format (JSON, units like kWh/m²/day) and does not explain dry_run behavior beyond schema. For a tool with no output schema, more explicit output description would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with clear descriptions. The tool description adds no additional parameter-level meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool provides annual and monthly solar resource data (DNI, GHI, LTI) for a location. It lists specific irradiance types, making the purpose distinct. However, it does not explicitly differentiate from closely related sibling tools like nrel_pvwatts, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Useful for site evaluation before sizing a solar system' implies when to use the tool, but there is no explicit guidance on when not to use it or comparison to alternatives like nrel_pvwatts or nrel_utility_rates. Usage context is clear but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nrel_utility_ratesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude in decimal degrees. Use with lon as alternative to address.
lonNoLongitude in decimal degrees. Use with lat as alternative to address.
addressNoStreet address, city/state, or place name. Either address OR lat+lon required.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and non-destructive nature. The description adds that the tool returns specific rate types and utility name, but does not detail data source, refresh frequency, or response structure. With strong annotations, this adds moderate value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with what the tool returns and followed by use case. Every word serves a purpose, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the output (rates per kWh, utility name) and use case. Given no output schema, this is fairly complete, though it does not specify whether rates are current or historical. For a simple data retrieval tool, it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents each parameter (lat, lon, address, dry_run). The description adds no additional meaning beyond 'for a location', which is already evident. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns average residential, commercial, and industrial electric utility rates in cents per kWh along with the utility name for a location. It also specifies its use in ROI analysis for solar, EV charging, and building electrification, distinguishing it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for ROI analysis but does not explicitly provide when-to-use vs alternatives or when-not-to-use guidance. No sibling alternatives are mentioned, so clear exclusions are lacking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nws_active_alertsA
Read-onlyIdempotent
Inspect

Currently-active National Weather Service alerts (tornado, flood, severe thunderstorm, winter, heat, fire) for a point, state, or NWS zone.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
zoneNoNWS zone id, e.g. 'TXZ123'.
stateNoTwo-letter state code (e.g. 'TX').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
locationNoAddress, zip, or city. Will be geocoded to a point.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and side-effect information. The description adds no behavioral details beyond scope (e.g., no mention of data lag, rate limits, or response structure). It is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that conveys the core purpose and query options without unnecessary words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list-retrieval tool with no output schema, the description covers the essential inputs and purpose. It does not explain the output format or pagination, but given the straightforward nature and annotations, it is reasonably complete. Missing a brief note on what is returned (list of alerts).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (4 of 6 parameters have descriptions; lat/lon lack them). The description groups query methods (point, state, zone) but does not explain lat/lon individually or add syntax details. It provides moderate value beyond the schema's own documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves currently-active NWS alerts, listing common alert types (tornado, flood, etc.) and specifying query modes (point, state, zone). This distinguishes it from sibling tools like weather_current or weather_forecast, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for active alerts and mentions three query methods, but it does not explicitly state when to avoid this tool or direct users to alternatives. However, the alerts context is clear enough for an agent to decide among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_by_companyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of companies (default 20, max 50)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive). The description adds that the data is pre-aggregated across all years and returns total dollars and payment count, but does not elaborate further on response details or limitations. This is adequate given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first states the function, the second gives the intended use case. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two optional parameters and no output schema, the description sufficiently explains the data scope and return fields. It could mention the data source explicitly, but the tool name and the context of sibling tools make that clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'limit' and 'dry_run' have descriptive text in the schema. The tool description adds no additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('returns') and clearly identifies the resource: 'Pre-aggregated payment summary grouped by reporting company across all years.' It also distinguishes from sibling tools by focusing on company-level aggregation rather than specialty, state, or individual payments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: 'Use this to rank companies by their pharma-influence spend.' It does not explicitly mention alternatives or exclusions compared to sibling tools like open_payments_by_specialty, so it misses the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_by_specialtyA
Read-onlyIdempotent
Inspect

Payment totals grouped by medical specialty. Reveals which specialties receive the most pharma money: orthopedic surgeons, cardiologists, psychiatrists, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax specialties (default 50)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this is a safe, read-only, idempotent operation. The description adds that the tool 'reveals which specialties receive the most pharma money,' implying sorted or ranked output, but it does not detail return format, pagination, time frames, or data source nuances. Adds some context beyond annotations but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every word adds value. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple aggregation tool with robust annotations and fully described parameters, the description is sufficient. It clearly conveys the output scope (specialty-level payment totals) and gives examples. Minor gaps like data source specifics or explicit sorting behavior are not critical given the schema and sibling names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides complete descriptions for both parameters (limit and dry_run) with 100% coverage. The description does not add any additional meaning to the parameters, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb and resource: 'Payment totals grouped by medical specialty.' It distinguishes this tool from sibling open_payments tools by emphasizing the specialty dimension (e.g., 'orthopedic surgeons, cardiologists, psychiatrists') rather than company, state, or national summaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: it provides specialty-level payment totals, but the description does not explicitly state when to use this tool over alternatives like open_payments_by_company or open_payments_state_totals. Given the large sibling set, explicit differentiation would improve guidance, but the purpose is clear enough for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_national_summaryA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that it returns totals and averages across all years broken down by category, but does not disclose details like data source freshness, rate limits, or potential large response size. It adds moderate value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action. Each sentence contributes meaningful information without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description specifies national-level totals and averages with breakdown by category, but lacks details on the output format (e.g., list of categories, units) or time coverage. With no output schema, more context would help an agent understand the response structure. Adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single optional parameter 'dry_run', which has a description. The tool description does not mention this parameter, so no additional meaning is provided beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides national-level totals and averages of Open Payments across all years, broken down by payment-nature category. This distinguishes it from sibling tools like open_payments_state_totals (state-level) and open_payments_by_company/specialty (different breakdowns).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as open_payments_by_company or open_payments_state_totals. The description implies national-level aggregation but does not specify when a more granular tool would be appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_ownershipA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoProgram year (auto-discovers latest if omitted, e.g. '2024')
limitNoMax rows (default 20, max 100)
stateNoTwo-letter state code (e.g. 'CA', 'TX')
doctorNoDoctor last name (case-insensitive)
companyNoManufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson'
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
specialtyNoMedical specialty (partial), e.g. 'Cardiology', 'Orthopaedic'
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which tell the agent this is a safe, repeatable read operation. The description adds contextual significance (deepest disclosure category) but does not disclose additional behavioral traits such as rate limits, pagination behavior, or output format. Since the annotations cover the main safety concerns, the description is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the verb and subject. The second sentence adds conceptual value without redundancy. Every word contributes to understanding the tool's purpose and significance, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with comprehensive schema documentation and safety annotations, the description is largely complete. It clearly states what data is searched and emphasizes its relevance. However, without an output schema, it could have briefly mentioned the return format or typical fields, but this is not critical for a straightforward search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All seven parameters are fully described in the schema, achieving 100% schema description coverage. The description itself does not add any parameter-specific information, so it does not improve upon the schema. It neither compensates for gaps nor introduces confusion, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search') and the resource ('Open Payments OWNERSHIP / investment-interest data'), further specifying 'doctors with equity stakes in pharma/device companies.' It also distinguishes this tool from sibling Open Payments tools by noting it is the 'deepest disclosure category' and 'strongest conflict-of-interest signal.' This makes the purpose unmistakable and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: whenever ownership/investment-interest data is needed. It highlights the data's significance but does not explicitly state when to use this tool instead of alternatives like open_payments_search or open_payments_by_company, nor does it mention any exclusions or prerequisites. Thus, usage 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.

open_payments_researchA
Read-onlyIdempotent
Inspect

Search Open Payments RESEARCH payments -- clinical research grants and study funding from pharma/device companies to doctors. Separate dataset from general payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoProgram year (auto-discovers latest if omitted, e.g. '2024')
limitNoMax rows (default 20, max 100)
stateNoTwo-letter state code (e.g. 'CA', 'TX')
doctorNoDoctor last name (case-insensitive)
companyNoManufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson'
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
specialtyNoMedical specialty (partial), e.g. 'Cardiology', 'Orthopaedic'
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive, so the description need not repeat these. It adds domain context by specifying the type of data (clinical research grants, study funding), but does not describe any behavioral nuances like pagination, rate limits, or result structure. This is adequate 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, immediately names the tool's purpose, and adds a key distinction (separate dataset) without any filler. Every word contributes to agent understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 7 optional schema-documented parameters and no output schema, the description sufficiently explains the data scope (research payments vs general) and the domain context. It lacks details on output format, but that is not expected given the simplicity of the tool and absence of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides full documentation for all 7 parameters (year, limit, state, doctor, company, dry_run, specialty), so description-level explanation is unnecessary. The description adds context about the data domain but no parameter-specific details, which matches the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching Open Payments RESEARCH payments, specifically clinical research grants and study funding from pharma/device companies to doctors. It also distinguishes this from the general payments dataset, which helps differentiate it from numerous sibling open_payments_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly separates this tool from general payments, implying it should be used when the agent needs research/study payment data, not general payments. Although it does not name an alternative tool, the 'Separate dataset from general payments' phrase provides clear context for when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_state_totalsA
Read-onlyIdempotent
Inspect

State-level Open Payments totals. Returns payment totals and average per recipient per state. Useful for state-level pharma-influence research.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax states (default 60)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds output composition (totals and average per state), which is useful, but does not reveal deeper behavior (e.g., pagination, state 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the tool's core purpose, then output details and use case. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two optional parameters and no output schema, the description sufficiently conveys the main return values. It could mention arrangement or state inclusion, but complexity is low, so the current level is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both limit and dry_run already described in the schema. The description adds no parameter-specific detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns state-level Open Payments totals, specifying the output (payment totals and average per recipient per state). This distinguishes it from sibling tools like open_payments_by_company and open_payments_by_specialty.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context ('state-level pharma-influence research') but does not explicitly state when not to use it or name alternatives. The sibling list indicates alternatives, but the description itself could be more explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_payments_topA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoProgram year (auto-discovers latest if omitted, e.g. '2024')
limitNoMax rows (default 20, max 100)
stateNoTwo-letter state code (e.g. 'CA', 'TX')
doctorNoDoctor last name (case-insensitive)
companyNoManufacturer/GPO name (partial match), e.g. 'Pfizer', 'Stryker', 'Johnson & Johnson'
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
specialtyNoMedical specialty (partial), e.g. 'Cardiology', 'Orthopaedic'
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the baseline is high. The description adds valuable behavioral context by specifying the sort order (descending by payment amount) and the focus on 'individual pharma payments,' which goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded purpose. Every word earns its place, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 7 parameters and no output schema, the description is sufficient for a simple variant tool. It explains what it does, the sort order, and the intended use case. It could mention return fields or data source details, but the cross-reference to open_payments_search fills most gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is documented. The description's phrase 'Same filters as open_payments_search' adds semantic value by linking the parameter behavior to a known sibling, and 'sorted by payment amount descending' clarifies the meaning of the 'limit' parameter. This exceeds baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('find') and resource ('largest individual pharma payments'), and explicitly distinguishes the tool from its sibling open_payments_search by the sorting criterion. It clearly conveys that this tool returns the top payments sorted by amount descending.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use this to find the LARGEST individual pharma payments by company, state, or specialty,' providing clear when-to-use guidance. It references open_payments_search for filters, implying it is an alternative, though it does not explicitly mention other sibling tools or exclusion cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

options_chainA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by option type (default: "both")
symbolYesStock ticker symbol (e.g., "AAPL")
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
expirationNoExpiration date in YYYY-MM-DD format. Defaults to nearest expiration.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety profile is known. The description adds that it fetches from an upstream data source and includes a dry_run parameter for validation. No mention of rate limits or failure behavior, but adequate 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence defining the tool plus example queries. Concise but could be more structured (e.g., separate purpose from examples). No wasted words, but front-loading could be improved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description lists the data fields returned (strike, bid/ask, volume, open interest, implied volatility, expirations). For a list-retrieval tool, this is sufficient to understand what the tool returns. Good coverage given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for all 4 parameters (symbol, type, expiration, dry_run). The description does not add meaning beyond the schema; it lists example data but no parameter clarifications. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets options chain data (calls/puts with strike, bid/ask, volume, open interest, implied volatility, expirations). It includes example queries like 'show me AAPL options', distinguishing it from sibling tools like options_history_* which focus on historical data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides example queries showing when to use (e.g., 'show me AAPL options', 'what's the implied volatility?'). However, it does not explicitly state when not to use or mention alternatives like options_history_* tools for historical analysis. Lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

options_history_atm_ivA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
call_putNoCall (default) or Put
expirationYesExpiration date YYYY-MM-DD (pick the same expiration across dates for consistency)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and idempotentHint, so the tool is safe. The description adds behavioral context: returns strike closest to 50-delta, defaults to call but supports puts, and provides a time series. This goes beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: first states purpose, second details strike selection, third lists use cases. No wasted words, front-loaded with core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explains what is returned (strike and IV per date). It lacks explicit mention of output format (list/object) and handling of missing data, but the provided detail is largely sufficient for a data retrieval tool with strong annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all four parameters. The tool description does not add new meaning beyond the schema; it only restates the expiration date format. Baseline 3 is appropriate as schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves historical at-the-money implied volatility time series for a ticker, with specific details about strike selection and support for calls/puts. It distinguishes itself from sibling tools like options_history_chain and iv_analytics by focusing on ATM IV.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions use cases like VRP calculations and regime detection, but does not explicitly state when to use this tool versus alternatives. No guidance on when not to use it or trade-offs with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

options_history_chainA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate in YYYY-MM-DD format. Coverage: 2019-02-09 to 2024-11-11.
tickerYesStock ticker (uppercase)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds useful behavioral context: date range (2019-2024), data source (DoltHub, indexed in R2 storage), and the full set of returned fields. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three sentences that front-load the purpose and outputs, followed by use cases and provenance. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a data retrieval tool with no output schema, the description adequately covers the returned fields and limitations (date range). It mentions the data source and use cases. However, it does not discuss potential costs or the dry_run parameter's purpose, which could be useful for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description reiterates the date range and ticker but adds no new parameter details beyond the schema. The dry_run parameter is in schema but not mentioned in description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the full historical options chain for a ticker on a specific date, detailing the returned data (every strike, expiration, bid, ask, IV, all five Greeks). It distinguishes itself from sibling tools like options_history_atm_iv and options_history_contract by specifying the comprehensive nature and historical scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends use cases: 'point-in-time backtesting, vol surface snapshots, or single-day analysis.' While it doesn't explicitly exclude alternatives, the context makes it clear this is for historical analysis, and the sibling tools cover more specific needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

options_history_contractA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
strikeYesStrike price (e.g. 450.00)
tickerYesStock ticker
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
call_putYesContract type
expirationYesExpiration date YYYY-MM-DD
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is clear. The description adds that it returns daily observations with specific fields, but does not disclose potential data limitations, rate limits, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, no wasted words. Structure is clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description explains output (daily observations with bid/ask, IV, Greeks) despite no output schema. It covers the essential use case, but lacks details on date range specification or pagination if the time series is long.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description mentions key parameters (ticker, strike, expiration, call_put) in context, but adds no additional semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it tracks a specific options contract over time, returning daily observations with bid/ask, IV, and Greeks. It clearly distinguishes itself from sibling tools like options_chain or options_history_chain by focusing on a single contract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides use cases such as studying single-contract behavior leading up to expiration and gamma squeezes. However, it does not explicitly state when not to use this tool or directly compare to siblings like options_chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

options_history_volhistA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker (uppercase)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoOptional YYYY-MM-DD upper bound
start_dateNoOptional YYYY-MM-DD lower bound
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a read-only, idempotent, non-destructive tool. The description adds behavioral context by specifying the output fields and noting the smaller payload, without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the main action and efficiently conveying purpose, output, use cases, and comparison.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity and lack of output schema, the description adequately explains the return values and use cases. However, the year-high/year-low markers could be more precisely defined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds no additional meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches per-day implied and historical volatility for a ticker, listing specific output fields and distinguishing from full chain data by noting its smaller payload. This differentiates it from siblings like 'options_chain'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions use cases (IV rank/percentile signals, vol regime detection, time-series feature engineering) and compares to full chain data, providing guidance on when to use this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

org_funding_profileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
einNoOptional EIN for an exact IRS 990 match.
stateNoOptional 2-letter state to disambiguate a nonprofit name search.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
organizationYesOrganization / company / nonprofit name.
include_opportunitiesNoAlso list open Grants.gov funding opportunities (available, not awarded). Default false.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnly, idempotent, non-destructive. The description adds that sources degrade gracefully and that federal dollars are name-matched and should be verified, providing important caveats about reliability. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loading core purpose and data sources. It includes parenthetical details that are informative but slightly lengthy. Generally efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists specific data points (total dollars, award counts, revenue/assets, etc.) and notes graceful degradation and verification needs. It covers key aspects but could mention output format or limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The tool description adds overall context but does not enhance per-parameter meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a combined federal-money and nonprofit profile using USAspending and IRS 990 data, with optional grants.gov opportunities. It distinguishes from siblings like 'grants_search' and 'nonprofit_details' by offering a one-call synthesis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies when to use (for combined federal and nonprofit info) and highlights that opportunities are 'clearly labeled' to avoid confusion with awards. It implicitly contrasts with separate tools but lacks explicit when-not-to-use or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_trackA
Read-onlyIdempotent
Inspect

Track a package or shipment by tracking number. Auto-detects carrier (USPS, UPS, FedEx, DHL, Amazon). Returns delivery status, current location, estimated delivery date, and tracking history. Use this for 'where is my package?', 'track this shipment', 'when will my order arrive?', 'check delivery status', 'is my package delivered?', or any package tracking question. Just paste the tracking number - the carrier is detected automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
tracking_numberYesPackage tracking number from any carrier
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds that carrier auto-detection occurs, which is useful but not extensive. No mention of rate limits, errors, or response format beyond a list of fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six sentences, front-loaded with the action, then use cases. Efficient but could be slightly trimmed (e.g., removing 'just paste the tracking number' as it's implied). Overall well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists; description adequately lists returned fields (delivery status, location, estimated delivery, tracking history). It doesn't cover error handling or pagination, but for a simple lookup tool, this is sufficient given the annotations already provide safety context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for both parameters (tracking_number, dry_run). The description adds that tracking_number works for any carrier and carrier is auto-detected, but doesn't elaborate on dry_run beyond what the schema already describes. Minimal extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool tracks packages/shipments by tracking number, auto-detects carrier, and returns specific data (delivery status, location, estimated delivery, history). It lists example queries, distinguishing it from siblings that are unrelated (e.g., carrier_vetting_score, parcel_coverage).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists when to use the tool with example queries ('where is my package?', 'track this shipment', etc.). It tells users to just paste the tracking number. While it doesn't mention when not to use alternatives, the sibling set lacks other package tracking tools, so context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paper_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesOpenAlex id ('W...') or DOI ('10.x/...'). For arXiv ids, use paper_get_text or paper_search instead.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, destructiveHint=false, and the description aligns perfectly by describing a read operation. It adds value beyond annotations by listing returned fields (title, authors, venue, etc.) and noting free full-text URL availability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at three sentences, with the core purpose in the first sentence. Every sentence adds necessary information; no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists exact return fields (title, authors, venue, year, citation count, open-access status, free full-text URL). The dry_run parameter is documented in the schema. The description sufficiently covers the tool's functionality for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds extra context for the 'id' parameter with examples and alternative tool guidance, enhancing understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), names the resource ('full catalog metadata'), and specifies the identifier types (OpenAlex ID or DOI). It clearly distinguishes from sibling tools by directing arXiv IDs to paper_get_text or paper_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (for OpenAlex ID or DOI) and when not (for bare arXiv ID), naming alternative tools (paper_get_text, paper_search). Provides example identifiers, leaving no ambiguity about appropriate invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paper_get_textA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
from_seqNoPassage index to start from (0-based, default 0).
paper_keyYesCorpus key of an indexed paper, e.g. 'arxiv:2310.12345' or 'pmc:PMC1234567'.
max_passagesNoMaximum passages to return per call (default 40, max 200).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds meaningful behavioral context: pagination mechanism and the pointer fallback for unindexed papers, which 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise, front-loaded sentences convey the core function, pagination usage, and fallback behavior without any wasted words. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only nature, full schema parameter coverage, and annotations covering safety, the description covers key usage scenarios and fallback behavior. It doesn't enumerate return fields (no output schema exists), but that is not critical for a retrieval tool with clear pagination semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters are fully described in the schema, so baseline is 3. The description adds value by explaining the relationship between from_seq and max_passages for paging, and gives an example corpus key format, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns full text of an indexed open-access paper by corpus key, with pagination details. It distinguishes from sibling tools like paper_search and paper_details by explicitly mentioning the fallback pointer behavior, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear instructions on using from_seq and max_passages for pagination, and references paper_search/paper_details for non-indexed works. While it doesn't explicitly say 'use this only when you have a corpus key,' that condition is strongly implied by the description and example.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paper_statusA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds valuable context about what is reported (catalog and indexed corpus details), surpassing the bare annotation information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is well-structured, front-loading the purpose and providing key details without excess. Every part serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description comprehensively explains the tool's output (works count, indexed counts, breakdowns, timestamp), making it fully complete for a status report.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (dry_run) is fully described in the schema, so schema coverage is 100%. The description does not add extra meaning about the parameter, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reports scholarly store status, listing specific components (OpenAlex catalog size, local D1 indexed corpus counts, per-source breakdown, refresh timestamp). This distinguishes it from sibling 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking overall database status, but does not explicitly state when to use it versus alternatives or provide exclusions. Usage context is implied but not fully articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parcel_coverageA
Read-onlyIdempotent
Inspect

List which states/counties the parcel tools currently cover and how many parcels each holds. Coverage grows by state over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint; the description adds that coverage grows over time, reinforcing the openWorldHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the key action, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only metadata listing tool with full annotation coverage and a single parameter, the description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the single dry_run parameter fully; description adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists covered states/counties and parcel counts, distinguishing it from sibling tools like parcel_details which focus on individual parcels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied as checking coverage before using parcel tools, but no explicit when-to-use or alternative guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parcel_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo2-letter state code. Coverage: 'MD' (Maryland statewide) or 'TX' (Harris County / Houston only). Defaults to MD.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
account_idYesParcel account id (from parcel_search).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, etc. The description adds value by specifying the exact fields returned and explicitly stating what is excluded (owner name), going beyond the annotation hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. The first lists key returned fields efficiently; the second clarifies scope. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description sufficiently covers input (account_id), output (listed fields), and context (use with parcel_search). It does not mention dry_run behavior, but the schema already covers that parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents parameters. However, the description adds meaning by listing the output fields, which helps an agent understand how account_id maps to the returned data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool gets the full parcel record by account ID, listing specific fields (address, assessed value, etc.). It clearly distinguishes from siblings like parcel_search (which provides account IDs) and parcel_sales_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: you need an account_id from parcel_search. It sets expectations by stating 'no owner name,' but does not explicitly say when not to use or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parcel_sales_historyA
Read-onlyIdempotent
Inspect

Get the recorded sale history (price + date, no party names) for one parcel by account id. Useful for valuation, appreciation, and comp analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo2-letter state code. Coverage: 'MD' (Maryland statewide) or 'TX' (Harris County / Houston only). Defaults to MD.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
account_idYesParcel account id (from parcel_search).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the output includes price, date, and no party names. This is useful but does not address potential limitations or data source specifics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences: one stating the function and one providing use-case context. Every word adds value, and it is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no output schema, the description adequately explains what the tool returns (price, date, no party names). It does not specify output format or ordering, but this is acceptable given the tool's low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage. The description reinforces that 'account_id' is the key parameter but does not add new meaning for 'state' or 'dry_run' beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and specifies the resource 'recorded sale history (price + date, no party names) for one parcel by account id'. It provides enough detail to understand the tool's core function, though it does not explicitly differentiate from siblings like 'parcel_details' or 'property_value_history'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions that the tool is 'useful for valuation, appreciation, and comp analysis', which gives context for when to use it. However, it does not provide explicit guidance on when not to use it or how it compares to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patent_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
patent_idYesUSPTO patent id, e.g. '10757852'.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the return field list but no behavioral traits beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is efficient and front-loaded with the key action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with good annotations and full schema coverage, the description is complete. It specifies the input (patent_id) and output fields, leaving no ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description includes an example for patent_id but adds no additional meaning beyond what the schema provides. Baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches full details for a single patent by its USPTO patent_id, provides an example, and lists the returned fields. This is specific and distinguishes it from sibling tools like patent_search or patent_assignee_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you have a patent_id. It does not explicitly state when not to use or mention alternatives, but the context is clear for a single patent fetch. Slight lack of exclusion guidance prevents a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patent_recentA
Read-onlyIdempotent
Inspect

List the most recently granted US patents since a start date (defaults to 30 days ago), newest first. Useful for monitoring newly issued patents.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 25, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
start_dateNoGrant-date lower bound (YYYY-MM-DD). Defaults to 30 days ago.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds behavioral details beyond annotations: the default time window (30 days) and the 'newest first' ordering. It does not mention pagination or output format, but these are less critical given the safety annotations and simple purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence states the core function and default behavior; the second offers a use case. All content is purposeful and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with no output schema, the description covers the essential behaviors: what it lists, the default date filter, and the ordering. Combined with annotations (safe, idempotent) and schema descriptions for all parameters, it is reasonably complete. It could mention what fields are returned, but that is not strictly necessary for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, dry_run, start_date) are fully described in the input schema (100% coverage), so the baseline is 3. The description repeats the default for start_date but does not add new semantic details beyond the schema. It does add the ordering 'newest first' but that is not parameter-specific. No additional parameter context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies a unique action: 'List the most recently granted US patents since a start date (defaults to 30 days ago), newest first.' It names the resource (US patents), the scope (recently granted, with a default window), and the ordering (newest first). This distinguishes it from sibling tools like patent_search (which searches by criteria) and patent_details (which fetches a specific patent).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: 'Useful for monitoring newly issued patents.' This gives context for when to use the tool. However, it does not explicitly mention when not to use it or name alternatives (e.g., patent_search for topic-based queries). Still, the guidance is sufficient for a simple list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prescriber_ties_profileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npiNoOptional exact 10-digit NPI; overrides name search.
yearNoOptional 4-digit CMS program year (e.g. '2023'); defaults to the most recent year with disclosed payments.
stateNoOptional 2-letter state to disambiguate the NPPES match (e.g. 'OH').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
last_nameNoPrescriber last name (e.g. 'Nissen'). Provide this or an npi.
first_nameNoOptional prescriber first name to disambiguate (e.g. 'Steven').
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds value by detailing data sources, the non-judgmental nature, the name matching logic (no blind top hit), and that a failed source is not fatal. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose. While it includes necessary disclaimers (e.g., not a judgment), it is somewhat lengthy. Every sentence serves a purpose, but it could be slightly more concise without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, but the description outlines the return fields: NPI, specialty, city/state, active status, total dollars, payment count, top manufacturers, associated drugs. This gives a high-level expectation, though details like count or format are omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with brief parameter descriptions. The tool description adds context about how parameters disambiguate (e.g., state for name resolution, npi override) and dry_run behavior, but this is not extensive beyond what the schema implies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides a combined identity and industry-financial-ties transparency profile for a US healthcare prescriber by joining NPPES and CMS Open Payments data. It distinguishes itself from sibling tools like individual npi_lookup or open_payments_search by offering a one-call synthesis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies inputs: provide last_name (with first_name+state) or exact npi. It explains the name resolver's behavior and that a failing source is noted. However, it does not explicitly contrast with sibling tools or advise when to use this combined tool versus separate queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

price_to_rent_ratioA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYesMetro or state name/id (e.g. 'Austin, TX', 'California', or a Zillow region id).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
region_typeNoOptional region type filter: 'metro' or 'state'.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and no destructiveness. The description adds that it is a 'Premium synthesis over the real-estate market store,' indicating it may combine multiple data sources. It also provides the rule-of-thumb interpretation, adding value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each serving a purpose: what it does, what it returns, and a disclaimer. No unnecessary words, front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given lack of output schema, the description explains the return values (ratio and signal) and the rule-of-thumb thresholds. It covers the main use case and limitations, though it could mention handling of missing data or unknown regions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters. The description does not add new meaning beyond what the schema already provides for parameters, though it does explain the overall computation and output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Compute the buy-vs-rent price-to-rent ratio for a US metro or state' with a specific formula (ZHVI / ZORI x 12). It distinguishes from siblings like realestate_home_values and realestate_rents by combining them into a unique ratio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies the tool is for US metro or state regions and includes a disclaimer about it being rule-of-thumb only. It implicitly guides when to use (buy-vs-rent comparison) but does not explicitly name 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.

product_liability_screenA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOptional lower-bound date (YYYY-MM-DD) for FDA recalls.
stateNoOptional 2-letter state to scope the CFPB complaint leg (e.g. 'CA').
companyNoAlias for manufacturer; either may be supplied.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
manufacturerYesManufacturer or brand name to screen (e.g. 'Peloton', 'Fisher-Price').
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds significant behavioral context: the tool joins three legs, any failed leg is 'noted, not fatal', returns a rolled-up risk rating, and emphasizes it is 'informational public-record synthesis, NOT legal advice'. This provides transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at about six sentences, front-loaded with the core purpose and data sources. Every sentence adds information, though it could be slightly trimmed without losing clarity. Structure is good.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description fully explains what is returned: a rolled-up read (CLEAN/WATCH/ELEVATED LIABILITY SIGNALS) with recall count/severity, litigation hits (total + last 3 years), complaint volume, and an itemized interpretation. It also covers failure behavior. This is complete for a screening tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds value by explaining the purpose of the three data sources and how parameters like 'since' (for FDA recalls) and 'state' (for CFPB complaints) scope those legs, but it does not add much new syntax or 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'one-call product-safety + liability read for a MANUFACTURER or brand' and explicitly lists the three data sources joined. It distinguishes itself from sibling tools by stating that NHTSA vehicle recalls are out of scope and handled by recall_screen.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (consolidated screening across recalls, litigation, and complaints) and explicitly notes an exclusion (NHTSA vehicle recalls) with a pointer to an alternative. However, it does not explicitly list other when-not scenarios or compare directly to similar siblings like cpsc_recall_search or court_case_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

property_lookupA
Read-onlyIdempotent
Inspect

Look up real estate property data by street address or account number. Returns property owner name, 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 "who owns this house?", "how much is this property worth?", "what's the tax value of this address?", "what are the property details?", or any real estate lookup. Coverage note: currently demo dataset for Montgomery County, TX (sample properties only). Full live coverage of all Texas counties via ATTOM/Estated is available as a paid upgrade. Email support@livedatalink.ai to enable real CAD data on your account.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesStreet address or appraisal district account number
countyNoCounty name (default: montgomery)montgomery
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as read-only and idempotent. The description adds useful context about the return fields and the demo-only coverage, which is valuable beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose first, then details, example questions, and a note. It is concise but the coverage note is slightly lengthy; still overall good.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists all return fields, covers limitations, and explains how to upgrade. It lacks pagination or error details, but for a simple lookup tool this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The tool description does not add significant new parameter-level information beyond what the schema provides, so a baseline of 3 is suitable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool looks up property data by address or account number and lists returned fields. It does not explicitly differentiate itself from many sibling tools with similar purposes, so a 4 is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives example questions but lacks guidance on when not to use it versus alternatives like property_search_area or parcel_details. Coverage limitations are mentioned but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

property_search_areaA
Read-onlyIdempotent
Inspect

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 properties with addresses, owners, values, and property types.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNo5-digit ZIP code to search within
countyNoCounty name (default: montgomery)montgomery
streetNoStreet name to search (e.g., 'Main St')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
subdivisionNoSubdivision or neighborhood name
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is clear. The description adds that the tool returns 'a list of properties with addresses, owners, values, and property types,' which is useful behavioral detail beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a list of example queries, all front-loaded with the core purpose. No wasted words; each sentence adds value. Structurally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers return fields (addresses, owners, values, property types). All 5 parameters are optional with no required params, which is fine. Could mention the default county or dry_run preview behavior, but schema fills that gap. Overall complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all 5 parameters have descriptions). The description mentions 'zip code, subdivision, neighborhood, or street name' but does not add meaning beyond the schema's parameter descriptions. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for real estate properties in a geographic area, listing specific filters (zip, subdivision, street). Examples of questions like 'what homes are in this zip code?' make the purpose concrete. This distinguishes it from sibling tools like property_search_owner or property_lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit example questions that trigger this tool, effectively indicating when to use it. It implicitly excludes owner-based or single-property searches, but does not explicitly reference alternative sibling tools. Still, the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

property_search_ownerA
Read-onlyIdempotent
Inspect

Search for real estate properties by owner name. Find all properties owned by a person, family, trust, LLC, or company. Supports partial name matching. Use this for questions like "what properties does John Smith own?", "find all land owned by this company", "who owns property in this area?", or any property ownership search. Returns addresses, values, property types, and account numbers for all matching properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
countyNoCounty name (default: montgomery)montgomery
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
owner_nameYesFull or partial owner name to search for
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=true, destructiveHint=false) already indicate safe read operation. The description adds that it supports partial name matching and returns specific property details, which is useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise with front-loaded purpose. A few example questions add clarity but slightly increase length, though overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explicitly states returns (addresses, values, property types, account numbers) and mentions partial matching. With 3 simple parameters, it is fully complete for an agent to understand usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented in the schema. The description does not add additional meaning or usage details beyond what the schema provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for real estate properties by owner name and lists the returned fields. It distinguishes from sibling tools through the explicit 'by owner name' focus, but does not directly contrast with similar tools like property_search_area.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit example questions ('what properties does John Smith own?') indicating appropriate use. However, it does not specify when not to use this tool or mention alternatives, so context is clear but exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

property_value_historyA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
countyNoCounty name (default: montgomery)montgomery
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
account_numberYesCounty appraisal district account number
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and destructiveHint, indicating safe, non-destructive behavior. Description adds value by detailing what data is returned (market value, land value, improvement value, percentage change). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences with a list of example questions. Front-loaded with the core purpose. The list of questions adds clarity but could be trimmed. Overall efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool without output schema, the description covers return values (year-by-year breakdown of market value, land value, improvement value, percentage change). Lacks specifics on number of years or pagination, but sufficient for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is documented in the schema. The description adds minor context by reiterating the account_number requirement and advising to use property_lookup first. Does not significantly deepen understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it gets property value history and tax assessment trends over multiple years. Provides specific examples of questions it answers ('how has this property's value changed?', 'appreciation rate?'). Differentiates from sibling tools like property_lookup by focusing on multi-year valuation trends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists example questions showing when to use. Indicates prerequisite: requires account number and suggests using property_lookup first. Provides clear context but does not explicitly state when NOT to use or mention alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pypi_packageA
Read-onlyIdempotent
Inspect

Look up a Python (PyPI) package: latest version, summary, license, author, homepage, and required Python version. Keyless.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPyPI package name, e.g. 'requests'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds 'Keyless' but does not disclose any other behavioral traits such as caching, rate limits, or data freshness. With good annotation coverage, the description adds only marginal value beyond what is already structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, complete sentence that immediately conveys the tool's purpose and outputs. No extraneous information, perfectly front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple lookup tool with clear input and listed output fields. It does not explain the return format (e.g., JSON structure), but given the simplicity and common pattern, it is mostly complete. Minor gap: no mention of error handling or empty results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters fully described. The description does not add any parameter information beyond what is in 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Look up a Python (PyPI) package' and lists specific fields (latest version, summary, license, author, homepage, required Python version). It distinguishes this tool from sibling tools like 'npm_package' or 'cargo_crate' by explicitly mentioning PyPI.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes 'Keyless' indicating no authentication required, which guides usage. However, it does not explicitly state when to use this tool over alternatives or provide scenarios where it should not be used. The context from sibling tools (e.g., npm_package) implies it's for Python packages, but missing explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rdap_domainA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name, e.g. 'example.com'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable context such as being keyless and the specific data fields returned, going beyond annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, zero unnecessary words, front-loads the core functionality, and efficiently communicates purpose and value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with few parameters, no output schema, and strong annotations, the description sufficiently covers all aspects needed for an agent to decide when and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with clear descriptions (100% coverage). The description adds no new parameter-level detail beyond schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves registration records for a domain via RDAP, listing specific fields (registrar, dates, status flags, nameservers, DNSSEC) and use cases (due diligence, OSINT). It is distinct from sibling tools like rdap_ip.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says the tool is useful for due diligence and OSINT on a company's web presence. While it does not mention when not to use it, the context is clear and separates it from similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rdap_ipA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIPv4 or IPv6 address, e.g. '8.8.8.8'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds value beyond annotations by stating it is keyless and listing the output fields. Annotations already convey read-only and idempotent nature, so the description complements well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the core purpose and list key outputs. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool, high schema coverage, and comprehensive annotations, the description fully covers what an agent needs for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both ip and dry_run adequately described. The description does not add new parameter-level meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves ownership records for an IP address via RDAP, listing specific data fields (network name, organization, ASN, CIDR, country). Implicitly distinguishes from rdap_domain (domain RDAP) and explicitly pairs with ip_reputation and entity lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions keyless access and pairing with complementary tools, providing context for when to use this tool. However, lacks explicit guidance on when not to use it or comparison with rdap_domain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

realestate_home_valuesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYesMetro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, openWorld, idempotent, and non-destructive hints. The description adds value by detailing the output (latest, 1-year, 5-year ago values and percent change), compensating for the lack of an output schema. No additional behavioral traits (e.g., rate limits) are disclosed, but given the safe annotations, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose and output, second instructs on parameter usage. No unnecessary words, front-loaded with key info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description effectively explains what the tool returns and how to use it. It could optionally mention error handling or data source, but overall is complete given the tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (region, dry_run) are already well-documented. The description only reiterates 'Pass a region name or id' without adding new semantic meaning, meeting baseline expectations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the typical home value (Zillow Home Value Index) for a metro or state, specifying it returns latest, 1-year ago, 5-year ago values and percent change. This distinguishes it from sibling tools like realestate_rents (rents) or property_value_history (property-level).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells users to pass a region name or id, implying usage context. However, it does not explicitly mention when not to use this tool or provide alternative tools for property-level data, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

realestate_rentsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYesMetro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by detailing the data range (latest, 1-year, 5-year ago) and the source, providing behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the core purpose and output, with no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema), the description sufficiently explains what it returns. It covers the essential context for an agent to invoke it correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema clearly describes both parameters. The description adds minimal extra meaning by reinforcing 'Pass a region name or id', but does not provide additional semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Get the typical asking rent'), the data source ('Zillow Observed Rent Index'), and the specific output ('latest value plus 1-year and 5-year-ago values and percent change'). It distinguishes from sibling tools like realestate_home_values by focusing on rents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides clear instructions on input ('Pass a region name or id') but does not explicitly state when to use this tool versus alternative real estate tools. However, the purpose is specific enough that an agent can infer its usage for rent data queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

realestate_statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool's safety is clear. The description adds value by disclosing the specific data source and metrics reported, which is useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences delivering key information with no wasted words. It is front-loaded with the main purpose and supported by data context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers the output and data source. Minor omission: it doesn't explain how to interpret the metrics, but this is not critical for a status tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (dry_run) is fully described in the schema (100% coverage). The description does not add further meaning to this parameter, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states what the tool reports: real-estate store coverage metrics including number of regions, total monthly data points, latest month, and last refresh. It specifies data source (Zillow Research ZHVI + ZORI) and level (metro and state). This differentiates it from sibling tools like realestate_home_values or realestate_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used to get an overview of data coverage, but it does not explicitly state when to use it versus alternatives. No when-not or exclusion criteria are provided, leaving the agent without clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

realestate_trendA
Read-onlyIdempotent
Inspect

Get the monthly time series of home values (ZHVI) or rents (ZORI) for a metro or state, to chart or analyze the trend.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricNo'home_value' (ZHVI, default) or 'rent' (ZORI).
monthsNoHow many recent months to return (default 24, max 360).
regionYesMetro or state name (e.g. 'Austin, TX', 'Houston', 'Texas') or a Zillow region id.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the tool returns time-series data and supports two metrics (ZHVI/ZORI), which is useful but limited. It does not mention output structure, data source, or dry_run behavior beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary action and resource. Every word contributes value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple time-series retrieval tool with comprehensive annotations and 100% schema coverage, the description adequately covers the core purpose. It does not explain the exact return format, but the absence of an output schema is mitigated by the implied 'time series' nature. It could mention the dry_run parameter's purpose, but that is already in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description merely repeats the metric and region choices already described in the schema. It adds no additional meaning for parameters like 'months' or 'dry_run', so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('monthly time series of home values or rents'), and the scope ('for a metro or state'). It distinguishes itself from generic search/status tools, though it doesn't explicitly differentiate from the sibling tools 'realestate_home_values' and 'realestate_rents' which may offer single-metric snapshots.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context ('to chart or analyze the trend') but does not mention when to use this tool versus the more specific sibling tools. No exclusions or alternative recommendations are given, so the 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.

recall_screenA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoProduct, keyword, or manufacturer to screen (e.g. 'infant formula', 'Acme Corp').
sinceNoOptional lower-bound date (YYYY-MM-DD) for FDA recalls.
domainsNoOptional subset of sources to check; default checks all applicable.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
vehicle_makeNoVehicle make (e.g. 'Toyota').
vehicle_yearNoVehicle model year (required with make+model for NHTSA).
vehicle_modelNoVehicle model (e.g. 'Camry').
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint, etc.), the description details behavioral traits: cross-source normalization, deduplication, severity rolling, and handling of source failures. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that efficiently conveys key information. It is front-loaded with purpose. While slightly lengthy, every sentence adds value. Could be improved with bullet points but is still effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool complexity, absence of output schema, and rich annotations, the description is remarkably complete. It covers sources, input types, processing (dedup, severity), failure handling, and verification advice. All relevant aspects are addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds context for the 'query' and 'vehicle_*' parameters, explaining their role. It also explains the 'dry_run' parameter behavior. This goes beyond simple schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a one-call sweep across CPSC, openFDA, and NHTSA for product safety recalls, specifying input types and outputs. It distinguishes itself from sibling tools by being a cross-source composite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for broad recall search across multiple domains, with explicit mention of the sources. It suggests verifying with official sources but does not explicitly contrast with individual domain tools; context from sibling list helps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recreation_facility_detailB
Read-onlyIdempotent
Inspect

Full record for a single federal recreation facility by its RIDB FacilityID: contact, GPS, reservation URL, accessibility, agency.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
facility_idYesRIDB FacilityID, e.g. '234064'.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds some value by specifying returned fields (contact, GPS, etc.), but does not disclose potential error behavior or rate limits. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 20 words, concise and front-loaded with the purpose. It could be slightly more structured, but it is efficient with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters, no output schema, and annotations cover safety, the description lists key return fields. However, it omits details on the dry_run parameter, error handling, and result format, leaving some gaps for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds minimal parameter meaning beyond what's in the schema, listing return fields but not detailing parameter usage. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns a 'Full record' for a single facility by FacilityID, listing included fields (contact, GPS, etc.). It is a specific verb+resource, but does not differentiate from sibling tools like recreation_nearby or recreation_search_facilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any when-to-use or when-not-to-use guidance, nor does it reference alternatives. It only implies that the tool is for getting details when a FacilityID is known.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recreation_nearbyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesCenter latitude.
lonYesCenter longitude.
limitNoMax rows (1-50, default 10).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
activityNoOptional activity filter.
radius_kmNoRadius in kilometers (default 30, max ~320).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds context about federal recreation facilities and radius units, but does not disclose return format, pagination, or default behaviors beyond what the schema already indicates, which is acceptable for a simple read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose and immediately followed by concrete examples. Every sentence adds value, with no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex (6 params, no output schema), but the description clearly explains what it does, when to use it, and the key radius unit. Given the rich schema and annotations, the description is sufficiently complete for an agent to select and invoke the tool correctly, though it omits details about return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a description (e.g., radius_km 'Radius in kilometers'). The description reinforces the radius meaning and the coordinate center, but does not substantially add new parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'List federal recreation facilities within a radius of a coordinate', specifying the verb (list), resource (federal recreation facilities), and scope (radius of a coordinate). This distinguishes it from sibling tools like recreation_facility_detail or recreation_search_facilities, which focus on details or searching rather than proximity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases ('campgrounds near a property, fishing spots near a city'), making it clear when to apply this tool for proximity searches. It does not explicitly state when not to use it or name alternatives, but the context is sufficient guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recreation_search_campsitesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (1-50, default 10).
queryNoFree-text match on campsite name. Optional.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
facility_idNoRIDB FacilityID to list campsites within. Optional.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint, idempotentHint, and destructiveHint already present, the description adds useful behavioral context by explaining the two search strategies (facility-scoped listing vs free-text) and the types of campsite attributes involved. It does not contradict annotations and appropriately omits side effects for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the core purpose and then detailing the two invocation patterns. Every word earns its place, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and the presence of read-only annotations, the description is largely complete for typical use. However, it does not clarify what happens if neither facility_id nor query is provided—whether the tool returns all campsites, errors, or behaves differently. This is a notable but minor gap for a search tool with optional parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds the insight that facility_id and query are alternative search modes, but this is more of a usage clarification than additional parameter 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches individual campsites within a campground, and specifies the searchable attributes (loop, accessibility, type, reservable). This distinguishes it from sibling tools like recreation_search_facilities and recreation_search_recareas by focusing on campsite-level granularity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides two explicit usage modes: providing facility_id to list sites in a known campground, or using a query for free-text search. This gives clear context on how to invoke the tool, though it does not explicitly state when not to use it or name alternatives like recreation_search_facilities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recreation_search_facilitiesA
Read-onlyIdempotent
Inspect

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (1-50, default 10).
queryNoFree-text match on facility name.
stateNoTwo-letter state code, e.g. 'CA'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
activityNoActivity name (CAMPING, FISHING, HIKING, etc.).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is well covered. The description adds scope context (agencies, facility types) but does not disclose additional behavioral traits such as return format, pagination, or limitations beyond what annotations already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a two-sentence, front-loaded summary that wastes no words. It efficiently conveys the core function, scope, and example filters without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With all five parameters fully documented in the schema, robust annotations covering safety, and a clear description of the search scope and filters, the description is complete enough for an agent to select and invoke the tool correctly. No output schema exists, but the search nature makes the return behavior inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all five parameters already described clearly. The description repeats filter-by-name/state/activity but adds no new 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Search'), the resource ('US federal recreation facilities'), and enumerates facility types and agencies. It distinguishes itself from sibling tools like recreation_search_campsites and recreation_search_recareas by covering general facilities across multiple agencies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use: searching federal recreation facilities with filters by name, state, or activity. It does not explicitly name alternatives or exclusions, but the agency/facility scope and filter examples imply when this tool is appropriate relative to more specialized siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recreation_search_recareasA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (1-50, default 10).
queryNoFree-text match on recreation-area name.
stateNoTwo-letter state code.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
activityNoActivity name.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds semantic context (areas vs facilities) but does not disclose additional behaviors such as result pagination, rate limits, or whether state is required. No contradiction exists with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences accomplish everything: the first states the action and scope, the second provides the sibling distinction. No filler, no redundancy, front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with all-optional parameters, the description is complete enough to support correct invocation. It lacks output shape details, but since there is no output schema, this is a minor gap that doesn't impair an agent's ability to choose and call the tool. Annotations and schema handle the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter (limit, query, state, dry_run, activity) having its own description. The description's mention of 'name, state, or activity' maps to those parameters but adds no new detail beyond the schema. Baseline 3 is appropriate when the schema already documents everything.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') with a clearly defined resource ('federal recreation AREAS') and provides concrete examples ('a whole national forest, a national park unit, a BLM management area'). It also explicitly distinguishes from the sibling tool recreation_search_facilities by scope, so an agent knows exactly what this tool covers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives explicit when-to-use guidance: use this for higher-level place search and recreation_search_facilities for specific facilities. This names the alternative and defines the boundary, making the usage context unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reg_cfr_sectionA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional point-in-time ISO date yyyy-mm-dd; defaults to current.
partYesCFR part, e.g. '98'.
titleYesCFR title number 1-50, e.g. 40.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
sectionYesCFR section, e.g. '98.411'.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the description adds return-value details: plain text, current-as-of date, and eCFR URL. It also mentions 'current text,' implying the result can change over time, which is useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose, and no redundant wording. The example and return-value list are compact and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description compensates by listing return values (text, date, URL) and the input requirements. It is adequate for a simple read-only lookup; it doesn't cover edge cases like non-existent sections, but complexity is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all parameters with descriptions (100%), and the description reinforces them with a concrete example (title 40, part '98', section '98.411'). It also clarifies how date and dry_run fit into the intended use, adding value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool retrieves the current text of a specific CFR section, naming the resource and verb precisely. It distinguishes from sibling tools like reg_cfr_search by emphasizing a specific section lookup rather than search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context by instructing the user to provide title, part, and section with a concrete example. It does not explicitly contrast with alternatives, but the specificity of the task implies a lookup use case, and sibling search tools are implicitly alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reg_cfr_titlesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds only that it returns names and dates, which is useful but not critical beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundancy. Front-loaded with purpose and immediate value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A simple listing tool with no output schema; description adequately covers purpose, output fields, and relation to sibling. No missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for parameter dry_run with description. Tool description does not mention the parameter, but schema already suffices. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists the 50 CFR titles with name and date, and explicitly mentions its utility in discovering title numbers before using reg_cfr_section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Useful for discovering title numbers... before calling reg_cfr_section', giving clear when-to-use and linking to an alternative sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reg_documentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
document_numberYesFederal Register document number, e.g. '2026-09905'.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by detailing the specific return fields (title, type, agencies, etc.) and clarifying that it returns a 'leading excerpt' rather than the full body.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first defines purpose and parameter, second lists return fields. No redundant information, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately lists return fields (title, type, agencies, etc.). However, it omits details like excerpt length, error handling, and the fact that it only returns a single document, but this is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds an example for document_number ('2026-09905') and explains the dry_run parameter's purpose (preview behavior), which is helpful but not critical.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('Federal Register document'), and uniquely identifies it by document number. It clearly distinguishes from sibling tools like reg_search and reg_cfr_* which focus on searches or CFR sections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you have a specific document number, but does not explicitly state when to prefer this over alternatives like reg_search, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_entityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikNoOptional SEC CIK hint.
einNoOptional EIN for an exact IRS 990 nonprofit match.
nameYesCompany or organization name to resolve (e.g. 'Apple', 'Lockheed Martin', 'Red Cross').
stateNoOptional 2-letter state to disambiguate nonprofit/EPA name searches.
tickerNoOptional stock ticker hint to pin the SEC EDGAR match (e.g. 'AAPL').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare safe, idempotent, non-destructive. Description adds that failing sources are noted but not fatal, and details the return structure (confidence, entity-type, ownership). No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Moderately long but well-structured: starts with purpose, details return, notes. Every sentence adds value; could be slightly more concise without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description carries full burden. It explains return format (canonical IDs, confidence, entity-type, ownership), failure handling, and omitted sources. Adequate for complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). Description adds meaning: hints are optional, dry_run behavior explained, and each parameter's role in the resolution process is clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool resolves entities by cross-referencing multiple data sources, listing specific identifiers and contrasting with sibling 'entity_dossier'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly calls it a 'join-key primitive to run before other combos', mentions optional hints, warns about verifying identifiers, and lists unwired sources. Could add explicit when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_get_changesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matches to return. Defaults vary per tool.
sinceYesISO date string (e.g. 2026-01-01) to compute the delta from.
sourceYes
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds a key behavioral detail: it relies on a cached snapshot rather than a live delta feed. This helps set expectations about data freshness without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The first sentence states the core purpose; the second adds necessary context for understanding the implementation. Excellent structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides the essential purpose and implementation caveat, and the schema handles parameter details. Missing return format, but no output schema exists and the tool is simple. It's adequate 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 3 of 4 parameters with descriptions; the description restates 'since a given ISO date' and 'chosen source list' but adds no new parameter-level detail beyond the schema, such as the meaning of limit or dry_run, which are already described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Return entities added or updated since a given ISO date for a chosen source list'), identifying both the resource (entities) and the filtering criteria. This distinguishes it from sibling tools like sanctions_get_entity, which likely returns a single entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the constraints of the upstream data ('The four official lists do not all expose a public delta feed') and justifies the tool's method ('filters the cached snapshot by listedOn'), giving the agent context for when this tool is appropriate. However, it does not explicitly name alternatives or situations where other sanctions tools should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_get_entityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntity ID from a screening result, e.g. "OFAC_SDN-44705".
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description adds context about ID self-description and source but no further behavioral details. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no unnecessary words. The action verb 'Fetch' is front-loaded, and the ID format example is helpful. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple fetch operation, and the description combined with annotations covers the essential aspects. No output schema exists, but the return value is implied. Slight gap: does not specify what fields are in the 'full record', but acceptable for a fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining that the ID is self-describing and includes the source, and that it comes from a screening result. This supplements the schema's parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a full record by entity ID, specifying the ID format and source (from screening result). It distinguishes from sibling tools like sanctions_screen_entity and sanctions_search_alias by requiring a concrete entity ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool is used after obtaining an entity ID from a screening result, providing clear context. It does not explicitly state when not to use or list alternatives, but the sibling tool names and context signal the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_screen_addressA
Read-onlyIdempotent
Inspect

Match a physical address against listed addresses. Useful for KYC / supplier vetting when the counterparty's name is generic but the address is distinctive.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matches to return. Defaults vary per tool.
addressYesFree-form address string.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
sourcesNoRestrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL.
thresholdNoMinimum confidence score (0..1) for a result to be returned. Defaults to 0.85.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it matches against 'listed addresses,' but does not disclose matching behavior (e.g., fuzzy vs exact), confidence threshold semantics, or output details. With annotations covering the safety profile, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action ('Match a physical address against listed addresses') and followed by a practical use case. There is no redundancy or fluff; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema (5 params, all documented) and annotations (read-only, idempotent), the description adds crucial context about when to use the tool. It does not explain output structure, but no output schema exists and the schema already covers parameters. It is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters (address, limit, threshold, sources, dry_run) are already well-documented in the schema. The description does not add parameter-level detail beyond reinforcing that 'address' is a physical address. Baseline 3 is correct when the schema carries the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Match a physical address against listed addresses.' This clearly states the tool's function and distinguishes it from sibling tools like sanctions_screen_entity (which screens entities) and sanctions_screen_batch (which handles batches). The added KYC/supplier vetting use case reinforces its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use-case signal: 'Useful for KYC / supplier vetting when the counterparty's name is generic but the address is distinctive.' This tells an agent when to prefer this tool, though it does not explicitly name alternatives or exclusion conditions. Since sibling names are visible, the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_screen_batchA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matches to return. Defaults vary per tool.
namesYesArray of names to screen. Max 50.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
sourcesNoRestrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL.
thresholdNoMinimum confidence score (0..1) for a result to be returned. Defaults to 0.85.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (read-only, idempotent, non-destructive), the description adds important behavioral traits: it returns one result block per input, preserves input order, and each name counts as one screen for billing. These details are not captured in the annotations and help the agent anticipate costs and output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, brief and front-loaded with the core purpose. The second sentence adds critical operational details (output order and billing) without any fluff or redundancy, making every word valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description discloses the high-level return structure (block per input, in order) and billing implications, which is helpful. However, it does not describe the contents of each result block (e.g., match IDs, confidence scores), leaving a small but notable gap in what the agent can expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already describes each parameter (100% coverage), the description adds meaningful context by tying the 'names' parameter to billing ('each name counts as one screen') and clarifying that the output is one block per input. This goes beyond the schema's basic type and max-item info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Screen up to 50 names in a single call' with a specific verb and resource. It distinguishes itself from single-entity screening tools by emphasizing batch processing and output per input, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly conveys the batch use case ('in a single call') and the 50-name cap, which clearly signals when to use it. However, it doesn't explicitly compare with alternatives like sanctions_screen_entity or state when not to use it, so it lacks direct exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_screen_entityA
Read-onlyIdempotent
Inspect

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. Free tier: 50 screens/month; standard rate $0.05/screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName or entity string to screen.
limitNoMaximum matches to return. Defaults vary per tool.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
sourcesNoRestrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL.
thresholdNoMinimum confidence score (0..1) for a result to be returned. Defaults to 0.85.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds valuable context: the specific lists screened, that results include confidence scores, and the cost/free tier. This goes beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no fluff. It front-loads the main purpose, then adds return type and pricing, all in a well-structured manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is largely complete: it covers purpose, target lists, output type, and commercial constraints. There is no output schema, so the brief mention of 'matches with confidence scores' provides basic return info. It lacks explicit guidance on choosing batch/address siblings and details on output structure, but these are minor given the schema covers parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so per the rubric baseline is 3. The description mentions the four lists (matching the 'sources' enum) and confidence scores (relevant to threshold), but these are already documented in the schema. It adds no significant meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Screen a single name or entity'), the target resource (the four major sanctions/denied-party lists), and distinguishes from sibling tools by emphasizing 'single' (vs batch/address screening). It names the exact lists, leaving no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by saying 'single name or entity', which implies this is for individual screening rather than batch or address screening. However, it does not explicitly mention alternative tools like sanctions_screen_batch or sanctions_screen_address, so no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_search_aliasA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matches to return. Defaults vary per tool.
queryYesAlias / AKA to search for.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
sourcesNoRestrict screening to a subset of source lists. Defaults to all four. Allowed: OFAC_SDN, EU_CFSP, UN_SC, BIS_DPL.
thresholdNoMinimum confidence score (0..1) for a result to be returned. Defaults to 0.85.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by revealing that only alias fields are matched, not the full entity record, which is meaningful beyond structured fields. It does not describe result formatting, but the schema documents dry_run and threshold.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver purpose and differentiator with zero filler. The action is front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with rich schema coverage, the description plus annotations give an agent enough context to select and invoke it. It names a sibling alternative and explains the matching scope. The only minor gap is not describing the result shape, but no output schema exists and the rule says that need not be covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for query, limit, sources, threshold, and dry_run. The description adds little beyond reinforcing that matching targets aliases, which is already implied by the tool name and query param description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Search aliases / AKAs across selected lists.' It names the distinguishing scope (alias-only matching) and explicitly contrasts with screen_entity, so the tool's purpose is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance by distinguishing from screen_entity and stating that alias-only matching is 'helpful when the primary listed name differs sharply from the popular spelling.' This directly addresses alternative selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_status_summaryA
Read-onlyIdempotent
Inspect

Counts and last-update timestamps for all four lists in the cache. No screening is performed; this call is free.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, etc. The description adds that it operates on a cache (no upstream calls) and is free, providing useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. The first sentence states the core function, and the second provides critical qualifiers (no screening, free call). Ideal structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status tool with one optional parameter and no output schema, the description adequately explains what it does and its limitations. It could list the four lists explicitly but is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the only parameter dry_run is fully described in the schema. The description does not add parameter information, so it meets the baseline without enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns counts and last-update timestamps for all four cache lists, specifying the resource and action. It distinguishes from sibling sanctions tools that perform screening or entity lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'No screening is performed; this call is free,' indicating it is for quick cache status checks. While it does not list alternatives, the context of sibling tools makes the use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_available_datasetsA
Read-onlyIdempotent
Inspect

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 284 tools across 50+ data domains: finance (stocks, options), 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), federal grants (Grants.gov funding opportunities), and product recalls (CPSC / SaferProducts.gov). New domains ship weekly based on which queries customers actually run. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesWhat data the user is looking for (e.g., 'trucking safety', 'stock prices', 'property records', 'VIN lookup')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, open-world, idempotent, non-destructive. Description adds that it logs searches to a roadmap database and that high-frequency unmet queries jump the build queue, plus it costs no credits. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and usage instructions. It lists many data domains, which adds length but is informative. Could be slightly more concise, but structure is logical and each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's role as a discovery meta-tool for a vast catalog, the description is comprehensive. It lists domains, explains behavior (logging, build queue), cost, and expected input/output. No output schema, but the description adequately covers return value (tool names and logging notes).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters (query and dry_run). The description does not add significant extra meaning beyond the schema; it only implies query usage context but no syntax or format details. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's a guide to LiveDataLink's entire data catalog, meant to be called first when unsure which tool to use or about data availability. It lists many domains and specifies it returns exact tool names, distinguishing it from sibling tools that are data-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Call this FIRST when you're unsure which tool to use, or when the user asks about data availability.' Provides example queries like 'what data do you have?' and notes it costs no credits. While it doesn't explicitly say when not to use, the context makes it clear it's for discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

security_exposureA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorNoOptional vendor to narrow the NVD CPE match (e.g. 'apache', 'openbsd').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
productYesProduct or package name to assess (e.g. 'log4j', 'openssl', 'struts').
versionNoOptional version string (informational; shown in the report).
max_cvesNoMax CVEs to pull from NVD for analysis (default 40).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Alongside annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false), the description adds rich behavioral context: it specifies the data sources fanned out to, the exact number of NVD calls per invocation, edge-case behavior for no matches, and per-source unavailability handling. It also states 'INFORMATIONAL security research, not advice,' which is a valuable disclaimer beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though longer than typical descriptions, every sentence earns its place: the main purpose, data sources, return values, edge cases, resource behavior, and scope exclusions are all covered without redundancy. The structure is front-loaded with the primary goal and flows naturally into details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (five parameters, multiple upstream sources, no output schema), the description is complete enough for an agent to understand what the tool does, what it returns, and how it behaves in edge cases. It covers return semantics, error conditions, and limitations, making it self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the parameters, providing descriptions for each, so the baseline is 3. The description adds some semantic context by explaining that vendor+product or keyword are used for NVD CVE search and that max_cves influences the analysis, but it does not systematically explain each parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'One-call known-vulnerability exposure for a vendor/product/package' and lists the specific data sources it aggregates (NVD, CISA KEV, FIRST EPSS, MITRE CWE). It distinguishes itself from single-purpose sibling tools like cve_lookup or epss_score by emphasizing the aggregate one-call nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you need a broad vulnerability exposure assessment rather than a single CVE lookup or EPSS score. It also states an explicit exclusion: 'Package-registry maintenance/staleness signals are out of scope for this tool,' clarifying what it should not be used for. However, it does not explicitly name alternative tools for those use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spending_award_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
award_idYesGenerated award id from spending_search_awards.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds value by listing the returned fields. It does not introduce any contradictions and provides context about the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's functionality and key output fields. It is front-loaded and contains no unnecessary words, making it easy for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters, no output schema), the description covers the essential input requirements and output content. It does not mention error handling or edge cases, but that is acceptable for a well-defined lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions award_id but does not add extra semantic detail beyond the schema. The dry_run parameter is not referenced in the description, but its purpose is already covered by the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves full details for one federal award using award_id. It lists the specific fields returned (recipient, amount, type, agencies, etc.), making the purpose unambiguous. It also implicitly distinguishes from the sibling 'spending_search_awards' tool, which returns a list of awards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies that the award_id must be the generated id from spending_search_awards, providing clear prerequisite usage. It does not explicitly state when not to use it or mention alternatives, but the context is sufficient for an agent to understand the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spending_recipient_summaryA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoTop awards to list (default 5, max 25).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
categoryNoAward category: 'contracts' (default), 'grants', 'loans', or 'other'.
recipientYesRecipient company/org name.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to cover safety. It adds a useful default behavior ('contracts by default') and output summary, but does not go deeper into response structure or data source limitations. This is moderate added context beyond annotations, consistent with a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is just two sentences. The first sentence front-loads the purpose and output, and the second sentence adds a clear use case. No wasted words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should indicate what the tool returns, and it does: 'total dollars and top awards'. It also conveys the default category and the tool's read-only nature via annotations. It could be more detailed about the structure of 'top awards' (e.g., award IDs, dates), but it is sufficiently complete for an agent to invoke correctly given the comprehensive schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning every parameter (recipient, category, limit, dry_run) is already documented in the schema. The description only restates 'contracts by default' and does not add new meaning to any parameter, so it earns the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Summarize') and identifies the resource ('a company's federal awards') with concrete output details ('total dollars and top awards') and constraints ('for a recipient name in a category, contracts by default'). It clearly distinguishes from sibling tools like spending_award_details (which likely details a single award) and spending_search_awards (which searches awards).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use the tool ('Useful for due diligence and to see who the government pays'), providing clear context. However, it does not explicitly mention alternatives or exclude any use cases, 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.

spending_search_awardsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 10, max 50).
agencyNoAwarding agency name, e.g. 'Department of Defense'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
keywordNoFree-text keyword across the award.
categoryNoAward category: 'contracts' (default), 'grants', 'loans', or 'other'.
recipientNoRecipient company/org name, e.g. 'Lockheed Martin'.
min_amountNoMinimum award amount in USD.
fiscal_yearNoFederal fiscal year, e.g. 2024.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by specifying the return fields and sort order (by amount), but does not disclose other behavioral aspects like rate limits or pagination beyond the schema's limit parameter. This aligns with the get_calls calibration where annotations plus some useful context earned a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence that covers the source, filters, return fields, and sort order without redundancy or fluff. Every phrase contributes useful information, and it is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 optional parameters and no output schema, the description compensates by clearly listing the return fields and sort order. It also names the data source and filter types. Minor gaps remain, such as not specifying the default category (contracts) or the direction of sorting (ascending/descending), but these are available in the schema and do not undermine overall completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 8 parameters. The description adds no new parameter semantics beyond listing a few filter fields (recipient, keyword, agency, fiscal year, min amount) that are already in the schema. Therefore the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches federal awards (contracts, grants, loans) from USAspending.gov, with specific filter criteria and return fields. This distinguishes it from siblings like spending_award_details (which likely fetches a single award) and spending_recipient_summary (which aggregates by recipient).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the primary use case (searching federal awards) and lists the filter dimensions (recipient, keyword, agency, fiscal year, min amount), giving clear context for when to use this tool. However, it does not explicitly exclude alternatives or mention when one might prefer spending_award_details or spending_recipient_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stock_compareA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
symbolsYesTicker symbols, 2-5 stocks. Accept either CSV string ("AAPL,MSFT,GOOGL") or array (["AAPL","MSFT","GOOGL"]).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds that it returns a comprehensive list of financial metrics. However, it doesn't specify behavior for invalid symbols or edge cases like more than 5 stocks. The description is largely consistent and adds value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first defines the action and output, the second provides usage examples. Both are front-loaded with critical 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 parameters, one required, no output schema), the description adequately covers what the tool does and what it returns. However, it lacks details on error handling, data source freshness, or the exact format of output fields. For a straightforward comparison tool, this is sufficient but could be slightly more thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides clear descriptions for both parameters (symbols and dry_run), covering 100% of the schema. The description adds only the constraint '2 to 5 stocks' which is already implied by the tool name and purpose. This is a marginal improvement over the schema, so a baseline of 3 is justified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: comparing 2-5 stocks side by side. It lists the specific metrics returned, and provides example queries ('compare Apple and Microsoft', 'which is a better investment, NVDA or AMD?'). This differentiates it from sibling tools like stock_quote (single stock) or stock_quote_batch (batch quotes without comparison metrics).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly gives usage examples and suggests use cases ('Use this for...'). While it doesn't explicitly state when not to use or mention alternatives, the examples and context (comparison queries) make it clear. A slight improvement would be to mention alternatives like stock_quote for single stock queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stock_historyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime range (default: "1mo")
symbolYesStock ticker symbol (e.g., "AAPL")
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
intervalNoData interval (default: "1d")
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, destructiveHint, idempotentHint. The description adds that it supports dry_run and explains the range options, adding useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste; front-loads the core purpose and immediately follows with examples and usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description covers return type (OHLCV) and examples. With 4 parameters well-documented, it's nearly complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds value by explaining how period and interval work together and giving default values, aiding parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets historical stock price data with specific fields (OHLCV) and lists many example queries, distinguishing it from current-price tools like stock_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Excellent examples and supported ranges, but does not explicitly mention when to use alternatives like stock_quote for current prices. Context is clear but lacks a direct 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.

stock_quoteA
Read-onlyIdempotent
Inspect

Get a real-time 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., "AAPL", "MSFT", "TSLA")
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds that it returns real-time data and lists fields, which is helpful but does not significantly expand beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and return data, followed by example queries. No filler, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple tool with 2 params, high schema coverage, rich annotations, and no output schema, the description covers purpose, return fields, and usage examples adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters. The description does not add extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a real-time stock price and market data' and lists returned fields. The name and description distinguish it from siblings like stock_history, stock_compare, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides example queries ('what's the stock price of X?', 'how is AAPL doing?') indicating when to use. It does not explicitly state when not to use, but the context is clear for a single real-time quote.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stock_quote_batchA
Read-onlyIdempotent
Inspect

Get real-time 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
symbolsYesTicker symbols, max 10. Accept either CSV string ("AAPL,MSFT,GOOGL") or array (["AAPL","MSFT","GOOGL"]).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, non-destructive. Description adds return content (comparison table with price, change, volume, etc.) and real-time nature, which aligns and adds value without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, return format, usage examples. No redundant words, efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool without output schema. Description covers all key aspects: action, resource, limit, return fields, and use cases. Minor missing details like error behavior, but not critical for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all parameters (100%). Description adds that symbols accepts CSV string or array, and max 10. This enhances clarity beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Get', resource 'real-time stock prices for multiple stocks', and constraint 'up to 10'. It distinguishes from siblings like stock_quote (single) and stock_compare, as shown in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases ('show me FAANG stocks', 'compare tech stock prices', etc.). Does not explicitly contrast with single-stock or compare tools, but context implies when to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sun_timesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees (positive north).
lonYesLongitude in decimal degrees (negative west).
dateNoDate, 'YYYY-MM-DD'. Defaults to today (UTC).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
tz_offsetNoHours from UTC applied to output times, e.g. -7 for US Pacific Daylight Time. Default 0 (UTC).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds valuable behavioral details: computation uses NOAA equations (no third-party API), default UTC output, tz_offset shifts, and polar day/night reporting. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured paragraph covering purpose, method, output details, special cases, and use cases. Every sentence adds value without redundancy. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explains return values (times in UTC, shifted by tz_offset), handles polar day/night, and lists use cases. For a read-only, idempotent tool with good annotations, this is fully sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 5 parameters. The description adds context beyond the schema: examples for tz_offset (e.g., -7 for PDT), date defaults to today, and dry_run behavior. This enriches parameter understanding, though the schema already covers basics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes sunrise, sunset, solar noon, and civil twilight for any lat/lon and date. It distinguishes itself from sibling tools like weather or tide predictors by focusing on solar position calculations. The verb 'compute' and specific resources (sunrise, sunset, etc.) make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: daylight planning, photography golden-hour timing, agriculture, and energy calculations. While it doesn't explicitly mention alternatives or when not to use, the context is clear enough for an agent to decide. A brief note on alternatives would elevate to 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

supplier_esg_scorecardA
Read-onlyIdempotent
Inspect

One-call, resale-safe ESG / supplier-risk read for a company - no proprietary ESG-rating license needed. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoOptional 2-letter state to disambiguate the EPA facility search (e.g. 'PA').
companyYesCompany / supplier name to score (e.g. 'US Steel', 'Tyson Foods').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations (readOnlyHint, idempotentHint, destructiveHint) by detailing the tool's behavior: it joins three public-record legs, correctly filters false positives, handles failing legs gracefully ('not fatal'), and clarifies the output is informational signals. This fully discloses the tool's non-destructive, read-only nature and its idempotent behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose in the first sentence, then breaks down each data leg, then explains returns and caveats. At 3-4 sentences, it is concise for the complexity but could be trimmed slightly (e.g., 'Joins three public-record...' sentence is long). Still, it earns its sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, full schema coverage, and no output schema, the description provides a thorough overview of what the tool returns (scorecard dimensions, rolled-up risk level, evidence). It does not specify pagination or size limits, but for a read-heavy tool with presumably small result sets, this is acceptable. The absence of an output schema is compensated by the narrative description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (company, state, dry_run) are fully described in the input schema (100% coverage), so the description need not add much. However, it does add value by explaining the purpose of 'dry_run' (validate without spending queries) and how 'state' disambiguates EPA searches. This goes slightly beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'One-call, resale-safe ESG / supplier-risk read for a company' using three public-record data sources. It distinguishes itself from siblings by explicitly stating it is NOT an ESG rating, credit report, or investment advice, and by naming the specific data legs (EPA, recalls, litigation) that differentiate it from other tools like 'company_info' or 'entity_dossier'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: for a quick, resale-safe ESG/supplier-risk assessment without needing proprietary licenses. It does not explicitly state when not to use it or name alternatives, but the context and sibling tools make the intended use clear. A more explicit exclusion (e.g., 'not for detailed litigation analysis') would push this to 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

support_resistance_levelsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesUS ticker (e.g. 'TSLA').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
lookback_daysNoTrailing daily bars to derive levels from (default 180).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context by explaining the heuristic nature of the levels ('HEURISTIC levels for research, not investment advice') and the methodology (daily pivots, round numbers), going beyond the basic safety profile without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the core action, provides methodological detail, and ends with a critical caveat. This is appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with a good schema and annotations, the description provides sufficient context on inputs and outputs (levels, close). It does not detail the exact return format, but given no output schema, the overview ('key support/resistance price levels', 'nearby round-number levels', 'latest close') is adequate for an agent to understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions for symbol, dry_run, and lookback_days. The tool description adds minimal extra meaning beyond the schema (e.g., 'recent daily pivots' echoes the lookback concept), so it does not exceed the baseline expected when schema fully documents parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Return'), the resource ('support/resistance price levels for a US ticker'), and the method ('from recent daily pivots (swing highs/lows) plus nearby round-number levels'). It also specifies the scope ('US ticker') and includes the latest close for context, distinguishing it from related siblings like stock_quote or stock_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when support/resistance levels are needed) but does not explicitly state alternatives or when-not-to-use conditions. The caveat 'for research, not investment advice' provides some usage context, but no direct comparison to other tools is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

talent_market_briefA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
metroNoOptional 5-digit CBSA/metro code (e.g. '12420' Austin, TX). OEWS metro coverage varies; an unmatched metro is noted, not fatal.
stateNoOptional 2-letter state code or 2-digit FIPS (e.g. 'TX', '48'). Omit for a national read.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
soc_codeNoExplicit 6-digit SOC occupation code, with or without a dash (e.g. '29-1141' registered nurses, '15-1252' software developers). Overrides 'occupation'.
occupationYesFree-text occupation to map to a SOC code (e.g. 'registered nurses', 'software developers', 'electricians'). Provide this or 'soc_code'.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it discloses that the BLS OEWS leg is keyless, the Census leg requires an API key and degrades gracefully, and the result is informational not a guarantee. No contradiction with annotations (readOnlyHint, idempotentHint, etc.).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear summary sentence, then details data sources, outputs, parameters, and behavior. Every sentence adds value, with no redundancy. Length is appropriate for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description explains return values: a brief with headline (employment, median/mean wage, market tightness), wage percentiles, and per-source evidence. It covers edge cases (unmatched metro, graceful degradation) and lists market tightness bands. Sufficient for agent to understand results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters are described fully in the schema, and the description enriches them with context: explains the relationship between 'occupation' and 'soc_code', the optionality of 'state'/'metro', and the purpose of 'dry_run'. Examples are provided (e.g., 'registered nurses', '29-1141').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: a one-call read for hiring feasibility and cost for an occupation in a US geography. It specifies the data sources (BLS OEWS and Census ACS), the outputs (employment level, wage distribution, market tightness), and distinguishes itself from sibling tools that query individual sources (e.g., census_*, bls_*).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use the tool (for a quick summary of hiring landscape) and mentions graceful degradation if no Census API key is set. It does not explicitly state when not to use or name alternative tools, but the context of siblings and the composite nature makes it clear. Lacks explicit exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tide_predictionsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude in decimal degrees. Used with lon to pick the nearest station when no station id is given.
lonNoLongitude in decimal degrees (negative west).
datumNoTidal datum: MLLW, MSL, MHW, etc. Default MLLW.
unitsNo'english' (feet) or 'metric' (meters). Default english.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
stationNoNOAA CO-OPS station id, e.g. '9414290'. Optional if lat and lon are given.
end_dateNoEnd date (inclusive), 'YYYY-MM-DD'. Defaults to begin_date + 1 day.
begin_dateNoStart date (inclusive), 'YYYY-MM-DD'. Defaults to today.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true. The description adds context about the public API, date range inclusivity, local time, and tidal datum, plus the dry_run parameter for preview. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph of about 80 words. It front-loads the purpose, then efficiently covers usage alternatives, data source, and use cases. No redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what is returned (high/low tides, times and heights, date range, local time, datum). However, it lacks detail on the exact output format (e.g., list of objects with fields). Given no output schema, slightly more specificity would improve completeness. Still, it is sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description adds value by explaining the logic of choosing between station and lat/lon, defaults for datum and units, and the purpose of dry_run. This goes beyond just restating parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns high and low tide predictions, specifies the data source (NOAA CO-OPS public API), and distinguishes it from sibling tools by focusing on tides. It uses specific verbs and resource identifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases (tide tables, beach/boating planning, coastal scheduling) and explains the two methods to specify a station (station id or lat/lon). It does not explicitly contrast with sibling tools like sun_times or water_levels, but the tidal context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

treasury_auctionsA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
security_typeNoFilter by security type: 'Bill', 'Note', 'Bond', 'TIPS', 'FRN'.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful context about the recency ('Recent') and the contents of the response, but does not disclose potential rate limits, pagination, or output format. This is consistent with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core resource and followed by the key filter. No filler or redundant content. Every phrase adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with well-documented parameters and safe annotations, the description is nearly complete. It lists the returned data fields, compensating for the lack of an output schema. It could mention default behavior (e.g., how many results are returned by default) but the schema covers the limit parameter. Overall it is well-suited for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents all three parameters (limit, dry_run, security_type). The description only reiterates the security_type filter and does not add parameter-level meaning beyond what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool provides: recent US Treasury securities auction results. It lists the specific data fields returned (term, CUSIP, dates, yields, etc.), making the resource and scope unambiguous. It also distinguishes itself from sibling treasury tools by naming 'auction results' specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need auction results) and mentions an optional filter, but does not explicitly say when to use this tool over alternatives like treasury_interest_rates or treasury_debt. No exclusions or alternative tool names are given, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

treasury_cash_balanceA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful data context (TGA, source, units) but no behavioral traits like update frequency, default date range, or data quality caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main identifier (daily operating cash balance) and no filler. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two optional meta-parameters and strong annotations, the description fully identifies the data. A minor gap is not mentioning the historical range or default ordering of results, but the simplicity and annotations make it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (limit, dry_run) are fully described in the input schema with 100% coverage, so the description adds no additional parameter semantics. Baseline 3 applies per the rubric when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely identifies the resource as the US Treasury's daily operating cash balance (Treasury General Account), names the source (Daily Treasury Statement), and specifies the unit (millions of dollars). This clearly distinguishes it from sibling treasury_* tools like treasury_debt or treasury_interest_rates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description defines what data is returned but does not mention use cases, exclusions, or contrast with sibling treasury tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

treasury_debtA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_dateNoLatest record date (YYYY-MM-DD).
start_dateNoEarliest record date (YYYY-MM-DD).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior. The description adds that it is keyless and from official Treasury data, but does not disclose further behavioral traits like pagination, rate limits, or whether the full history is always returned. This is adequate 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose and key details. Every clause adds value—source, series name, output scope, segmentation, and access requirements. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with complete schema parameter descriptions, the description adequately covers purpose, output scope, and breakdown. With no output schema, it could be more explicit about return format (e.g., fields and data types), but the essential information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all 4 parameters, so the baseline is 3. The description does not add parameter-level detail beyond the schema; it only hints at output structure (public vs intragovernmental) rather than clarifying filter or limit semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns US total public debt outstanding from the 'Debt to the Penny' series, including the most recent figure and history split into public and intragovernmental holdings. This specific verb+resource combination distinguishes it from sibling treasury tools like treasury_auctions or treasury_cash_balance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is implied by the subject matter—debt outstanding—but there is no explicit guidance on when to use this tool versus alternatives, nor any mention of exclusions. The 'Keyless, official Treasury data' hint provides minimal access context but does not clarify use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

treasury_exchange_ratesA
Read-onlyIdempotent
Inspect

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return.
queryNoCountry or currency name to match, e.g. 'Canada', 'Euro Zone', 'Japan'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint. The description adds useful behavioral context: the data source (official US Treasury), publication frequency (quarterly), and the filtering pattern. It does not describe return format or pagination, but the schema covers parameters, and the annotations cover safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and source, followed by a concise usage example. Every sentence contributes value, with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 optional params, good annotations, no output schema), the description is complete: it states what, source, frequency, and how to use it. The schema documents parameters fully, so the description does not need to repeat them. The example usage and quarterly cadence provide sufficient context for an agent to select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reinforces the query parameter with examples but does not add meaning beyond what the schema already provides for limit and dry_run. The query examples ('Canada', 'Euro', 'Yen') are also present in the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides Official US Treasury Reporting Rates of Exchange, specifying the resource (exchange rates) and the context (US government agencies converting foreign currency to dollars). It distinguishes from sibling treasury tools like treasury_interest_rates and treasury_auctions by focusing on exchange rates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: 'Provide a country or currency to filter, e.g. Canada, Euro, Yen.' It implies when to use the tool (for exchange rate lookups) but does not explicitly mention when not to use it or alternatives. The quarterly publication note is useful context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

treasury_interest_ratesB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
securityNoFilter by security type/description, e.g. 'Treasury Notes', 'Bills', 'TIPS'.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds monthly granularity and the set of covered securities, which is useful context but does not disclose behavior like default ranges or pagination. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that conveys the core data and optional filtering. Efficient without extraneous detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only data tool with no output schema, the description covers the basic subject and optional filtering, but omits details like the default number of rows, available time periods, and the effect of dry_run, which may require the agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, dry_run, security) have descriptions in the schema, so the description adds little beyond restating the optional security filter. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as monthly average interest rates on US Treasury securities, listing examples like Bills, Notes, TIPS. It is distinct from sibling treasury tools (auctions, cash balance, exchange rates) but does not explicitly differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus treasury_exchange_rates or other treasury tools. The only usage note is the optional security filter, which is a parameter detail rather than usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trials_detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nct_idYesClinicalTrials.gov NCT id, e.g. 'NCT02562313'.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, destructiveHint, idempotentHint) already indicate safe read-only behavior. The description adds beyond by specifying returned fields and study URL, providing useful context on what the tool does without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence clearly states the tool's purpose, input format (with example), and output fields. No unnecessary words; information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists return fields comprehensively. Combined with annotations (safe, idempotent, read-only) and schema covering parameters, the description is complete for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters (100%) with basic descriptions. The description adds concrete meaning: an example NCT ID and a list of fields returned, which helps an agent understand the expected input and output beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets full details for a clinical trial by NCT ID, listing specific fields returned. This distinguishes it from sibling tools like trials_search (for searching) and matches the tool name 'trials_details'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have an NCT ID and need detailed info, but does not explicitly state when not to use or compare to alternatives like trials_search. The example helps, but guidelines are mainly inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tx_wells_nearA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude of the center point (WGS84), e.g. 31.9974.
lonYesLongitude of the center point (WGS84), e.g. -102.0779.
limitNoMax wells to return (default 25, max 100).
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
radius_kmNoSearch radius in kilometers (default 1.5, max 10).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds 'keyless public record' (no auth required), enumerates the returned fields (API well number, type/status, breakdown by type), and explicitly excludes operator/production/date data. This adds value beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is five sentences, each with a distinct purpose: core function, return format, usage helper, geographic scope, and data limitations. It is front-loaded with the main purpose and contains no filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only geospatial search tool, the description is quite complete: it explains what it returns, how to prepare inputs (geocode_address), the geographic scope, and exclusions. It lacks a precise response schema, but it describes the type/status breakdown. The absence of an output schema is partially mitigated by the description's enumeration of returned fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with detailed descriptions for all 5 parameters, including defaults and ranges. The description only restates 'longitude/latitude and a radius' and does not add extra meaning about limit, dry_run, or radius_km beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Find') and resource ('Texas oil & gas wells') and cites the Texas Railroad Commission (RRC) public well map. It clearly distinguishes from sibling ok_wells_search by naming Texas, and lists the main return fields (API well number, well number, type/status).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs to 'Use geocode_address first' for address-based inputs, which is a direct workflow guideline. It also states that operator, production volumes, and permit dates are not in this layer, setting clear expectations and when-not-to-use boundaries. Geographic context (Permian/Eagle Ford) helps with regional relevance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_earthquake_detailA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
event_idYesUSGS event ID (e.g. 'us7000m5dt'). Get from feed or search results.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds value by specifying the precise data returned (origin, magnitude details, focal mechanism if available, shake-map link, felt reports, tsunami flag, impact estimates), which is beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load purpose and output summary. No redundant words; every piece of information is relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main output fields but lacks mention of error handling or edge cases (e.g., invalid event ID). However, given the no-output-schema and high annotation coverage, it is fairly complete for a detail retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds minimal value, only hinting that event_id comes from feed or search results. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Get full detail' and the resource 'a specific earthquake event by USGS event ID'. It enumerates key return fields (origin, magnitude, etc.) which distinguishes it from sibling tools like usgs_earthquake_feed (list) and usgs_earthquake_search (search).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a specific event ID is available and detailed information is needed. It does not explicitly state when not to use or list alternatives, but the context from sibling tool names (feed, search) provides contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_earthquake_feedA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime window (default 'day')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
min_magNoMinimum magnitude threshold (default '2.5')
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint, idempotentHint, and no destructiveness. Description complements by detailing what the tool returns (events with specific fields) and explains the dry_run parameter, adding behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences: first states purpose and filter options, second describes output. No unnecessary words, well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only feed tool with no output schema, the description adequately covers what is returned. It could mention pagination or result limits, but overall it provides sufficient information for an agent to understand the tool's functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have schema descriptions covering 100%, but the description adds practical semantics by listing allowed enum values for period and min_mag, explaining defaults, and clarifying the dry_run behavior. This goes beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it is a USGS earthquake summary feed filtered by period and minimum magnitude, listing valid enum values. It specifies the returned data fields (magnitude, location, depth, URL), distinguishing it from sibling tools like usgs_earthquake_search and 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains the tool returns all events worldwide above a threshold within a period, giving context for when it is appropriate. However, it does not explicitly state when to use this tool versus alternatives like usgs_earthquake_search, nor does it provide when-not conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usgs_water_realtimeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sitesNoComma-separated USGS site codes (e.g. '01646500')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
state_cdNoTwo-letter state code; returns all active sites in the state
parameter_cdNoUSGS parameter code (default '00060' streamflow). Common: 00060=streamflow, 00065=gage height, 00010=water temp, 00400=pH
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is clear. The description adds value by specifying the data freshness ('real-time') and the data source (USGS NWIS), which are 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences: the first states the tool's core function, and the second lists filters and use cases. It is front-loaded and contains no unnecessary words, earning its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and 4 well-documented parameters, the description covers the essential filtering options and use cases. It does not explain the return format, but for a data retrieval tool with strong annotations, this is acceptable and sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description enhances the schema by providing concrete examples for parameter_cd (e.g., '00060' = streamflow cfs) and clarifying that state_cd returns all active sites in a state, adding practical meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Real-time water data from USGS NWIS streamgages,' specifying a clear verb-resource pair and the exact data source. It distinguishes itself from potentially similar tools like 'water_levels' by mentioning streamgages and specific filter parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists use cases ('flood-stage monitoring, drought tracking, and hydrological research') but does not provide explicit when-not-to-use guidance or mention alternative tools. The usage context is implied but not fully prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_recallsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesVehicle make (e.g., 'Toyota', 'Ford')
yearYesModel year (e.g., 2020)
modelYesVehicle model (e.g., 'Camry', 'F-150')
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds that returns all NHTSA recall campaigns with details, but does not disclose rate limits, data freshness, or whether output includes remedy steps. With annotations covering safety, this level is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with main purpose, no filler. Every sentence adds value: purpose, example queries, and output summary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description explains output content (affected component, description, safety risk, recommended remedy) despite no output schema. Covers typical user intents. For a simple lookup tool with strong annotations, this is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% - all parameters have descriptions. The tool description does not add new meaning beyond the schema; it just reiterates the parameters. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Check for safety recalls on a vehicle by year, make, and model.' It references NHTSA and provides example queries, distinguishing it from other recall tools in siblings like cpsc_recall_search or fda_drug_recalls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description includes example natural language queries ('are there recalls on my car?', 'check recalls for 2020 Toyota Camry') indicating when to use. However, it lacks explicit when-not-to-use or alternatives among the many recall tools in siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vin_decodeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYes17-character Vehicle Identification Number (VIN)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint, idempotentHint, and non-destructive behavior. The description adds detailed behavioral context, such as the dry_run parameter behavior and the scope (US vehicles). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the main action. While it includes a useful list of example phrases, it could be slightly more concise. Overall, it is structured well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description comprehensively lists return attributes (year, make, model, etc.) and explains scope (US vehicles). It also covers the dry_run behavior, making it complete for a read-only lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with adequate descriptions for both parameters. The description does not add new semantic meaning beyond the schema, maintaining the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Decode a Vehicle Identification Number (VIN) to get full vehicle specifications,' with a detailed list of returned attributes. It clearly identifies the tool's function and distinguishes it from siblings like vehicle_recalls by focusing on decoding rather than recalls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit example phrases ('decode this VIN', 'what car is this VIN?') and specifies it works for 'all US vehicles.' However, it does not mention alternatives or when not to use, leaving room for improvement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

water_levelsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude in decimal degrees. Used with lon to pick the nearest station when no station id is given.
lonNoLongitude in decimal degrees (negative west).
datumNoTidal datum: MLLW, MSL, MHW, etc. Default MLLW.
unitsNo'english' (feet) or 'metric' (meters). Default english.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
stationNoNOAA CO-OPS station id, e.g. '9414290'. Optional if lat and lon are given.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds specific return fields (datum, observation time, standard deviation) and mentions 'keyless public API' and 'public-domain data', which complement annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, each sentence adding distinct information. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description adequately explains what is returned (water level, time, standard deviation). It could be more thorough about error handling or edge cases (e.g., no station found), but overall covers core functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%. The description adds value by clarifying that either station ID or lat/lon is used, with automatic nearest station selection, and explains default datum and units.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('return'), resource ('latest observed water level'), and source ('NOAA Tides & Currents station'). It distinguishes from sibling tools like 'tide_predictions' by focusing on observed data vs predictions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (checking current real-world water level vs prediction) and how to specify the station (by ID or lat/lon). It implicitly differentiates from tide_predictions but lacks explicit when-not-to-use or alternative suggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weather_currentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
locationYesCity, zip code, or place name (e.g., 'Houston, TX', '77001', 'Paris')
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds value by listing the weather data fields and stating global coverage, enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured: opens with purpose, lists return fields, provides example queries, and states global scope. Every sentence is meaningful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output schema but compensates by enumerating return fields (temperature, humidity, etc.). Does not specify units, but overall provides sufficient context for a weather tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. The description reinforces the location parameter's scope but adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves current weather conditions, lists specific data fields, and distinguishes from sibling tools like weather_forecast by emphasizing 'current'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides example questions that illustrate when to use the tool, implying context for current weather queries, but does not explicitly exclude scenarios or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weather_forecastA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoForecast days (default: 7)
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
locationYesCity, zip code, or place name
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds specific returned fields and day range, providing extra context beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: front-loaded with purpose, then usage examples, then constraints. No filler; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description fully details what is returned (temperature, conditions, precipitation, wind, UV, sunrise/sunset). Combined with example queries, it provides complete context for a forecast tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds minimal parameter meaning. It mentions 1-16 day support but does not specify default (7 days) that could be inferred from schema's min/max.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns a multi-day weather forecast with specific details like high/low temperatures, conditions, etc. It distinguishes from siblings such as weather_current by focusing on future forecasts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit example queries and use cases (e.g., 'will it rain tomorrow?', 'weekend weather'), effectively guiding when to use. However, it does not explicitly exclude current weather searches, though weather_current sibling exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

worldbank_compareB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
countriesYesComma-separated country codes/names, e.g. 'US,CN,DE,JP'.
indicatorNoIndicator 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.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds no additional behavioral context such as what happens with invalid country codes, the limit of 6 countries, or data recency. It relies entirely on annotations for transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff. It is front-loaded with the core action and uses minimal words to convey the purpose and input format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description does not explain the return format (e.g., table, list, values) or how results are presented. For a comparison tool, this is a significant omission. The input is adequately covered, but the output is not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the description's contribution is limited. It clarifies the format for the 'countries' parameter ('comma-separated') but does not mention the 'dry_run' parameter or elaborate on 'indicator' options beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (compare), the resource (most recent value of a World Bank indicator), and the scope (across multiple countries, up to 6). It distinguishes itself from siblings like worldbank_country_profile and worldbank_indicator by emphasizing cross-country comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a hint on input format ('comma-separated list of country codes or names') but does not explicitly state when to use this tool vs. siblings or under what conditions it is inappropriate. No exclusion criteria or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

worldbank_country_profileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoCountry ISO2/ISO3 code or name (default 'US').
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, not destructive. The description adds that the tool returns the most recent available year for each indicator, which is behavioral transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence that clearly states purpose and lists indicators. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description provides a clear overview of the return content (list of indicators with most recent year values), which is adequate given the tool's simplicity. However, no explicit mention of the return format, but the tool is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already provides full description of parameters. The tool description does not add any further semantic context for the parameters, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it provides a snapshot of key development indicators for a single country, listing specific indicators. This differentiates it from siblings like worldbank_compare and worldbank_indicator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for getting a quick overview of key indicators for one country, but does not explicitly compare with 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.

worldbank_indicatorA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoCountry ISO2/ISO3 code or name (default 'US'). Use 'WLD' for world.
dry_runNoIf true, do not call any upstream data source. Return a preview of what this tool would do (the tool name and the parsed arguments) so an agent can validate a call before spending a query.
end_yearNoEnd year (optional).
indicatorNoIndicator 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_yearNoStart year (optional).
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds that data is keyless and official, but does not disclose additional behavioral traits such as response format, pagination, rate limits, or error handling. Given the strong annotation coverage, the description adds modest value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the core purpose. Every part is necessary and non-redundant. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 5 optional parameters, the description is somewhat minimal. It explains what the tool does but omits details on output structure, data frequency, units, or error handling. Slightly lacking for agents to fully understand the result, but adequate given annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description partially repeats schema info (friendly indicators, country format) but adds the note 'WLD' for world and 'keyless'. Little additional semantic value beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches time series data for a single World Bank indicator and country. It lists specific friendly indicators and mentions country code formats. The purpose is distinct from sibling tools like worldbank_compare (multiple indicators/countries) and worldbank_country_profile (profile data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use this tool (single country, single indicator) and mentions the data is keyless and official. However, it does not explicitly contrast with alternatives like worldbank_compare or worldbank_country_profile, nor does it give guidance on when not to use it. Usage is implied 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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP 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.
    100
    108
    108
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    62 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
    MIT
  • F
    license
    -
    quality
    B
    maintenance
    100+ agent-payable C-suite expertises with x402 micro-payments — competitive intel, SEC filings, sanctions, KYC, clinical evidence, real estate, ESG. 183 tools, free tier 100 calls/month.
    1

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources