MORVS
Server Details
Keyless, read-only access to source-linked US public records: SEC filings and insider activity, FDA and NHTSA recalls, DOJ and federal enforcement, local sanctions and debarment indexes, FINRA short data, EPA, patents, courts, lobbying and federal datasets. 73 tools, each citing the record and its primary source.
- Status
- Healthy
- Uptime
- 100.0% over 17 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 159 tools
Within each register family (e.g. arms_sales_buyer/contractor/notices/summary, drug_money_company/drug/summary, migrant_programs_*) the tools have distinct, well-drawn purposes described at length. But across the 20+ registers there are heavily overlapping general-purpose tools — search, screen_all, screen_batch, dossier, entity_timeline, entity_material_events, cross_vertical_active, compare_entities — that an agent could easily confuse for one another. The detailed descriptions mitigate but do not eliminate the misselection risk at this scale.
Many tools follow consistent prefix+role patterns (agent_access_*, who_gets_your_data_*, super_pac_donors_*, pfas_*, pay_to_play_*), which is good. However there is a substantial set of bare or irregular names (search, news, resolve, watchlist, dossier, screen_all, cluster_buys, short_interest_search vs short_squeeze_candidates) that don't fit a single convention, giving a mixed but still readable surface.
159 tools is far beyond what any single agent can navigate comfortably, well past the 25+/50+ heavy ranges. The scope is genuinely broad (dozens of distinct registers, each needing search/detail/summary), which earns some credit, but the total is an extreme mismatch for one server and would be better split into per-register servers.
Most registers offer a coherent search + entity-detail + summary triad, so per-domain coverage looks strong. But several tools point to external '/coverage' endpoints (cfpb_by_company, sanctions_check) signaling deliberately partial indexes, and the sprawl makes it hard to confirm there are no dead ends for less-covered domains.
Available Tools
159 toolsadviser_searchSearch Investment AdvisersARead-onlyIdempotentInspect
Search SEC-registered investment advisers (RIAs + Exempt Reporting Advisers) by firm name. Returns CRD number, type, regulatory assets under management, state, and whether the firm has Form ADV Item 11 disciplinary disclosures. ~23.4k advisers covered.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Adviser firm name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the covered universe size, that ERAs are included alongside RIAs, and the exact field set returned including the Item 11 disciplinary-disclosure flag. It does not discuss match behavior (exact vs prefix vs fuzzy) for the name query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: scope first, returned fields second, coverage caveat last. Everything is front-loaded and each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of naming the return fields (CRD, type, RAUM, state, Item 11 flag) and the population covered. That is close to complete for a read-only lookup; only ranking/pagination behavior and the name-matching semantics remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both q (name, >=2 chars) and limit (default 25, max 100) are fully documented in the schema; baseline 3 applies. The description reinforces that search is by firm name but adds no syntax, matching, or ordering detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Search SEC-registered investment advisers") and scopes it to firm-name lookup, with explicit inclusion of Exempt Reporting Advisers and the covered universe (~23.4k). It stops short of differentiating from the closest sibling, advisers_flagged, so an agent must infer the boundary between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "by firm name" and by the required q parameter, so an agent can reasonably infer this is the name-lookup entry point. However, there is no explicit when-to-use guidance, no mention of when to prefer advisers_flagged for the disciplinary-disclosure angle, and no stated fallback if the name is not found.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
advisers_flaggedFind Flagged Investment AdvisersARead-onlyIdempotentInspect
SEC-registered investment advisers reporting Form ADV Item 11 disciplinary disclosures (criminal / regulatory / civil), ranked by disclosure count. ~2,291 advisers flagged. Filter by state, type (RIA/ERA), or kind (criminal/regulatory/civil).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Disclosure kind: criminal, regulatory, or civil | |
| type | No | RIA or ERA | |
| limit | No | Max results (default 50, max 200) | |
| state | No | 2-letter state filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuinely useful context beyond that: the result ordering by disclosure count and the approximate dataset size (~2,291 advisers), which helps the agent anticipate result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler. The primary purpose (what the dataset is) is front-loaded, with the filtering options relegated to the trailing clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description compensates by naming the underlying filing (Form ADV Item 11), the ranking dimension, and the dataset magnitude, which is enough for an agent to know what comes back. It stops short of describing pagination behavior for the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter, giving a baseline of 3. The description goes further by spelling out the value vocabularies for 'type' (RIA/ERA) and 'kind' (criminal/regulatory/civil), which the schema lacks as enums and only describes in loose prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (SEC-registered investment advisers), the exact data basis (Form ADV Item 11 disciplinary disclosures), and the ordering (ranked by disclosure count). An agent can distinguish this from adviser_search because the description scopes it to disciplinary-flagged entities only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates the filters (state, type, kind) so the agent can infer how to narrow a query, but it never states when to use this tool versus the sibling adviser_search, nor any exclusions or prerequisites. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ag_census_county_searchSearch Agriculture Census CountiesARead-onlyIdempotentInspect
Search USDA Census of Agriculture by county/state name. Returns the place_id ({state_fips}-{county_code}) to pull a county's farm economy — number of farms, land in farms, market value of products sold, net farm income, and top commodities by sales (2022). Aggregate federal statistic — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | County or state name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world, non-destructive behavior, so the safety profile is covered. The description adds real context beyond that: the place_id key format, the 2022 dataset vintage, and the fact that this is an aggregate federal statistic with zero PII.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the search action and the returned identifier before the downstream payoff. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by specifying the place_id format and what it unlocks. It stops short of describing result shape or pagination behavior for limit, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so q and limit are fully documented in the schema itself. The description adds nothing about parameter semantics (e.g., how partial names match, what limit controls), so the baseline 3 for schema-carried parameters applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and a precisely-scoped resource (USDA Census of Agriculture) filtered by county/state name, and even names the return artifact (place_id). No sibling tool shares this resource, so an agent can route to it without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: search by name to obtain a place_id that another tool consumes for farm-economy figures. There is no explicit when-to-use, when-not-to-use, or named alternative (e.g., crop_insurance_search), leaving the agent to infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_accessFind Closed to Machines RowsARead-onlyIdempotentInspect
Rows and headlines of Closed to Machines, a MORVS register of which public institutions serve an automated client that names itself and gives a contact address, what their robots rules say for each path checked, and where the official route to their data is (US federal agency hosts from the Federal Register's agency list, the 50 state legislatures, the G20 members' national government portals and national law sites, and MORVS's own two hosts; checked weekly by two clients, curl and Python urllib, from one residential US vantage, both sending the same identified user agent). Optional filters: jurisdiction (a jurisdiction or ISO 3166 code the register carries, such as Illinois, US-IL or EU), slice (a slice ID the register carries, such as federal, legislature, g20_portal, g20_law or self), status (a result class ID the register carries, such as refused_held, mixed, refused_unconfirmed, robots_rule_stop, no_answer, served, directory_link_dead or not_checked_by_policy), vendor (an edge responder the register names from response headers, such as Akamai or Cloudflare), token (a product token the register evaluates; each row then shows its home-path verdict for that token) and has_route (true or false). With filters: counts by class (and by home-path verdict for the token) over all matching rows, and up to 25 rows (institution, host, slice, jurisdiction, class, status label and streak, robots state, the home-path verdict, responders, route review state, and the arguments that return the full row). With no inputs: the register's headlines with their basis, the counts by class for each slice, the result-class definitions, and the coverage gaps (rows not checked by policy, dead directory links, rows without a robots reading, and rows with no route review). Nothing here grants permission: a robots rule is a request a site publishes, not a licence, and a page that answered certifies no deeper path. A refusal is the edge's response to this client at a stated time; the vendor named is the responder seen in headers, not the institution's policy, and no record shows a reason. "No answer" (DNS, connection, TLS or timeout) is never a refusal; none_found (reviewed, nothing found where listed) and not_reviewed are kept apart, and neither shows that no route exists. Each answer leads with uncertainty[], then as_of (the cycle date), vantage, the source page on morvs.ai and the licence, and carries the question, vantage, label, robots-not-licence and absence notes (and the self-row note for MORVS's own hosts) and the claim rules. Data more than 9 days old makes each robots verdict and next step unknown, with a note. A failed or malformed read of the register is reported as temporarily unavailable, never as an empty answer. Answers are kept under about 25 KB. Organisations only; officials appear only by office and no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| slice | No | Optional slice ID the register carries, for example federal, legislature, g20_portal, g20_law or self. | |
| token | No | Optional product token the register evaluates, for example GPTBot, ClaudeBot or MORVS; each row then shows its home-path verdict for that token. | |
| status | No | Optional result class ID the register carries, for example refused_held, mixed, robots_rule_stop, no_answer or served. | |
| vendor | No | Optional edge responder named from response headers, for example Akamai or Cloudflare; the responder, never the institution's policy. | |
| has_route | No | Optional true for rows with a reviewed official route listed, false for the others (none_found or not_reviewed). | |
| jurisdiction | No | Optional jurisdiction or ISO 3166 code the register carries, for example Illinois, US-IL, France or EU. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnlyHint=true and openWorldHint=true, the description adds substantial behavioral context: data freshness rules (verdicts become unknown after 9 days), error handling (failed reads reported as temporarily unavailable), response size limits (~25 KB), and nuanced caveats about robots rules not being a licence and refusal vs no answer. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, extremely long and dense paragraph with run-on sentences. The purpose is front-loaded but buried inside a sprawling first sentence, and the volume of detail, while informative, makes it hard to scan. Every sentence may earn its place in terms of content, but the structure is not concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 optional parameters, no output schema, annotations already present), the description is thorough: it covers filtered and unfiltered outputs, response limits, data freshness, error handling, and important caveats about interpretation. An agent has enough context to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the input schema. The description lists the filters and gives examples, but adds little semantic detail beyond what the schema provides—for instance, it repeats that token shows a home-path verdict, which is already in the schema description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies what data the tool returns—rows and headlines from the Closed to Machines register—and details the optional filters. It does not, however, explicitly distinguish itself from sibling tools like agent_access_institution or agent_access_route, leaving the agent to infer its role as the general query endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what happens when filters are provided versus when no inputs are given, which implies usage. But it offers no explicit guidance about when to choose this tool over alternatives such as agent_access_changes or agent_access_check_url, and 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.
agent_access_changesGet Closed to Machines ChangesBRead-onlyIdempotentInspect
The change log of Closed to Machines, a MORVS register of which public institutions serve an automated client that names itself and gives a contact address, what their robots rules say for each path checked, and where the official route to their data is (US federal agency hosts from the Federal Register's agency list, the 50 state legislatures, the G20 members' national government portals and national law sites, and MORVS's own two hosts; checked weekly by two clients, curl and Python urllib, from one residential US vantage, both sending the same identified user agent), from since (a date, YYYY-MM-DD, on or after which entries are returned), with optional host (a host the register covers) and kind (a change kind ID, such as register_created). The log is append-only from the build-day baseline (register_created) and never backfilled: robots-file changes with the home-path verdicts that moved, crawl-delay and Content-Signal changes, home redirect changes, route answer changes, rows added, and a class change once the new class has held three weekly cycles. Returns up to 25 entries, newest leading, or "no change recorded since " with the kinds recorded so far. Nothing here grants permission: a robots rule is a request a site publishes, not a licence, and a page that answered certifies no deeper path. A refusal is the edge's response to this client at a stated time; the vendor named is the responder seen in headers, not the institution's policy, and no record shows a reason. "No answer" (DNS, connection, TLS or timeout) is never a refusal; none_found (reviewed, nothing found where listed) and not_reviewed are kept apart, and neither shows that no route exists. Each answer leads with uncertainty[], then as_of (the cycle date), vantage, the source page on morvs.ai and the licence, and carries the question, vantage, label, robots-not-licence and absence notes (and the self-row note for MORVS's own hosts) and the claim rules. Data more than 9 days old makes each robots verdict and next step unknown, with a note. A failed or malformed read of the register is reported as temporarily unavailable, never as an empty answer. Answers are kept under about 25 KB. Organisations only; officials appear only by office and no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Optional host the register covers, for example www.ilga.gov. | |
| kind | No | Optional change kind ID, lower case with underscores, for example register_created. | |
| since | Yes | Required date (YYYY-MM-DD): entries on or after it, for example 2026-10-30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/idempotent/open-world, while the description adds genuinely operational facts: append-only from a build-day baseline, never backfilled, capped at 25 entries newest-first, verdicts go unknown when data exceeds 9 days, failed reads return 'temporarily unavailable' rather than an empty answer, and responses stay under ~25 KB. A large share of the remaining text is policy caveat (robots-not-licence, refusal vs no-answer) that is useful context but less actionable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One enormous run-on sentence plus several dense paragraphs of disclaimers; the invocation-relevant content (since/host/kind, 25-entry cap, ordering) arrives late. Substantial material — which agencies and countries are registered, curl and urllib checks from a residential vantage, no person is named — is background that does not help an agent decide or call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does cover response shape (uncertainty[], as_of, vantage, source page, notes), failure behavior, staleness and result limits — enough to call it correctly. It is complete on substance but achieves that completeness by dumping everything rather than prioritizing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines since, host and kind with formats and examples. The description echoes the same meaning ('a host the register covers', 'a change kind ID, such as register_created') without adding syntax or selection logic beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The core purpose (a change log of the Closed to Machines register, filtered by since/host/kind) is stated, but it is buried mid-way through a 200-word opening sentence dominated by register provenance detail. Nothing distinguishes it from the closely related siblings agent_access, agent_access_institution, agent_access_route or agent_access_check_url, so an agent cannot tell from the text which entry point to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no sibling is named. The description explains what the register contains and what the answers look like, but never says why an agent would call this change log rather than agent_access or agent_access_institution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_access_check_urlCheck a URL Against Robots RulesARead-onlyIdempotentInspect
What a public institution's published robots rules say for one URL and one product token, from Closed to Machines, a MORVS register of which public institutions serve an automated client that names itself and gives a contact address, what their robots rules say for each path checked, and where the official route to their data is (US federal agency hosts from the Federal Register's agency list, the 50 state legislatures, the G20 members' national government portals and national law sites, and MORVS's own two hosts; checked weekly by two clients, curl and Python urllib, from one residential US vantage, both sending the same identified user agent). Takes url (http or https) and optional product_token (a robots.txt product token such as GPTBot, ClaudeBot or Googlebot; MORVS when omitted). The rules are evaluated under RFC 9309 against the robots.txt text the register archived in its latest cycle, at the exact path and query of the URL; this server never requests the site. Returns robots.result (disallow_rule_matches, allow_rule_matches, no_rule_matches, no_rules_html_served, no_rules_rfc_unavailable, complete_disallow_rfc_unreachable, undetermined_edge_refused, or unknown), the decisive rule with its line, crawl_delay_s and max_requests_per_day where the file sets a delay for the token, the edge observation (the row's result class, status label, streak_weeks and each dated check with its responder), the official machine route where one was reviewed (URL, type, when it answered without a key, the route path's own robots result for the token, terms URL and status) or none_found or not_reviewed, and next_step (use_official_route, stop, no_rule_against_path_check_terms or unknown). The same host gives different verdicts for different paths. A host the register does not cover returns unknown with the absence note. Nothing here grants permission: a robots rule is a request a site publishes, not a licence, and a page that answered certifies no deeper path. A refusal is the edge's response to this client at a stated time; the vendor named is the responder seen in headers, not the institution's policy, and no record shows a reason. "No answer" (DNS, connection, TLS or timeout) is never a refusal; none_found (reviewed, nothing found where listed) and not_reviewed are kept apart, and neither shows that no route exists. Each answer leads with uncertainty[], then as_of (the cycle date), vantage, the source page on morvs.ai and the licence, and carries the question, vantage, label, robots-not-licence and absence notes (and the self-row note for MORVS's own hosts) and the claim rules. Data more than 9 days old makes each robots verdict and next step unknown, with a note. A failed or malformed read of the register is reported as temporarily unavailable, never as an empty answer. Answers are kept under about 25 KB. Organisations only; officials appear only by office and no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Required http or https URL (at most 2,048 characters), for example https://www.ilga.gov/legislation/; its exact path and query are evaluated. | |
| product_token | No | Optional robots.txt product token, for example GPTBot, ClaudeBot or Googlebot; MORVS when omitted. An unlisted token is evaluated without a group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnly/idempotent/openWorld annotations already present, the description adds substantial behavior: the server never requests the site, verdicts go unknown after 9 days, register read failures surface as temporarily unavailable rather than empty, answers are capped near 25 KB, and refusal vs no-answer semantics are spelled out. It also pre-empts a likely misinterpretation by stating that a robots rule is a request, not a licence, and that no record shows a reason for a refusal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and largely earns its place, but it is delivered as a single run-on opening sentence and a wall of subordinate clauses; key facts (no network request, 9-day staleness, default token) are not front-loaded. An agent must parse a paragraph to reach the operational essentials.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with rich enum-style outputs and no output schema, the description enumerates the robots.result classes, the edge observation, the official route sub-object, and next_step, plus absence and error behaviors. Nothing material needed to call or interpret the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description still adds value by explaining that the exact path and query are evaluated (not just the host), that product_token defaults to MORVS when omitted, and that an unlisted token is evaluated without a group. That meaningfully exceeds the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it evaluates a register's archived robots.txt rules for one exact URL and one product token, under RFC 9309, without fetching the site. It implicitly differentiates from siblings like agent_access and agent_access_institution by stressing per-path verdicts ("the same host gives different verdicts for different paths"), but it never names those siblings explicitly. The purpose is unambiguous once parsed, though it is buried inside an enormous opening sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you submit a URL (and optional token) when you want the robots verdict for that exact path. It tells the agent how to read results (next_step values, unknown for uncovered hosts, staleness handling) but gives no explicit when-to-use/when-not versus the many sibling agent_access_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_access_institutionGet a Closed to Machines RowARead-onlyIdempotentInspect
One row of Closed to Machines, a MORVS register of which public institutions serve an automated client that names itself and gives a contact address, what their robots rules say for each path checked, and where the official route to their data is (US federal agency hosts from the Federal Register's agency list, the 50 state legislatures, the G20 members' national government portals and national law sites, and MORVS's own two hosts; checked weekly by two clients, curl and Python urllib, from one residential US vantage, both sending the same identified user agent), in full, found by query (a host, an institution's name as listed, a jurisdiction, an ISO 3166 code, or a row ID such as federal:www.usda.gov; when several match, each in short form with the arguments that return it). Returns the institution, its slice and authority (its Federal Register agency page or MORVS's curated list), the CISA .gov registry match for its domain (domain type, organisation and suborganisation; never a contact), its result class with its definition, status label, streak and class history, the robots.txt facts (status, archive hash, crawl delays, sitemaps, Content-Signal, intent-ambiguity lines and route pointers), the home-path verdict for each product token the register evaluates, grouped as training, search or user-acting (with each token's operator and whether its group follows the operator's own description), the dated checks with their responders, the route review and routes with their terms, the change-log entries for the host, and GSA Site Scanning's record for a federal host; the redacted robots excerpt when it fits. Nothing here grants permission: a robots rule is a request a site publishes, not a licence, and a page that answered certifies no deeper path. A refusal is the edge's response to this client at a stated time; the vendor named is the responder seen in headers, not the institution's policy, and no record shows a reason. "No answer" (DNS, connection, TLS or timeout) is never a refusal; none_found (reviewed, nothing found where listed) and not_reviewed are kept apart, and neither shows that no route exists. Each answer leads with uncertainty[], then as_of (the cycle date), vantage, the source page on morvs.ai and the licence, and carries the question, vantage, label, robots-not-licence and absence notes (and the self-row note for MORVS's own hosts) and the claim rules. Data more than 9 days old makes each robots verdict and next step unknown, with a note. A failed or malformed read of the register is reported as temporarily unavailable, never as an empty answer. Answers are kept under about 25 KB. Organisations only; officials appear only by office and no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Required host, institution name, jurisdiction, ISO 3166 code or row ID, for example www.usda.gov, Illinois, morvs.ai or federal:www.nsa.gov. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, it discloses important behavioral caveats: robots rules are not licences, refusals are edge responses rather than institutional policy, absent data is not proof of no route, stale data beyond 9 days makes verdicts unknown, and failed reads are reported as temporarily unavailable. It also states the response size limit and privacy boundary (organisations only, no named individuals), which materially helps the agent interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense wall of text with nested qualifications and caveats, not front-loaded or structured for quick parsing. While much of the content is useful, it is far longer than needed and would benefit from bullet points or separate sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the absence of an output schema, the description thoroughly enumerates the returned fields: institution, authority, CISA registry match, result class, robots facts, token verdicts, dated checks, routes, change log, and GSA scanning. It also covers data freshness, error handling, and response-size limits, so an agent has enough context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single query parameter is already well documented. The description adds examples and the multiple-match behavior, but does not add syntax or format details beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope — one row of the Closed to Machines register — and explains what that register contains. It does not explicitly differentiate itself from sibling tools such as agent_access, agent_access_changes, or agent_access_route, leaving the agent to infer which one to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies acceptable query forms (host, institution name, jurisdiction, ISO code, row ID) and notes that multiple matches are returned in short form. However, it gives no explicit when-to-use guidance relative to the closely named sibling tools, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_access_routeFind an Institution's Data RouteARead-onlyIdempotentInspect
Official machine routes to a public institution's data (an API, bulk files, a DCAT data.json catalog, a sitemap, a feed or a download page) as reviewed in Closed to Machines, a MORVS register of which public institutions serve an automated client that names itself and gives a contact address, what their robots rules say for each path checked, and where the official route to their data is (US federal agency hosts from the Federal Register's agency list, the 50 state legislatures, the G20 members' national government portals and national law sites, and MORVS's own two hosts; checked weekly by two clients, curl and Python urllib, from one residential US vantage, both sending the same identified user agent). Found by institution_or_host (a host, an institution's name as listed, a jurisdiction, an ISO 3166 code such as US-IL or EU, or a row ID such as federal:www.usda.gov), with optional record_type (a route type the register carries). For each matching row (up to 25): its route review state, kept apart (route: a reviewed route is listed; none_found: reviewed, with the places searched; not_reviewed: no review yet), and for each route its URL and type, the evidence that ties it to the institution (kind, URL, and whether it was re-checked this cycle), the one request's record, when it answered without a key and what that answer confirms, its terms URL (or unknown), its official domain, and the route path's own robots result for MORVS and by token group, evaluated under RFC 9309 from the route host's archived robots.txt. A route that answered once without a key does not show that the data works or may be reused. Nothing here grants permission: a robots rule is a request a site publishes, not a licence, and a page that answered certifies no deeper path. A refusal is the edge's response to this client at a stated time; the vendor named is the responder seen in headers, not the institution's policy, and no record shows a reason. "No answer" (DNS, connection, TLS or timeout) is never a refusal; none_found (reviewed, nothing found where listed) and not_reviewed are kept apart, and neither shows that no route exists. Each answer leads with uncertainty[], then as_of (the cycle date), vantage, the source page on morvs.ai and the licence, and carries the question, vantage, label, robots-not-licence and absence notes (and the self-row note for MORVS's own hosts) and the claim rules. Data more than 9 days old makes each robots verdict and next step unknown, with a note. A failed or malformed read of the register is reported as temporarily unavailable, never as an empty answer. Answers are kept under about 25 KB. Organisations only; officials appear only by office and no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| record_type | No | Optional route type the register carries, for example api, bulk, data_json, sitemap, feed or download_page. | |
| institution_or_host | Yes | Required host, institution name, jurisdiction, ISO 3166 code or row ID, for example www.ilga.gov, Agriculture Department, US-IL or federal:www.usda.gov. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare a safe read-only, idempotent, open-world operation, the description adds substantial behavioral context: uncertainty handling, as_of freshness, vantage, robots-not-licence caveats, route-state distinctions, failed-read semantics, and output size limits. It actively prevents common misinterpretations, such as treating a single answer as permission or a no-answer as a refusal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely long, with multiple nested parentheticals and caveats packed into enormous sentences. The core action and required parameter are buried inside a dense first sentence, making it hard for an agent to quickly scan the tool's purpose and call requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining the returned fields, route review states, uncertainty[] lead, as_of, vantage, source page, and licence. It also covers freshness degradation, malformed-read handling, and absence of permission, so an agent has enough context to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the input schema. The description repeats the supported institution_or_host forms and record_type examples, and adds the useful detail that up to 25 matching rows are returned, but it does not materially expand parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool finds official machine routes to an institution's data, gives the retrieval key, and describes the record types returned. It does not explicitly distinguish itself from sibling tools such as agent_access, agent_access_institution, or agent_access_check_url, so an agent must infer which one to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is useful: looking up an institution's reviewed data route by host, name, jurisdiction, ISO code, or row ID. It does not state when to use this tool instead of nearby siblings or what alternatives exist when a lookup fails or when a different view is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arms_sales_buyerFind Arms Sales Notices by BuyerARead-onlyIdempotentInspect
Look up a buyer government in the Arms Sales Register by a substring of its name, of the purchaser as the notices print it, or of a country string as DOJ prints it in its FARA reports (for example "KOREA, SOUTH"). Returns up to 5 buyers, each with its notices and estimated value notified by year delivered, its rank by estimated value, the purchaser strings as printed, its 5 largest notices by estimated value with their items as printed, and any notice of its that is outside the totals; and, side by side and never added, the FARA money for each DOJ country string mapped to it with that string's own DOJ rank (a buyer mapped to several strings, such as the United Kingdom, shows each string's rank and no single rank of its own), the government and agency principal lines, and the firms registered under FARA for a principal there that also filed 2025 lobbying reports for a named contractor family, the two registrations shown side by side and never sequenced with any notice. FARA money is DOJ's figure for every principal under the country string DOJ prints (companies, parties and media as well as governments), for six-month periods ending in 2025, given with DOJ's footnote that a country or location is not reflective of U.S. foreign policy and does not imply a recognition of sovereignty; registration is a legal disclosure. Each row is a proposed sale notified to Congress, and its value is the estimated value the notice prints: never a price, a signed case, a contract or a payment. The estimated value notified, FARA money, connected-PAC money, lobbying amounts and the inaugural and super PAC records are separate records, shown side by side: never added together and never put in date sequence with a notice. Every answer carries the register's question note: these are proposed sales the Defense Department notified to Congress, as printed in the Federal Register; a notification is not a completed sale, and the records do not show why any sale was proposed or whether it went ahead. Every answer also carries the side-by-side caption, the as-of date, the date the Federal Register copies are printed through, each file's date, the source page on morvs.ai and the licence. Institutions only: no official, signer, lobbyist, treasurer, candidate or member of Congress is named, and single-person firms are withheld and appear only as counts. A name that matches only a withheld string answers exactly like a name that matches nothing. No party label is given and no buyer government is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive buyer name, purchaser as printed or DOJ country string (for example "KOREA, SOUTH"); at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the return shape and many operational constraints: up to 5 buyers, year-delivered estimated values, rank, five largest notices, outside-totals notices, side-by-side FARA records, withheld single-person firms, and the treatment of names matching only withheld strings. It also states important semantic limits, including that values are estimates, not prices or payments, and that records are never added or sequenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is extremely dense and repetitive, repeatedly restating that side-by-side records are never added or sequenced with notices. It contains useful caveats, but they are packed into long run-on sentences that make the definition harder to scan than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a very complex return payload, the description supplies extensive detail about returned fields, value semantics, FARA side-by-side treatment, withholding rules, and legal caveats. An agent would have enough context to understand what the tool returns and how to interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single required name parameter at 100% coverage, including case-insensitivity and an example. The description adds meaningful matching semantics: substring matching across the buyer name, the purchaser as printed in notices, or a DOJ country string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it looks up a buyer government in the Arms Sales Register by substring of its name, purchaser string, or DOJ country string. It also enumerates the returned buyer-level records and distinguishes the buyer view from notice-level data by describing notices, values, ranks, purchaser strings, FARA money, and side-by-side fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this is the buyer-oriented lookup tool for matching a name or country string against the register. However, it never names or explicitly contrasts sibling tools such as arms_sales_notices, arms_sales_contractor, or arms_sales_summary, so the agent must infer the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arms_sales_contractorFind Contractors Named in Arms NoticesARead-onlyIdempotentInspect
Look up a contractor family in the Arms Sales Register by a substring of its reviewed family name or of a company string as the notices print it. Returns up to 5 families, each with the companies the family includes and the strings as printed; the notices naming it by year delivered and by its leading buyers; the estimated value of the notices naming it (shared, never split), with the notices naming it alone, among the companies a competition will choose from, and since January 20, 2025; the joint ventures it is a parent of; and the side columns, each from its own record: its connected PAC's contributions to federal candidates' committees and its contributions to all committees, by FEC cycle (FEC bulk files; no committee it gave to, candidate or party is named), its 2025 lobbying reports (lda.gov; in-house expenses and outside firms' income are each the report's total for all issues and are never added together), the 2025 inaugural committee's report and the reviewed super PAC donors, with the caption. An empty column is a search result, not a fact about the company. Each row is a proposed sale notified to Congress, and its value is the estimated value the notice prints: never a price, a signed case, a contract or a payment. A company appears only as a notice names it, resolved to the register's reviewed family table: the value of the notices naming a family is shared, never split between the companies a notice names, never added across families and never described as company revenue. The estimated value notified, FARA money, connected-PAC money, lobbying amounts and the inaugural and super PAC records are separate records, shown side by side: never added together and never put in date sequence with a notice. Every answer carries the register's question note: these are proposed sales the Defense Department notified to Congress, as printed in the Federal Register; a notification is not a completed sale, and the records do not show why any sale was proposed or whether it went ahead. Every answer also carries the side-by-side caption, the as-of date, the date the Federal Register copies are printed through, each file's date, the source page on morvs.ai and the licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no official, signer, lobbyist, treasurer, candidate or member of Congress is named, and single-person firms are withheld and appear only as counts. A name that matches only a withheld string answers exactly like a name that matches nothing. No party label is given and no buyer government is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive substring of a reviewed contractor family name or of a company string as the notices print it; at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds what the annotations declare: it discloses the 5-family result cap, that empty columns are a non-result rather than a negative fact, that estimated values are shared and never split or treated as revenue, that side-column records must not be summed or date-sequenced with notices, withholding behavior for single-person firms, and that withheld-only matches are indistinguishable from no match. Annotations only supply read-only/idempotent/open-world hints, so this context is genuinely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single massive paragraph where the front-loaded first sentence is strong but the body repeats the same caveats three or four times ('shared, never split', 'never added together', the notice-is-not-a-sale warning). The critical search semantics are buried under legal and provenance boilerplate with no structural separation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and one parameter, the description carries the full burden and does: it enumerates every returned column group, the provenance and as-of dates for each, the caption and licensing carried with answers, and the FEC restriction quote. An agent knows what comes back and how to interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema parameter already says case-insensitive substring of family name or printed company string, up to 80 chars. The description largely mirrors that but adds that matching is against the reviewed family name specifically and that up to 5 families come back — modest but real added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource — look up a contractor family in the Arms Sales Register by a substring of the reviewed family name or of a printed company string — and the return payload is enumerated concretely. It never names the sibling tools it sits beside (arms_sales_buyer, arms_sales_notices), so the agent must infer the routing from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this versus arms_sales_notices, arms_sales_buyer or arms_sales_summary; the description only describes behavior once called. The 'institutions only' restriction constrains what queries are meaningful but does not route the agent between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arms_sales_noticesList Proposed Arms Sales NoticesARead-onlyIdempotentInspect
List proposed sales notified to Congress in the Arms Sales Register, filtered by buyer (a substring of the buyer's name or of the purchaser as printed), year delivered to Congress (from 2017, a year the register carries), contractor family (a substring of a reviewed family name or of a company string as the notices print it) and type (notice, the default, for 36(b)(1) notices, or enhancement for 36(b)(5)(C) reports; the contractor filter applies to notices only); at most 25 rows, the most recently delivered at the top, with the full count. Each notice gives its transmittal number, the purchaser as printed, the dates delivered to Congress and published, the estimated value as printed (the major defense equipment, other and total lines), the items as printed, the principal-contractor sentence and the reviewed families it names, the sales-commission and offsets lines as printed, any emergency sentence quoted where the notice prints one, the corrections applied, and the Federal Register citation and URL; each report gives its original transmittal, its description as printed and any revised or new-items value it prints. A sentence that names a company string still under review is held and not shown. Without a contractor filter the answer gives the count and estimated value of the matching notices; with one, each matched family's count and the value of the matching notices naming it, never added across families. The notices printed with no delivery date and the notice DoD withdrew are listed, each labelled as outside every total. Each row is a proposed sale notified to Congress, and its value is the estimated value the notice prints: never a price, a signed case, a contract or a payment. A company appears only as a notice names it, resolved to the register's reviewed family table: the value of the notices naming a family is shared, never split between the companies a notice names, never added across families and never described as company revenue. 36(b)(5)(C) enhancement or upgrade reports are a separate record type, counted apart; their values are never added to 36(b)(1) values. Every answer carries the register's question note: these are proposed sales the Defense Department notified to Congress, as printed in the Federal Register; a notification is not a completed sale, and the records do not show why any sale was proposed or whether it went ahead. Every answer also carries the side-by-side caption, the as-of date, the date the Federal Register copies are printed through, each file's date, the source page on morvs.ai and the licence. Institutions only: no official, signer, lobbyist, treasurer, candidate or member of Congress is named, and single-person firms are withheld and appear only as counts. No party label is given and no buyer government is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional record type: notice (36(b)(1) notices, the default) or enhancement (36(b)(5)(C) reports); their values are never added. | |
| year | No | Optional year the notice was delivered to Congress (YYYY, from 2017); a year the register does not carry returns the years it does. | |
| buyer | No | Optional case-insensitive buyer name substring, for example Poland or TECRO, or a purchaser as the notices print it; at most 80 characters. | |
| contractor | No | Optional contractor family or company string substring as the notices print it, at most 80 characters; 36(b)(1) notices only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world and non-destructive behavior, but the description goes far beyond them: 25-row cap, most-recent-first ordering, full count inclusion, held company names, totals excluded for undated and withdrawn notices, separate treatment of enhancement reports, and the mandatory question note and caption. This is exceptionally rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key purpose and filters are front-loaded in the opening sentence, but the description then sprawls into a dense paragraph with repeated caveats (e.g., value never added across families appears more than once). Much of the latter content is valuable, but the whole is longer and less scannable than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description supplies all the return-shape, exclusion, total, and disclaimer information an agent needs to interpret results correctly. It is arguably overcomplete, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the type enum and contractor's notice-only restriction. The description repeats those semantics rather than adding new syntax or defaults beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First sentence states a specific verb (list) and resource (proposed sales notified to Congress in the Arms Sales Register), plus the filter dimensions. It clearly distinguishes this as the general list versus narrower siblings like arms_sales_buyer or arms_sales_contractor, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains behavioral conditions well—contractor filter applies to notices only, without a contractor filter you get counts and values, with one you get per-family counts—but it never states when to use this tool instead of sibling tools such as arms_sales_summary or arms_sales_buyer. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arms_sales_summaryGet Arms Sales Notification TotalsARead-onlyIdempotentInspect
Totals from the Arms Sales Register, built from the Federal Register copies of the Defense Department's notifications to Congress under section 36(b)(1) of the Arms Export Control Act, delivered from January 1, 2017. Returns the total estimated value of the proposed sales notified to Congress with its basis and the date the copies are printed through; notices and estimated value by year delivered, with the 36(b)(5)(C) enhancement or upgrade reports counted apart; the 10 largest buyers by estimated value notified; the equal one-year windows around January 20, 2025 with the Gulf governments' share, the last window labelled open, as the Federal Register prints notices months after delivery; the 10 contractor families named in the most notices, with the value of the notices naming each; the counter-findings (the largest buyer's FARA rank, no named family among the reviewed super PAC donors, and every printed sales-commission line saying none); the transmittal-number gaps and the publication lag by year, with the Taiwan line; the FMS trust fund account as context only; and the register's headlines with their basis. The notices printed with no delivery date and the notice DoD withdrew are listed, each labelled as outside every total. Each row is a proposed sale notified to Congress, and its value is the estimated value the notice prints: never a price, a signed case, a contract or a payment. A company appears only as a notice names it, resolved to the register's reviewed family table: the value of the notices naming a family is shared, never split between the companies a notice names, never added across families and never described as company revenue. 36(b)(5)(C) enhancement or upgrade reports are a separate record type, counted apart; their values are never added to 36(b)(1) values. The estimated value notified, FARA money, connected-PAC money, lobbying amounts and the inaugural and super PAC records are separate records, shown side by side: never added together and never put in date sequence with a notice. Every answer carries the register's question note: these are proposed sales the Defense Department notified to Congress, as printed in the Federal Register; a notification is not a completed sale, and the records do not show why any sale was proposed or whether it went ahead. Every answer also carries the side-by-side caption, the as-of date, the date the Federal Register copies are printed through, each file's date, the source page on morvs.ai and the licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no official, signer, lobbyist, treasurer, candidate or member of Congress is named, and single-person firms are withheld and appear only as counts. No party label is given and no buyer government is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent safety, but the description adds substantial behavioral context: values are estimates never prices or contracts, enhancement reports are counted apart and never summed with 36(b)(1) values, separate record types must not be combined, withdrawn and undated notices are listed outside totals, and every answer must carry a question note, as-of dates, source and licence. It also discloses the FEC restriction and that single-person firms are withheld, which goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense wall of semicolon-linked clauses that enumerates every section of a very large output. While each clause carries some content, the lack of paragraphing and the run-on style make it hard to scan, and the core purpose is buried under enumeration; it is over-specified rather than under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema summary tool, the description covers the returned sections extensively (totals, top buyers, windows, contractor families, counter-findings, gaps, trust fund, headlines) and the required accompanying caveats. It is nearly complete on content, though the dense structure reduces how usable that completeness is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description appropriately focuses on output content rather than inventing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific resource and scope: totals from the Arms Sales Register built from Federal Register 36(b)(1) notifications since 2017. It is clear what the tool returns in aggregate, but it never distinguishes itself from siblings like arms_sales_notices, arms_sales_buyer or arms_sales_contractor, so an agent cannot tell from the description alone why it should pick this summary over those detail tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no statement of alternatives, and no exclusions about when other sibling tools are more appropriate. The long caveats about not adding records together are interpretive rules, not routing guidance, so the agent is left to infer that this is an overview tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
border_force_areaGet CBP Use of Force by AreaARead-onlyIdempotentInspect
Look up a CBP area of responsibility in the Border Force Register, built from CBP's own monthly use-of-force and assault files (FY2021 on), by sector or field-office name substring. An area is a CBP office's area or unit (a Border Patrol sector, an OFO field office or a national unit), never a city or an operation; CBP's own service-area statement is quoted where CBP gives one. Returns yearly figures, or monthly figures for one fiscal_year: use-of-force incidents with their force types (force totals include vehicle and vessel force, such as tire-deflation devices), officers/agents using force, assault incidents, and officers/agents assaulted. Officers assaulted and officers using force are counted per incident: one officer in two incidents counts twice, and neither is a count of people injured. The current fiscal year is labelled partial. No rates (nothing is divided by encounters or staffing) and no causation: CBP's files do not say why counts change. A non-match says only that the name is not in CBP's files.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Required CBP sector or field-office name substring, at most 80 characters; an area is a CBP office area, never a city or an operation. | |
| limit | No | Maximum matching areas returned, allowed 1-25. | |
| fiscal_year | No | Optional federal fiscal year from 2021 (FY2026 began October 2025); when set, returns that year month by month. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it identifies the underlying data source (CBP monthly use-of-force and assault files, FY2021 onward), explains the return content (yearly or monthly figures for incidents, force types, officers/agents using force, assaults), clarifies counting semantics (officers counted per incident, not unique people injured), notes that the current fiscal year is labeled partial, explicitly states that no rates or causation are provided, and describes non-match behavior. This is rich, transparent disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and scope, then moves through return content, counting semantics, and limitations. It is dense but mostly earns its length given the complexity. Some phrases (e.g., repeating that an area is 'never a city or an operation') 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does a good job explaining the content of the return (yearly or monthly figures, incident counts, force types, etc.). It could be more explicit about the response structure (e.g., list of matching areas with nested data), but for an agent selecting and invoking the tool, the description covers the essential context, including data provenance and limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description repeats the key semantics (area as a sector/field-office substring, fiscal_year behavior) but adds little beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Look up a CBP area of responsibility in the Border Force Register... by sector or field-office name substring.' It is clear what the tool does. However, it does not mention the sibling tool border_force_national, so an agent cannot tell from the description alone how this differs from the national-level lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: you need a sector or field-office name substring, and the area must be a CBP office area, not a city or operation. But there is no explicit statement of when to use this versus border_force_national, nor any when-not guidance. The agent must 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.
border_force_nationalGet CBP Use of Force TotalsARead-onlyIdempotentInspect
National yearly totals from CBP's own use-of-force and assault files in the Border Force Register (FY2021 on; the current fiscal year is labelled partial): use-of-force incidents by force type (vehicle and vessel force included), officers/agents using force and officers/agents assaulted (both counted per incident), and assault incidents, each year with the CBP file and date it comes from. With fiscal_year, adds that year's revision log entries, each labelled as published on its date: revisions are as-published versions of CBP's files, not corrections and not evidence of misconduct. Also returns the status of DHS's department-wide use-of-force tables, the series with no newer edition (including ICE's count in DHS's table), and DHS's tables beside CBP's files with the definitions note; the two use different definitions and are never added or merged. No rates and no causation.
| Name | Required | Description | Default |
|---|---|---|---|
| fiscal_year | No | Optional federal fiscal year from 2021; when set, returns that year and its revision log entries as published on each date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses important provenance and interpretation constraints: revisions are as-published versions not corrections, DHS and CBP use different definitions and are never merged, and no rates or causation are provided. This is exactly the kind of contextual nuance annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the primary national totals before secondary DHS-table and revision-log caveats. It is dense and somewhat run-on, but every clause carries relevant data-provenance or interpretation information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still provides a thorough account of what is returned: yearly totals by force type, personnel counts, assault incidents, source files and dates, optional revision logs, DHS table status, and definitions caveats. An agent has enough context to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is fully documented in the schema, so the baseline is 3. The description adds meaningful semantics by explaining that fiscal_year also brings that year's revision-log entries and by reinforcing that those entries are as-published versions, not corrections.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: national yearly totals from CBP use-of-force and assault files, broken down by force type, personnel, and assault incidents. The explicit 'National yearly totals' scope distinguishes it from the area-level sibling tool without needing to name it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this national/yearly dataset applies, including the FY2021+ range and the partial-current-year label. It does not explicitly name the sibling border_force_area as the alternative for sub-national data, 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.
bought_by_your_policeFind Checkbook Payments to VendorsARead-onlyIdempotentInspect
What city, county and state governments' own checkbooks report paid to reviewed vendors, from Bought by Your Police, a MORVS register built from 33 city, county and state governments' own open checkbooks on Socrata portals at launch, each read for its own period, with each vendor's family taken from its own federal award words or its own product page. Optional filters: government (a name, a name with its state, a state or a 2-, 5- or 7-digit FIPS code, as the register's lookup files them), vendor (a reviewed vendor's name or a payee alias as printed), family (a family ID the register carries, or its label; with lane panel, a panel family) and lane (police, panel or broad). For one government: each of its checkbooks with its period, row unit and licence, its police-lane totals by family for that period with each vendor beside, the other-department, department-not-stated and unclassified amounts apart, the panel and the broad platforms each apart, the families with no payments found in its period, and up to 25 payment rows (payee and line label as printed, department, amount, date or year or fiscal year, row unit, the row's own words, the dataset ID, the family, the lane, and a find-in-checkbook link; broad platforms give the register's aggregates instead, as it publishes no row for them). When more than one government matches (a state, or a vendor, family or lane on its own): each government's totals by family with its own period and unit, never summed, no rows, and the arguments that return its rows (for_rows); with a vendor or family, the governments with no payments found. With no filters: the headlines with their basis, the family IDs and labels with their counts of governments, and the governments covered with their type and checkbook period. Three columns are kept apart and never added together: the police lane (payments by law-enforcement departments to vendors of the register's families, such as phone and device extraction, plate readers, gunshot detection, face recognition and drones), the records-about-people panel (what any department pays data companies such as the Equifax unit that runs The Work Number), and the broad platforms (Axon and Motorola Solutions, never in a family or any total). Payments by other departments, and rows whose checkbook names no department, are shown apart from the police lane. Figures are what the checkbook reports paid, each with its dataset, period and row unit; a payment is not a contract value, a deployment, a use or a measure of effectiveness, and what a row bought is named only where its own words say so. A vendor is described only as a vendor of its family, per its cited basis. Figures are never added across governments, whose periods and units differ; counts of governments come with each one's period. An empty result returns the register's absence note: no payments found in this checkbook's period under the reviewed names, which does not show that a government never paid that vendor. A reviewed universe, not a national census. Answers are kept under about 25 KB. The answer carries as_of, retrieved, the file dates, the question, universe, period, unit, lane, panel, broad and absence notes, the claim rules, the licence (each checkbook keeps its own) and the source page on morvs.ai. Payees come only from the reviewed allow-list of organisations; rows whose words could name a person are dropped by the register, and structured fields it withholds are marked withheld.
| Name | Required | Description | Default |
|---|---|---|---|
| lane | No | Optional column: police (the police lane), panel (records about people) or broad (Axon and Motorola Solutions); each kept apart when omitted. | |
| family | No | Optional family ID the register carries, or its label, for example phone_extraction or Face recognition; with lane panel, a panel family. | |
| vendor | No | Optional reviewed vendor name or a payee alias as a checkbook prints it, for example Cellebrite, ShotSpotter or Flock Safety; at most 80 characters. | |
| government | No | Optional government name, name with its state, a state, or a 2-, 5- or 7-digit FIPS code, for example Chicago, Atlanta GA, Texas or 0644000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent and open-world, and the description goes well beyond them: it discloses the ~25 KB answer cap, licence-per-checkbook, the absence-note semantics for empty results, the rule that figures are never summed across governments with differing periods/units, and that payee names come from a reviewed allow-list and some fields are withheld. These are behavioural facts an agent cannot infer from structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a several-hundred-word run-on built from semicolon-chained clauses with no headings, lists or paragraph breaks, and it repeats the same points ('never summed', 'each with its own period and unit', 'kept apart') multiple times. The purpose is front-loaded, but the density makes the payload hard to extract and several sentences do not earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description takes on that burden fully: it enumerates the per-government payload (totals by family, up to 25 payment rows, with row-level fields), the multi-government shape, the no-filter shape, and the metadata envelope (as_of, retrieved, licence, question, absence notes). For a tool of this complexity, nothing an agent needs in order to call it and interpret the response is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema descriptions already enumerate the accepted forms for government (name, name+state, state, 2/5/7-digit FIPS), vendor (name or printed alias) and family (ID or label, panel family under lane=panel). The description restates essentially the same content, adding only marginal linkage such as 'a state, or a vendor, family or lane on its own' triggering the multi-government mode, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the resource concretely (checkbook payments reported by city/county/state governments to reviewed vendors) and grounds it in the 'Bought by Your Police' register, so an agent knows what it returns. However, it reads as a long noun phrase rather than a clean verb+resource statement, and it never distinguishes this tool from the sibling bought_by_your_police_vendor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does describe what each argument combination produces (one government = full detail, multiple governments = totals with for_rows, no filters = headlines), which implicitly tells the agent how to shape a query. But it never states when to prefer this tool over siblings, and the closest relative, bought_by_your_police_vendor, is never mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bought_by_your_police_vendorGet a Reviewed Checkbook VendorARead-onlyIdempotentInspect
One reviewed vendor in Bought by Your Police, a MORVS register built from 33 city, county and state governments' own open checkbooks on Socrata portals at launch, each read for its own period, with each vendor's family taken from its own federal award words or its own product page, found by vendor (its name, or a payee alias as a checkbook prints it). Returns the reviewed entry (its column: a family, the panel or a broad platform; the family and its label, whether the family is established, the register's wording for it, each basis with its kind, URL, the award words or quoted page text, and the register's check of it with its status and date where it records one, the row rule that assigns rows by their own words, the aliases reviewed and the rows published) and the governments whose checkbooks report payments to it, each with its figures by lane and family (police lane, other departments, department not stated, unclassified, the panel, or the broad platforms) and each with its own period and row units, never summed across governments, with the arguments that return its rows; then the governments read with no payments found to it, each with its checkbook period. Three columns are kept apart and never added together: the police lane (payments by law-enforcement departments to vendors of the register's families, such as phone and device extraction, plate readers, gunshot detection, face recognition and drones), the records-about-people panel (what any department pays data companies such as the Equifax unit that runs The Work Number), and the broad platforms (Axon and Motorola Solutions, never in a family or any total). Payments by other departments, and rows whose checkbook names no department, are shown apart from the police lane. Figures are what the checkbook reports paid, each with its dataset, period and row unit; a payment is not a contract value, a deployment, a use or a measure of effectiveness, and what a row bought is named only where its own words say so. A vendor is described only as a vendor of its family, per its cited basis. Figures are never added across governments, whose periods and units differ; counts of governments come with each one's period. An empty result returns the register's absence note: no payments found in this checkbook's period under the reviewed names, which does not show that a government never paid that vendor. A reviewed universe, not a national census. Answers are kept under about 25 KB. The answer carries as_of, retrieved, the file dates, the question, universe, period, unit, lane, panel, broad and absence notes, the claim rules, the licence (each checkbook keeps its own) and the source page on morvs.ai. Payees come only from the reviewed allow-list of organisations; rows whose words could name a person are dropped by the register, and structured fields it withholds are marked withheld.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | Yes | Required reviewed vendor name or a payee alias as a checkbook prints it, for example Clearview AI, TALX or Axon; at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, the description discloses substantive behavior: three columns kept apart and never summed, figures never aggregated across governments, an explicit absence note for empty results, a ~25 KB answer cap, a reviewed allow-list restricting payees, person-naming rows dropped, withheld structured fields, and the caveat that payments are not contract values or deployment evidence. This is unusually 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is an enormous single block that runs through register architecture, lane definitions, caveats, licensing and output fields in comma-spliced prose. It is front-loaded only in the sense that the purpose appears first; everything after is undifferentiated and hard to scan. Much of the enumeration could be trimmed or structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden and does so: it enumerates the reviewed entry's columns, the per-government figures and lanes, the no-payments-found list, the metadata carried in the answer, and the key interpretive caveats. An agent has enough to interpret results correctly, even if the presentation is unwieldy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents the vendor parameter with examples (Clearview AI, TALX, Axon) and the 80-character limit. The description's phrase 'its name, or a payee alias as a checkbook prints it' largely restates the schema, adding little beyond it. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause states a specific resource: one reviewed vendor in the Bought by Your Police MORVS register, looked up by vendor name or payee alias. That is a clear verb+resource and distinguishes it from the aggregate sibling bought_by_your_police. Clarity is degraded only because the purpose sentence is buried inside a very long, comma-chained enumeration of return contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage case (look up a single reviewed vendor by name or alias) and mentions the alias input route, but never states when to use this instead of bought_by_your_police or the other vendor-related siblings, nor any exclusions. Usage is left to inference from the tool name and the 'one reviewed vendor' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
breach_notice_organizationFind Breach Notices by OrganizationARead-onlyIdempotentInspect
Find public notifying organisations by name substring in the Washington, Delaware and California Attorney General breach-notice lists. Returns notice IDs and counts separately for each state, plus any paired Washington and Delaware notices whose notice dates are within three days. When paired discovery dates differ, the two states' records carry different dates; neither date is declared correct. Withheld names are excluded from this index and never returned or searchable. A non-match in these three states' records never means no breach: list coverage, reporting thresholds and organisation names vary. The notifying organisation may differ from the breached one.
| Name | Required | Description | Default |
|---|---|---|---|
| organization | Yes | Required case-insensitive public organization name substring, at most 80 characters; absence does not mean no breach. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/open-world safety, and the description goes further by explaining the return shape (per-state notice IDs and counts), the three-day pairing rule for WA/DE records, and the fact that paired dates may legitimately disagree with neither declared correct. It does not mention result caps, pagination, or cost of broad substrings. The 'notifying org may differ from breached org' note is genuinely useful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and scope, then layered caveats. Five dense sentences, though the 'non-match never means no breach' point appears both in the description and in the parameter description, and the closing caveat about notifying vs. breached organisation slightly undercuts the otherwise tight structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter search tool with no output schema, the description explains the returned structure (per-state IDs and counts, paired notices), the pairing rule, and the semantic limits of a non-match. It stops short of stating result-count limits or how pairs with dates beyond three days are surfaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description additionally explains that matching is on public names only (withheld names are excluded from the index entirely, not just from results), which tells the agent that a withheld-name search returns empty rather than a false negative to be interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('find'), a specific key ('public notifying organisations by name substring'), and an explicit corpus ('Washington, Delaware and California Attorney General breach-notice lists'). The state scope alone lets an agent distinguish it from the broader sibling `breach_notices` without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong interpretive guidance on when NOT to conclude anything: non-matches never mean 'no breach' because of list coverage, reporting thresholds and name variation, and withheld names are never searchable. It never routes the agent to an alternative tool (e.g. `breach_notices`) for other jurisdictions, so selection guidance is contextual rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
breach_noticesFind State Breach NoticesARead-onlyIdempotentInspect
Search the Washington, Delaware or California Attorney General breach-notice list by public notifying-organisation name and year (notice year for Washington and Delaware, reported year for California). Timing uses only the dates in each record: Washington and Delaware results label whether the interval is beyond that state's statutory window by the record's dates. The records do not show permitted delays, including law-enforcement requests, or any enforcement outcome; the timing flag is no legal finding. Never call a notice "late" or say an organisation "violated" the law. California has no discovery date, so no timing is computed. Resident counts are notices sent to residents, not unique people, and are never added across states; Delaware also reports the company's stated total affected separately. A notifying organisation may differ from the breached one. Names that may identify individuals are withheld, never returned or searchable. Absence from these three lists is no evidence that an organisation had no breach.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Optional year of the state record date: WA/DE notice date or CA reported date. | |
| limit | No | Maximum notice rows returned, allowed 1-100. | |
| state | Yes | Required Attorney General notice list: WA, DE or CA. | |
| organization | No | Optional case-insensitive public organization name substring, at most 80 characters; withheld names are never searched. | |
| beyond_window | No | WA or DE only: beyond the statutory window by the record dates; the records do not show permitted delays. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds substantial context beyond them: records omit permitted delays such as law-enforcement requests and omit enforcement outcomes, the timing flag is not a legal finding, and California has no discovery date so no timing is computed. It also discloses data-handling rules — withheld individual-identifying names are never returned or searchable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by interpretation constraints. The caveat block is dense and long, but nearly every sentence carries semantic or legal-interpretation weight rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on return-value explanation itself — what the timing labels mean, that resident counts are notices sent rather than unique people and are never summed across states, and that Delaware also reports the company's stated total. That leaves little an agent needs to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the year parameter maps to notice year for WA/DE versus reported year for CA, and beyond_window is scoped to WA/DE and framed as a date-interval label rather than a legal conclusion. It also explains that the notifying organisation may differ from the breached one, which changes how the organization filter should be used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — searching the WA, DE, or CA AG breach-notice lists — plus its filtering dimensions (organisation name, year). It is concrete enough to separate from the sibling breach_notice_organization, but it never names or contrasts with that sibling explicitly, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: filtering is by public notifying-organisation name and year, with the year meaning differing per state, and it warns that absence from these three lists is not evidence of no breach. It does not state explicit exclusions or point to alternatives such as the per-organisation sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcast_station_searchSearch Broadcast StationsARead-onlyIdempotentInspect
Search the FCC broadcast station directory by call sign or community of license. ~109,812 US over-the-air facilities (TV/FM/AM/LPTV/translators, ~32,883 active). Returns service, channel, frequency, community, status, and license expiration. Station facts only — no ownership.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Call sign or community/city (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe-read profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds real context: corpus size (~109,812 facilities, ~32,883 active), the covered service classes, and the explicit exclusion of ownership data. It does not mention pagination or result ordering, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler: scope, corpus magnitude, returned fields, and boundary of coverage. The corpus statistics earn their place by setting result-set expectations. Slightly dense but well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a trivial 2-parameter input, the description carries the return-value burden and does it: it enumerates the returned fields (service, channel, frequency, community, status, license expiration) and bounds the corpus. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in-schema (q as call sign/city with a >=2 char minimum; limit default 25 max 100). The description only restates that q accepts a call sign or community, adding no format or matching-behavior detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("Search the FCC broadcast station directory") plus the exact lookup keys (call sign or community of license). The closing scope note ("Station facts only — no ownership") carves it away from the sibling fcc_grantee_search, which the agent can act on without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "no ownership" exclusion implies when to reach for an ownership-oriented sibling instead, but no alternative is named and no when-not conditions or prerequisites are stated. Usage is inferable from the scope note rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bsee_searchSearch Offshore OperatorsARead-onlyIdempotentInspect
Search BSEE offshore oil & gas operators (US Outer Continental Shelf — Gulf of Mexico, Pacific, Alaska) by name. Returns each operator's incident-enforcement totals: warnings, component shut-ins, facility shut-ins. ~674 operators, 1948-2026.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Operator name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real behavioral value beyond that: it names the exact returned fields (warnings, component shut-ins, facility shut-ins) and the dataset scope (~674 operators, 1948-2026). It stops short of pagination or result-ordering behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, front-loading what the tool is and following with the return payload and dataset scope. Every clause conveys usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description usefully enumerates the returned enforcement metrics and the dataset's size and time span. It is nearly complete for a simple two-parameter search, missing only routing guidance against sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both q and limit are already documented in the schema with format and bounds. The description only echoes the 'by name' search intent, adding no syntax or matching-behavior detail beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Search) plus a well-scoped resource (BSEE offshore operators) with geographic coverage and the returned data named. It clearly distinguishes itself from generic sibling searches, though it never explicitly contrasts with bsee_worst_operators, the nearest related tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not guidance and no mention of the obvious alternative, bsee_worst_operators, or any sibling. Usage is only implied by the 'by name' wording in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bsee_worst_operatorsRank Offshore Operator IncidentsARead-onlyIdempotentInspect
Ranks offshore oil and gas operators by counts of BSEE incidents of noncompliance: facility shut-ins (default), component shut-ins, total events, or warnings. Counts come from BSEE records and are not adjusted for operator size or activity.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | fac_shutins (default), comp_shutins, events, or warnings | |
| limit | No | Max results (default 50, max 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds a genuinely useful interpretive caveat that counts are raw BSEE records and unadjusted for operator size or activity. It does not describe the return shape or ordering ties, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the ranking purpose followed by the important caveat, with no filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with annotations covering safety, the description is adequate, but with no output schema it never states what a result row looks like (operator identity plus count) or how ranking ties/ordering are handled. That leaves the return contract to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both 'sort' values and the 'limit' default/max, so the baseline is 3. The description merely restates the sort options already present in the schema without adding format or behavior detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Ranks offshore oil and gas operators') and scopes it to BSEE incidents of noncompliance with the exact ranking dimensions. This clearly separates it from sibling search tools like bsee_search and other 'worst/top' rankers such as chemical_accident_worst or fails_to_deliver_top.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states what the ranking measures but gives no guidance on when to choose this tool over bsee_search or other BSEE-related siblings, and no exclusions or prerequisites. The enumeration of sort options is parameter detail, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
building_permits_searchSearch Building Permit AreasARead-onlyIdempotentInspect
Search Census Building Permits Survey by county/state name. Returns place_id ({state_fips}-{county_fips}) to pull a county's residential-construction permit history — buildings, housing units, and valuation by structure type (1-unit / 2-units / 3-4 / 5+), 2015-2025. Aggregate federal statistic — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | County or state name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, and the description adds meaningful context beyond them: the exact place_id format ({state_fips}-{county_fips}), the covered span (2015-2025), the structure-type breakdown, and a provenance/PII note. It doesn't cover pagination or result-count behavior, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action (search the survey by county/state name) and then the return value, with no filler sentences. The content-list clause is dense but earns its place by telling the agent what data the place_id unlocks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by specifying the place_id format and downstream data. Combined with full schema coverage for inputs and rich annotations, an agent has enough to call and chain it, though pagination/limit behavior is left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both q and limit are already documented in the schema, making the baseline a 3. The description confirms q accepts county/state names and clarifies the output key format, adding marginal value but no syntax or matching-behavior details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) plus resource (Census Building Permits Survey) and scope (by county/state name). No sibling covers building permits, so the resource alone differentiates it, and the description's detail on content makes the tool's domain unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies a two-step workflow by stating it returns a place_id 'to pull a county's residential-construction permit history', giving clear context for when to reach for it. It stops short of naming the follow-up tool or stating when not to use it, so no 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.
cfpb_by_companyGet Company CFPB ComplaintsARead-onlyIdempotentInspect
Search MORVS's partial local CFPB complaint index by company. Returns indexed complaint counts, products, and narratives only where the CFPB published them. Check /coverage; this is not the full CFPB database.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Financial firm name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, not open-world), and the description adds genuinely new behavioral context: the index is partial/local, and returns are limited to counts, products, and narratives that CFPB actually published. It also points to /coverage for completeness verification, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then scope caveats. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return shape (indexed complaint counts, products, narratives) and warns about data completeness. The main remaining gap is that it never says how to interpret or paginate results, but for a single-parameter read tool this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage ('Financial firm name (substring)'), so the schema already carries the semantics. The description's 'by company' adds only a restatement, matching the baseline for fully documented schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search ... CFPB complaint index by company') and immediately qualifies the scope as MORVS's partial local index. An agent can distinguish it from generic search or other *_by_company tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Check /coverage; this is not the full CFPB database' gives a useful precondition, but there is no explicit when-to-use vs when-not guidance and no named alternative among the many siblings (doj_by_company, company_risk_flags, etc.). Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chemical_accident_searchSearch Chemical AccidentsARead-onlyIdempotentInspect
Search EPA RMP hazardous-chemical facilities (Clean Air Act 112(r)) by facility or parent-company name. Returns each facility's chemical-accident count + location. ~99k facilities — the chemical-plant accident ledger EPA keeps FOIA-only (releases, fires, explosions, deaths).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Facility or parent-company name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds real value beyond the structured fields: dataset size (~99k facilities), the FOIA-only provenance, and the semantic meaning of the counts (releases, fires, explosions, deaths).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and resource, then the return shape, then the scale/provenance. Dense and mostly waste-free, though the closing 'ledger EPA keeps FOIA-only' phrase is more color than operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only annotations covering safety, the description correctly compensates by naming the returned fields (accident count, location) and setting expectations about dataset breadth. Minor gaps remain around result ordering and pagination semantics, but nothing needed to invoke it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (q, limit) are already documented in the schema. The description restates the facility/parent-company search key and adds nothing about matching behavior (prefix vs. substring, case sensitivity) or the limit, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Search) and resource (EPA RMP hazardous-chemical facilities under Clean Air Act 112(r)) and states the lookup key (facility or parent-company name) plus what is returned (accident count + location). It is clear what the tool does, but it never names the obvious sibling `chemical_accident_worst`, so the agent must infer the split between name-lookup and ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the framing — it is a name/keyword lookup rather than a ranked list — but there is no explicit when-to-use/when-not statement and no named alternative for cases like 'show me the worst facilities.' Minimum-viable guidance only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chemical_accident_worstRank Chemical Accident HarmARead-onlyIdempotentInspect
Ranks parent companies by harm reported in EPA Risk Management Program accident histories: deaths (default), injuries, or accident count. Counts come from RMP filings and are not adjusted for company size or number of facilities.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | deaths | injuries | accidents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real value with the caveat that counts are unadjusted for company size or facility count, which prevents a common misinterpretation of the ranking; it does not describe return ordering or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the ranking behavior and source lead, and the caveat follows. No filler and nothing repeated from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter ranking tool with no output schema, the description covers what is ranked, the metric, the default, and a key interpretation limit. It omits how many companies are returned and the sort direction, but nothing essential blocks a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema lists the three accepted values, so the baseline is 3. The description goes slightly beyond by naming the default ('deaths'), which the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ranks parent companies by harm') plus the data source (EPA Risk Management Program accident histories), which distinguishes it from chemical_accident_search at the entity level. It does not name the sibling explicitly, so an agent must infer the ranking-vs-search split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (ranking parent companies by harm) and documents the sort options with a default, but gives no explicit when-to-use versus chemical_accident_search or when the ranking view is preferable to raw accident search. Guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
china_ai_filingsFind China AI FilingsARead-onlyIdempotentInspect
Search the CAC public generative AI, deep-synthesis and algorithm lists by a Chinese or English substring in the listed service or algorithm name, filer legal name, curated filer English name, or CAC filing number. Registry defaults to all; province applies to generative AI rows with a CAC province field. A us_list=true filter uses confirmed tier A legal-entity crosswalks only; brand uses an exact filer legal-name allowlist. Returns the CAC number, name and filer as printed, a separately labelled own English name or MORVS translation when available, CAC notice, date and its date type. The CAC says completed filing (备案) or registered (登记); neither grants approval. Filings are neither distinct models nor distinct companies. A brand in a filer legal name does not establish ownership. No match does not establish that a service or company is absent from China.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Chinese or English service, algorithm, filer or filing-number substring, at most 80 characters. | |
| brand | No | If true, return only brand-name matches; a brand in a legal name does not prove ownership. | |
| limit | No | Maximum filing rows returned, allowed 1-50. | |
| us_list | No | If true, return only tier A crosswalk matches to a US list. | |
| province | No | Optional province as published in the CAC register. | |
| registry | No | CAC registry: genai_filed, genai_registered, deep_synthesis or algorithm; defaults to all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral context: the returned fields, the distinction between filing (备案) and registration (登记), that neither grants approval, that filings are not distinct models or companies, and that no match does not prove absence. These are substantive caveats that materially affect interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the search action, then filters, return shape and caveats. Every sentence carries useful information, though the single-paragraph format could be more scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, read-only lookup with no output schema, the description covers searchable fields, filter behavior, return columns, and crucial interpretation limits. It is complete enough for an agent to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description still adds meaning beyond the schema by clarifying which fields q searches, that brand uses an exact filer legal-name allowlist, that us_list uses confirmed tier A crosswalks, and that province applies only to generative AI rows with a CAC province field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: search the CAC public generative AI, deep-synthesis and algorithm lists by named fields. It is clear what the tool does, but it does not explicitly differentiate itself from the related sibling china_ai_us_lists, leaving a small gap against the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives filter-level usage guidance, such as registry defaulting to all and province applying only to generative AI rows, and explains us_list and brand semantics. However, it never explicitly states when to use this tool instead of alternatives like china_ai_us_lists, so usage is implied rather than fully directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
china_ai_us_listsGet China AI US List CrosswalkARead-onlyIdempotentInspect
Read the curated crosswalk from CAC filer legal names to the US Entity List and Treasury NS-CMIC list. Search by Chinese or English entity-name substring; tier defaults to A. Tier A has published evidence for a legal-entity match. Tier B is a possible match, not confirmed, and is outside headline counts. Each entry gives the list name, start date, evidence type and text, and matching CAC record IDs. The Entity List imposes export-licence requirements for specified items subject to the EAR; the NS-CMIC investment ban covers specified US-person purchases or sales of publicly traded securities. These are different restrictions, not generic sanctions. The separate US actions timeline includes the DHS DeepSeek order with Federal Register links. MORVS does not determine whether any CAC DeepSeek filer is the company named by DHS. Not being on either US list never means an entity is cleared.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional Chinese or English entity-name substring. | |
| tier | No | Crosswalk tier: A confirmed, B possible or all; defaults to A. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and open-world behavior, yet the description still adds substantive context: what each entry returns (list name, start date, evidence type and text, matching CAC record IDs), how the two US regimes differ (export-licence vs investment ban), and explicit caveats that it does not resolve corporate identity and that absence from a list is not a clearance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and query mode are front-loaded in the first two sentences, and the rest is layered supporting context. It is longer than typical and the DHS DeepSeek order and MORVS disclaimers sit slightly off the core task, but each sentence carries information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value burden well by enumerating the fields per entry, and it preempts the two most likely misinterpretations (regime conflation and 'not listed = cleared'). It does not mention result-count limits, pagination, or what happens when q is omitted, which for an optional-parameter tool is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description goes beyond the enum by explaining the evidentiary meaning of tiers A and B and the consequence of tier B falling outside headline counts, which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: a curated crosswalk from CAC filer legal names to the US Entity List and Treasury NS-CMIC list. This is clearly distinguishable from siblings such as sanctions_check, watchlist, and china_ai_filings, which an agent could otherwise confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the query mode (Chinese or English entity-name substring) and that tier defaults to A, and it explains what each tier means and which one belongs in headline counts. It stops short of explicitly naming an alternative sibling tool or stating when-not-to-use, though the pointer to 'the separate US actions timeline' gestures at routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clinical_trials_recentFind Recent Clinical TrialsARead-onlyIdempotentInspect
Recent clinical trial activity from ClinicalTrials.gov. Filter by phase, status, and sponsor. Use for drug pipeline questions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum trials by latest update date; default 50, max 200. | |
| phase | No | Trial phase substring, case-insensitive; use PHASE1, PHASE2, PHASE3, PHASE4, or NA. | |
| status | No | RECRUITING / ACTIVE_NOT_RECRUITING / COMPLETED / TERMINATED / WITHDRAWN | |
| sponsor | No | Substring filter on lead sponsor company |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds the data source (ClinicalTrials.gov) but omits freshness/latency, ordering, and result-set behavior, so it contributes only modest extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the source and scope, then filters, then the use case. No filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema and fully documented parameters, this is close to sufficient. The main gap is that 'recent' is never defined in the description (the window is only implied by the limit parameter's latest-update-date wording).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and documents limit, phase enum, status values, and sponsor substring matching. The description merely restates that phase/status/sponsor are filters, adding no syntax or default information beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and source: 'Recent clinical trial activity from ClinicalTrials.gov,' plus the filterable dimensions (phase, status, sponsor). No sibling tool covers clinical trials, so no differentiation is needed, but it stops short of describing what a returned record contains or how 'recent' is bounded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use for drug pipeline questions' gives one implied use case but no when-not guidance and no named alternative tools. For a specialized data source with no close siblings this is minimally adequate, leaving the agent to infer query-construction intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cluster_buysFind Insider Buying ClustersARead-onlyIdempotentInspect
Companies where multiple distinct insiders bought open-market stock in the window. Strong conviction signal.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Calendar-day lookback for open-market insider buys; default 90, max 365. | |
| min_usd | No | Minimum summed trade value per issuer in USD (shares x price); default 0. | |
| min_insiders | No | Minimum distinct buying insiders per issuer; default 3, minimum 2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds an interpretive framing (conviction signal) plus the cluster criteria, but says nothing about result ordering, caps, or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the screening criteria front-loaded and no repetition of the title or schema. The second sentence is interpretive rather than informational, which slightly dilutes it but still earns its place as the rationale.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter screener with full schema coverage and a complete annotation set, the description is nearly sufficient. With no output schema, a brief note on what is returned (issuer list with insider/value counts) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter carries its own default, max, and minimum constraints, so the schema does the heavy lifting. The description adds no syntax or semantics beyond what is already structured, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific signal and its criteria: companies with multiple distinct insiders buying open-market stock within a window. An agent can tell what the tool screens for. However, it never names its obvious counterpart cluster_sells, so the differentiation from the sibling is left to the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Strong conviction signal" implies when the tool is useful (bullish insider-conviction screening), which is real but indirect guidance. There is no explicit when-not or named alternative such as cluster_sells or company_insider_pulse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cluster_sellsFind Insider Selling ClustersBRead-onlyIdempotentInspect
Companies where multiple distinct insiders sold open-market stock in the window. Mass-exit detector.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Calendar-day lookback for open-market insider sells; default 30, max 365. | |
| min_usd | No | Minimum summed trade value per issuer in USD (shares x price); default 0. | |
| min_insiders | No | Minimum distinct selling insiders per issuer; server default 3, minimum 2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, non-destructive query, so the safety profile is covered. The description usefully narrows scope to open-market sells by distinct insiders, but says nothing about result ordering, thresholds applied server-side, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the qualifying condition front-loaded and a short reinforcing tag. No filler, though the 'Mass-exit detector' fragment is marketing flavor rather than functional information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not say what a returned record contains (issuer, insider count, aggregate value) or how results are ranked, which an agent needs to interpret results. For a zero-required-parameter query tool it is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so days, min_usd and min_insiders are already fully documented with defaults and bounds. The description only echoes the 'multiple distinct insiders' and 'window' concepts, adding no format or interaction detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete resource (companies) and the precise qualifying condition: multiple distinct insiders selling open-market stock within a window. 'Mass-exit detector' reinforces the intent. It never names its obvious counterpart cluster_buys, so sibling differentiation is left to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as cluster_buys or company_insider_pulse, despite a near-identical sibling existing. The 'mass-exit detector' label hints at a use case but offers no routing logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
common_owner_rollupGet Medicare Owner FacilitiesARead-onlyIdempotentInspect
Trace one organization owner across every Medicare facility it controls (hospital/hospice/home-health/skilled-nursing): facility_count, per-sector breakdown, PE/REIT flags, state spread. Takes a CMS owner_associate_id (from /api/v1/owners/largest or /owners/private-equity).
| Name | Required | Description | Default |
|---|---|---|---|
| owner_associate_id | Yes | Numeric CMS owner associate id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the fact that it covers 'every Medicare facility' the owner controls, the sector scope, and the PE/REIT flagging, which tells the agent what kind of intelligence it will get back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first front-loads the purpose and the returned signal set, the second carries the input prerequisite. No filler, no restatement of the title, and the parenthetical endpoint reference is the only detail an agent actually needs to source the id.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description compensates by naming the concrete return fields (facility_count, per-sector breakdown, PE/REIT flags, state spread). With one required parameter fully documented and the annotations covering safety, nothing needed to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, and the schema already says 'Numeric CMS owner associate id', so baseline is 3. The description goes further by identifying the provenance of that id (the largest-owners and private-equity endpoints) and constraining it to a single organization owner, which reduces the risk of passing a person-level or facility-level id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Trace one organization owner across every Medicare facility it controls') and enumerates the sectors covered (hospital/hospice/home-health/skilled-nursing). An agent can immediately distinguish this owner-centric rollup from facility-search siblings such as epa_facilities or building_permits_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies the operative precondition — the tool 'takes a CMS owner_associate_id' — and names the endpoints that produce that id (/api/v1/owners/largest, /owners/private-equity), routing the agent to the right upstream data. It does not state when NOT to use this tool or name a competing sibling, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_insider_pulseGet Company Insider ActivityBRead-onlyIdempotentInspect
Unified Form 4 (executed) + Form 144 (proposed-sale) insider timeline for one company.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Calendar-day window for Form 4 transactions and Form 144 filings or planned sales; default 90, max 365. | |
| ticker_or_cik | Yes | Stock ticker or SEC CIK (padded to 10 digits), e.g. PFE or 0000078003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds domain substance by clarifying that Form 4 entries are executed trades while Form 144 entries are proposed sales, which is useful behavioral context not in the annotations. It says nothing about return ordering, volume of results, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the scope ('one company') front-loaded and the two constituent data sources stated compactly. No filler and nothing deferred to later sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, 100%-documented, two-parameter lookup with annotations carrying the safety profile, the essentials for invoking correctly are present. However, in a sibling set dense with insider/ownership tools, the description leaves the agent unable to disambiguate scope, and with no output schema it offers no hint of the timeline's shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the window semantics (calendar days, default 90, max 365) and the ticker/CIK format with padding example are fully documented in the schema. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (insider filings) and distinguishes the two data sources it unifies: executed Form 4 transactions and proposed-sale Form 144 filings, scoped to 'one company'. That is concrete enough to know what comes back without opening a schema, though it does not name or rule out any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no routing to alternatives despite several adjacent siblings (cluster_buys, cluster_sells, upcoming_sales_pressure, entity_timeline, dossier). An agent cannot tell from this text why it would pick this over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_profileGet Company ProfileARead-onlyIdempotentInspect
Comprehensive dossier for one SEC-filing company: basic info, recent filings, insider activity windows (7/30/90d), upcoming Form 144 sales, latest financials (FY+quarterly), top 13F institutional holders, top mutual-fund holders, peers.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker_or_cik | Yes | Stock ticker (AAPL) or 10-digit CIK |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine value beyond the annotations by disclosing the concrete contents and time windows of the response (7/30/90d insider activity, upcoming Form 144 sales, FY+quarterly financials), which is exactly what matters for an agent when no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first and then itemizes contents; there is no filler. It runs long as an enumerated list, but each item earns its place by describing returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only tool with no output schema, the description compensates well by enumerating return contents, and the annotations carry the safety profile. The remaining gap is disambiguation from the near-identical sibling 'dossier'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema fully documents that the argument accepts either a ticker or a 10-digit CIK. The description adds no syntax or format detail beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope ('Comprehensive dossier for one SEC-filing company') and enumerates the exact content domains (filings, insider windows, Form 144, financials, 13F holders, peers). It differentiates from non-SEC siblings, but never distinguishes itself from the overlapping sibling 'dossier', leaving a real ambiguity an agent must resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to pick this tool over the many adjacent siblings (dossier, fund_holdings, company_insider_pulse, entity_timeline) nor states any prerequisites or exclusions. Usage can only be inferred from the content list, which is guidance by implication at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_risk_flagsGet Company Risk FlagsARead-onlyIdempotentInspect
Multi-source red-flag detector for one company — restatements (8-K item 4.02), auditor changes, officer departures, insider cluster sells, upcoming Form 144 pressure, Schedule 13D filings, FDA recalls.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker_or_cik | Yes | Stock ticker or SEC CIK (padded to 10 digits), e.g. PFE or 0000078003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the coverage scope of the scan (which source categories are checked), which is useful, but it says nothing about latency, data freshness, empty-result behavior, or what a flag object contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical examples are informative rather than padding. The parenthetical list is fairly dense, but each item adds distinguishing coverage information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally indicate what is returned (flag structure, severity, per-source fields) or how results are ordered/filtered. It tells the agent what is scanned but not what comes back, leaving a real gap for a detector-style tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (ticker_or_cik) is fully documented with format examples in the schema itself. The description adds no syntax, format, or lookup guidance beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('red-flag detector for one company') and then enumerates the exact signal classes covered (8-K 4.02 restatements, auditor changes, officer departures, insider cluster sells, Form 144 pressure, 13D filings, FDA recalls). This 'multi-source aggregate for one company' framing clearly separates it from single-signal siblings like cluster_sells, company_insider_pulse, or upcoming_sales_pressure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope ('for one company') implies a due-diligence/screening use case, but there is no explicit when-to-use guidance and no mention of when to prefer alternatives such as dossier, screen_all, watchlist, or entity_material_events. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_entitiesCompare Indexed Risk SignalsARead-onlyIdempotentInspect
Side-by-side compliance-risk comparison of two entities. Runs the full 40-source screen for each and returns both risk scores, an overall verdict (who is riskier), the risk gap, and the biggest per-vertical differences. Answers 'which counterparty is riskier' in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First entity name (>=3 chars) | |
| b | Yes | Second entity name (>=3 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real behavioral context: it runs the 'full 40-source screen for each' entity and returns both scores, a verdict, a risk gap, and per-vertical differences. It doesn't discuss latency/cost of a doubled screen, but the disclosure is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the definition and followed by mechanics and use case. Minor redundancy between sentence one and the 'which counterparty is riskier' closer, but nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the return payload (both scores, verdict, gap, per-vertical deltas), which is exactly what an agent needs. Params are fully schema-covered and annotations carry safety. Only the ambiguous entity-matching behavior is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both params documented ('First/Second entity name, >=3 chars'). The description only adds that the inputs are 'two entities'; it contributes no extra meaning about names, matching, or resolution behavior, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Side-by-side compliance-risk comparison of two entities.' The comparison framing inherently differentiates it from single-entity siblings like screen_all or sanctions_check, but it never names an alternative explicitly. An agent can still tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Answers which counterparty is riskier in one call,' suggesting you reach for it when comparing two entities rather than screening one. There is no explicit when-not guidance and no named alternative (e.g., screen_all for a single entity), so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
courts_by_partyGet Party Court DocketsARead-onlyIdempotentInspect
Litigation dossier for one company: docket count, top Natures of Suit, recent cases. Answers 'is this company being sued?' and 'for what?'
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Party name (company, substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the shape of the payload (counts, top NOS, recent cases), which matters since no output schema exists, but it omits how "recent" is bounded, whether the lookup is fuzzy, and pagination limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the returned fields are front-loaded, and the payoff questions are given last. No filler, no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description does the important work of telling the agent what comes back and why it would be called. The remaining gap is that "recent" is undefined and there is no routing to the sibling courts_recent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single name parameter is fully documented in the schema, including the substring-match behavior. The description adds only that the scope is "one company," which restates what the schema already conveys; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a company's litigation docket) and enumerates what it returns: docket count, top Natures of Suit, recent cases. It never names or contrasts with the obvious sibling courts_recent, so an agent must infer the entity-vs-recency split from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing questions ("is this company being sued?", "for what?") imply the use case clearly, which is better than nothing. However, there is no explicit when-not guidance and no pointer to courts_recent or dossier for the temporal or aggregate alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
courts_recentFind Recent Court DocketsBRead-onlyIdempotentInspect
Recent federal court dockets from CourtListener. Filter by party, court, or Nature of Suit (850 securities, 830 patent, 410 antitrust, 365/367 product liability, 480 consumer credit).
| Name | Required | Description | Default |
|---|---|---|---|
| nos | No | Nature of Suit code: 850, 830, 410, 365, 367, 480 | |
| court | No | Court ID e.g. 'cacd', 'mad', 'ilnd' | |
| limit | No | Maximum federal court dockets by filing date; default 50, max 200. | |
| party | No | Defendant/plaintiff name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is low. The description usefully adds the data provenance (CourtListener) and confirms results are sorted/limited by recency, but says nothing about pagination, result shape, or what 'recent' concretely means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and source front-loaded, no filler. The 'filter by party, court, or Nature of Suit' clause partly restates schema fields, which keeps it from a perfect score, but the NOS glossary earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only search with full schema descriptions, complete annotations, and no output schema, the description covers source, scope, and the non-obvious parameter vocabulary. The main untouched gap is the undefined recency window and the overlap with courts_by_party.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3, but the description goes beyond the schema by decoding the opaque Nature-of-Suit codes (850=securities, 830=patent, 410=antitrust, etc.), which the schema only lists as numbers. That mapping genuinely helps an agent choose the right filter value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (recent federal court dockets) plus the upstream source (CourtListener), so the agent knows exactly what it retrieves. It does not, however, differentiate itself from the close sibling courts_by_party, which overlaps on the party filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no exclusions, and no routing to alternatives such as courts_by_party or courts_recent's nondocket siblings. The filter list reads as a feature enumeration rather than invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crop_insurance_searchSearch Crop Insurance AreasARead-onlyIdempotentInspect
Search USDA RMA crop-insurance Summary of Business by county/state name. Returns the place_id ({state_fips}-{county_fips}) to pull a county's underwriting history — liability, premium, subsidy, indemnity, loss ratio, top crops (1989-2026). Aggregate federal program statistic — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | County or state name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds real value beyond them: the data source is an aggregate federal program statistic, it is explicitly PII-free, and the coverage window is 1989-2026. It stops short of noting rate limits, result truncation behavior, or that name matching may be fuzzy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler: the what, the return shape, the follow-on purpose, and the data provenance. Everything an agent needs is front-loaded in the first clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by specifying the place_id format and what it unlocks. Data vintage and PII status round it out. Minor gap: it doesn't say what a result record otherwise contains or how matches are ranked, but that is not blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (q is documented as county/state name with a >=2 char minimum, limit as 1-100 with default 25), so the baseline is 3. The description reinforces the name-matching intent but adds no syntax, matching, or pagination nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and a precise resource (USDA RMA crop-insurance Summary of Business) scoped to county/state name. It also names the return artifact (place_id in {state_fips}-{county_fips} form), so an agent can distinguish it from the neighbor ag_census_county_search even without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the follow-on use (resolve a place_id to pull county underwriting history, 1989-2026), which is meaningful chaining context. However, it never states when to prefer this over the similarly named ag_census_county_search or other county-level searches, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_vertical_activeFind Cross-Dataset ActivityARead-onlyIdempotentInspect
Discovery feed: list of entities with activity in 2+ regulatory verticals (SEC + FDA + contracts) inside the lookback window. Use to find entities worth pulling a full cross-vertical timeline for.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Calendar-day lookback for dated source activity; some sources have no date filter. Default 90, max 365. | |
| limit | No | Maximum entities returned; default 50, server caps at 100. | |
| min_verticals | No | Minimum distinct source families with activity per entity; default 2, allowed 2 to 4. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the multi-vertical qualifying criterion and the lookback-window scoping, but says nothing about result ordering, pagination, or the server-side cap noted in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, and the core behavior (what the feed lists and under what condition) is front-loaded before the usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description could have said more about the shape of the returned entity list (fields, ordering). Still, for a zero-required-parameter discovery feed whose annotations already cover safety, it gives enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (days, limit, min_verticals) are fully documented in the schema, including defaults, maximums, and the server cap on limit. The description only echoes the lookback window and the 2+ vertical threshold, adding no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (list of entities with activity in 2+ regulatory verticals) and names the exact scope (SEC + FDA + contracts, inside the lookback window). It also distinguishes itself from the full-timeline sibling by framing itself as a discovery feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use: 'Use to find entities worth pulling a full cross-vertical timeline for,' which implicitly routes to the entity_timeline sibling. It stops short of naming that sibling explicitly or stating when not to use this feed (e.g., single-vertical lookups).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
csb_investigation_searchSearch CSB InvestigationsARead-onlyIdempotentInspect
Search U.S. Chemical Safety Board (CSB) investigations of major chemical incidents — explosions, toxic releases, fires — by company, location, or keyword. ~139 independent root-cause investigations (BP Texas City, West Fertilizer, DuPont, etc.); the deep-investigation layer over EPA RMP chemical accidents.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Company / location / keyword (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely useful context beyond that: corpus size (~139 investigations), the nature of the records (independent root-cause investigations), and the relationship to the broader EPA RMP accident dataset. It does not discuss return shape or result ordering, but that is a minor omission against the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, with the supporting context (corpus size, examples, dataset layer) packed into the second. No filler or restated boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter search with no output schema, the description gives enough to call it correctly: what corpus is searched, what the query accepts, and what scale of result to expect. A brief note on what a result record contains would fully close the gap, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description's 'by company, location, or keyword' largely restates the schema's 'Company / location / keyword' for q. The named example entities (BP Texas City, West Fertilizer, DuPont) give marginal help in shaping queries, but the description adds little parameter meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search), a specific resource (U.S. Chemical Safety Board investigations), and the domain (major chemical incidents — explosions, toxic releases, fires) with concrete example cases. It even positions itself in the corpus hierarchy ('the deep-investigation layer over EPA RMP chemical accidents'), which implicitly distinguishes it from the sibling chemical_accident_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent can infer this tool is for CSB root-cause case investigations rather than general chemical accident data. However, it never explicitly says when to prefer this over chemical_accident_search or chemical_accident_worst, nor does it state exclusions. The 'deep-investigation layer over EPA RMP' phrase hints at the boundary without naming the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_broker_checkCheck Data Broker RegistrationARead-onlyIdempotentInspect
Checks whether a business is registered as a data broker in California, using the MORVS California Data Broker Register: the yearly registries filed with the California Privacy Protection Agency (2024 onward) and the Attorney General's 2020-2023 list, keyed by website domain so a name change at the same domain reads as one history. Give a business name, a website domain or URL, or both; matching is by registrable domain or by normalised legal name, DBA or earlier filed name (case, punctuation and legal-suffix insensitive, exact after normalisation), and when several brokers match they are returned as separate candidates, never merged. Each match carries the broker's filings as filed: what it says it collects, whom it reports having sold or shared data to, the laws it says regulate it, its own consumer-request counts, its name history and its broker page. Registration is self-reported and California-only, so a non-match is not a finding that a business is not a data broker, is exempt from registration, or has never registered. Businesses only; queries shaped like a personal name are not run.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Business legal name, DBA or earlier filed name, e.g. Cision or Trans Union, or a website URL; 2-200 characters. Give name, domain or both. | |
| domain | No | Website domain or URL, e.g. transunion.com or https://www.equifax.com/, reduced to its registrable domain; 2-200 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and closed-world, yet the description adds substantial context: the two source registries and their year ranges, domain-based identity so name changes unify, matching normalization rules, no merging of multiple candidates, and the contents of each match. It also states the critical caveat that registration is self-reported and California-only, so a non-match is not a negative finding — behavior an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and sources are front-loaded, and nearly every clause carries operative information. It is, however, a long, heavily comma-joined paragraph; the enumeration of returned fields could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing returns and does so (filings, collection categories, sale/share recipients, governing laws, consumer-request counts, name history, broker page). Any parameter is optional, both are documented, and the non-match interpretation caveat is present — nothing material is missing for correct invocation or interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description goes well beyond field definitions: it explains that matching is by registrable domain or by normalised legal name/DBA/prior name, that case, punctuation and legal suffixes are ignored, and that matching is exact after normalization. That tells an agent how to shape inputs and what recall to expect, which the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (checks whether a business is registered as a data broker) plus the exact source (MORVS California Data Broker Register) and the coverage window. An agent can distinguish it from the sibling data_broker_diff, which presumably compares registries rather than checking a single business.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit input options ('Give a business name, a website domain or URL, or both') and an explicit exclusion ('Businesses only; queries shaped like a personal name are not run'). It stops short of naming the sibling data_broker_diff as the alternative for comparison work, so routing between the two is only implied by scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_broker_diffCompare Data Broker RegistriesARead-onlyIdempotentInspect
Compares two files of the MORVS California Data Broker Register (a yearly CPPA registry, named by its year, or the Attorney General's 2020-2023 list) under the register's published method: a registration in the earlier file whose normalised legal name has no registration in the later file is an apparent leaver; if its website domain does have a later registration it is counted as re-registered at the same domain, with the later names, otherwise as not re-registered under either name or domain; a later registration whose name and domain are both absent earlier is net new. Returns the counts and the named registrations in each group, plus the register's own published figures for consecutive files. A registration absent from a later file is not an exit, a merger or a finding: registration is self-reported and California-only, and a business may have stopped brokering, merged, changed domain or simply not filed.
| Name | Required | Description | Default |
|---|---|---|---|
| year_a | Yes | One register file the register carries: a CPPA registry year (YYYY, 2024 onward) or 2020-2023 (Attorney General list). Order does not matter. | |
| year_b | Yes | The other register file, different from year_a: a CPPA registry year (YYYY) or 2020-2023. The earlier file is reported as earlier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/closed-world safety profile, and the description goes well beyond them: it explains the classing logic (apparent leaver, re-registered at same domain, net new) and, crucially, warns that an absent registration is NOT an exit, merger, or finding because registration is self-reported and California-only. That is exactly the kind of interpretive caveat an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, and the method and caveats are packed efficiently. It is a dense single paragraph and slightly long, but nearly every clause (method, classing, caveat) carries information an agent uses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by specifying what is returned (counts and named registrations per group, plus the register's own published figures for consecutive files). Combined with the interpretation caveats, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both year_a and year_b are already documented in the schema. The description reinforces the accepted formats ('named by its year, or the Attorney General's 2020-2023 list') but adds no syntax or ordering detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compares two files of the MORVS California Data Broker Register') and pins down the exact domain (CPPA yearly registry or AG 2020-2023 list). An agent can separate this from the sibling data_broker_check without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by laying out the register's published comparison method and what the result means, but it never states when to reach for this tool over data_broker_check or other broker-related siblings, nor any exclusions. Usage is inferable from the resource described rather than being routed explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_demand_compareCompare Data Demand HeadlinesARead-onlyIdempotentInspect
Shows the latest headline row reported by each publisher in the MORVS Government Data Demand Register, side by side with each figure's label. The figures are each publisher's own counts for its own period and scope. Companies count differently; never add or rank their figures across companies. A missing figure means not reported, not zero. National-security figures remain bands. Aggregate counts cannot show whether any person's data was requested. Optionally restrict to one sector.
| Name | Required | Description | Default |
|---|---|---|---|
| sector | No | Optional sector: big_tech, platform, ai, carrier, cameras_devices or official. Publisher counts have different scopes; never add or rank them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, closed-world safety profile, and the description goes well beyond them: publisher figures are non-comparable across companies, missing figures mean not reported rather than zero, national-security values stay banded, and aggregates cannot prove individual data requests. These are exactly the interpretive caveats an agent needs to avoid drawing false conclusions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each sentence carries real information — the caveats about aggregation, missing values, and bands all matter for correct interpretation. The sector note is slightly redundant with the schema, and the caveats could be ordered more tightly, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of explaining that the result is per-publisher headline rows with labels and how to read them. Combined with the safety annotations, an agent knows enough to call it correctly; only the sibling comparison is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single enum parameter is fully documented in the schema, including the no-add/no-rank note. The description's 'optionally restrict to one sector' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it shows the latest headline row per publisher from the MORVS Government Data Demand Register, paired with each figure's label. That is far more specific than the title alone. It does not name or differentiate itself from its closest sibling, data_demand_source, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the optional sector filter and, importantly, tells the agent how to interpret the output (never add or rank across companies, missing means not reported). But it gives no explicit when-to-use guidance and never points to data_demand_source or data_broker_check as the alternative when a different view is wanted, so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_demand_sourceGet Publisher Data Demand ReportARead-onlyIdempotentInspect
Returns one publisher's figures for one report in the MORVS Government Data Demand Register. Figures are that publisher's own counts for its own period and scope. Companies count differently. Never add or rank figures across companies. A missing figure means not reported, not zero. National-security figures remain bands. These aggregate counts cannot show whether any person's data was requested. Defaults to the latest complete report; optional filters select exact fact fields.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Exact ISO alpha-2 country code or WORLD, NONUS or XX; omit for every geography. | |
| limit | No | Maximum facts returned after filters; default 50, allowed 1-200. Aggregate counts cannot show whether any person's data was requested. | |
| period | No | Exact report period: YYYY-H1, YYYY-H2, YYYY or YYYY-MM-DD_YYYY-MM-DD. Defaults to the latest complete report. | |
| series | No | Exact published series id; omit for every series. A missing figure means not reported, not zero. | |
| source | Yes | Publisher id in the register, e.g. google or verizon. Unknown ids return the valid list. Figures are each publisher's own counts for its own period and scope. | |
| measure | No | Exact measure id; omit for every measure. Counts with different units must not be added or ranked across publishers. | |
| process | No | Exact legal-process id; omit for every process. National-security figures remain bands. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description still adds substantial non-obvious behavior: figures are per-publisher counts with inconsistent methodology, cross-company aggregation/ranking is invalid, missing means not reported rather than zero, national-security values stay banded, and the counts cannot reveal individual data requests. This is exactly the kind of interpretive constraint an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then the caveats, then defaults — a sound ordering for a caveat-heavy tool. Some phrasing is duplicated in the parameter schema (national-security bands, 'not reported, not zero'), which costs a little density but reinforces the highest-risk misinterpretations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read tool with full schema coverage and annotations, the description supplies the interpretive guardrails that matter most. It does not describe the shape of returned facts (no output schema exists), so an agent knows the rules but not the payload structure — a modest remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining that filters select exact fact fields and that period falls back to the latest complete report. The units/methodology caveat also contextualizes what 'measure' and 'series' identifiers imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Returns one publisher's figures for one report in the MORVS Government Data Demand Register.' The 'one publisher' scoping implicitly separates it from data_demand_compare, but no sibling is named outright. Purpose is clear without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the default behavior ('Defaults to the latest complete report') and that optional filters narrow to exact fact fields, which is useful context for invocation. However, it never says when to pick this over data_demand_compare or data_broker_check — the alternative routing is left to inference from the 'one publisher' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_freshnessCheck Dataset FreshnessARead-onlyIdempotentInspect
Per-dataset freshness across the federal data hub: FRESH/AGING/STALE/UNKNOWN vs each source's expected cadence, with age in days and separate last-successful-source-observation and indexed-content watermarks. Each row states which timestamp drives status. Optional status filter (FRESH/AGING/STALE/UNKNOWN).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter to one status: FRESH, AGING, STALE, or UNKNOWN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description then adds genuinely useful behavior beyond that: each row carries separate last-successful-observation and indexed-content watermarks, and each row states which timestamp drives the status. It stops short of describing pagination or result volume, so 4 not 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with what the tool returns, with the optional filter mentioned last. Terminology is jargon-heavy (watermarks, cadence) but compact and waste-free rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden of describing return values, and it does so reasonably: per-dataset rows, status class, age in days, dual watermarks, and the driving timestamp. For a read-only single-parameter diagnostic tool this is nearly sufficient; only ordering or volume expectations are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's enum values are already documented in the schema, so the baseline is 3. The description only restates the filter as optional and re-lists the same four values, adding no new semantics about filtering behavior or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and verb-equivalent scope: per-dataset freshness across the federal data hub, with the status vocabulary and the two watermark types named. An agent immediately knows this is the source-cadence freshness report. It does not name or differentiate itself from any sibling, but the sibling list contains no close competitor, so 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisite, and no alternative named. The only guidance is that the status filter is optional, which is a parameter detail rather than usage direction. Nothing tells the agent when this tool is the right choice versus the many search/dossier siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debarments_checkCheck Indexed DebarmentsARead-onlyIdempotentInspect
Screen a name against US federal contractor debarments (SAM Exclusions, ~10k entries) AND HHS OIG healthcare provider exclusions (LEIE, ~83k entries). Returns hit=true if any match. Use this for KYC + counterparty due diligence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity or individual name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive) and closed-world scope. The description adds genuinely useful context: the exact indexed sources and their sizes, plus the return semantics ("hit=true if any match") that no output schema discloses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences with zero filler: sources first, return value second, use case last. The core purpose is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially covers returns ("hit=true if any match"), which is the key output for a screening tool. It leaves minor ambiguity about whether matching entity details are returned, but otherwise gives enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, so the schema already carries the load (baseline 3). The description clarifies that the name is screened by substring but adds no format or normalization guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a precise verb ("Screen a name against") and names the exact resources: SAM Exclusions (~10k) and HHS OIG LEIE (~83k). This specificity inherently distinguishes it from overlapping siblings like sanctions_check and the screen_* family, which cover different data sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context ("Use this for KYC + counterparty due diligence"), telling the agent the scenario it targets. It stops short of naming alternatives or exclusions, so the agent must infer on its own whether sanctions_check or screen_all is the better fit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
documented_vessel_searchSearch Documented VesselsARead-onlyIdempotentInspect
Search USCG documented vessels by name or official number. ~394,495 US-flag vessels (recreational, fishing, freight, towing, passenger). Returns service, flag, tonnage, length, build year, hull material, hailing port, and certificate-of-documentation status. Vessel/asset facts only — no owner names or addresses (zero PII).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Vessel name or official number (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, idempotent read, so the bar is lower; the description adds real value with dataset scale (~394,495 vessels), category coverage, and an explicit 'zero PII' constraint (no owner names or addresses). With no output schema, listing the returned fields also carries behavioral weight, though pagination behavior is left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and lookup keys, then dataset scope, then return fields and the PII caveat. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter dataset search with no output schema, the description supplies the domain, scale, returned fields, and an important PII limitation. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both q and limit; the description's 'by name or official number' merely paraphrases q and adds nothing for limit. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (USCG documented vessels) plus the two lookup keys (name or official number), which is a precise, distinguishable purpose among the many dataset-search siblings. An agent can tell this retrieves US vessel documentation data without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the lookup keys and dataset scope, but never states when to prefer this tool or which sibling to use instead. There are no exclusions or prerequisite conditions, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doj_by_companyFind Company DOJ MentionsARead-onlyIdempotentInspect
DOJ press release search for one company. Surfaces FCPA, antitrust, healthcare fraud, environmental crimes, and any other DOJ enforcement actions mentioning the name. Body-text substring match across 266k+ press releases since 2009.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and a closed-world corpus. The description adds real behavioral value on top: matching is a body-text substring scan over 266k+ press releases since 2009, which tells the agent to expect loose/false-positive matches rather than entity-resolved results. It stops short of describing result caps or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler: purpose first, then coverage, then match mechanics and corpus bounds. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter search tool with no output schema and strong annotations, the description covers purpose, matching semantics, and corpus scope adequately. Minor gaps remain around result volume, ordering, and whether press releases are the only source type, but nothing essential to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the baseline is 3. The description earns an extra point by clarifying that matching happens on body text via substring, not on a canonicalized company identifier — a distinction the terse schema description ('Company name (substring)') does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('DOJ press release search for one company') and enumerates the enforcement categories covered (FCPA, antitrust, healthcare fraud, environmental crimes). This cleanly separates it from doj_recent (recency-based) and cfpb_by_company (different agency), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The one-company framing gives clear context for when to reach for this tool versus a general search. However, it never explicitly names alternatives (e.g., doj_recent or courts_by_party) or states when this tool is the wrong choice, so routing still requires inference from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doj_recentFind Recent DOJ ReleasesBRead-onlyIdempotentInspect
Recent DOJ Office of Public Affairs press releases. Filter by free-text query or DOJ component (Antitrust Division, USAO - SDNY, Criminal Division, ENRD, Civil Rights, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text title/body substring | |
| limit | No | Maximum DOJ releases by release date; default 50, max 200. | |
| component | No | DOJ component name substring (e.g. 'Antitrust') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds source context (Office of Public Affairs) but leaves the meaning of 'recent' undefined and says nothing about sort order or result size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the resource and recency front-loaded before the filter options. The trailing list of component names is slightly padded with 'etc.' but still earns its place as routing signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search with three fully documented optional parameters, the description is adequate but has a notable gap: 'recent' is never bounded by a time window or default lookback, which an agent needs in order to judge relevance. No output schema exists to absorb that ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents q, limit and component including examples and the default/max bound. The description's component examples ('Antitrust Division', 'USAO - SDNY', 'ENRD') only mildly extend the schema's single example, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (DOJ Office of Public Affairs press releases) and scopes it to recent items, so an agent knows exactly what it retrieves. It does not explicitly distinguish itself from the close sibling doj_by_company, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by stating the two filter modes (free-text query or DOJ component), which tells the agent when filtering is appropriate. However, it gives no explicit when/when-not guidance and never names alternatives such as doj_by_company or courts_recent, so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dossierGet Entity DossierBRead-onlyIdempotentInspect
Cross-topic dossier for one entity — SEC filings, 13F holdings, mutual fund holdings, FDA recalls as firm, federal register agency mentions, federal contracts as recipient.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Entity name substring (e.g. 'Pfizer') | |
| ticker | No | Stock ticker — resolves to the company's legal name automatically |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description does add genuine behavioral value by clarifying role matching ('FDA recalls as firm', 'contracts as recipient'), but says nothing about result volume, truncation, or how ambiguous name substrings are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the cross-topic scope and source list front-loaded and no filler. It is efficient, though the noun-phrase fragment omits an explicit verb, leaning on the title for the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the source enumeration is a reasonable stand-in for what comes back, but the description omits return shape and, critically, default behavior for a tool with zero required parameters. For an aggregating dossier across six datasets, that leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two optional parameters, so the schema already explains the substring semantics and the ticker-to-legal-name resolution. The description adds no parameter detail beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('cross-topic dossier for one entity') and enumerates exactly which datasets are aggregated (SEC filings, 13F, fund holdings, FDA recalls, federal register, contracts). This distinguishes it from narrow siblings like fda_firm_dossier or patents_by_assignee, though it never explicitly names a sibling it competes with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no routing to alternatives such as company_profile, entity_timeline, or compare_entities, all of which overlap. With zero required parameters, the description also never explains what happens if both name and ticker are omitted or which to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drone_company_checkCheck Drone Register CompanyARead-onlyIdempotentInspect
Checks whether a company or agency is named in the MORVS Drone Register, which compiles US government drone approval, restriction and compliance records: the DCMA Blue UAS Cleared List and Framework, FCC UAS Conditional Approvals, FAA Remote ID Declarations of Compliance, and the drone-linked entries of the Section 1260H list, the BIS Entity List and OFAC's NS-CMIC list. Matches by name or alias (case, punctuation and legal-suffix insensitive; substrings allowed) and returns each match's designations with the government record that names it, attached reference records, and federal contract totals where loaded. A non-match is reported as not found in the register; it is not clearance or a compliance determination.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company or agency name or alias, e.g. DJI, Skydio or Autel Robotics; ignores case, punctuation and legal suffixes, substrings allowed. | |
| limit | No | Maximum matching entities to return; default 10, max 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value beyond that: matching semantics, the shape of what comes back, and the critical caveat that absence from the register is not a compliance determination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and matching behavior are front-loaded and every clause carries information (list composition, match rules, return contents, caveat). The single long sentence is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns (designations, naming government record, attached reference records, federal contract totals) and does so. For a read-only, two-parameter lookup this is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters fully documented (matching rules for 'name', default/max for 'limit'). The description restates the matching rules but adds no format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Checks whether a company or agency is named in the MORVS Drone Register') and enumerates the constituent lists, which gives the tool a distinct scope. It never names a sibling (e.g. sanctions_check, drone_product_lookup, watchlist), so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the register's composition, and the closing caveat that a non-match 'is not clearance or a compliance determination' is a useful interpretation rule. But there is no explicit when-to-use/when-not guidance or routing to an alternative tool for related screening needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drone_product_lookupFind Drone Register ProductsARead-onlyIdempotentInspect
Finds drone platforms, components and software by model, product or category text across the DCMA Blue UAS Cleared List and Framework, FCC UAS Conditional Approvals and FAA Remote ID Declarations of Compliance in the MORVS Drone Register. Returns each matching designation with the company, list, action, date and source record, plus the current FCC Covered List exemption context taken from the register's reference records. An FAA declaration is the manufacturer's own statement, not an approval.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Model, product, component or category text, e.g. Mavic 3 Pro, X10D or flight controller; at least 2 characters. | |
| list | No | Restrict to one list: dcma_blue_cleared, dcma_blue_framework, fcc_conditional_approval or faa_rid_doc; omit to search all four. | |
| limit | No | Maximum matching designations to return; default 25, max 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (read-only, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds real value by disclosing the return fields and the FCC Covered List exemption context, and by warning that an FAA declaration is the manufacturer's own statement rather than an approval. That interpretive caveat is behaviorally useful and not derivable from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and scope, then returns, then the interpretation caveat. Efficient overall, though the enumerated list names are slightly heavy relative to the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned fields (company, list, action, date, source record) and the exemption context. Combined with 100% parameter coverage, an agent has enough to invoke and interpret results correctly, though it never mentions pagination or result limits beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents q, list and limit including the enum values and 2-character minimum. The description only echoes the query axis (model/product/category text) without adding syntax or format detail beyond the schema, matching the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (finds) and resource (drone platforms, components and software) scoped to four named registers, with the query axis (model/product/category text) made explicit. An agent can distinguish it from drone_company_check and fcc_grantee_search without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The text implies the usage context (product/model text search across the drone register) but never states when to prefer this over sibling tools like drone_company_check or fcc_grantee_search, nor any exclusion conditions. Usage is inferable rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_labelFind FDA Drug LabelARead-onlyIdempotentInspect
Look up an FDA drug label by brand, generic, or substance name. Returns indications, dosage, warnings, adverse reactions, drug interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Brand or generic name (substring match, case-insensitive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully names the returned sections (indications, dosage, warnings, adverse reactions, interactions), but adds no auth, rate-limit, or matching-behavior detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the lookup action and searchable identifiers. Every clause earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description compensates by enumerating the returned label sections, giving the agent enough to know what it will get. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already documents the single 'name' parameter as brand or generic (substring, case-insensitive). The description adds 'substance' as an accepted input beyond the schema, a minor extension; baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (FDA drug label) plus the accepted identifier types. No sibling covers drug labels directly (fda_firm_dossier is firm-level), so the purpose is unambiguous even without explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the searchable name types (brand, generic, substance), but there is no explicit when-to-use/when-not guidance or named alternative. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_money_agreementsList Drug Pricing Agreements and AnnexesARead-onlyIdempotentInspect
The 2025-26 drug-pricing agreements in the Medicare Drug Money Register, optionally filtered by company (a substring of a company as the White House, the annexes or the reviewed table name it). Returns the White House fact sheets by date and subject, each with the companies it announced an agreement with or listed, as named, and its quoted lines (a sheet is cited by date and subject; the agreements' texts are not published, and nothing beyond the published texts is read into them); each company's announcement date and list membership; Proclamation 11020's Annex II (company-specific Commerce agreements with their dates) and Annex III (companies) exactly as printed; the proclamation's ad valorem duty rates and the Commerce and USTR notices, as printed; and CMS's payment models: GLOBE's estimates in the proposed and final rules set like for like, GUARD's proposed estimate, and GENEROUS, each with CMS's own estimate and the reasons CMS states, quoted. A White House or CMS share or estimate is that body's own, quoted, and is never set against a figure computed from CMS's files. Each figure is named in its record's own words: "gross drug cost" (CMS), CMS's negotiated prices ("negotiated prices, which the statute refers to as maximum fair prices"), "announced an agreement" (the White House), "ad valorem duty rate" (the proclamation) and CMS's "estimated savings". The blocks (Part D gross drug cost by company, negotiated prices and the negotiated drugs' claims, the 2025-26 agreements, tariffs and CMS's payment models, Part B drug spending, and skin substitutes as totals only) are never added together. Every answer carries the register's question note: these records show Medicare's gross drug costs as CMS reports them, CMS's negotiated prices and estimates, and the government's announcements and proclamations; they do not show rebates paid, what any company agreed to beyond the published texts, or why any price or agreement was set. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the data's licence. Institutions only: no prescriber, physician, official, signer or member of Congress is named; labeler strings that read as a person's name are withheld and appear only as counts. No party label is given.
| Name | Required | Description | Default |
|---|---|---|---|
| company | No | Optional case-insensitive company name substring as the White House, the annexes or the reviewed table print it, for example Pfizer; at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and open-world behavior. The description adds substantial non-obvious constraints beyond that: figures are never summed across blocks, CMS and White House estimates are quoted rather than recomputed, labels are given in each record's own words, and personal names are withheld as counts. These are valuable behavioral disclosures, though buried in excessive prose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely long and runs multiple dense semicolon-chained sentences. Caveats about captions, as-of dates, licence, institutional-only rules and label withholding are piled in, making the core purpose harder to scan. Only the first sentence is effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns, and it does enumerate the fact sheets, annexes, notices, CMS models and caveats in detail. It is complete enough for an agent to understand what comes back, even though the delivery is excessively verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single optional company parameter as a case-insensitive substring with an example and an 80-character limit. The description restates that it is a substring of a company as printed but adds no new syntax or format detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: listing the 2025-26 drug-pricing agreements in the Medicare Drug Money Register, with an optional company filter. It does not differentiate this tool from siblings such as drug_money_company or drug_money_summary, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the optional company filter and the enumerated returned sections. There is no explicit when-to-use guidance, no exclusions, and no naming of alternatives like drug_money_company or drug_money_summary to help the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_money_companyFind Drugmaker Part D Costs and RecordsARead-onlyIdempotentInspect
Look up a drug company in the Medicare Drug Money Register by a substring of a reviewed parent company or trade group, of a labeler string as CMS prints it, or of a name the White House or the proclamation's annexes print for it. Returns up to 5 parents or labelers: for a parent, its Part D gross drug cost by year (annual and preliminary kept apart) with its share of all Part D, its largest drugs, every labeler string the reviewed table maps to it with the basis and reason (and the annual report read, where the mapping rests on one), its White House announcement and list membership and its Annex II and Annex III entries as printed, and the side columns: its connected PAC's contributions to candidates' committees by cycle (no committee it gave to, candidate or party is named), its 2025 lobbying reports (in-house expenses and outside firms' income are each the report's total for all issues and are never added together), the 2025 inaugural committee's report and its LD-203 cross-check (the same gift reported twice, never added), and super PAC membership, with the caption; for a labeler with no parent asserted or named as its own labeler, its gross drug cost for the last annual year and the earliest preliminary year, and the reason. An empty column is a search result, not a fact about the company. Labelers are named as CMS prints them; a parent company comes only from the register's published, reviewed table, with the reason for each mapping. Each figure is named in its record's own words: "gross drug cost" (CMS), CMS's negotiated prices ("negotiated prices, which the statute refers to as maximum fair prices"), "announced an agreement" (the White House), "ad valorem duty rate" (the proclamation) and CMS's "estimated savings". Gross is never net: gross drug cost is before manufacturers' rebates, which CMS may not publish, so a lower gross cost per prescription is never called a saving; CMS's own net estimate is shown beside every claims-based price figure, or the answer says that CMS gives none. Annual years come from CMS's annual file; the later periods come from its preliminary quarterly file, are labelled preliminary and are never put in one series with the annual years. The side columns (connected-PAC money from the FEC bulk files, 2025 lobbying reports from lda.gov, the 2025 inaugural committee's report and its LD-203 cross-check, and super PAC membership) are separate records shown side by side: never added to drug cost or to each other, and never put in date sequence with an agreement, a tariff or a price. Every answer carries the register's question note: these records show Medicare's gross drug costs as CMS reports them, CMS's negotiated prices and estimates, and the government's announcements and proclamations; they do not show rebates paid, what any company agreed to beyond the published texts, or why any price or agreement was set. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the data's licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no prescriber, physician, official, signer or member of Congress is named; labeler strings that read as a person's name are withheld and appear only as counts. A name that matches only a withheld string answers exactly like a name that matches nothing. No party label is given.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive substring of a parent company, trade group or labeler string as CMS prints it, for example Pfizer or Janssen; at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. Beyond that, the description extensively discloses data limitations (gross vs net, annual vs preliminary never combined, side columns never added, empty column is a search result, withheld names, FEC restrictions), far exceeding what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely long and dense, with repeated caveats ('never added', 'never put in one series', 'separate records') that could be compressed. The key purpose is buried under many clauses, making it hard to scan despite containing useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a complex, multi-source dataset, the description thoroughly covers what is returned (parents, labelers, side columns, preliminary vs annual years), what is excluded, and the register's question note and captions. It leaves little ambiguity about the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'name' parameter, so the schema already defines it as a case-insensitive substring of a parent company or labeler. The description adds that the name may also be a White House or proclamation-annex name, which is extra semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Look up') and resource ('a drug company in the Medicare Drug Money Register') and specifies the matching basis. It does not explicitly name sibling tools or distinguish itself from drug_money_drug, drug_money_agreements, or drug_money_summary, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives constraints such as 'Institutions only' and 'no prescriber... is named', but never says when to use this tool instead of a sibling like drug_money_drug or drug_money_agreements. There is no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_money_drugFind Drug Costs and Negotiated PricesARead-onlyIdempotentInspect
Look up Part D drugs in the Medicare Drug Money Register by a substring of a brand or generic name as CMS prints it, or of a negotiated drug's name as CMS lists it, optionally limited to one period the data carries (a year, YYYY, from CMS's annual file, or a preliminary period, YYYY or a quarter such as 2026Q1, from its quarterly file). Returns up to 10 brands, each with gross drug cost and claims by period, the gross cost per prescription for the preliminary periods (computed by the register from CMS's file, labelled as such) and its change, beside CMS's net estimate or the stated absence of one; for a drug CMS selected for negotiation, its cycle, CMS's negotiated prices by effective date from CMS's file, the discount from list price CMS's fact sheet prints, any deselection and the register's flag where the claims sit outside CMS's band; any White House sheet that names the drug (its direct-purchase prices are never shown); and the labelers rolled up to a parent that carry the brand, as CMS prints them, with the parent and the reviewed table's reason. Co-marketed drugs stay under the labeler CMS prints, and cost is never split or reassigned. Labelers are named as CMS prints them; a parent company comes only from the register's published, reviewed table, with the reason for each mapping. Each figure is named in its record's own words: "gross drug cost" (CMS), CMS's negotiated prices ("negotiated prices, which the statute refers to as maximum fair prices"), "announced an agreement" (the White House), "ad valorem duty rate" (the proclamation) and CMS's "estimated savings". Gross is never net: gross drug cost is before manufacturers' rebates, which CMS may not publish, so a lower gross cost per prescription is never called a saving; CMS's own net estimate is shown beside every claims-based price figure, or the answer says that CMS gives none. Annual years come from CMS's annual file; the later periods come from its preliminary quarterly file, are labelled preliminary and are never put in one series with the annual years. Every answer carries the register's question note: these records show Medicare's gross drug costs as CMS reports them, CMS's negotiated prices and estimates, and the government's announcements and proclamations; they do not show rebates paid, what any company agreed to beyond the published texts, or why any price or agreement was set. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the data's licence. Institutions only: no prescriber, physician, official, signer or member of Congress is named; labeler strings that read as a person's name are withheld and appear only as counts. A name that matches only a withheld string answers exactly like a name that matches nothing. No party label is given.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive substring of a Part D brand or generic name as CMS prints it, or a negotiated drug, for example Eliquis; at most 80 characters. | |
| period | No | Optional period the data carries: a year (YYYY) from the CMS annual file, or YYYY or YYYYQn (e.g. 2026Q1) from its preliminary file; all when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: it returns up to 10 brands, labels preliminary periods separately, never combines annual and quarterly periods, avoids treating gross cost as net savings, withholds labeler strings that read as person names, and says a withheld-only match answers like no match. These are substantive behavioral and data-limitation disclosures that an agent would not get from the annotations or schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, but the description is a very long, dense paragraph with heavy repetition of CMS sourcing, naming conventions, and caveats. For a two-parameter lookup tool, much of the text is over-specified and hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high domain complexity and the absence of an output schema, the description is contextually complete: it describes returned fields, gross-versus-net caveats, preliminary-period labeling, negotiated-price reporting, withholding rules, and answer metadata such as the question note and as-of date. An agent has enough information to understand what a correct answer should and should not contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with 100% description coverage, including the name substring and period pattern. The description elaborates on the same semantics, such as annual versus preliminary periods, but adds little parameter-level meaning beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Look up Part D drugs in the Medicare Drug Money Register by a substring of a brand or generic name... optionally limited to one period." This makes the tool's core purpose clear, but it does not explicitly differentiate itself from nearby siblings such as drug_money_company, drug_money_agreements, drug_money_summary, or drug_label.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is appropriate by specifying lookup by name substring and optional period, but it never states when to choose this tool over sibling tools. There are no explicit exclusions or alternative-tool routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_money_summaryGet Medicare Drug Money TotalsARead-onlyIdempotentInspect
Totals from the Medicare Drug Money Register, built from CMS's Part D and Part B spending files, CMS's negotiated-price file and fact sheets, the Federal Register, the White House's fact sheets and annexes, and, side by side, FEC, LDA and two MORVS registers' records. Returns Medicare Part D gross drug cost for all drugs by year (annual and preliminary kept apart), the 10 largest parent companies with their shares and the cost not rolled up to any parent, by class; the share of Part D gross drug cost in the earliest preliminary year held by the companies the White House listed (computed here from CMS's file, labelled as such); the negotiated drugs' gross cost per prescription in the register's baseline and latest preliminary periods by cycle, each beside CMS's net estimate or the stated absence of one, with the drugs outside CMS's band flagged as the register flags them; Proclamation 11020's ad valorem duty rates and the zero rate for companies with pricing agreements, as printed; CMS's GLOBE estimates proposed and final, like for like, and its GUARD and GENEROUS estimates; Part B drug spending without skin substitutes, and skin-substitute totals; the counter-findings; the register's headlines with their basis; and what is excluded (pharmacy benefit managers, plan sponsors, cash prices, Medicaid by drug) and withheld (counts only). Each figure is named in its record's own words: "gross drug cost" (CMS), CMS's negotiated prices ("negotiated prices, which the statute refers to as maximum fair prices"), "announced an agreement" (the White House), "ad valorem duty rate" (the proclamation) and CMS's "estimated savings". Gross is never net: gross drug cost is before manufacturers' rebates, which CMS may not publish, so a lower gross cost per prescription is never called a saving; CMS's own net estimate is shown beside every claims-based price figure, or the answer says that CMS gives none. Annual years come from CMS's annual file; the later periods come from its preliminary quarterly file, are labelled preliminary and are never put in one series with the annual years. The blocks (Part D gross drug cost by company, negotiated prices and the negotiated drugs' claims, the 2025-26 agreements, tariffs and CMS's payment models, Part B drug spending, and skin substitutes as totals only) are never added together. The side columns (connected-PAC money from the FEC bulk files, 2025 lobbying reports from lda.gov, the 2025 inaugural committee's report and its LD-203 cross-check, and super PAC membership) are separate records shown side by side: never added to drug cost or to each other, and never put in date sequence with an agreement, a tariff or a price. Every answer carries the register's question note: these records show Medicare's gross drug costs as CMS reports them, CMS's negotiated prices and estimates, and the government's announcements and proclamations; they do not show rebates paid, what any company agreed to beyond the published texts, or why any price or agreement was set. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the data's licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no prescriber, physician, official, signer or member of Congress is named; labeler strings that read as a person's name are withheld and appear only as counts. No party label is given.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description goes well beyond them: gross is never net, preliminary and annual years are never merged into one series, blocks are never added together, side-columns are never summed with drug cost, and specific items are excluded or withheld. It also discloses governance behaviour (question note, as-of dates, licence, FEC 30111(a)(4) restriction) and the institution-only rule for labeler strings, which an agent could not learn from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is one enormous run-on block of semicolon-chained clauses; the useful front-load ('Totals from the Medicare Drug Money Register') is followed by dozens of nested caveats with no headings or paragraph breaks. Much of the content is substantive, but the packing makes it hard to scan and the core instruction is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description must carry the entire return-value burden, and it does so exhaustively, including exclusions, withholding, and labelling conventions. What it omits is the routing dimension (which sibling answers a narrower question) and any hint about response size or pagination, which matter for a tool aggregating this many blocks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the schema carries no semantics to supplement and the baseline of 4 applies. The description instead specifies what the zero-argument call returns, which is the only meaningful 'parameter' context here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific resource (the Medicare Drug Money Register) and a specific output shape (totals/aggregates), then enumerates the blocks returned, so an agent can tell this is the aggregate view rather than a per-entity lookup. It never names its obvious siblings (drug_money_company, drug_money_drug, drug_money_agreements), so the differentiation is inferred from the word 'Totals' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to call this instead of drug_money_company, drug_money_drug, drug_money_agreements, or media_money_summary. An agent must guess from the tool name alone that this is the overview/rollup endpoint, and there are no prerequisites, exclusions, or routing conditions given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
election_equipment_jurisdictionFind Election Equipment by JurisdictionARead-onlyIdempotentInspect
Find a jurisdiction by two-letter state code and literal jurisdiction name substring. Returns coded equipment answers self-reported in the EAC's 2024 Election Administration and Voting Survey (November 2024), with make/model and MORVS-curated vendor labels. Missing and coded Other answers do not mean no equipment. The survey does not establish equipment used on 2026-11-03; check Verified Voting and the state election office. Vendor counts overlap and must not be summed. Say voters participated in jurisdictions that reported a vendor's equipment; never say that vendor counted those votes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum jurisdictions returned, allowed 1-25. | |
| state | Yes | Required two-letter state or territory code from the EAC 2024 survey. | |
| jurisdiction | No | Optional case-insensitive jurisdiction name substring, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations (readOnly/idempotent/openWorld/non-destructive), it discloses data provenance (EAC 2024 survey, November 2024), that answers are self-reported and coded, that vendor counts overlap and must not be summed, and precise linguistic constraints on what the agent may claim. This is exactly the interpretive context annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the lookup operation, then layered caveats. Every sentence carries substantive interpretation guidance, though the block of caveats is dense and could be tightened marginally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately conveys what comes back (coded equipment answers with make/model and MORVS-curated vendor labels) and how to interpret gaps. Minor omissions like pagination/limit behavior and the sibling-tool boundary keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates state code and jurisdiction name substring (adding only the 'literal' qualifier) and says nothing about the limit parameter beyond what the schema documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Find') and resource ('jurisdiction') and states the lookup key (two-letter state code plus literal jurisdiction name substring) and the returned payload (coded equipment answers from the 2024 EAVS with make/model and vendor labels). It doesn't explicitly distinguish itself from the sibling election_voting_systems tool, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage constraints: missing/Other answers don't mean no equipment, the survey doesn't establish equipment on a specific date, and directs the agent to Verified Voting and the state election office for verification. It stops short of routing between this tool and the election_voting_systems sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
election_voting_systemsFind EAC Voting SystemsARead-onlyIdempotentInspect
Filter the EAC's certified, under-test, Withdrawn or Decertified Systems, terminated and ESTEP e-poll-book rows by list, MORVS-curated vendor label, testing standard or proposed end-of-life notice flag. Defaults to the certified voting-system list. Returns EAC names, standards, dates and source links. A system named in the EAC's April 2026 notice remains on the certified list while the notice is proposed. Federal certification is voluntary; state law decides use. Never call a system insecure or outdated; use decertified only inside the EAC's own list name. Includes the EAC's exact security statement and the November 2024 EAVS survey label.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | EAC list: certified, under_test, withdrawn_or_decertified, terminated or epollbooks; defaults to certified. | |
| limit | No | Maximum system rows returned, allowed 1-100. | |
| vendor | No | Optional case-insensitive EAC manufacturer or MORVS vendor-label substring. | |
| standard | No | Optional testing standard as listed in the EAC data. | |
| eol_notice | No | If supplied, filter for systems named in the EAC April 2026 EOL notice; retirement remains proposed while still certified. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive, open-world behavior, and the description adds substantial domain context: default list behavior, how proposed EOL notices interact with certified status, legal caveats about federal versus state authority, and wording restrictions for decertified systems. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the description is appropriately sized for a tool with several domain-specific cautions. It is dense but mostly earns its space, though some legal and notice wording overlaps with schema or annotation context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains what is returned: EAC names, standards, dates, and source links. Combined with the default behavior, optional filters, and domain caveats, it gives an agent enough information to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters, including the list enum and eol_notice behavior. The description reinforces the default list and domain meaning of vendor/eol_notice, but adds little parameter-level detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Filter', and a precise resource, the EAC's certified/under-test/withdrawn-or-decertified/terminated/e-poll-book systems, and it enumerates return fields. However, it does not explicitly name or differentiate against sibling tools such as election_equipment_jurisdiction, so the sibling distinction is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the default list and gives important domain cautions, such as federal certification being voluntary and how to refer to systems named in the April 2026 notice. It does not, however, explain when to use this tool versus alternatives or name a sibling tool for a different voting-system query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_material_eventsGet Entity Material EventsARead-onlyIdempotentInspect
Cross-vertical 'alert me' feed for one entity. Returns only high-signal events (importance ≥ 60): Class I FDA recalls, Schedule 13D filings, large insider sales, restatements, large federal contracts, terminated clinical trials, EPA significant-violator status.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Ticker, CIK, UEI, LEI, DUNS, or entity_id | |
| days | No | Calendar-day lookback for dated material events; some sources have no date filter. Default 180, max 730. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add behavior. It usefully discloses the high-signal filter (importance ≥ 60) and the event categories, but says nothing about ordering, pagination, or what an entity with no qualifying events returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's identity and scope. The event list is long but each item defines the boundary of what counts as 'material,' so every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does so by enumerating the event categories emitted. It stops short of describing the shape, ordering, or empty-result behavior, but for a filtered-feed tool the scope disclosure is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both 'key' (accepted identifier types) and 'days' (default 180, max 730, some sources undated) are fully documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('cross-vertical alert feed for one entity') and enumerates the event categories it surfaces (Class I recalls, 13D filings, insider sales, restatements, etc.), so an agent knows exactly what it yields. It does not, however, explicitly contrast itself with near siblings like entity_timeline, cross_vertical_active, or company_risk_flags, which weakens true disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the framing as an 'alert me' feed and the importance ≥ 60 threshold suggest it is for surfacing high-signal events on a known entity. There is no statement of when to prefer it over alternatives (e.g. entity_timeline for a full chronology) and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_relationshipsGet Entity RelationshipsARead-onlyIdempotentInspect
Company relationship graph (shared-officer edges): other companies whose Form-4 filings name the same person(s) as this entity — board interlock / multi-company executives / activist overlap. Accepts a ticker, CIK, or name.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Ticker, 10-digit CIK, or entity name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so safety is covered. The description adds genuine behavioral context beyond that: the edge source is Form-4 filings and the edge meaning is shared named persons, which tells the agent how to interpret results and the limits of coverage (officer-level overlap only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that defines the resource first and the edge semantics second, with no filler. It is dense and slightly overloaded with three slash-separated edge labels, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and it does state that results are other companies linked by shared Form-4 named persons. It stops short of describing result shape, ranking, or limits, but for a one-parameter read tool with full annotation coverage this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'key' parameter, whose schema description already lists ticker, 10-digit CIK, or entity name. The description's 'Accepts a ticker, CIK, or name' merely restates the schema, so baseline 3 applies with no added semantics such as ambiguity resolution or normalization rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (company relationship graph) and precisely defines what the edges are: other companies whose Form-4 filings name the same person(s), with concrete edge types (board interlock, multi-company executives, activist overlap). An agent can tell this apart from generic rollups like common_owner_rollup or influence_chain from the mechanism alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the described edge types rather than stated: an agent can infer this is for finding interlocks, but the description never says when to prefer it over siblings such as common_owner_rollup, compare_entities, or influence_chain, nor states 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.
entity_timelineGet Entity TimelineARead-onlyIdempotentInspect
Cross-vertical event timeline for one real-world entity — joins SEC filings/insider/Form144/13D + FDA recalls + FDA drug labels + federal contracts into one ordered feed. Use this when an LLM needs the FULL picture of a company across regulatory verticals. Add min_importance to filter to high-signal events only.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Ticker, 10-digit CIK, UEI, LEI, DUNS, or numeric entity_id (e.g. 'PFE') | |
| days | No | Calendar-day lookback for dated events; some sources have no date filter. Default 180, max 730. | |
| limit | No | Maximum events in the final sorted timeline; default 100, max 500. | |
| min_importance | No | 0-100. Class I recall=100, 13D=75, large Form 144=75, insider buy=50, 8-K=35. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the tool joins multiple sources into one ordered feed and supports min_importance filtering, but it omits pagination behavior, output event structure, and that some sources ignore the days filter (the schema notes that caveat).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: the first defines the tool and its scope, the second states the primary use case, and the third gives an actionable parameter tip. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally explain return values; it only says 'one ordered feed' without describing event fields, ordering criteria, or limit behavior. However, the schema fully documents parameters and annotations cover safety, so an agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for key, days, limit, and min_importance including examples and defaults. The description only mentions min_importance filtering, which the schema already documents in more detail, so it adds no meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Cross-vertical event timeline for one real-world entity') and lists the exact sources joined (SEC filings, FDA recalls, drug labels, federal contracts) into one feed. This scope clearly distinguishes it from single-vertical siblings like entity_material_events or company_insider_pulse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use condition: 'Use this when an LLM needs the FULL picture of a company across regulatory verticals.' However, it does not name alternative tools for narrower needs or state when not to use this tool, leaving exclusions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa_facilitiesFind EPA FacilitiesARead-onlyIdempotentInspect
EPA-regulated facilities owned by a company. Returns location, NAICS, and compliance status. Set violations=1 to only see facilities with EPA violations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum facilities returned; default 50, max 500. | |
| owner | No | Owner company name (substring) | |
| state | No | 2-letter state code | |
| violations | No | Use 1 to show only facilities whose compliance status contains Violation; 0 or omitted leaves all statuses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, idempotent, closed-world operation, so the bar is lower. The description adds the return shape and the filtering behavior of violations=1, but says nothing about pagination, result volume, or data freshness beyond what the schema covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the core resource and return fields are front-loaded and the filtering hint is placed last. Slightly terse but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and annotations carrying the safety profile, the description covers the resource, return fields, and the key filter. No output schema exists but the return fields are stated, leaving only minor gaps like pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, owner, state, violations) are already documented. The description restates the violations flag semantics without adding syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (EPA-regulated facilities owned by a company) plus what it returns (location, NAICS, compliance status). It is clear what the tool does, but it does not name or contrast with any sibling tool, so an agent must infer its niche among the many search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one usage hint — set violations=1 to narrow to violating facilities — but does not state when to prefer this tool over alternatives or any exclusions. Usage is implied through the parameter hint rather than a when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_filing_datesEstimate Next SEC Filing DatesBRead-onlyIdempotentInspect
Estimates each company's next 10-Q/10-K filing date from its past SEC filing cadence. Dates are estimates, not announced filing dates.
| Name | Required | Description | Default |
|---|---|---|---|
| form_type | No | Filter estimated filings to 10-Q or 10-K; omit to include both. | |
| within_days | No | Include estimated 10-Q/10-K filing dates from today through this many calendar days; default 30, max 120. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world behavior, so the safety profile is covered. The description adds one genuinely useful behavioral caveat — that outputs are projections from cadence, not announced dates — but says nothing about projection horizon, confidence, or behavior for companies with thin filing history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core behavior first and the reliability caveat immediately after. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, closed-world, no-required-param tool is simple enough that the short description is largely adequate. However, with no output schema, the description should at least hint at the return shape (per-company date list vs. single date) and clarify entity scope — neither is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both parameters are fully documented in the schema, including the enum filter and the default/max on within_days. The description adds no syntax or interpretation beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (estimates) plus resource (next 10-Q/10-K filing dates) and even the method (past filing cadence), which no sibling tool duplicates. The one ambiguity is scope: 'each company's' is unexplained, and with zero required parameters it's unclear whether this is entity-scoped, universe-wide, or context-bound.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no when-not-to-use, and no named alternative among the many sibling estimate/screening tools. The agent must infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fails_to_deliver_searchSearch Fails To DeliverARead-onlyIdempotentInspect
Search SEC fails-to-deliver by issuer name or ticker. Returns each security's total fail shares, peak single-day fail balance, and days-with-fails over the rolling 12-month window. CUSIP joins to the SEC securities/13F-holdings layer.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Issuer name or ticker (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, non-destructive read, so the safety profile is covered. The description goes further by disclosing the return shape (total fail shares, peak single-day fail balance, days-with-fails), the rolling 12-month window, and that CUSIP links to the SEC securities/13F-holdings layer — useful context an agent cannot get from structured fields. It omits pagination behavior for the limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what it searches, what it returns, and the join key. Nothing is wasted and the resource is front-loaded, which is exactly the right structure for a retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only search with full schema coverage and no output schema, the description supplies what is needed: the resource, the lookup key, the returned metrics, and the time window. The remaining omissions (pagination, ordering, and differentiation from fails_to_deliver_top) are minor but keep it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented (q as name/ticker with >=2 chars, limit with default 25 / max 100). The description restates the q semantics but adds nothing about limit or result ordering. Baseline 3 is appropriate when the schema carries the parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search SEC fails-to-deliver') plus the accepted lookup keys ('issuer name or ticker'), so the agent knows exactly what it does. However, it never distinguishes itself from the near-identical sibling fails_to_deliver_top, which an agent would reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. The closest thing is a restatement of the query key, which the schema already supplies. With a direct sibling (fails_to_deliver_top) sitting in the same tool list, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fails_to_deliver_topRank Fails To DeliverBRead-onlyIdempotentInspect
SEC fails-to-deliver leaderboard — securities ranked by total fail-to-deliver shares over the rolling 12-month window. Fails-to-deliver are a settlement-stress / naked-short red flag tracked by retail investors and market-structure researchers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 100, max 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the rolling 12-month aggregation window and the domain meaning of fails-to-deliver. It stops short of stating sort direction, coverage universe, or result payload, so it adds value but not richly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the concrete ranking definition before the interpretive gloss. The second sentence earns its place by telling an agent why this metric matters, though it edges toward background narrative rather than invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only ranking tool with annotations covering safety, the definition is workable. With no output schema, though, it should indicate what each ranked entry contains (symbol, total FTD shares, window) and confirm the ranking order — details an agent needs to interpret results that are currently left unstated. The parameter count is trivial (1) and fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'limit' parameter is fully documented in the schema (default 100, max 500). The description adds no syntax, unit, or default information, so the baseline of 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('securities ranked by total fail-to-deliver shares') plus the scoping window ('rolling 12-month'). An agent can tell this is a ranked leaderboard rather than raw lookup. However, it never names the obvious sibling fails_to_deliver_search to sharpen the distinction, so 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'leaderboard' — this is the top-N ranked view vs. a per-symbol search. But there is no explicit when-to-use, no when-not, and no named alternative such as fails_to_deliver_search or short_interest_search. An agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fair_market_rent_searchSearch Fair Market Rent AreasARead-onlyIdempotentInspect
Search HUD Fair Market Rents by area/county/state name. Returns place_id (10-digit HUD fips) to pull an area's FY2026 FMRs — the 40th-percentile gross rent by bedroom size (efficiency/0BR through 4BR). Sets Section 8 voucher payment standards. Aggregate dollar amounts — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Area, county, or state name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful domain context: aggregate dollar amounts, zero PII, and the 40th-percentile-by-bedroom semantics that set Section 8 payment standards. It stops short of disclosing pagination (how limit interacts with total results) or error behavior for short queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses, front-loaded with the search action. The 'place_id' and Section 8 clauses earn their place by explaining the follow-up lookup pattern; 'zero PII' is a one-phrase privacy signal. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only search with a fully documented schema, the description covers purpose, return key, and data semantics, which is most of what an agent needs. What it omits is pagination guidance (how to page past limit=100) and the matching semantics of q, which is why it falls short of 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both params (q and limit) are already documented in the schema, which sets the baseline at 3. The description adds semantic value by explaining what the returned place_id is used for, but contributes nothing about how q is matched (partial vs exact, fuzzy) or how limit behaves in pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Search HUD Fair Market Rents'), scopes the query surface (area/county/state name), and explains the return value ('place_id (10-digit HUD fips) to pull an area's FY2026 FMRs'). It is clearly distinguishable from generic sibling search tools like 'search' or 'resolve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the use case — look up a place_id for an area via its name so you can retrieve FMRs — but never states when to prefer this over sibling search tools or what to do if you already hold a fips/place_id. No explicit exclusions or named alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_grantee_searchSearch FCC GranteesARead-onlyIdempotentInspect
Search FCC equipment-authorization grantees — the manufacturer/importer behind every FCC ID — by company name. ~50k grantees across 111 countries (China 12,962, Taiwan 3,717). A supply-chain lens that joins UFLPA forced-labor + trade-screening by name. Optional country filter.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Grantee/company name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) | |
| country | No | Optional country filter, e.g. China |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety behavior is covered. The description usefully adds corpus scope (~50k grantees, 111 countries) but says nothing about result format, pagination, or matching behavior beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and compact at four sentences. The country-count statistics (China 12,962, Taiwan 3,717) are somewhat gratuitous and read as filler rather than actionable information, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description ideally would describe return shape or pagination, which it omits. It conveys corpus scale and scope adequately for a simple filtered search, but leaves the agent guessing about what a result contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates 'by company name' and 'Optional country filter' but adds no semantics (matching rules, country format, limit behavior) beyond the schema's own text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (FCC equipment-authorization grantees) and goes further to define the resource — 'the manufacturer/importer behind every FCC ID'. This distinguishes it from the many other *_search siblings and makes the domain immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'A supply-chain lens that joins UFLPA forced-labor + trade-screening by name' implies when this tool is relevant (supply-chain screening). However, it names no alternatives or exclusions — e.g. when to prefer sanctions_check, trade_remedy_search, or nhtsa_by_manufacturer — so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_firm_dossierGet FDA Firm ActivityARead-onlyIdempotentInspect
All FDA activity for one firm — recalls + 510(k) clearances + FAERS adverse-event reports.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Firm name substring (case-insensitive) to match indexed FDA activity, e.g. Pfizer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed-world scope, so the safety profile is fully covered. The description adds real value by disclosing that the result is a union of three heterogeneous sources, but says nothing about result volume, matching breadth, or missing-data behavior for a firm with no FDA footprint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with an em-dash list; every clause carries information (scope, entity type, the three constituent datasets) and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates reasonably by naming exactly which record types come back, which is the key thing an agent needs to judge relevance. A brief note on response shape or per-source grouping would close the remaining gap, but it is largely complete for a one-parameter aggregation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's substring/case-insensitivity semantics are already documented in the schema. The description only reinforces the single-firm scope ('one firm') without adding syntax or matching guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('All FDA activity for one firm') and enumerates the three datasets it unions (recalls, 510(k) clearances, FAERS reports), which visibly separates it from single-dataset FDA siblings like drug_label. It does not, however, explicitly name or contrast any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for one firm' and 'All FDA activity' — i.e., use this for a firm-level rollup rather than a single FDA dataset — but there is no explicit when-to-use/when-not or named alternative (e.g., drug_label for labels, clinical_trials_recent for trials). The scoping hint is present but the routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fed_enforcement_recentFind Recent Fed EnforcementBRead-onlyIdempotentInspect
Federal Reserve banking enforcement actions (consent orders, written agreements, CMPs, removals). Optional bank filter.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | No | Bank/holding co name substring | |
| limit | No | Maximum Federal Reserve actions by effective date; default 50, max 200. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description usefully discloses which document classes are in scope, but it omits critical behavior such as the recency window, ordering, and whether results are capped by a fixed period rather than just the limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the resource scope followed by the filter note. Nothing is wasted, though the brevity comes at the cost of the missing recency-window detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema lookup tool this is minimally adequate: the scope is clear and the schema covers the inputs. It falls short on defining the 'recent' window and on giving any hint of the result shape, which the absence of an output schema would otherwise demand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the descriptions for `bank` (substring match) and `limit` (default 50, max 200, effective-date ordering) are fully documented there. The description's note that `bank` is optional adds nothing the schema does not already say, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource and enumerates the covered action types (consent orders, written agreements, CMPs, removals), which is well beyond a tautology. It does not, however, distinguish itself from recursive peers like doj_recent or courts_recent, leaving the 'Federal Reserve' scope as the only discriminator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is that the `bank` filter is optional. There is no statement of when to prefer this over other enforcement/regulatory lookups, no prerequisites, and no mention of what time window 'recent' covers, which is the single most important usage question for a recency-scoped tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
federal_file_searchSearch Federal File SystemsARead-onlyIdempotentInspect
Searches the MORVS Federal Files Register of federal Privacy Act systems of records by system name, number or ID, with agency, recipient, record-category, status and exemption filters. Recipient tags or groups and record flags are pattern matches on the agency text and count at least those matches; recipient matches exclude standard agency boilerplate. DHS matches do not imply ICE; ICE has its own tag. A routine use is the agency statement that it MAY disclose records for a purpose; it does not show that a disclosure happened. An exemption claim may limit access or correction but does not decide a request. Missing systems are not proof no records are kept. Results default to active systems and include published source context.
| Name | Required | Description | Default |
|---|---|---|---|
| flag | No | Record flag from the index. Flags are text matches, reported as at least. | |
| limit | No | Maximum matching systems returned; default 20, allowed 1-50. | |
| query | No | System name or number substring, at most 100 characters. A missing system does not prove no records are kept. | |
| agency | No | Agency code from the register index. DHS is a separate tag from ICE and does not imply ICE. | |
| exempt | No | Filter systems that claim an exemption; a claim limits access but does not decide an individual request. | |
| status | No | Published system status; defaults to active. Use all for every status, or select one other published status. | |
| changed | No | Filter systems linked to changes after the compilation; their last full published text may be out of date. | |
| recipient | No | Recipient tag or group from the index. Tags are text matches, reported as at least; a routine use says MAY disclose, not that it did. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, closed-world behavior, so the description's job is interpretive context, and it delivers real value: routine uses mean MAY disclose, exemptions do not decide a request, missing systems do not prove no records exist, and DHS does not imply ICE. These caveats materially change how an agent reports results. It does not discuss result ordering or how to retrieve full text, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It opens with the verb and resource, then layers the disambiguating caveats, which is well front-loaded. The second sentence is densely packed with five distinct caveats, but each one earns its place by preventing a specific misinterpretation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, all-optional search tool with no output schema, the description covers what the register is, which filters matter, and how to read results cautiously. It does not describe the shape of returned records or how to move from a hit to full published text, which an agent would need for a complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the eight parameters is already documented, setting the baseline at 3. The description adds one genuinely new detail (recipient matches exclude standard agency boilerplate) but otherwise restates the schema's wording on flags, recipient tags, and status defaults, so it adds only marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (searches the MORVS Federal Files Register of Privacy Act systems of records) and enumerates the searchable dimensions and filters, so an agent knows exactly what corpus and keys are involved. It stops short of naming sibling federal_file_system, so the single-system lookup is not explicitly distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through filter semantics and the statement that results default to active systems with source context, which tells an agent how to narrow or widen a search. However, nothing states when to prefer this over the sibling federal_file_system for retrieving one system's detail, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
federal_file_systemGet Federal File SystemARead-onlyIdempotentInspect
Returns one published federal system of records by exact Federal Files Register ID, with the agency's record description, routine-use text, exemption claim, source record and linked Federal Register notices. Standard agency boilerplate routine uses are omitted unless include_standard is true. A routine use is the agency statement that it MAY disclose; it is not evidence a disclosure occurred. A later notice may change a system without reprinting its full text, so check linked notices and effective dates. Recipient tags and record flags are text matches counted as at least; DHS does not imply ICE. Exemption claims may limit access or correction but do not decide an individual request. A missing ID does not establish that no records are kept.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Published system id, e.g. DHS:/ICE-009. A missing id does not prove the agency keeps no records. | |
| include_standard | No | Include routine uses marked standard; default false. A routine use says MAY disclose, not that disclosure occurred. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description layers substantial domain semantics on top: routine uses are permissive statements not evidence of disclosure, later notices can modify a system without reprinting it, exemptions may limit access but don't decide a request. These are interpretation guards an agent could not infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and each subsequent sentence carries a distinct caveat, with no filler. It is slightly over-dense, though: 'Recipient tags and record flags are text matches counted as at least; DHS does not imply ICE' is telegraphed too hard for a field that appears nowhere in the input schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates fully by enumerating the returned components (record description, routine-use text, exemption claim, source record, linked notices). With only two parameters and full schema coverage, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the description largely restates them ('Standard agency boilerplate routine uses are omitted unless include_standard is true' mirrors the schema text verbatim, as does the missing-ID caveat on id). The added value is framing rather than new parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns one published federal system of records') and pins the lookup key ('by exact Federal Files Register ID'), then enumerates exactly what comes back. The 'one ... by exact ID' framing distinguishes it from the search-style sibling federal_file_search without needing to name it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operative guidance: standard boilerplate routine uses are omitted unless include_standard is true, and warns the agent to check linked notices and effective dates rather than trusting the reprinted text. It never explicitly says how to obtain the ID in the first place (e.g. via federal_file_search), which is the one selection gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flagged_carriersFind Flagged Motor CarriersARead-onlyIdempotentInspect
FMCSA carriers flagged in one or more SMS BASIC safety categories (over the federal intervention threshold): Unsafe Driving, Hours-of-Service Compliance, Driver Fitness, Controlled Substances/Alcohol, Vehicle Maintenance. Returns carrier name, location, fleet size, which BASICs are flagged, and out-of-service inspection counts. ~1,526 carriers currently flagged. Filter by state, a specific BASIC, or minimum alert count.
| Name | Required | Description | Default |
|---|---|---|---|
| basic | No | One BASIC category: unsafe_driv, hos_driv, driv_fit, contr_subst, veh_maint | |
| limit | No | Max results (default 50, max 200) | |
| state | No | 2-letter state filter (carrier physical state) | |
| min_alerts | No | Minimum number of BASIC alerts (1-5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, idempotent, non-destructive, closed-world query, so the safety bar is low. The description goes beyond that by defining what 'flagged' actually means (over the federal intervention threshold), naming the five BASIC categories, and disclosing the population size (~1,526 carriers) and the out-of-service inspection count in the payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition of the result set, then return fields, then population size, then filters. Dense and mostly waste-free, though the enumerations of BASIC categories and returned fields are somewhat list-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the returned fields (name, location, fleet size, flagged BASICs, out-of-service counts). It also conveys result scale. The only unaddressed behavior, pagination via limit, is fully documented in the schema, so an agent has enough to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description nudges above baseline by spelling out the five BASIC categories in human-readable form, which helps an agent connect the opaque codes (unsafe_driv, hos_driv, etc.) in the schema to their real meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: FMCSA motor carriers flagged above the federal intervention threshold in SMS BASIC categories. This is precise enough that an agent can distinguish it from adjacent tools like company_risk_flags or fed_enforcement_recent without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence implies usage by listing the three filter dimensions (state, BASIC, min alert count), which tells an agent how to narrow results. However, it gives no explicit when-to-use versus when-not, no prerequisites, and never names an alternative tool for carrier lookups, so usage remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forced_labor_company_checkCheck Forced Labor Register CompanyARead-onlyIdempotentInspect
Checks a company or facility name against the MORVS U.S. Forced Labor Company Register: every organisation named on the DHS UFLPA Entity List or in a CBP withhold release order or finding, the Consolidated Screening List (Commerce, Treasury) rows that match one of those names exactly, and issuer relationships a US-listed company states in its own SEC filing. Matching is exact on the register's name key (case, accent, punctuation and legal-suffix insensitive) or on a source-stated or reviewed alias (DHS "also known as" / "formerly known as", CBP "a/k/a"); there is no fuzzy, family-name or transliteration match, and several matching entities are returned as separate candidates, never merged. Each match carries its direct records, one per source row, with the list's own action, status and date, the source URL, the row locator and the snapshot date; with include_related (default true) it also carries filing-stated issuer relationships, which never extend an action to a parent. UFLPA listing, a CBP order or finding, and an export-control or sanctions row are separate actions under separate laws, and a non-match is not a clearance finding. Organisations only; queries shaped like a personal name are not run.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company or facility name or stated alias, e.g. Needle Craft Ltd or XPCC; case, punctuation and legal suffixes ignored, no partial match; 2-120 characters. | |
| include_related | No | Include issuer relationships stated in SEC filings (parent or subsidiary); default true. A relationship never extends an action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a read-only, idempotent, non-destructive operation, and the description adds substantial behavioral detail beyond them: exact matching rules (case/accent/punctuation/suffix insensitive, no fuzzy or transliteration), candidate handling (separate, never merged), per-match payload (source row, action, status, date, URL, locator, snapshot date), and the scope limit that issuer relationships never extend an action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and its scope; every clause carries information. It is dense and semicolon-heavy, verging on overpacked, but no sentence is wasted, so it earns its length for a highly nuanced matching tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so well: it explains that each match carries direct records with action/status/date/URL/locator/snapshot date plus optional issuer relationships. Combined with the scope caveats, an agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds real value on matching semantics for 'name' (exact register key or stated alias, no partial/fuzzy match) and clarifies include_related's behavior at the action level rather than just restating the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (checks) and resource (company/facility name) against a precisely named register (MORVS U.S. Forced Labor Company Register), enumerating what the register contains. It is easily distinguished from siblings like sanctions_check, screen_all, and forced_labor_source_compare because it scopes itself to the forced-labor register.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: organisations only, personal-name queries are not run, and a non-match is not a clearance finding. However it never explicitly routes the agent to an alternative tool (e.g., sanctions_check for the broader screening) or states when this is preferred, so it stops short of naming siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forced_labor_source_compareCompare Forced Labor Register SourcesARead-onlyIdempotentInspect
Compares two sources of the MORVS U.S. Forced Labor Company Register: the DHS UFLPA Entity List (dhs), CBP withhold release orders and findings (cbp), and the Consolidated Screening List rows that exactly match a DHS or CBP name (csl). Returns the entity ids named in both sources under the register's reviewed name and alias joins, the ids in source_a with no reviewed match in source_b and the reverse, with counts, the register's own published overlap figures, the source rows behind each listed entity (source URL, row locator, snapshot date) and each source's snapshot date, in pages of up to 50 ids per list continued with next_cursor. Issuers linked only through a filing are never counted, so a parent never enters an overlap. The sources apply different laws; an entity with no reviewed match in the other source reads "No reviewed name or alias match in this source snapshot", which is not a clearance finding.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum entity ids per list on one page; default 50, max 50. | |
| cursor | No | The next_cursor value from an earlier page with the same sources; omit for the first page. | |
| source_a | Yes | First source: dhs (UFLPA Entity List), cbp (CBP WROs and Findings) or csl (matched Consolidated Screening List rows). | |
| source_b | Yes | Second source, different from source_a: dhs, cbp or csl. Lists are reported as a without b and b without a. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses substantial behavior: pagination in pages of up to 50 ids continued with next_cursor, that issuers linked only through a filing are never counted (a parent never enters an overlap), that sources apply different laws, and that a no-reviewed-match reads as a specific string that is not a clearance finding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the content is delivered as one dense paragraph with deeply nested clauses covering outputs, joins, pagination, and caveats, which makes it hard to scan. Content largely earns its place, but structure is weak.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-format burden and does so completely: entity ids in both/one-sided lists, counts, published overlap figures, per-entity source rows (URL, row locator, snapshot date), snapshot dates, and pagination. It also supplies the caveat needed to interpret results responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; however, the description adds interpretive meaning by explaining how source_a and source_b are compared ('Lists are reported as a without b and b without a') and what the csl enum value means (rows exactly matching a DHS/CBP name). This goes beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compares) and resource (two sources of the MORVS U.S. Forced Labor Company Register), enumerating dhs/cbp/csl as the sources. It is clearly distinguishable from the sibling forced_labor_company_check, which operates on a single company rather than cross-source overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies (source-overlap analysis across DHS/CBP/CSL) and warns that a no-match reading is not a clearance finding, but it never explicitly routes the agent versus alternatives such as forced_labor_company_check or screen_all. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreign_agents_countryFind FARA Records by CountryARead-onlyIdempotentInspect
Look up a country or location in the Foreign Agents Register by a substring of the country string exactly as DOJ prints it (as entered by registrants and never re-mapped, for example "KOREA, SOUTH"), optionally for one year (2024 or 2025; both when omitted). Returns up to 3 matching countries, each with the money agents reported receiving for its principals for the registrants' six-month periods ending in that year, as DOJ's reports print it, with DOJ's posting date; entries, entries with an amount, "None Reported" entries (never zero) and entries with no Finances line; registrants with money; the withheld part of the country total, as counts and money only; active principal rows and registrants from DOJ's bulk files; the Nature of Services of the published entries; and the largest published registrants and principals with their amounts. Every answer carries DOJ's footnote that country or location is not reflective of U.S. foreign policy and does not imply a recognition of sovereignty. Country strings are DOJ's, as entered by registrants, and are not a statement of U.S. foreign policy. Registration under FARA is a legal disclosure, not a finding of wrongdoing; in the Justice Department's words, registration "does not indicate approval by the United States Government of the activities of registered agents". FARA receipts, LDA filing counts and PAC contributions are separate measures, shown side by side and never added. Individuals are withheld: counted only, never named.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Optional year of the registrants' six-month periods, 2024 or 2025; both when omitted. | |
| country | Yes | Required case-insensitive substring of the country or location string as DOJ prints it (for example "KOREA, SOUTH"), at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world, so the description correctly spends its words elsewhere: a hard truncation limit (at most 3 matching countries), the withholding policy for individuals (counted, never named), the presence of both 'None Reported' and missing Finances entries, and that FARA receipts, LDA counts and PAC contributions are shown side by side and never summed. That last point is a genuinely useful anti-misuse constraint; the repeated sovereignty/policy disclaimers add bulk with less marginal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lookup semantics are correctly front-loaded, but the second sentence is a single ~120-word run-on enumerating every returned field, and the disclaimer content is stated twice ('not a statement of U.S. foreign policy' and the no-recognition-of-sovereignty note). Substantial trimming is possible without losing decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining the return payload and does so thoroughly — matching-country cap, per-country money totals, entry counts, active principal rows, Nature of Services, and top registrants/principals. Combined with the withholding rules and the mandated footnote, an agent has enough to call the tool and interpret results without surprises.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the case-insensitive substring rule, the 80-character cap and the 2024/2025 year behavior, so the baseline applies. The description adds only the nuance that country strings are registrant-entered and never re-mapped, which slightly sharpens how to construct the substring but goes no further than the schema on the year parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause gives a specific verb and resource — look up a country/location in the Foreign Agents Register by a substring of DOJ's country string — with a concrete example ("KOREA, SOUTH"). It is unambiguous what the tool returns, but it never names the FARA siblings (foreign_agents_registrant, foreign_agents_principal, foreign_agents_summary) to distinguish the country dimension from the registrant/principal dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Practical usage guidance is embedded (match the string exactly as DOJ prints it, never re-mapped; year defaults to both 2024 and 2025 when omitted), which is valuable for getting a hit. However there is no explicit when-to-use/when-not or pointer to an alternative tool for a different slice of FARA data; usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreign_agents_enforcementGet DOJ FARA Enforcement CountsARead-onlyIdempotentInspect
DOJ's own FARA administration and enforcement figures from its four semi-annual reports to Congress for 2024 and 2025, by half-year, exactly as the register publishes them: books-and-records inspections, civil causes of action, the criminal count with DOJ's own unit and measure, DOJ's enforcement sentences quoted verbatim, and the Statistical Summary (registration statements, terminations, registrants and foreign principals on file, short-form statements, agreements, fees and advisory opinions), with each report's posting date and the statistics note: DOJ's counts differ from the entries its listing prints and are shown as DOJ's, never reconciled. No person is named, and no motive or policy reason is given or implied. Registration under FARA is a legal disclosure, not a finding of wrongdoing; in the Justice Department's words, registration "does not indicate approval by the United States Government of the activities of registered agents". These are DOJ's counts, a separate measure from FARA receipts, LDA filing counts and PAC contributions, and never added to them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds genuinely non-obvious behavioral context: DOJ's counts differ from the entries its listing prints and are never reconciled, the series is a separate measure never summed with others, no individuals are named, and registration is not a finding of wrongdoing. It does not describe return shape or ordering, but the provenance and reconciliation caveats are exactly the misuse-preventing information annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content list is front-loaded and informative, but the description is one sprawling sentence-plus-caveats with noticeable redundancy: 'separate measure', 'never reconciled', 'never added to them' and 'shown as DOJ's' all restate the same non-comparability point. The verbatim legal quotation is defensible but lengthens an already dense block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the burden of telling the agent what comes back, and it does so by enumerating the series and their source reports and date coverage. An agent can call this correctly with no further information; only the exact response shape (nesting by half-year, field names) remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no semantics to document and the baseline is 4. The description correctly implies a fixed, unfiltered snapshot (by half-year, 2024-2025) rather than a queryable resource, which is the one thing a caller needs to know about the absent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: DOJ's FARA administration and enforcement figures from four semi-annual reports for 2024-2025, broken out by half-year, and enumerates the contained series (inspections, civil causes, criminal count, statistical summary). It distinguishes itself from adjacent measures (FARA receipts, LDA counts, PAC contributions), but never names a sibling tool such as foreign_agents_summary or foreign_agents_country, so the agent must infer routing from the topic labels alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content list: call this when you want DOJ's own enforcement counts rather than registrant-level data. The description warns it must never be added to receipts, LDA or PAC numbers, which is a useful exclusion, but it never states when to prefer a sibling tool or what a caller must already know (e.g., that only 2024-2025 are covered).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreign_agents_principalFind FARA Foreign PrincipalsARead-onlyIdempotentInspect
Look up a foreign principal in the Foreign Agents Register by name substring, as filed or as rewritten to the institution or office where the filed string names a person, optionally narrowed by a substring of the country string as DOJ prints it. Returns up to 5 published principals, each with its type, its country as DOJ prints it, its active rows in DOJ's bulk files, and the published registrants representing it, with the money each reported receiving for or in the interests of that principal for the registrants' six-month periods ending in 2024 and in 2025, as DOJ's reports print it, with DOJ's posting dates. "None Reported" stays its own state, never zero. Entries by withheld registrants count only inside the country totals. Registration under FARA is a legal disclosure, not a finding of wrongdoing; in the Justice Department's words, registration "does not indicate approval by the United States Government of the activities of registered agents". A registration names who the agent represents, not what any official did. Country strings are DOJ's, as entered by registrants, and are not a statement of U.S. foreign policy. FARA receipts, LDA filing counts and PAC contributions are separate measures, shown side by side and never added. Individual foreign principals are withheld: counted only, never named or matched.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive foreign principal name substring, at most 80 characters; searched among published principals only. | |
| country | No | Optional case-insensitive substring of the country string as DOJ prints it, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, and the description adds substantial context beyond them: return cap of 5, included fields, 2024/2025 money reporting, DOJ posting dates, 'None Reported' handling, withheld-registrant aggregation, and legal caveats. These details meaningfully inform how results should be interpreted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core lookup behavior, and the later sentences carry relevant caveats rather than filler. It is somewhat dense and long-sentenced, but the length is largely justified by the complex return and interpretive constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a complex data tool, the description carries the burden well: it explains what is returned, what counts are included or withheld, and important legal and interpretive caveats. An agent has enough context to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds useful matching semantics beyond the schema, especially that name matching can include a person rewritten to an institution or office and that country matching follows DOJ's printed country string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: looking up a foreign principal in the Foreign Agents Register by name substring, optionally narrowed by country. It is clear about the target being principals rather than registrants, though it does not explicitly contrast itself with sibling tools such as foreign_agents_registrant or foreign_agents_country.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides implied usage context by specifying that searches are among published principals only and that individual foreign principals are withheld and never named or matched. It does not explicitly state when to use this tool versus sibling alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreign_agents_registrantFind Registered Foreign AgentsARead-onlyIdempotentInspect
Look up a registered foreign agent in the Foreign Agents Register by registrant name substring, among the published registrants (reviewed institutions active in DOJ's FARA bulk files or listed in DOJ's 2024 and 2025 reports). Returns up to 5 registrants, each with its type, registration and termination dates and status, its active foreign principals from the bulk files (published ones named, withheld ones as a count), and three federal records side by side: the money it reported receiving for its own six-month periods ending in 2024 and in 2025, as DOJ's reports print it, with DOJ's posting dates, by Nature of Services and by principal (DOJ); its Lobbying Disclosure Act filing count for 2025, or "not searched" (lda.gov); and its firm PAC's status and contributions to federal candidates' committees by cycle, with the FEC definitions (FEC). FARA receipts, LDA filing counts and PAC contributions are separate measures, shown side by side and never added. The columns are never read as a sequence. A firm's PAC gives for the whole firm; nothing in the FEC records ties a contribution to any foreign client. No PAC or LDA match is a search result, not a fact about the registrant. Registration under FARA is a legal disclosure, not a finding of wrongdoing; in the Justice Department's words, registration "does not indicate approval by the United States Government of the activities of registered agents". Country strings are DOJ's, as entered by registrants, and are not a statement of U.S. foreign policy. Individuals and single-person firms are withheld and never named or matched.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive registrant name substring, at most 80 characters; searched among published registrants only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no output schema, the description carries the return contract itself: 'up to 5 registrants', the type/dates/status fields, how foreign principals are represented (named vs withheld as a count), and the three parallel federal record streams with their sources. It also warns against the most likely misuse — adding FARA receipts, LDA counts and PAC contributions together, and reading a PAC match as a foreign-client link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, but the body is a dense run-on chain of disclaimers. Several sentences (country strings not being a statement of U.S. foreign policy, the quoted DOJ approval language) serve legal caution rather than tool selection or invocation and dilute the operative instructions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema, high-complexity tool, it covers what comes back, what is never matched, and what the numbers mean. Remaining gaps are minor: no explicit statement of what an empty result looks like beyond 'no match is a search result', and no guidance on narrowing overly broad substrings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented in-schema (case-insensitive, max 80 chars, published registrants only), so the description adds little. What it does add — 'substring', 'among the published registrants' — restates the schema rather than extending it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb+resource+access path: 'Look up a registered foreign agent in the Foreign Agents Register by registrant name substring'. The name-substring lookup mode implicitly separates it from foreign_agents_country / foreign_agents_principal / foreign_agents_summary siblings, but it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the search mode ('by registrant name substring', 'among the published registrants'), and it does state a scoping limitation (individuals and single-person firms are withheld). But there is no explicit when-to-use / when-not, and no routing to the sibling foreign_agents_* tools that cover the same dataset from other angles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreign_agents_summaryGet Foreign Agent (FARA) Money TotalsBRead-onlyIdempotentInspect
Totals from the Foreign Agents Register, built from the Justice Department's FARA records: the money registered foreign agents reported receiving for the registrants' six-month periods ending in 2024 and in 2025, as DOJ's four semi-annual reports to Congress print it, with each report's printed total, DOJ's posting dates, the basis and the change between the two years; amounts DOJ lists as received prior to registration, kept apart and never added to a period; the share for services DOJ lists as lobbying and the full Nature of Services breakdown by year; active registrants and foreign principals by DOJ's own count for each half-year and by DOJ's daily bulk files; the register's eight headlines with their basis; the side-by-side PAC and LDA coverage counts; and the withheld counts. Registration under FARA is a legal disclosure, not a finding of wrongdoing; in the Justice Department's words, registration "does not indicate approval by the United States Government of the activities of registered agents". Amounts are what agents reported receiving for their own six-month periods, as DOJ prints them, never a calendar year of spending; "None Reported" is its own state, never zero. Country strings are DOJ's, as entered by registrants, and are not a statement of U.S. foreign policy. FARA receipts, LDA filing counts and PAC contributions are separate measures, shown side by side and never added. Individuals (individual registrants, single-person firms, individual foreign principals and short-form registrants) are withheld: counted only, never named.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, but the description adds substantial behavioral context: amounts are per six-month agent periods not calendar years, 'None Reported' is a distinct state, individuals are counted but never named (withheld), prior-to-registration amounts are kept apart and never summed, and FARA/LDA/PAC measures are shown side by side and never added. These are genuine caller-facing rules not in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The body is one enormous run-on sentence packed with a long inventory of sub-datasets and disclaimers, not front-loaded or scannable. Much of the legal/policy boilerplate ('does not indicate approval by the United States Government...') does not directly help an agent call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the burden of explaining return content, and it does so thoroughly (totals, changes, service breakdowns, active registrants/principals, headlines, side-by-side counts, withheld counts). It is arguably over-complete rather than missing anything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for 0 params is 4 and that holds here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause identifies the resource and scope clearly (FARA money totals from DOJ six-month reports for 2024 and 2025), so an agent can tell it is the aggregate/summary tool. It never states an explicit verb like 'returns' or 'gets' and does not name the entity-level siblings (foreign_agents_registrant, foreign_agents_principal) it contrasts with, leaving differentiation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is almost entirely about content and caveats; it gives no explicit when-to-use, when-not-to-use, or 'prefer X instead' guidance. An agent must infer that this is the totals/overview tool rather than the per-registrant lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forfeiture_agencyFind Forfeiture Money AgenciesBRead-onlyIdempotentInspect
Find DOJ equitable-sharing agencies in one state or territory by agency-name substring or ORI. Returns DOJ database status and sharing labels, matched DOJ payments by federal fiscal year, and the agency's ESAC certifications by its own fiscal year with DOJ and Treasury as separate money fields. DOJ payment years and agency certification years must never be added, subtracted or treated as a gap. A certified balance is not misconduct. DOJ does not publish why an agency has a Non-Compliant or Ineligible status. A payment, review or audit finding does not establish unlawful conduct. Controlled-equipment entries itemise purchases already in ESAC spending categories and must never be added again. A seizure is not a crime or conviction. The newest ESAC year is partial; older thin years are marked in the response. Agency names are DOJ's; officials and other people are never named.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matching agencies returned, allowed 1-25. | |
| state | Yes | Required two-letter state or territory code in the register index. | |
| agency | No | Optional case-insensitive agency name substring or exact ORI, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/idempotent already covering the safety profile, the description still adds real value: it discloses that the newest ESAC year is partial, that thin years are flagged in the response, and that DOJ does not publish the reason for Non-Compliant/Ineligible status. The interpretive guardrails (fiscal years must not be combined, controlled equipment is already in ESAC categories) prevent concrete misuse. It stops short of describing result counts, pagination, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in sentence one, but the remainder is an unstructured run of caveats that blurs into the return-value list. Most caveats are specific and non-generic, yet the lack of grouping (what it returns vs. how to interpret it) makes the definition harder to scan than its length requires.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with no output schema, the description does the heavy lifting on return content (status, sharing labels, payments by federal FY, ESAC certifications by agency FY) and on interpretive pitfalls. Gaps remain around pagination/result-count behavior and what happens when the substring matches many agencies, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents state, agency and limit. The description reinforces that agency accepts a name substring or an exact ORI, but adds no syntax or matching nuance beyond the schema and never mentions the limit parameter or its 1-25 cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (find), a specific resource (DOJ equitable-sharing agencies), and the exact lookup keys (state/territory plus agency-name substring or ORI). It is clearly distinct from generic search tools, but it never distinguishes itself from close siblings like forfeiture_payments or doj_by_company, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what comes back but gives no when-to-use or when-not-to-use guidance, and no alternative is named. An agent cannot tell from this text whether to reach for this tool or forfeiture_payments when it wants payment-level data; the only implied guidance is the required state scoping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forfeiture_paymentsFind DOJ Forfeiture PaymentsARead-onlyIdempotentInspect
Search DOJ equitable-sharing payments to state, local and tribal agencies by federal fiscal year. Defaults to the latest published DOJ year. Filters by two-letter state, DOJ-printed recipient-name substring and minimum row amount. Returns DOJ cash, sale proceeds, total, original recipient name, match method and matched ORI when one exists. A DOJ-masked recipient stays masked; an unmatched row is still a payment. With no state filter, returns all state subtotals and a separate foreign-sharing table. Foreign sharing is never added to payments to domestic agencies. Agency ESAC certifications use each agency's own fiscal year and include Treasury sharing; never add or subtract them from these DOJ payments. A seizure is not a crime or conviction; a payment follows participation in a forfeiture, not a finding of unlawful conduct.
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | DOJ federal fiscal year; defaults to the latest published year. | |
| limit | No | Maximum payment rows returned, allowed 1-100. | |
| state | No | Optional two-letter state or territory code in the register index. | |
| recipient | No | Optional case-insensitive recipient name substring. Masked agency names remain masked. | |
| min_amount | No | Optional minimum DOJ payment amount in dollars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent and non-destructive, yet the description still adds substantial non-obvious behavior: the default fiscal year, the subtotal/foreign-table response when state is omitted, that masked recipients stay masked, that unmatched rows are still payments, and that foreign sharing is never merged with domestic totals. These are exactly the traits that prevent misinterpretation of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action, default and filters are front-loaded in the first two sentences, and the length is justified by dense, non-redundant content. The closing sentences on ESAC fiscal years and the seizure/conviction distinction are interpretive guidance rather than tool mechanics, but they still prevent real analytical errors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description fills that gap explicitly by enumerating returned fields (DOJ cash, sale proceeds, total, original recipient name, match method, ORI). Combined with the fiscal-year default and masking rules, an agent has enough to call it and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters and a baseline of 3 applies. The description goes beyond it by explaining the consequence of omitting state (subtotals plus a separate foreign-sharing table) and by clarifying that recipient matching is substring-based and never unmasks a masked name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (Search) plus a precisely narrow resource (DOJ equitable-sharing payments to state, local and tribal agencies) scoped by federal fiscal year. That level of specificity lets an agent separate it from siblings like forfeiture_agency or judgment_fund_payments without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states defaults and conditional behavior ("with no state filter, returns all state subtotals and a separate foreign-sharing table") and warns against combining ESAC certifications with these payments, which is useful guardrail guidance. However, it never names an alternative tool or says when to pick forfeiture_agency or judgment_fund_payments instead, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_holdingsGet Fund HoldingsARead-onlyIdempotentInspect
What a mutual fund holds (NPORT-P). Pass a 10-digit CIK or series_id (S000012345).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Exact N-PORT report period in YYYY-MM-DD format; omit for the latest available period. | |
| cik_or_series_id | Yes | Fund registrant SEC CIK (1 to 10 digits) or series ID, e.g. 1234567 or S000012345. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a readOnly, idempotent, non-destructive, closed-world lookup, so the safety bar is largely met. The description adds data provenance (SEC NPORT-P filings) and identifier form, but says nothing about freshness, report-period defaults, or volume of rows returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the resource description front-loaded and the required input form immediately after. No filler, and the optional period handled entirely by the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full annotation coverage and full schema documentation, the description supplies the source form and identifier examples that make correct invocation straightforward. Only the shape of the returned holdings is unstated, which is a minor gap absent an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both cik_or_series_id and the optional period are fully documented in the schema itself. The description restates the identifier format (examples S000012345) without adding constraint detail the schema lacks, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States precisely what is returned (the holdings of a mutual fund) and names the underlying source form (NPORT-P), which lets an agent distinguish this from every sibling tool — none of which surface fund portfolio data. The verb+resource pairing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Pass a 10-digit CIK or series_id' tells the agent which identifier to supply but not when this tool is the right choice versus alternatives, nor that period is optional for latest-available. No explicit when-to-use or exclusions, which is tolerable here only because no sibling overlaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
house_price_index_searchSearch House Price AreasARead-onlyIdempotentInspect
Search the FHFA House Price Index by geography name (metro, state, census division). Returns the place_id to pull a full house-price appreciation history (1975-2026, purchase-only / all-transactions / expanded-data). Aggregate federal statistic — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Geography name, e.g. 'Austin' or 'California' (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for adding non-obvious context: the covered period (1975-2026), the three series types, and the 'aggregate federal statistic — zero PII' reassurance. It does not discuss pagination behavior or result ordering, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the verb/resource and followed by the return value and the data caveats. The parenthetical series list is dense but informative; a small amount of trimming is possible without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly fills the gap by naming the returned identifier (place_id) and what it unlocks. Combined with full parameter documentation and annotations covering the safety profile, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: the accepted geography granularities (metro, state, census division) beyond the schema's bare examples 'Austin'/'California'. It says nothing extra about the limit parameter, which is already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (FHFA House Price Index) and narrows the geography granularity to metro/state/census division, which separates it from lookalike siblings such as income_by_zip_search and ag_census_county_search. It also states the key output (place_id), so an agent knows what it gets back.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Returns the place_id to pull a full house-price appreciation history' clearly positions this as the lookup step preceding a detail retrieval, which is genuine when-to-use guidance. It stops short of naming an alternative tool or stating exclusions (e.g. when to use a different geographic index instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inaugural_donors_donorFind Inaugural Committee DonorsARead-onlyIdempotentInspect
Look up an organisation donor in the Inaugural Donors Register by name substring, matched against the reviewed public name and every name as filed on the committees' Form 13 reports, optionally for one inaugural year (2025 or 2021; both when omitted, never added across years). Returns up to 5 named organisation donors, each with its reviewed type and, by year, donations accepted, refunded and net (each labelled), every donation row with its date, amount, memo and filing as filed, refunds kept apart (the filing gives no reason for any refund) and the latest filing date. For 2025 donors: the organisation's own LD-203 figure where an item was found and matched, with both amounts and, where they differ, the line that neither record explains the difference; and, for the donors in the register's side-by-side table, three more federal records beside the donation: contract obligations by fiscal year under reviewed parent records (USAspending), the connected PAC's status and its contributions to federal candidates' committees by cycle with its all-committees summary line, two measures never added (FEC), and 2025 lobbying report counts and amounts (LDA). Inaugural donations, contract obligations, connected-PAC contributions and lobbying reports are separate federal records, shown side by side and never added or put in sequence. A missing PAC, contract or lobbying record is a search result, not a fact about the organisation. Committees are named exactly as the FEC lists them, with their ids. Every answer carries the register's question note: the records describe donations reported to the FEC; they do not show what any donor received or intended, and they do not show cause and effect. Individual donors are counted, never named; withheld organisations (personal trusts, holding vehicles, businesses named for a person, names resting on initials) appear only as counts and amounts. A name that matches only a withheld string answers exactly like a name that matches nothing. Every answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive organisation name substring, at most 80 characters; searched among named organisation donors only. | |
| year | No | Optional inaugural year, 2025 (Trump Vance Inaugural Committee) or 2021 (PIC 2021); both when omitted, never added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses matching against reviewed and as-filed names, a five-result cap, year-by-year donation/refund/net breakdowns, side-by-side federal records that are never added, and the rule that missing PAC/contract/lobbying records are search results rather than facts. It also explains withheld-organisation behavior and the mandatory FEC restriction, which is unusually rich behavioral context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the length is partly justified because there is no output schema. However, the description is a dense single block with long compound sentences and repeated caveats, so it is adequate but not concise or well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complex, annotation-heavy lookup with no output schema, the description is complete enough: it explains what is returned, how years are handled, which records are separate, what missing data means, and the legal/contextual caveats. An agent can call the tool correctly without needing more documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines both parameters. The description still adds useful semantics by saying the name substring is matched against the reviewed public name and every name as filed on Form 13 reports, and it reinforces the year omission rule even though the year schema also states it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Look up an organisation donor in the Inaugural Donors Register by name substring.' It scopes the result to named organisation donors and an optional inaugural year, which clearly separates it from the aggregate sibling inaugural_donors_summary even without naming that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by 'by name substring' and the optional year, and the description explains year omission behavior. However, it never explicitly says when to use this donor-level lookup instead of siblings such as inaugural_donors_summary or super_pac_donors_donor, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inaugural_donors_summaryGet Inaugural Committee Donation TotalsARead-onlyIdempotentInspect
Totals from the Inaugural Donors Register, built from the Form 13 reports the 2025 presidential inaugural committee (Trump Vance Inaugural Committee, Inc., FEC C00894162) and the 2021 committee (PIC 2021, Inc., C00765040) filed with the FEC: each committee's cumulative printed totals, with donations accepted, refunded and net each labelled and kept apart, the filing ids and filing dates of the latest report and supplement and the coverage dates; organisations named against individual rows, individuals counted only; organisation money by reviewed type; the withheld categories as counts and amounts; the company families that gave in both 2021 and 2025, with their 2021 donations and share, never added across years; the LD-203 cross-check totals (registrants, items, exact, within $1 and differing counts, and each difference with both amounts and the line that neither record explains it), with the in-house registrants for whom no inaugural item was found given as totals only, never by name; the side-by-side coverage counts; and the register's headlines with their basis. Inaugural donations are not campaign contributions. Every answer carries the register's question note: the records describe donations reported to the FEC; they do not show what any donor received or intended, and they do not show cause and effect. Inaugural donations, contract obligations, connected-PAC contributions and lobbying reports are separate federal records, shown side by side and never added or put in sequence. Individual donors are counted, never named; withheld organisations (personal trusts, holding vehicles, businesses named for a person, names resting on initials) appear only as counts and amounts. Every answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, non-destructive, openWorld), the description discloses provenance (Form 13 reports, filing ids/dates, coverage dates), privacy handling (withheld organisations shown only as counts/amounts, individuals never named), analytical constraints (never added across years, never put in sequence), and the mandatory question note and FEC 52 U.S.C. 30111(a)(4) restriction. This is exactly the kind of behavioral context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded in the first clause, but the bulk is a single enormous comma-spliced run-on enumerating every returned component, followed by a paragraph of caveats that restates the same non-additivity and privacy points ('never added across years' / 'never added or put in sequence'). Much of the legal boilerplate could be compressed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining what comes back, and it does so comprehensively: cumulative totals with accepted/refunded/net kept apart, filing ids and dates, organisation vs individual breakdowns, withheld categories, cross-year family comparisons, LD-203 cross-check counts, coverage counts, and headlines. An agent knows the scope, limitations, and nature of the response before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; baseline for a zero-param tool is 4. The description cannot and need not add parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (Inaugural Donors Register, built from Form 13 filings by the 2025 and 2021 committees) and the operation (returning totals/aggregates). It implicitly distinguishes itself from the donor-level sibling by stressing 'Individual donors are counted, never named,' but never names inaugural_donors_donor directly, so sibling differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the register nature and the 'counted, never named' privacy rule signal this is the aggregate view rather than the per-donor lookup. There is no explicit 'use this when…' or 'use inaugural_donors_donor instead for named donors,' and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
income_by_zip_searchSearch Income By ZIPARead-onlyIdempotentInspect
Search IRS SOI income statistics by ZIP code or state. Returns the 5-digit ZIP to pull its income/tax profile — returns, AGI, average AGI per return, wages, capital gains, EITC, charitable giving by 6 AGI brackets (TY2022). Aggregate federal statistic — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ZIP code or state abbr (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, closed-world, non-destructive), so the bar is lower. The description adds genuinely useful context beyond them: the data vintage (TY2022), that it is an aggregate federal statistic, and that it carries zero PII — all relevant for interpreting and trusting results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool searches, followed by the return fields and the PII disclaimer. Dense but nearly every clause earns its place; the phrase 'Returns the 5-digit ZIP to pull its income/tax profile' is slightly awkward but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned metrics (returns, AGI, average AGI, wages, capital gains, EITC, charitable giving by AGI brackets) and the vintage year. Combined with annotations covering safety and scope, an agent has enough to call it correctly; only input-format specifics are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (q and limit) are already documented with their formats and defaults. The description restates that q accepts a ZIP or state but adds no format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific data source (IRS SOI income statistics), a specific operation (search), and the two accepted scopes (ZIP code or state). The dataset is unique among siblings, so an agent can immediately tell this is the income-by-geography tool rather than any of the enforcement/patent/lobbying siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is the tool for geographic income/tax profiles, and the stated ZIP-or-state scope hints at when it applies. However, there is no explicit when-to-use vs. when-not language, no mention of an alternative tool, and no guidance on required input format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
influence_chainTrace Entity InfluenceARead-onlyIdempotentInspect
Follow-the-money chain for one entity: federal contracts + prime->sub subaward flow + registered lobbying + FEC political committees + FEC enforcement (MURs), with dollar tallies. Accepts a company name or a 12-char UEI.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company name or UEI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered for the agent. The description adds useful context (multi-source aggregation, dollar tallies, UEI acceptance) but says nothing about coverage windows, entity-resolution fuzziness, or partial-result behavior when no matches exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The core purpose is front-loaded and the input-format note is deliberately placed second, which is the right ordering for an agent scanning for the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of indicating what comes back; 'dollar tallies' gestures at the aggregate output but does not describe the shape or per-source breakdown. For a single-parameter, annotated read tool this is close to sufficient, though a bit more return-format context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's own text is terse ('Company name or UEI'), so the baseline would be 3. The description adds a real constraint the schema omits – the UEI must be 12 characters – and reinforces that exactly one entity is resolved per call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a vivid, specific verb+resource ('Follow-the-money chain for one entity') and enumerates the exact data domains covered: federal contracts, prime->sub subaward flow, lobbying, FEC committees, and MURs. This enumeration clearly separates it from single-vertical siblings like lobbying_by_client or company_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one entity' implicitly defines the usage scope and the aggregation nature suggests it is the right tool when a consolidated influence picture is needed rather than a single-vertical lookup. However, it never explicitly states when to prefer it over alternatives such as entity_relationships, dossier, or the narrower lobbying/FEC tools, and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
judgment_fund_payeeFind Named Judgment Fund PayeesARead-onlyIdempotentInspect
Finds named organisations by payee-name substring in the MORVS Judgment Fund Register. Returns up to 50 matches by published amount, with total match count, summed bi-weekly payment-line amount, line count, agency groups, Treasury citation descriptions, and first and last report periods. Only payees confirmed as organisations appear; individuals are never named. A payment is not an admission of fault, a line is not a settlement, and the separate annual and bi-weekly Treasury products must never be added.
| Name | Required | Description | Default |
|---|---|---|---|
| payee | Yes | Required case-insensitive substring of a named payee. Individuals are never named. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive traits, and the description goes well beyond them: a hard 50-match cap, sort order by published amount, the returned aggregates (total match count, summed bi-weekly payment-line amount, line count, agency groups, citations, report periods), and two important interpretive caveats about not summing annual with bi-weekly products and not reading a payment as an admission of fault.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the search behaviour and return shape before the interpretive caveats, and nearly every clause carries information. The closing series of caveats is slightly dense but each guards against a real misuse (summing incompatible Treasury products).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values and does so thoroughly (match cap, aggregates, grouping, periods). For a one-parameter lookup, nothing an agent needs in order to call it or interpret results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented in the schema (case-insensitive substring, length bounds, individuals never named), so the description only restates the same substring semantics. Baseline 3 is appropriate where the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (finds), resource (named organisations by payee-name substring) and the exact register (MORVS Judgment Fund Register), which clearly separates it from the sibling judgment_fund_payments. The organisational-only scope is stated up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Establishes clear context: substring search on a named payee, organisational payees only, individuals never named. It does not explicitly name judgment_fund_payments or state when to prefer it, so routing between the two sibling tools is still left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
judgment_fund_paymentsFind Judgment Fund PaymentsARead-onlyIdempotentInspect
Searches Treasury bi-weekly Judgment Fund payment lines in one fiscal year of the MORVS Judgment Fund Register. Defaults to the latest published fiscal year, which may be incomplete. Filters by named organisation payee, Treasury responsible agency or MORVS agency group, and minimum known grouped amount. Returns separate source lines grouped by named payee, agency and report period; unnamed lines remain separate. Includes payee status, Treasury report links and source row numbers. Individuals are never named. A payment is not an admission of fault; a line is not a settlement, and split or identical lines remain separate payments. The bi-weekly and annual Treasury products are separate and must never be added.
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | Fiscal year, default latest published. Treasury products are separate and are never added. | |
| limit | No | Maximum returned payment groups or lines, allowed 1-100. A line is not a settlement. | |
| payee | No | Case-insensitive payee substring. Names for individual or otherwise unnamed payees are never returned. | |
| agency | No | Case-insensitive substring matched against agency or agency group. | |
| min_amount | No | Minimum known amount of a returned payee, agency and period group, in dollars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses important behavioral traits: latest fiscal year may be incomplete, output is grouped by payee/agency/period, unnamed lines remain separate, individuals are never named, and legal interpretation caveats. These are substantive operational details an agent could not infer from annotations or schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the core search behavior before filters and return semantics. It is appropriately sized for a complex dataset, though some legal caveats and the bi-weekly/annual warning are repeated in the schema and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return structure, and it does so: separate source lines grouped by payee, agency and report period, unnamed lines kept separate, plus payee status and Treasury report links. It also supplies the key caveats needed to use the results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters. The description reinforces that filtering is by named organisation payee, agency or agency group, and grouped minimum amount, but adds only modest meaning beyond what the parameter descriptions already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: searching Treasury bi-weekly Judgment Fund payment lines in the MORVS Judgment Fund Register for one fiscal year. It clearly scopes the tool to payment-line records and distinguishes the bi-weekly product from the annual product, though it does not explicitly differentiate itself from the sibling judgment_fund_payee tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful usage context: default fiscal year, warning that the latest published year may be incomplete, and that bi-weekly and annual products must never be added. However, it does not explicitly say when to use this tool versus the clearly related sibling judgment_fund_payee, leaving the alternative routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kev_by_vendorGet Vendor Exploited FlawsARead-onlyIdempotentInspect
CISA Known Exploited Vulnerabilities (KEV) for one tech vendor. Returns CVE list + ransomware count + top affected products. The federal government's canonical list of CVEs being actively exploited.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Vendor name (Microsoft, Cisco, Apple, Citrix, Fortinet, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely useful context beyond that: it discloses the return contents (CVE list, ransomware count, top affected products) and characterizes the source as the federal government's canonical actively-exploited list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and scope, no filler. The final sentence adds source authority rather than mechanics, but it is brief and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by naming what is returned (CVE list, ransomware count, top products), which is what an agent needs to consume the result. Minor gaps remain on matching behavior for vendor names, but the core is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'name' param already carries examples (Microsoft, Cisco, Apple...). The description adds no format, casing, or matching semantics beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'CISA Known Exploited Vulnerabilities (KEV) for one tech vendor.' An agent can tell it queries KEV data scoped to a single vendor. It stops short of naming the sibling kev_recent to differentiate the vendor-scoped call from the general one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one tech vendor' implies the condition for using this vs a broader KEV lookup, but no alternative is named and no when-not guidance is given. Usage must be inferred from the scope wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kev_recentFind Recent Exploited FlawsBRead-onlyIdempotentInspect
Recent CISA KEV entries. Filter by vendor or ransomware-known flag.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum vulnerabilities by CISA catalog date added; default 50, max 200. | |
| vendor | No | Case-insensitive substring of the CISA KEV vendor or project name, e.g. Microsoft. | |
| ransomware | No | Filter CISA known ransomware use to Known or Unknown; omit for both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only the data source (CISA KEV) and the filter axes, and says nothing about ordering (implied date-added-desc only inside the limit schema) or result size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core scope front-loaded and no filler. The second sentence largely restates capabilities already in the schema, so it does not fully earn its place, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, zero-required list tool with rich annotations and no output schema, the essentials are present. Still missing are the definition of 'recent' (sort order/time window) and what happens when no filters are supplied, which an agent would need to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters are well documented, including the enum values for ransomware and the max on limit. The description only restates the vendor and ransomware filters, adding no syntax, matching, or default details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (CISA KEV entries) and a recency scope, which separates it loosely from kev_by_vendor. However, 'Recent' is never quantified (no window or ordering statement), and the sibling kev_by_vendor is never named, so the boundary between the two is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence describes capability (vendor/ransomware filtering) rather than when to use this tool, and it duplicates what the schema already says. There is no guidance on when to prefer this over kev_by_vendor, no exclusions, and no mention of paging behavior for the limit parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lobbying_by_clientGet Client Lobbying ActivityARead-onlyIdempotentInspect
Aggregate Senate Lobbying Disclosure dossier for one company: total spend, firms used, top issue codes, recent filings.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | Client company name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds the return-shape context (spend, firms, issue codes, filings) but says nothing about data recency, coverage limits, or behavior when the client substring matches multiple companies — a real ambiguity for a substring match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the aggregate verb and resource, then the field list. No filler and nothing that could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields, and annotations cover the safety profile, so an agent has enough to call it. The remaining gap is the lack of sibling differentiation and any note on substring-match ambiguity or result limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself documents the single 'client' parameter as a substring match. The description only reinforces 'for one company' and adds no further syntax, matching rules, or handling for ambiguous substring hits. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Aggregate), a precise resource (Senate Lobbying Disclosure dossier), and a scope ('for one company'), then enumerates what the dossier contains. This clearly separates it from the issue-oriented sibling lobbying_by_issue, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for one company' — an agent can infer this is the company-keyed path versus lobbying_by_issue — but there is no explicit when-to-use guidance, no stated alternatives, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lobbying_by_issueGet Lobbying By IssueARead-onlyIdempotentInspect
Who lobbies the federal government on a given issue. Takes an LDA issue code (e.g. HCR health, DEF defense, TAX, ENG energy, TRA transport) and returns top clients by reported spend. List codes at /api/v1/lobbying/issues.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | LDA 2-4 letter general-issue code (e.g. HCR, DEF, TAX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, so safety is covered. The description adds return-shaping context the annotations do not: results are ranked lists of top clients ordered by reported spend, and codes are enumerated at a specific API path. It stops short of stating result limits or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose first, input handling second, code-discovery pointer last. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns and does so at a high level ('top clients by reported spend'), plus supplies the code vocabulary. Missing count/pagination and spend-unit details keep it from a 5, but it is sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is already documented, but the description adds real meaning beyond it by glossing sample codes as issue domains (HCR health, DEF defense, ENG energy, TRA transport) and pointing to the full code list endpoint. This helps an agent supply a valid code rather than guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-plus-resource ('who lobbies the federal government on a given issue') and names the exact output lens ('top clients by reported spend'). An agent can distinguish this issue-oriented view from the client-oriented sibling 'lobbying_by_client' without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the code-discovery path ('/api/v1/lobbying/issues') and the required input shape, which implies usage, but never states when to pick this over 'lobbying_by_client' or other influence tools (e.g. influence_chain, cluster_buys). 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.
lobbying_clientGet Lobbying Client ReportsARead-onlyIdempotentInspect
Returns client timelines from the MORVS Influence Register using a published key or a case-insensitive name substring. The register includes only reports with an AI, surveillance or privacy match in a lobbying-activity section; it is not a client’s complete lobbying history. Amounts are whole-report figures across all issues, never spending on a topic. In-house expenses and outside-firm income are separate and must not be added; subcontract income is excluded. Null is not zero. Filings do not establish a client’s position on a bill or a policy outcome. Returns the retrieval date and the LDA source disclaimer. A missing client is not proof of no lobbying.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | Required case-insensitive client name substring or published client key, at most 80 characters. A missing client is not proof of no lobbying. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a read-only, idempotent, non-destructive lookup, and the description adds substantial domain behavior beyond that: whole-report versus per-issue amounts, in-house expenses vs outside-firm income that must not be summed, excluded subcontract income, null-not-zero semantics, and that filings don't establish a client's position or policy outcomes. It even names what is returned (retrieval date and LDA disclaimer). This is exactly the kind of interpretive context the agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then a sequence of short caveat sentences that each carry a distinct fact. It is dense but not padded; the only redundancy is the 'missing client is not proof' line, which duplicates the parameter schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes responsibility for describing the return (retrieval date, LDA source disclaimer) and for the aggregation rules an agent would otherwise misread. For a single-parameter lookup tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description's 'published key or a case-insensitive name substring' restates what the parameter already documents. The one added concept, that a miss is not evidence of no lobbying, is also already in the schema text. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns client timelines from the MORVS Influence Register, keyed by published key or case-insensitive name substring. It also scopes the dataset narrowly (only reports with an AI, surveillance or privacy match). It does not explicitly differentiate itself from siblings like lobbying_by_client or lobbying_by_issue, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The coverage caveat ('includes only reports with an AI, surveillance or privacy match... not a client's complete lobbying history') is an effective when-not signal, and 'a missing client is not proof of no lobbying' tells the agent how to interpret an empty result. No alternative tool is named, so the agent must infer whether lobbying_by_client is the better route.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mdl_lookupFind Multidistrict LitigationARead-onlyIdempotentInspect
Find a federal multidistrict litigation (MDL) in the MORVS Mass Lawsuit Register by MDL number, caption word, or company word appearing in the Panel caption. Returns the Panel caption, category, district, transfer date, pending and total actions, the last 12 monthly pending counts, and terminated entries when available. Actions are lawsuits, not people. Centralisation is not a finding on the merits. A falling pending count is not a settlement or payout. A missing match only means no matching MDL was found in the published register.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum MDLs returned; default 20, allowed 1-100. Actions are lawsuits, not people. | |
| query | Yes | Required MDL number, caption word or company word as printed in the Panel caption, at most 80 characters. | |
| status | No | Optional published MDL status; defaults to all statuses. Centralisation is not a finding. | |
| category | No | Optional category assigned by the Panel, not a conclusion about the cases. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description adds genuine value on top: it enumerates the returned fields (Panel caption, category, district, transfer date, pending/total actions, 12 monthly pending counts, terminated entries), flags optional availability of terminated entries, and pre-empts four specific misinterpretations (actions ≠ people, centralisation ≠ merits ruling, falling counts ≠ settlement, no match ≠ no MDL exists). That is substantial disclosure beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return fields are front-loaded in the first two sentences, and the caveat sentences are short and scannable. However, 'Actions are lawsuits, not people' duplicates the limit parameter's schema description and 'Centralisation is not a finding' duplicates the status parameter's, so a few clauses are redundant rather than additive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by listing the exact fields returned and the availability caveat for terminated entries. For a four-parameter read-only lookup, nothing an agent needs to call it or interpret its result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, limit, status, and category fully. The description reinforces the query semantics ('caption word, or company word appearing in the Panel caption') but adds nothing about limit bounds, the status enum values, or the category pattern — it only loosely gestures at status via 'terminated entries when available.' Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Find') plus specific resource ('federal multidistrict litigation (MDL) in the MORVS Mass Lawsuit Register'), followed by the exact lookup keys accepted (MDL number, caption word, company word). An agent immediately knows this is an MDL-registry lookup and not a general case search, distinguishing it from siblings like courts_by_party or federal_file_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear querying context — what kinds of terms can be supplied and how results are scoped — and explains that a missing match means only 'no matching MDL in the published register,' which prevents an agent from misreading an empty result. It does not name an alternative sibling or state when NOT to use this tool, so it falls short of the explicit routing seen in the top calibration example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_money_advertisingGet Federal Advertising Contract TotalsARead-onlyIdempotentInspect
Federal advertising (product code R701) and public-relations (R708) contract obligations in the Media Money Register, optionally filtered by agency (a substring of the agency name or a short form such as DHS or DoD), firm (a substring of a reviewed firm's name as the award records carry it) and fiscal year (2017 to 2026). Returns, for each code, the all-agency series, the largest agencies by fiscal year with every other agency shown as the labelled other-agencies remainder, and the reviewed firms' obligations (FY2017 to FY2026, FY2025 and FY2026, as the register publishes them; every other recipient counted as other); for DHS, its R701 and R708 series, R701 by sub-agency and by reviewed firm for FY2024 to FY2026, and its seven campaign task orders with their dates, obligations and outlays as recorded and their competition fields as printed, with no subaward reported on any of them, so the records do not show which outlets carried the advertising; the Defense Department's share of FY2026 R701; and the register's FEC payee check, counted only. A firm is named only when its UEI is reviewed and its name carries a corporate form. Competition fields are shown exactly as FPDS prints them: the extent competed, the reason for other than full and open competition and the number of offers, or not printed. Each figure is named in its record's own words: contract obligations (a subscription is a purchase order, delivery order or definitive contract), grant obligations by assistance listing, Treasury account obligations, termination actions with FPDS's reason code as printed, and the laws' own text; fiscal year 2026 is as reported through the as-of date, as Defense Department contract records reach USAspending about 90 days late. Every answer carries the register's question note: these records show federal award and account obligations and the agencies' own termination records; they do not show what any outlet published, why an award was made or ended, or whether any payment affected coverage. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no official, consultant, journalist, treasurer or candidate is named; withheld recipients and the advertising firms whose name is a person's full name appear only as counts. A name that matches only a withheld string answers exactly like a name that matches nothing. No party label is given and no outlet's content is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
| firm | No | Optional case-insensitive substring of a reviewed advertising or public-relations firm name as the award records carry it; at most 80 characters. | |
| agency | No | Optional agency name substring, or a short form such as DHS, DoD or HHS; at most 80 characters; DHS rows show with no agency or with DHS. | |
| fiscal_year | No | Optional fiscal year, 2017 to 2026; firm rows are published for FY2017-26, FY2025 and FY2026 only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior; beyond that the description discloses return contents, FY2026 reporting lag (~90 days), missing subaward linkage, suppression/privacy rules, and caveats about what records cannot show. This is unusually rich behavioral context and does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single massive, semicolon-heavy block that front-loads the scope but then piles on output structure, caveats, legal citations, and privacy rules without headings or paragraph breaks. The content is often relevant, but the structure makes it hard to scan and several details could be shortened or moved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description must carry return shape and limitations, and it does: it describes per-code series, agency rollups, DHS specifics, DoD share, FEC payee counts, as-of dates, licences, and what the records do not show. It is complete for a complex register tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already documents all three parameters at 100% coverage; the description adds filter semantics such as short-form agency matching (DHS/DoD), reviewed-firm/UEI naming rules, withheld-recipient behavior, and fiscal-year publication limits. That is meaningful enrichment beyond the schema, though much of the parameter detail is repeated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource (federal advertising and public-relations contract obligations in the Media Money Register), product codes R701/R708, and filter scope. It does not explicitly contrast with media_money_summary or media_money_family, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains optional filters and data scope but never states when to choose this tool over media_money_summary, media_money_family, or media_money_terminations, nor any when-not conditions. Usage is inferable from the product-code focus, but no explicit routing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_money_familyFind Media Award Recipient FamiliesARead-onlyIdempotentInspect
Look up a reviewed recipient family in the Media Money Register by a substring of its name, of a parent company the register names, or of a name its award records carry, optionally limited to one block (A1 news publishers and wires, A2 information and data companies, A3 broadcasters and studios, B public broadcasting, C the U.S. Agency for Global Media's grantees, C2 media-development grantees). Returns up to 5 families, each with its block, reviewed UEIs and DUNS numbers, the names its award records carry, contract and grant obligations by fiscal year and by agency, its largest product codes, the split by what the awards are for (news families) or what the awards are for in the register's words (information companies, never counted as news), its termination actions by window with FPDS's reason codes, and the side columns: its connected PAC's contributions to candidates' committees and to all committees by FEC cycle (no committee it gave to, candidate or party is named), its 2025 lobbying reports (in-house expenses and outside firms' income are each the report's total for all issues and are never added together), the 2025 inaugural committee's report and the reviewed super PAC donors, with the caption. Families come from a reviewed table of identifiers, never a name search; an empty column is a search result, not a fact about the company. Recipients whose award records name a family's identifier as parent but which are not reviewed members are listed with their amounts and not counted in the family. Each figure is named in its record's own words: contract obligations (a subscription is a purchase order, delivery order or definitive contract), grant obligations by assistance listing, Treasury account obligations, termination actions with FPDS's reason code as printed, and the laws' own text; fiscal year 2026 is as reported through the as-of date, as Defense Department contract records reach USAspending about 90 days late. The blocks (news publishers and wires; information and data companies, never counted as news; broadcasters and studios; public broadcasting; the U.S. Agency for Global Media's grantees, described in the law's words; media-development grantees; federal advertising and public relations) are never added together, and a contract, a grant and a Treasury account are never added to one another. The side columns (connected-PAC money from the FEC bulk files, 2025 lobbying reports from lda.gov, the 2025 inaugural committee's report and the reviewed super PAC donors) are separate records shown side by side: never added to award money or to each other, and never put in date sequence with an award or a termination. Every answer carries the register's question note: these records show federal award and account obligations and the agencies' own termination records; they do not show what any outlet published, why an award was made or ended, or whether any payment affected coverage. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no official, consultant, journalist, treasurer or candidate is named; withheld recipients and the advertising firms whose name is a person's full name appear only as counts. A name that matches only a withheld string answers exactly like a name that matches nothing. No party label is given and no outlet's content is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive substring of a reviewed family name, a parent company or a name its award records carry, for example Politico; at most 80 characters. | |
| block | No | Optional block: A1 news publishers and wires, A2 information companies, A3 broadcasters, B public broadcasting, C USAGM grantees, C2 media development. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, idempotent=true, destructive=false. The description adds extensive behavioral context: what is returned (up to 5 families with blocks, UEIs, obligations, side columns), crucial caveats ('empty column is a search result, not a fact'), data provenance, the FEC restriction quote, and the caption requirement. This far exceeds what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, extremely dense paragraph packed with caveats, legal citations, and data-model rules. While nearly every sentence carries substantive information, the lack of structure (bullets, paragraphs) makes it hard to parse and front-load the essential call guidance. It is over-long for practical consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the absence of an output schema, and the rich annotation set, the description is exceptionally complete. It covers return values, data provenance, non-additivity rules, as-of dates, source attribution, and institutional-use restrictions—leaving no major gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented in the input schema. The description reinforces the meaning of 'name' (substring of family name, parent company, or award record name) and the block enum, but adds little 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Look up'), resource ('reviewed recipient family in the Media Money Register'), and scope ('by a substring of its name, of a parent company... optionally limited to one block'). The detailed return-field list differentiates it from summary or terminations siblings, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context such as 'Families come from a reviewed table of identifiers, never a name search' and explains withheld-name matching, but never explicitly states when to use this tool versus media_money_summary, media_money_advertising, or media_money_terminations. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_money_summaryGet Federal Media Money TotalsARead-onlyIdempotentInspect
Totals from the Media Money Register, built from USAspending's award and account records, the FPDS ATOM feed, the public laws on govinfo and the Federal Register: federal money, FY2017 to FY2026, to news publishers and wires, information and data companies, broadcasters and studios, public broadcasting, the U.S. Agency for Global Media's four grantee corporations, media-development grantees and federal advertising and public-relations firms. Returns each block by fiscal year, each labelled and never summed across blocks; the news families' split by what the awards are for, from each award's own product code; the termination and cancellation actions on the news and information families' contracts, counted in two windows of equal length either side of January 20, 2025; the DHS advertising figures, with its seven campaign task orders; the Public Broadcasting Fund account (020-0151), the laws' own words on the Corporation for Public Broadcasting and CPB's own grants; the agency's account (514-0206), its grantees' grants and its wire contracts; the counter-finding; the register's headlines with their basis; and what is excluded: no savings claim, no Paycheck Protection Program loan and no CPB station grant is in any figure. Each figure is named in its record's own words: contract obligations (a subscription is a purchase order, delivery order or definitive contract), grant obligations by assistance listing, Treasury account obligations, termination actions with FPDS's reason code as printed, and the laws' own text; fiscal year 2026 is as reported through the as-of date, as Defense Department contract records reach USAspending about 90 days late. The blocks (news publishers and wires; information and data companies, never counted as news; broadcasters and studios; public broadcasting; the U.S. Agency for Global Media's grantees, described in the law's words; media-development grantees; federal advertising and public relations) are never added together, and a contract, a grant and a Treasury account are never added to one another. The side columns (connected-PAC money from the FEC bulk files, 2025 lobbying reports from lda.gov, the 2025 inaugural committee's report and the reviewed super PAC donors) are separate records shown side by side: never added to award money or to each other, and never put in date sequence with an award or a termination. Every answer carries the register's question note: these records show federal award and account obligations and the agencies' own termination records; they do not show what any outlet published, why an award was made or ended, or whether any payment affected coverage. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the licence. Where FEC figures appear, the answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)). Institutions only: no official, consultant, journalist, treasurer or candidate is named; withheld recipients and the advertising firms whose name is a person's full name appear only as counts. No party label is given and no outlet's content is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only, idempotent, open-world access; the description goes well beyond that by disclosing that blocks must never be summed, that DOD contract records arrive at USAspending roughly 90 days late, that FY2026 is partial as of an as-of date, and that answers must carry source, licence and the FEC 52 U.S.C. 30111(a)(4) restriction. It also sets a disclosure policy: institutions only, withheld recipients shown as counts, no party labels.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description runs several hundred words in a handful of enormous multi-clause sentences, mixing what the tool returns with editorial policy, legal boilerplate and exclusions. Front-loading is decent, but the density makes the operative rules (never sum blocks, side columns are separate) hard to extract at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description must carry the full result shape, and it does: it enumerates the blocks, the fiscal-year breakdown, the termination windows, the DHS campaign task orders, the specific Treasury accounts, side columns and exclusions. What it omits is the actual response structure or key names, which an agent would still have to discover at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the schema carries nothing to explain and the baseline of 4 applies. The description does not add spurious parameter talk, though it also gives no hint of any optional scoping such as fiscal year or block selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb and resource: totals from the Media Money Register, covering federal media money FY2017-FY2026 across named recipient families. That is far more informative than the title. It never names media_money_family, media_money_terminations or media_money_advertising, however, even though its own contents explicitly include per-family splits, termination actions and advertising figures, so an agent cannot tell from the text which of those siblings to pick instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the three sibling tools that overlap its content, nor any prerequisite or exclusion about tool choice. The many 'never added' rules govern how to read the numbers, not when to invoke the tool, so the agent is left to infer routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_money_terminationsList Media Contract Termination ActionsARead-onlyIdempotentInspect
List the termination and cancellation actions FPDS records on the news publisher and wire families' and the information companies' contracts in the Media Money Register, optionally filtered by family (a substring of a family name), agency (a substring of the agency or department as FPDS prints it, or a short form such as DHS, DoD, HHS or State) and window (before: the 645 days to January 19, 2025; since: January 20, 2025 to the as-of date); at most 25 rows, the most recently signed at the top, with the full count and the counts by window. Each row gives the family, the agency and department, the award and modification numbers, the date signed, FPDS's reason code and its description as printed (F, terminate for convenience; N, legal contract cancellation; E, terminate for default; X, terminate for cause), the amount the action itself records, any initiative code as printed and the product code. Actions are unique by agency, award and modification; a termination of a prepaid subscription can record little or nothing, and the amount is never compared with any claim. Each figure is named in its record's own words: contract obligations (a subscription is a purchase order, delivery order or definitive contract), grant obligations by assistance listing, Treasury account obligations, termination actions with FPDS's reason code as printed, and the laws' own text; fiscal year 2026 is as reported through the as-of date, as Defense Department contract records reach USAspending about 90 days late. Every answer carries the register's question note: these records show federal award and account obligations and the agencies' own termination records; they do not show what any outlet published, why an award was made or ended, or whether any payment affected coverage. Every answer also carries the side-by-side caption, the as-of date, each file's date, the source page on morvs.ai and the licence. Institutions only: no official, consultant, journalist, treasurer or candidate is named; withheld recipients and the advertising firms whose name is a person's full name appear only as counts. No party label is given and no outlet's content is characterised.
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Optional agency or department name substring as FPDS prints it, or a short form such as DHS, DoD, HHS or State; at most 80 characters. | |
| family | No | Optional case-insensitive substring of a news publisher, wire or information-company family name, for example Politico; at most 80 characters. | |
| window | No | Optional window: before (the 645 days to January 19, 2025) or since (January 20, 2025 to the as-of date); both when omitted, never added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description adds genuinely useful behavior: a 25-row cap, most-recent-first ordering, full and by-window counts, exact row fields, uniqueness by agency/award/modification, caveats about small prepaid amounts, the 90-day Defense contract lag, and standard disclaimers and redactions carried on every answer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, run-on wall of text with long parentheticals and repeated framing sentences ('Every answer carries...'). It is front-loaded with the purpose, but the volume of policy and disclaimer text far exceeds what is needed to select and invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description is thorough: it describes the row fields, counts, ordering, caps, and the question note/caption/as-of metadata returned with each answer. An agent knows what it will get and how to interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter. The description restates the same filter meanings (agency short forms, family substring, before/since windows) but adds little syntax or interpretation beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists termination and cancellation actions FPDS records on media families' contracts in the Media Money Register. That is clear and unique, but it never names or distinguishes itself from close siblings such as media_money_summary, media_money_family or media_money_advertising.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the optional filters and defines the two windows, so usage is implied, but it gives no explicit guidance on when to choose this tool over a sibling like media_money_summary or media_money_family, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrant_programs_programGet One Migrant Program by Fiscal YearBRead-onlyIdempotentInspect
One program of the Migrant Program Money Register by key: its label, agency and award-ID rule (the FAIN prefix pattern and the listings it is booked under, or the reviewed award list for contracts) with the register's evidence; the listing note where the program's money moved between assistance listings (the unaccompanied-children program booked under 93.566 from December 2024 and re-booked older obligations in September 2026, so a series by listing alone moves with that booking), and money by listing or by kind where the register gives it; by fiscal year, net obligations, positive obligations, de-obligations, transactions, recipients and new awards, each labelled with its fiscal year and the as-of date; the 10 largest recipients each fiscal year as the register ranks them, with their class; new awards in FY2025 and FY2026 by funding opportunity; the equal twelve-month windows; class shares by year; and, for State Reception and Placement, the awards placed outside the United States that are excluded. Every amount is an obligation from the award records (the government's commitment to pay), net of de-obligations, by action date; net obligations, positive obligations and de-obligations are separate stages, each labelled with its fiscal year and the as-of date, award-level outlays (only where the record carries them) are the record's cumulative figure to the as-of date, and they are never added across stages. Governments are kept apart from organisations: every amount names its recipient class from the register's reviewed table, never a single NGO total. A recipient is called an IRS-listed exempt organisation only where the register's IRS EO BMF match stands (by the reviewed EIN, or by exact name and state where the register marks the match by rule), shown with that record; other organisations read organisation, IRS status not matched. The tools never call a recipient nonprofit or faith-based, and no recipient is classified by religion. Lobbying reports (LDA), connected PACs (FEC), ICE and CBP contracts (the Pay-to-Play Register, where ICE detention sits) and super PAC gifts (the Super PAC Donors Register) are side columns: shown side by side, never added to program money and never put in date sequence with an award or a termination. Every answer carries the register's question note: these records show federal awards and the agencies' own termination records; they do not show how any recipient used the money or why an award was made or ended beyond what the record says. Every answer also carries the side-by-side caption, the as-of and retrieval dates, each file's date, the source page on morvs.ai and the licence. Institutions only: no beneficiary, staff member, executive or sole proprietor is named; withheld recipients and records appear only as counts and amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| program | Yes | Required program key: orr_uc, orr_refugee_formula, orr_refugee_matching, orr_refugee_discretionary, orr_contracts, state_rp, fema_ssp or eoir_legal_access. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the bar is lower, yet the description still adds substantial behavioral context: amounts are obligations net of de-obligations by action date, stages are never summed across, side columns (LDA, FEC, ICE/CBP, super PAC) are never added to program money, recipient classes always come from a reviewed table, and a question note about what the records do and do not show. These are real usage-relevant constraints beyond the structured fields; the only shortfall is that this value is delivered as an undifferentiated wall of text rather than prioritized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
This is a single paragraph of roughly 300 words in which the actual purpose occupies the first clause and everything after is a dense content inventory plus methodology caveats. Sentences run long and chain multiple clauses with semicolons, so key constraints (side columns are never added, no individual is named) are hard to extract. The front-loading of the purpose is the only structural virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and it does so at length: fiscal-year-labelled stages, top-10 recipients with class, FY2025/26 new awards by funding opportunity, twelve-month windows, class shares, and the exclusion note for State R&P. It also discloses the register's provenance and caveats, making the tool callable without surprises; the omission is any hint about ordering, pagination, or response size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required enum parameter with 100% schema description coverage, so the baseline is 3 and the schema already carries the full key list. The description adds partial meaning for a couple of keys — it explains the unaccompanied-children program is booked under 93.566 and that state_rp excludes awards placed outside the United States — but leaves the other six enum values (orr_refugee_formula, fema_ssp, eoir_legal_access, etc.) unexplained, so the added value is marginal rather than decisive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb and resource: 'One program of the Migrant Program Money Register by key,' which tells an agent it is fetching a single program record rather than an aggregate. However, the description never names its siblings (migrant_programs_summary, migrant_programs_recipient, migrant_programs_terminations) or explains what makes this tool different from them, and the core purpose is buried under a long content inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named despite three closely related migrant_programs_* siblings existing. An agent can infer from 'by key' that this is the single-program lookup, but it must infer it, and nothing prevents it from picking this tool when a summary or recipient-level tool is the better fit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrant_programs_recipientFind Migrant Program Award RecipientsARead-onlyIdempotentInspect
Look up a recipient in the Migrant Program Money Register by name substring as the award records name it, by the register's family name, or by its exact 12-character UEI, optionally limited to one program. Returns up to 5 published recipients, each with its UEI, states, reviewed class and the basis for it, and the IRS Exempt Organizations Business Master File record where one matches (EIN, the name and state the IRS lists, and the IRS's own codes); money by program and fiscal year; its 10 largest awards with obligations by fiscal year and award-level outlays as recorded, each labelled; its termination records in the agency's exact words with their dates; the subaward rows its prime awards report, as counts only (the register gives no subawardee total); and the register's side-by-side columns for its family: program money, LDA lobbying reports, connected PACs, ICE and CBP contracts and super PAC gifts, with the caption. An empty column is a search result, not a fact about the organisation. Every amount is an obligation from the award records (the government's commitment to pay), net of de-obligations, by action date; net obligations, positive obligations and de-obligations are separate stages, each labelled with its fiscal year and the as-of date, award-level outlays (only where the record carries them) are the record's cumulative figure to the as-of date, and they are never added across stages. Governments are kept apart from organisations: every amount names its recipient class from the register's reviewed table, never a single NGO total. A recipient is called an IRS-listed exempt organisation only where the register's IRS EO BMF match stands (by the reviewed EIN, or by exact name and state where the register marks the match by rule), shown with that record; other organisations read organisation, IRS status not matched. The tools never call a recipient nonprofit or faith-based, and no recipient is classified by religion. Terminations appear only in the agency's exact words with their dates; where the record gives no words the answer says the record gives no reason, and an executive-order tag appears only as the record shows it. Lobbying reports (LDA), connected PACs (FEC), ICE and CBP contracts (the Pay-to-Play Register, where ICE detention sits) and super PAC gifts (the Super PAC Donors Register) are side columns: shown side by side, never added to program money and never put in date sequence with an award or a termination. Every answer carries the register's question note: these records show federal awards and the agencies' own termination records; they do not show how any recipient used the money or why an award was made or ended beyond what the record says. Every answer also carries the side-by-side caption, the as-of and retrieval dates, each file's date, the source page on morvs.ai and the licence. Institutions only: no beneficiary, staff member, executive or sole proprietor is named; withheld recipients and records appear only as counts and amounts. A name that matches only a withheld string answers exactly like a name that matches nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive recipient name substring as filed, a family name or an exact 12-character UEI; at most 80 characters; published recipients only. | |
| program | No | Optional program key, for example orr_uc, state_rp or fema_ssp: only recipients with money in that program, with that program's figures. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a wealth of behavioral context: it returns up to 5 published recipients, empty columns are search results not facts, amounts are obligations net of de-obligations by action date, stages are never added, IRS matching is conditional, terminations appear only in exact words, side columns are never combined with program money, and every answer carries a question note, caption, as-of/retrieval dates, source page, and licence. This is exactly the kind of context annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is an extremely long run-on paragraph that repeats caveats about amounts, IRS matching, and side columns. For a two-parameter lookup tool, much of this could be compressed or moved to structured documentation without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, rich input schema, and absence of an output schema, the description is complete. It explains return values, edge cases, institutional-scope restrictions, and the handling of withheld names, so an agent has enough context to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters in detail. The description adds only marginal clarification ('as the award records name it', 'published recipients only') beyond the schema's own descriptions, so it sits at the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Look up a recipient in the Migrant Program Money Register by name substring... by family name, or by exact 12-character UEI, optionally limited to one program.' This clearly distinguishes a recipient-level lookup from program-level siblings, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description ('Look up a recipient... optionally limited to one program') and by the detail about what is returned, but there is no explicit when-to-use/when-not-to-use guidance. The nearest siblings (migrant_programs_program, migrant_programs_summary, migrant_programs_terminations) are not mentioned as alternatives, leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrant_programs_summaryGet Migrant Program Money TotalsARead-onlyIdempotentInspect
Totals from the Migrant Program Money Register, built from USAspending award records, HHS's TAGGS terminated-grants list and the IRS Exempt Organizations Business Master File: federal obligations, FY2023 to FY2026, to the organisations and governments that shelter, care for, resettle, transport and give legal help to migrants and refugees, in eight programs keyed from the award ID (ORR unaccompanied-children grants and ORR contracts, ORR refugee formula, Matching Grant and discretionary grants, State Department Reception and Placement, FEMA's Shelter and Services Program and DOJ EOIR legal access). Returns the all-programs total with its basis; money by program and fiscal year, with net obligations, positive obligations and de-obligations labelled; the equal twelve-month windows either side of January 20, 2025; recipient-class shares by program and year, with state, local and tribal governments apart from organisations and organisations split by IRS match; FEMA's Shelter and Services de-obligations of February 10 to 12, 2025 (the record gives no reason), with the government share; termination records counted by agency and record type; withheld recipients and records as counts and amounts; the exclusions, the awards placed outside the United States listed with their amounts; and the register's headlines with their basis. Awards whose record places the work outside the United States are excluded from every figure, as are FEMA's Emergency Food and Shelter Program and ICE detention money. Every amount is an obligation from the award records (the government's commitment to pay), net of de-obligations, by action date; net obligations, positive obligations and de-obligations are separate stages, each labelled with its fiscal year and the as-of date, award-level outlays (only where the record carries them) are the record's cumulative figure to the as-of date, and they are never added across stages. Governments are kept apart from organisations: every amount names its recipient class from the register's reviewed table, never a single NGO total. A recipient is called an IRS-listed exempt organisation only where the register's IRS EO BMF match stands (by the reviewed EIN, or by exact name and state where the register marks the match by rule), shown with that record; other organisations read organisation, IRS status not matched. The tools never call a recipient nonprofit or faith-based, and no recipient is classified by religion. Terminations appear only in the agency's exact words with their dates; where the record gives no words the answer says the record gives no reason, and an executive-order tag appears only as the record shows it. Lobbying reports (LDA), connected PACs (FEC), ICE and CBP contracts (the Pay-to-Play Register, where ICE detention sits) and super PAC gifts (the Super PAC Donors Register) are side columns: shown side by side, never added to program money and never put in date sequence with an award or a termination. Every answer carries the register's question note: these records show federal awards and the agencies' own termination records; they do not show how any recipient used the money or why an award was made or ended beyond what the record says. Every answer also carries the side-by-side caption, the as-of and retrieval dates, each file's date, the source page on morvs.ai and the licence. Institutions only: no beneficiary, staff member, executive or sole proprietor is named; withheld recipients and records appear only as counts and amounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behaviour, but the description goes far past them: it states which awards are excluded (non-US work, EFSP, ICE detention), that obligations are net of de-obligations by action date, that outlays are never summed across stages, that side columns (LDA, FEC, Pay-to-Play, Super PAC) are never added to program money, and that withheld recipients appear only as counts. That is unusually rich methodological context that no structured field carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core definition is front-loaded, but the whole thing is a single ~600-word paragraph with no sentence breaks, bullets or headings, mixing return contents, source provenance, exclusion rules, methodology and six regulatory caveats into one block. Much of it is substantive, but the absence of any structure makes it hard for an agent to extract the operative constraints under token pressure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema aggregate tool, the description covers what is returned (all-programs total, program×year money, twelve-month windows around Jan 20 2025, recipient-class shares, FEMA de-obligations, termination counts, exclusions, headlines), what is deliberately omitted, and every mandatory caveat the answer must carry. Nothing needed to call it correctly or interpret its output is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly adds no parameter prose and instead spends its words on scope and caveats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause names a specific verb and resource — 'Totals from the Migrant Program Money Register' — and enumerates the eight programs (ORR, Matching Grant, R&P, FEMA SSP, EOIR) plus the data sources, so an agent knows exactly what the tool computes. It does not, however, name or contrast itself against the obvious siblings migrant_programs_program, migrant_programs_recipient and migrant_programs_terminations, leaving that differentiation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is only implied: repeatedly calling itself the all-programs total and listing program-, recipient- and termination-level breakdowns signals that the per-entity work lives elsewhere. There is no explicit 'use this when you want the overall picture; use migrant_programs_recipient for a single entity' statement, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrant_programs_terminationsList Migrant Program Award TerminationsARead-onlyIdempotentInspect
List the termination records in the Migrant Program Money Register, optionally filtered by agency (a name substring as the record or its program names it, or a short form: FEMA, DHS, USCIS, ICE, CBP, HHS, ACF, ORR, State, PRM, DOJ or EOIR, each resolved to the agency names the data gives; a short form the data does not name returns no rows and the answer lists the agency names in the data), program key and recipient name substring; at most 25 rows, with the full count and the count by record type. Three record types, each verbatim with its date and amount as the record gives it: rows of HHS's TAGGS terminated-grants list, in HHS's own words and columns (total obligated, expended, payment and unliquidated, labelled as HHS labels them) with the list's date; termination and recipient-request texts from the USAspending award records, with the agency's exact words, the action type as filed, the action's obligation and any executive-order tag exactly as the record shows it; and FEMA's Shelter and Services de-obligations of February 10 to 12, 2025, by recipient, each labelled the record gives no reason. A $0 termination action is not the money: any de-obligation is a separate, later action. Terminations appear only in the agency's exact words with their dates; where the record gives no words the answer says the record gives no reason, and an executive-order tag appears only as the record shows it. Governments are kept apart from organisations: every amount names its recipient class from the register's reviewed table, never a single NGO total. A recipient is called an IRS-listed exempt organisation only where the register's IRS EO BMF match stands (by the reviewed EIN, or by exact name and state where the register marks the match by rule), shown with that record; other organisations read organisation, IRS status not matched. The tools never call a recipient nonprofit or faith-based, and no recipient is classified by religion. Every answer carries the register's question note: these records show federal awards and the agencies' own termination records; they do not show how any recipient used the money or why an award was made or ended beyond what the record says. Every answer also carries the side-by-side caption, the as-of and retrieval dates, each file's date, the source page on morvs.ai and the licence. Institutions only: no beneficiary, staff member, executive or sole proprietor is named; withheld recipients and records appear only as counts and amounts. A name that matches only a withheld string answers exactly like a name that matches nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Optional agency name substring as the record or its program names it, or a short form (FEMA, DHS, HHS, ACF, ORR, State, PRM, DOJ, EOIR); at most 80 characters. | |
| program | No | Optional program key: orr_uc, orr_refugee_formula, orr_refugee_matching, orr_refugee_discretionary, orr_contracts, state_rp, fema_ssp or eoir_legal_access. | |
| recipient | No | Optional case-insensitive recipient name substring as the record names it, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations, disclosing the three record types, verbatim-wording requirements, $0 action handling, recipient-classification rules, withholding behavior, disclaimer text, source/license metadata, and the maximum row count. These details tell the agent exactly how results will be shaped and what the answer will include. The read-only, idempotent, non-destructive annotations are consistent with a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, run-on block with very long sentences, repeated qualifiers like 'exactly as the record shows it,' and multiple caveats packed together. The purpose is front-loaded, but the lack of bullet structure and repeated phrasing makes it harder to scan than necessary for a three-parameter listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description thoroughly covers return values, row limits, counts by record type, date and amount presentation, source metadata, disclaimer text, and withholding behavior. For a complex multi-source listing tool, this is sufficiently complete for an agent to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3, but the description adds useful meaning: agency short forms are resolved to agency names the data uses, unrecognized short forms return no rows with an agency-name listing, and recipient matching is by name substring. Program-key semantics are mostly left to the enum schema, but the agency-filter explanation adds real value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb and resource: listing termination records in the Migrant Program Money Register, with optional agency, program, and recipient filters. It also specifies the 25-row limit and count reporting, making the tool's scope clear. However, it does not explicitly distinguish this tool from sibling migrant_programs_program, migrant_programs_recipient, or migrant_programs_summary, leaving that differentiation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains filter behavior and edge cases, such as short-form agency names that return no rows and withheld-name matching, but it never states when an agent should choose this termination-record tool over the program, recipient, or summary siblings. There are no explicit exclusions or alternative-tool routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migration_flows_searchSearch County Migration FlowsARead-onlyIdempotentInspect
Search IRS county-to-county migration flows by county/state name. Returns place_id ({state_fips}-{county_fips}) to pull a county's net migration (returns/people/AGI in vs out, FY2022-2023) and its top origin/destination counties. Aggregate IRS statistic — zero PII.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | County or state name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description only needs to add what they cannot. It does: it discloses the return payload (place_id keyed as {state_fips}-{county_fips}, net flows in returns/people/AGI, top origin/destination counties), the data vintage (FY2022-2023), and the privacy posture (aggregate IRS statistic, zero PII). Only pagination/ordering behavior is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and resource, then the identifier format, then provenance/privacy. No filler and nothing repeated from the schema beyond what is needed for orientation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by explaining place_id, the metric families, and the vintage. It is nearly complete for a two-parameter search; the only gap is ordering/pagination semantics for limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both q and limit are already documented, and the baseline is 3. The description reinforces that q accepts county or state names but adds no syntax, matching rules, or limit behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) plus the precise resource (IRS county-to-county migration flows) and the lookup key (county/state name). It also names the data vintage and provenance, so an agent can distinguish this from the many other *_search tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the mention of returning a place_id 'to pull a county's net migration and top origin/destination counties' hints at a two-step pattern, but there are no explicit when-to-use/when-not conditions or named alternatives. A sibling such as ag_census_county_search or income_by_zip_search is never contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
national_security_surveillanceGet National Security FiguresARead-onlyIdempotentInspect
Returns the published agency counts in the MORVS Surveillance Orders Register national-security source ledger. Optionally filter by exact series ID and period. Every fact retains the agency label, source, page, quote, method and any qualifier or disagreement. Section 702 targets, FISA orders, national-security letters and border device searches use different units, laws and periods; never add them or treat them as one trend. Section 702 target counts estimate non-US persons abroad; FBI query counting changed. These are aggregate published counts and cannot identify surveillance of a person.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Optional exact published period for the selected series. | |
| series | No | Optional published series id. Series count different things under different laws and must never be added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses key behavioral details: every fact retains source, page, quote, method, qualifiers, and disagreements, and the data are aggregate published counts that cannot identify individuals. It also flags important comparability caveats, including Section 702 target estimation and changed FBI query counting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core return behavior and then groups the comparability and privacy caveats efficiently. It is dense but each sentence contributes relevant guidance; it could be slightly more structured, but it is not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-series statistical retrieval tool with no output schema, the description does a good job covering provenance, caveats, and the aggregate nature of the data. It does not fully specify the response shape or pagination behavior, but the essential context for correct use is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the input schema. The description reinforces that filters are exact and that series measure different things, but it does not add syntax or selection detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it returns published agency counts from the MORVS Surveillance Orders Register national-security source ledger. It also states the optional filtering dimensions, so an agent can immediately distinguish this from sibling tools such as wiretap_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains how to use the tool: optionally filter by exact series ID and period, and never add across series because they use different units, laws, and periods. It does not explicitly name alternatives or say when to prefer a sibling tool, but the usage constraints within the tool are strong and specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
newsGet Regulatory NewsBRead-onlyIdempotentInspect
Time-ordered cross-topic news feed: insider trades, Form 144 notices, cluster buys/sells, Schedule 13D filings, 8-Ks, FDA recalls, weather alerts, presidential documents.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Calendar-day lookback for feed items; active severe weather alerts may remain. Default 3, max 30. | |
| kind | No | Comma-separated kinds (e.g. cluster_buy,form144,schedule_13d_new) | |
| topic | No | Exact topic filter: sec, fda, register, weather, or climate; omit for all. Climate currently has no feed producer. | |
| min_importance | No | Filter to high-signal events. Reference: cluster_buy=85, presidential=80, 13D_new=75, Class I recall=100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds the ordering behavior ('time-ordered') and the cross-topic breadth, which is useful context. It says nothing about item volume, pagination, or freshness/latency, so it adds only 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the core concept ('time-ordered cross-topic news feed') and then lists the covered streams. No filler, no repetition of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys the shape of what comes back (a time-ordered feed spanning the listed domains), and the schemas/annotations handle the rest. The enumeration of content types aligns well with the kind and topic parameters. It stops short of describing item structure, pagination, or result limits, which leaves a small gap for a feed tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (days, kind, topic, min_importance) are already fully documented in the schema, including the importance reference values and the climate caveat. The description adds no parameter-level syntax or semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific resource (a time-ordered cross-topic news feed) and enumerates the exact content streams it aggregates (insider trades, Form 144, cluster buys/sells, 13D, 8-K, FDA recalls, weather alerts, presidential documents). That lets an agent understand the scope without opening the schema. It does not, however, contrast itself with sibling feeds like cluster_buys, doj_recent, or fda_firm_dossier, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative-selection guidance. Given many sibling tools cover the same content narrowly (cluster_buys, cluster_sells, doj_recent, fda_firm_dossier), an agent gets no signal about when this aggregated feed is preferred over those. Usage is only loosely implied by the enumerated content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhtsa_automation_investigationsFind NHTSA Automation InvestigationsBRead-onlyIdempotentInspect
Search MORVS-reviewed NHTSA automated-driving, Level 2 driver-assistance and SGO-compliance investigations. Returns NHTSA’s structured action fields, cited SGO report IDs and published lookup links; scope and reason are MORVS-reviewed classifications, not NHTSA findings. Optionally includes linked recall campaigns with potentially affected units as filed by the manufacturer. An opened investigation or a defect petition is not a finding. A recall’s potentially affected units are not a fleet census. No NHTSA summary text or personal names are returned. Reports are each company’s own filings with NHTSA, not a finding, and say nothing about responsibility. The highest injury severity alleged says nothing about responsibility. ADS and Level 2 ADAS have different reporting requirements, are kept separate and are never added together; OTHER is never a crash count. Reports and crashes are different counts. Counts reflect fleet size and reporting rules; they are not rates, are never normalised by miles or fleet size, and are never a safety ranking. The third amended order changed reporting from June 16, 2025, so counts across that break are not directly comparable. A narrative marked as confidential business information is a claim, not an NHTSA decision. No people or narrative text are returned. NHTSA’s caveats are included verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum investigations and recalls returned. | |
| status | No | Optional investigation status: open or closed. Opening is not a finding. | |
| company | No | Optional case-insensitive manufacturer or company substring. | |
| include_recalls | No | Include related NHTSA recalls; defaults to true. Potentially affected units are as filed, not a fleet census. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent lookup, but the description adds substantial context beyond them: it names the returned fields, notes optional recall linkage, says no NHTSA summary text or personal names are returned, and warns about the June 16, 2025 reporting break and non-comparability across it. Some of this is repeated disclaimer text, but the behavioral disclosure is well above what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is heavily bloated with repeated caveats: 'not a finding,' 'says nothing about responsibility,' and 'not a fleet census' recur in multiple forms. Several sentences restate the same legal disclaimer rather than adding new invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with no output schema, the description is fairly complete: it explains the returned fields, recall inclusion, data limitations, and confidentiality handling. It is weaker on routing between sibling NHTSA tools, but the core behavioral context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description does not add syntax, default behavior beyond what the schema states, or parameter-specific guidance, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (Search) and a specific resource (MORVS-reviewed NHTSA automated-driving, Level 2 driver-assistance and SGO-compliance investigations). It is distinguishable from generic NHTSA siblings such as nhtsa_recent and nhtsa_by_manufacturer, but it never names or explicitly contrasts those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no comparison to sibling tools such as nhtsa_recent, nhtsa_by_manufacturer, or self_driving_reports. The description explains how to interpret returned data, but not when an agent should choose this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhtsa_by_manufacturerGet Manufacturer RecallsARead-onlyIdempotentInspect
NHTSA vehicle recall dossier for one auto OEM. Returns total recalls, top affected components, park-it count, recent recalls. Public auto OEMs only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Manufacturer name (substring, e.g. 'Tesla' or 'Ford Motor') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety burden is lifted. The description adds the payload shape (total recalls, top components, park-it count, recent recalls) despite no output schema, plus the 'public auto OEMs only' input constraint. It stops short of stating what happens for a non-matching or ambiguous name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight fragments with the resource front-loaded and the scope constraint last; nothing is padded. Slightly telegraphic ('park-it count' jargon) but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the required work by enumerating what comes back (totals, components, park-it count, recent recalls) and constraining the input domain. For a single-param read tool whose annotations cover safety, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'name' param and already documents substring semantics with examples. The description reinforces the scope ('one auto OEM', 'public auto OEMs only'), which slightly narrows the param, but adds no format or matching detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'NHTSA vehicle recall dossier for one auto OEM' clearly states it retrieves recall data for a single manufacturer. It implicitly contrasts with the sibling nhtsa_recent ('recent recalls' listed as content), though it never names that sibling explicitly. An agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Public auto OEMs only' gives a scope restriction (when-not), which is real usage guidance. But it never explicitly tells the agent when to prefer this over nhtsa_recent or what to do for private/non-OEM entities; there is no named alternative. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhtsa_recentFind Recent Vehicle RecallsBRead-onlyIdempotentInspect
Recent NHTSA vehicle recalls. Filter by manufacturer, make, model year. park_it=1 returns only the most urgent recalls (do-not-drive).
| Name | Required | Description | Default |
|---|---|---|---|
| make | No | Make code (uppercased: TESLA, FORD, etc.) | |
| year | No | Exact vehicle model year as an integer, e.g. 2024. | |
| limit | No | Maximum recalls by report received date; default 50, max 200. | |
| park_it | No | Use 1 to show only recalls flagged park-it; 0 or omitted leaves all recalls. | |
| manufacturer | No | Case-insensitive manufacturer name substring, e.g. Tesla. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds some behavioral color by explaining park_it as 'do-not-drive' urgent recalls, but it never defines what 'recent' means (time window) or how results are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, no filler, with the core purpose front-loaded and the park_it nuance last. Tight and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, zero-required-parameter tool with full schema coverage and no output schema, this is adequate: purpose, filters and the special flag are covered. It still leaves the recency window undefined and gives no hint about how it differs from nhtsa_by_manufacturer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates the filter dimensions (manufacturer, make, model year) and reinforces park_it's urgency, but the schema already documents each parameter including enum, default and max values; the description adds no syntax or edge-case detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (NHTSA vehicle recalls) and scope ('Recent'), with the title giving a clear verb ('Find Recent Vehicle Recalls'). However, it does nothing to distinguish itself from the sibling nhtsa_by_manufacturer, which plausibly covers the same records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case ('recent' recalls, filterable by manufacturer/make/year) but never states when to pick this over nhtsa_by_manufacturer or any other sibling, and gives no prerequisites or exclusions. An agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nih_by_orgGet Organization NIH AwardsARead-onlyIdempotentInspect
NIH RePORTER dossier for one organization — total federal R&D funding received, top activity codes, recent grants. Best for academic medical centers + biotechs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds what the dossier contains, but omits that 'name' is a substring match that may resolve to multiple orgs, and says nothing about result size or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the resource scope and the returned payload are front-loaded before the audience hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the key return fields, and annotations carry the safety profile. The main residual gap is ambiguity handling for a substring name search, which matters for a one-required-param lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'name' parameter, so the baseline is 3. The description adds only the framing of 'one organization' and does not clarify substring behavior or how ambiguous matches are handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('NIH RePORTER dossier for one organization') and enumerates the payload (total federal R&D funding, top activity codes, recent grants). It implicitly distinguishes itself from nsf_by_org via the NIH scope, but never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Best for academic medical centers + biotechs' hints at intended audience, but there is no when-to-use vs when-not guidance and no named alternative (e.g., nsf_by_org, company_profile, dossier) to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nsf_by_orgGet Organization NSF AwardsBRead-onlyIdempotentInspect
NSF Awards dossier for one organization — total funding, top programs, recent awards. Pairs with academic medical centers + biotech/tech startups.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Awardee organization name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds useful content context by naming the returned dimensions (funding, programs, recent awards), but says nothing about match behavior, result limits, or scope beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that lead with the resource and preview the return content — no filler. The trailing 'Pairs with...' clause is a little fuzzy but very short, so it does little damage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup with no output schema, the description covers the essential scope and the shape of the return signal (funding, programs, recent awards), and annotations carry the safety story. Match semantics and result limits are the only notable omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage ('Awardee organization name (substring)'), the schema already documents the input. The description adds no additional meaning about the name parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear resource (NSF Awards for one organization) and previews the payload (total funding, top programs, recent awards), which distinguishes it from the sibling nih_by_org. The verb is only implicit (carried by the title's 'Get'), keeping it just below a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Pairs with academic medical centers + biotech/tech startups' gestures at a domain but does not state when to use this tool versus alternatives like nih_by_org or patents_by_assignee. No when-to-use conditions, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patents_by_assigneeGet Assignee PatentsBRead-onlyIdempotentInspect
Aggregate USPTO patent dossier for one company: total grants, top CPC classes, recent grants, inventor counts.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Assignee company name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, closed-world read (readOnlyHint=true, idempotentHint=true, openWorldHint=false), so the safety profile is covered. The description adds that output is aggregated rather than raw records, which is useful context, but says nothing about result limits, pagination, or what happens with ambiguous/substring matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense front-loaded sentence with zero filler, listing the resource first and the returned aggregates after the colon. Efficient, though it could have used the spare words for sibling differentiation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates the returned aggregate fields, and annotations cover the safety/idempotency profile. For a one-parameter read tool this is nearly complete; only usage routing and result-size behavior are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'name' parameter and it already documents that it is a substring match, so the description adds no parameter-level detail. Baseline 3 applies when the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Aggregate') and resource ('USPTO patent dossier') and enumerates the payload (total grants, top CPC classes, recent grants, inventor counts), so the agent knows exactly what it produces. It does not explicitly distinguish itself from the nearby 'patents_recent' sibling, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool returns but never says when to choose it over alternatives such as patents_recent, nor any prerequisite or exclusion. Usage must be inferred entirely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patents_recentFind Recent PatentsBRead-onlyIdempotentInspect
Recent USPTO patent grants from PatentsView. Filter by assignee company or CPC class. Use for R&D intel and IP portfolio questions.
| Name | Required | Description | Default |
|---|---|---|---|
| cpc | No | CPC subclass prefix (e.g. 'A61K' for pharmaceuticals, 'G06N' for AI/ML) | |
| limit | No | Maximum patents by grant date; default 50, max 200. | |
| assignee | No | Assignee company name (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds the data provenance (PatentsView) but leaves 'recent' undefined — no default time window, no pagination, no indication of what the result set looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short front-loaded sentences with no filler; the source and filter dimensions come first. The third sentence is mild duplication of the usage-guidance slot rather than new information, keeping it out of 5 territory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple read-only tool with a fully documented schema, so little is strictly required. However, with no output schema the description should have disclosed the recency window and rough return shape, and it should have pointed at patents_by_assignee for the per-company case — both omissions are material for an agent choosing between near-identical siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: cpc carries examples ('A61K', 'G06N'), limit carries default and max, and assignee notes substring matching. The description merely restates 'assignee company or CPC class' and adds no syntax, format, or matching semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Recent USPTO patent grants from PatentsView') and the narrowing dimensions (assignee, CPC class). It does not distinguish itself from the sibling patents_by_assignee, which on its name alone appears to cover overlapping territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use for R&D intel and IP portfolio questions' gives an audience/use-case but no when-to-use logic, no exclusions, and no mention of the obvious alternative patents_by_assignee. The agent must infer when this beats that sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_to_play_awardsFind Largest ICE and CBP AwardsARead-onlyIdempotentInspect
The largest ICE and CBP awards in the Pay-to-Play Register: awards funded by the component with a transaction in FY2025 or FY2026, ranked by Award Amount. Filter by component (ICE or CBP), fiscal year (2025 or 2026), recipient name substring, or the law File C records for the award (PL119-21, PL119-98 or account_level_only); limit 1-50 (default 20). Each award gives the recipient, its parent, the Award Amount and outlays (both lifetime figures), the award description verbatim from the award record, and the File C law link with its class (labelled or probable) or "account level only"; total and truncated give the full count. Award Amount is the award's lifetime amount, not an FY2025-26 obligation, and is never added to the fiscal-year contract totals. A File C law link records the account the award was charged to, not a judgment about the award.
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | Optional fiscal year with a transaction on the award: 2025 or 2026. | |
| law | No | Optional File C law link: PL119-21, PL119-98 or account_level_only (no File C row in the two laws' accounts). | |
| limit | No | Maximum awards returned, allowed 1-50 (default 20). | |
| component | No | Optional funding component: ICE or CBP. | |
| recipient | No | Optional case-insensitive recipient or parent name substring, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world safety, so the description's value is in the interpretive caveats it adds: Award Amount is a lifetime figure not an FY2025-26 obligation, it is never summed into fiscal-year contract totals, and a File C law link reflects the charged account rather than a judgment. These materially prevent analytic misuse; it stops short of noting the 50-result ceiling's effect on completeness or any auth/rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then filters, then return shape, then caveats — a sensible order with no filler. It is a dense run-on paragraph, however, and the return-field inventory could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: recipient, parent, lifetime Award Amount and outlays, verbatim award description, File C law class (labelled/probable/account level only), plus total and truncated counts. Combined with annotations, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including enums and the 1-50 default-20 limit is already documented. The description restates the filters and default but adds no syntax or edge-case meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('The largest ICE and CBP awards in the Pay-to-Play Register') plus the ranking key (Award Amount) and the population constraint (component with a transaction in FY2025/26). This clearly separates it from siblings like pay_to_play_totals, pay_to_play_contractor and pay_to_play_committees without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description defines the eligible population and available filters, which implies when the tool applies, but never names an alternative or states when-not to use it (e.g. totals vs contractor-level lookups among the pay_to_play siblings). Usage is inferable rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_to_play_committeesFind Contractor PAC Recipient CommitteesARead-onlyIdempotentInspect
List the federal candidate committees that received contributions from the connected PACs of the 100 largest ICE and CBP contractors in the Pay-to-Play Register, for one FEC cycle (2024 for 2023-24, or 2026 for 2025-26, default 2026). Filter by committee name substring, state (two letters), party (REP, DEM or other, as the FEC lists it) or company name substring; limit 1-50 (default 20). Each committee name is as the FEC lists it, with party, office, state and district from the FEC, the net amount from the mapped PACs and the split by company; total and truncated give the full count. A listing records a contribution reported to the FEC; it is not a finding about the candidate, the contribution's purpose or any vote. No individual donor is named and no candidate profile is built. PAC money is company-wide, not tied to ICE or CBP work, and comes from voluntary contributions, not company treasury or contract money; the FEC's own words are quoted.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | FEC two-year cycle: 2024 (2023-24) or 2026 (2025-26, default). | |
| limit | No | Maximum committees returned, allowed 1-50 (default 20). | |
| party | No | Optional party as the FEC lists it: REP, DEM or other. | |
| state | No | Optional two-letter state or territory code, as the FEC lists it. | |
| company | No | Optional case-insensitive company name substring, at most 80 characters, among the parents with a mapped PAC. | |
| committee | No | Optional case-insensitive committee name substring, at most 80 characters; names are as the FEC lists them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent/openWorld annotations by explaining what the data actually is and is not: a listing is an FEC-reported contribution, not a finding about the candidate or any vote; no individual donors are named; PAC money is company-wide, not tied to ICE/CBP work and comes from voluntary contributions rather than treasury or contract funds. That is exactly the interpretive context an agent needs to avoid over-claiming.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns before filters and caveats, and nearly every sentence carries information. It is one dense, semicolon-chained paragraph with some repetition of schema facts ('as the FEC lists it' appears twice), which costs it the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to describe the return shape: committee name plus FEC party, office, state and district, net amount from mapped PACs, per-company split, and total/truncated for the full count. Combined with the caveat block, an agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter documentation is already complete; the description mostly restates it (two-letter state, REP/DEM/other, limit 1-50 default 20, cycle mapping). It adds little beyond the schema, though the 'company name substring among the parents with a mapped PAC' framing clarifies the universe being searched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: listing federal candidate committees that received contributions from connected PACs of the 100 largest ICE/CBP contractors in the Pay-to-Play Register. The entity is specific enough that an agent can distinguish it from the pay_to_play_totals, pay_to_play_awards and pay_to_play_contractor siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: one FEC cycle, the 2024/2026 mapping to 2023-24/2025-26 with a stated default, and the four filter dimensions. It never names the sibling tools or says when a caller should prefer totals, awards or contractor lookup instead, so there are no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_to_play_contractorFind ICE and CBP Contractor RecordsARead-onlyIdempotentInspect
Look up an ICE or CBP contractor in the Pay-to-Play Register by company name substring, matched against the company, the parent as USAspending lists it, the reviewed alias note and its recipient names, among the 100 largest parents by FY2025-26 contract obligations. Returns up to 5 parents, each with three federal records side by side: ICE and CBP contract obligations by component and fiscal year (funding view, with the awarding view beside it), share, File C obligations on the border wall system lines and recipients (USAspending); connected-PAC status, committees as the FEC lists them and, by cycle, the PAC's contributions to federal candidate committees and its summary line for contributions to all committees, two measures that are never added (FEC); and lobbying reports by year, with in-house expenses and outside firms' income kept apart and never added, and IMM-coded counts (LDA). The three columns are never added together and are never a sequence. The register's note: "The register's name labels a question people ask; it is not a finding. These records do not show that any contract was exchanged for money, or that any contribution or lobbying influenced any award." PAC totals are company-wide, not tied to ICE or CBP work, and come from voluntary contributions, not company treasury or contract money; the FEC's own words are quoted. The absence of a PAC or LDA filing is a search result, not a fact about the company. A company outside the 100 largest parents is a scope statement, not an absence.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | Required case-insensitive company, parent or recipient name substring, at most 80 characters; searched among the 100 largest parents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, idempotent, openWorld). The description adds substantial behavioral context: results are capped at 5 parents, the three columns are never summed or sequential, PAC totals are company-wide and from voluntary contributions, absences are search results rather than facts, and the register's own interpretive disclaimer is quoted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, but the prose is a dense multi-clause run-on and repeats the 'never added / never a sequence' point three separate times. Much of the caveat text is decision-relevant, yet it could be tightened considerably without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the return structure (up to 5 parents, three side-by-side record types by component/fiscal year, cycle, and year) and what absence means. Given a single required parameter and read-only annotations, it is close to complete; only result-shape precision suffers from being conveyed in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the substring is matched against the company name, the USAspending parent, the reviewed alias note, and recipient names, and it is scoped to the 100 largest parents. That goes beyond the schema's 'case-insensitive company, parent or recipient name substring'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Look up an ICE or CBP contractor in the Pay-to-Play Register by company name substring', then lists exactly what matching covers and what comes back (up to 5 parents, three federal record columns). It clearly differs in content from pay_to_play_awards/committees/totals, but it never names those siblings or routes the agent to them, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'look up ... by company name substring' and by the scope caveat that a company outside the 100 largest parents is a scope statement. There is no explicit when-to-use/when-not statement and no named alternative among the four pay_to_play* siblings, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_to_play_totalsGet ICE and CBP Contract TotalsARead-onlyIdempotentInspect
ICE and CBP contract obligation totals from the Pay-to-Play Register, by component (ICE, CBP or both, default both) and fiscal year (2025, 2026, or both when fy is omitted): the funding view (contracts funded from the component's own appropriations, the headline measure) with the awarding view and the bridge between the two beside it, ICE and CBP combined in the funding view, and the share held by the 5, 10 and 25 largest parents. Also the P.L. 119-21 border wall system (Sec. 90001, CBP) by stage: appropriated, obligated and outlaid, each with its own as-of date; the two laws' lines by program activity, labelled where the program activity's name cites the law and shown as probable where only the account's availability window matches, never counted as the law's money; and the register's eight headlines with their basis and as-of dates. Appropriated, obligated and outlaid are separate stages and are never added. Contract obligations are orders placed and contracts signed, not outlays (money paid out). Every answer carries the register's question note and caption: the records are shown side by side and do not show that one caused another.
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | Optional federal fiscal year, 2025 or 2026 (FY2026 runs October 2025 to September 2026); both when omitted. | |
| component | No | ICE, CBP or both (default both). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description still adds substantive interpretive constraints: appropriated/obligated/outlaid are separate stages and are never summed, obligations are orders placed rather than outlays, 'probable' law lines are never counted as the law's money, and every answer carries a question note and caption warning against causal reading. That is genuine context beyond the annotations; it loses a point only because it never states result shape or size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and scoping defaults are front-loaded in the first clause, which is good. But the body is a long semicolon-chained run-on cataloguing data content, making it harder to parse than it needs to be; some of that catalog buys clarity only because no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return contract, and it does: it enumerates the funding/awarding/bridge views, the concentration shares, the P.L. 119-21 wall-system stages with their own as-of dates, the program-activity law lines, and the eight headlines. Combined with fully documented params, an agent has enough to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are enums with documented values, so the schema does the work. The description restates the same defaults (component default both, fy both when omitted) without adding format or interaction detail, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause names a specific resource (ICE and CBP contract obligation totals from the Pay-to-Play Register) and the two axes it aggregates over (component, fiscal year), so the agent knows exactly what comes back. It does not, however, name the sibling it is not (pay_to_play_awards or pay_to_play_contractor), so differentiation from the other pay_to_play tools must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Defaults are stated clearly (both when fy is omitted, both for component), which is real usage guidance. But there is no when-to-use / when-not guidance and no routing to the sibling award-level or contractor-level tools, so an agent must guess whether this or pay_to_play_awards is the right call for a given question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pfas_rule_impactCompare PFAS Rule ScenariosARead-onlyIdempotentInspect
Compares two rule scenarios in the MORVS PFAS Drinking-Water Register: 2024_as_published (EPA's six 2024 PFAS drinking-water limits, final and in force) and if_proposals_final (the PFOA and PFOS limits only, as they would stand if EPA's May 2026 proposals to rescind the PFHxS, PFNA, HFPO-DA and Hazard Index limits became final; they are proposals, not final rules). Returns each rule record with its status label, the number of systems and the ECHO population served with at least one UCMR 5 sampling-location average at or above a scenario limit's comparison cutoff (EPA Table 4 method), the PWSIDs whose only such averages are against limits proposed for rescission, the largest matching systems by population up to limit, the register's published figures for comparison and the method version, optionally filtered by state file, owner type and minimum population. These are technical comparisons of monitoring averages, not compliance results (not_compliance: true).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum systems listed, largest population first; default 25, max 100. Counts always cover every matching system. | |
| state | No | Optional two-letter state file code, e.g. SC, or TRIBAL; unfiltered counts equal the register's per-state figures. | |
| scenario | Yes | 2024_as_published (all six 2024 limits) or if_proposals_final (PFOA and PFOS only, as if the May 2026 proposals became final). | |
| owner_type | No | Optional ECHO owner type: F federal, L local government, M public/private, N tribal, P private, S state. | |
| min_population | No | Optional minimum ECHO population served, e.g. 10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, idempotent, closed-world read; the description goes further by disclosing the EPA Table 4 method, the method version, that counts cover every matching system while only `limit` systems are listed, and that outputs are not compliance determinations (not_compliance: true). It does not describe pagination or the exact record shape, but it adds genuine behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded correctly, but the remainder is a single dense sentence with nested parentheticals and a long comma-chained list of return contents. Every clause carries information, yet the structure makes it harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing returns, and it does so thoroughly: status label, system and population counts, PWSIDs flagged for rescission, largest systems by population, register-published figures, and method version. Combined with the scenario definitions and the not-compliance caveat, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including enum meanings and the default/max for `limit`. The description's phrase 'optionally filtered by state file, owner type and minimum population' restates the schema rather than adding syntax or interpretation, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (compares) and resource (two rule scenarios in the MORVS PFAS Drinking-Water Register) and defines each scenario's contents precisely. It is clearly a different operation from per-system siblings like pfas_system_lookup and pfas_system_history, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the scenario definitions and the caveat that results are monitoring comparisons rather than compliance results, but there is no explicit statement of when to choose this tool over pfas_system_history or pfas_system_lookup, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pfas_system_historyGet PFAS Register System RecordARead-onlyIdempotentInspect
Returns one public water system's full record in the MORVS PFAS Drinking-Water Register by PWSID: each sampling location (a hashed key) with its sample events, first and last dates and complete-set averages in ppt, per-chemical sample and detection counts with the highest single result, the Hazard Index, the six derived flags, the six 2024 rule records with each one's status history and whether this system's averages meet its comparison cutoff, the source file hashes and the register's caveats. Raw samples are not published. UCMR 5 results are entry-point monitoring, not compliance determinations or household tap results, and EPA's May 2026 rescission and deadline documents are proposals. A system whose name the register withholds is shown by PWSID and city.
| Name | Required | Description | Default |
|---|---|---|---|
| pwsid | Yes | EPA public water system ID, 9 characters, e.g. IA9778054. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, destructive=false, openWorld=false), so the bar is lower, and the description goes well beyond them: it discloses that raw samples are unpublished, that UCMR 5 results are entry-point monitoring rather than compliance determinations or tap results, that the May 2026 rescission documents are proposals, and that name-withheld systems are keyed by PWSID/city. These are real interpretation caveats, not restatements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then one long but dense enumeration of contents followed by the caveats. Nothing is redundant, though the second sentence is heavily loaded and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-shape burden — and it does, enumerating sampling locations, sample events, dates, complete-set averages in ppt, per-chemical counts, Hazard Index, the six flags, the six 2024 rule records with status history, file hashes, and caveats. An agent knows exactly what it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single pwsid parameter already documents the 9-character EPA ID with an example. The description only echoes 'by PWSID' with no added syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Returns one public water system's full record in the MORVS PFAS Drinking-Water Register by PWSID.' The word 'full' distinguishes it from the sibling pfas_system_lookup without needing to name it, and the enumerated contents make the deliverable unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'full record ... by PWSID' (reach for this when you want everything about one system rather than a search), but the description never states when to prefer it over pfas_system_lookup or pfas_rule_impact, nor any prerequisites. Adequate context, no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pfas_system_lookupFind PFAS Register Water SystemsARead-onlyIdempotentInspect
Looks up public water systems in the MORVS PFAS Drinking-Water Register, built from EPA's final UCMR 5 monitoring file, the ECHO SDWA system file and the Federal Register. Give exactly one of pwsid (one system), zip (every system that reported serving that ZIP code; a service-area hint, not a confirmed supplier) or state (one state file, or TRIBAL), optionally with name to filter a state's systems by system name or city. Each match carries the PWSID, display name, state, city, ECHO population served, owner type and its label, activity status, the six derived flags, the 2024 limits whose comparison cutoff at least one sampling-location average meets, and for ZIP queries the match scope; the answer carries source dates, the status of each limit named and the register's caveats. UCMR 5 results are entry-point monitoring samples compared with the 2024 limits by EPA's Table 4 method, not compliance determinations or household tap results, and EPA's May 2026 rescission and deadline documents are proposals. A system whose name the register withholds is shown by PWSID and city.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | Five-digit ZIP code, e.g. 51101; returns every system that reported serving it (a service-area hint, not a confirmed supplier). | |
| name | No | Text to find in system names or cities within state, e.g. Sioux City; case and punctuation ignored. Requires state. | |
| limit | No | Maximum systems for a state query, largest population first; default 25, max 100. ZIP queries list every candidate. | |
| pwsid | No | EPA public water system ID, 9 characters, e.g. IA9778054. Give exactly one of pwsid, zip or state. | |
| state | No | Two-letter state or territory code of a register state file, e.g. IA, or TRIBAL for EPA-implemented tribal systems. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial context beyond them: UCMR 5 entry-point samples are 'not compliance determinations or household tap results', the May 2026 rescission/deadline documents are only proposals, and systems with withheld names are shown by PWSID and city. This is exactly the caveat-level disclosure an agent needs for a regulatory dataset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, but the second sentence is a very long multi-clause run-on enumerating every returned field and every caveat. Given there is no output schema some return detail is warranted, but the density and lack of sentence breaks hurt scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so thoroughly — it lists the match fields (PWSID, name, state, city, population served, owner type/label, activity status, derived flags, 2024 limits, ZIP match scope) plus source dates, limit statuses, and register caveats. Nothing material for correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description largely restates what the schema already documents ('a service-area hint, not a confirmed supplier', 'one state file, or TRIBAL', name filters by system name or city), adding the mutual-exclusivity constraint and little else.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a concrete verb and resource ('Looks up public water systems in the MORVS PFAS Drinking-Water Register') and names the underlying data sources, so an agent knows exactly what is being queried. It does not explicitly distinguish itself from near siblings like pfas_system_history or pfas_rule_impact, which is the only gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the governing rule clearly: 'Give exactly one of pwsid (one system), zip (every system that reported serving that ZIP code) or state (one state file, or TRIBAL)', and explains that name only filters within a state. That is genuine when-to-use guidance for the parameter choices, though no alternative tool is named as a fallback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pharmacy_340b_clientsGet 340B Pharmacy ClientsARead-onlyIdempotentInspect
Reverse 340B lookup: given a contract-pharmacy ID, list every 340B covered entity that dispenses its discounted drugs through that pharmacy — reveals how concentrated the contract-pharmacy network is around big chains. Pharmacy IDs come from a covered entity's detail page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 100, max 500) | |
| pharmacy_id | Yes | Contract pharmacy ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile needs no description. The description adds directionality and ID provenance but says nothing about result volume, pagination behavior for the limit parameter, or the shape of the returned list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the reverse-lookup framing and the scope of the returned set. Every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description's statement of what gets returned (the list of covered entities) carries the burden and it does so adequately. For a two-parameter read tool with full annotations, this is nearly complete, with only result-volume behavior left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, setting a baseline of 3. The description goes beyond the schema by explaining where pharmacy_id values originate ('come from a covered entity's detail page'), which is genuinely useful caller guidance the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('list every 340B covered entity') with an explicit directionality qualifier ('Reverse 340B lookup'), which distinguishes it from the forward search_340b sibling without naming it. An agent can infer the direction difference, but the sibling is not called out by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('given a contract-pharmacy ID') and motivating context ('reveals how concentrated the contract-pharmacy network is'). It does not state when-not to use it or name search_340b as the forward alternative, so alternatives are only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_reader_decisionsFind Plate Reader DecisionsARead-onlyIdempotentInspect
Finds official city and county automated license plate reader matters in the MORVS License Plate Reader Register. Returns selected published decision fields with complete recorded action timelines, source links, vendors named in titles, and dollar figures exactly as printed. Filter by state, jurisdiction, vendor, recorded motion outcome, subject, decisive-action year or title substring query. Outcome means only the motion as recorded. An approval is an authorization, not proof of a signed contract or installed camera. A failed motion does not mean a contract ended. Amounts are printed figures, often ceilings, never money spent. No row means no qualifying action was found in the checked sources and period; it is not proof that no ALPR use exists.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Four-digit year of the decisive recorded action. | |
| limit | No | Maximum decisions returned; default 25, allowed 1-100. Amounts are printed figures, often ceilings, not money spent. | |
| query | No | Case-insensitive title substring, at most 80 characters. | |
| state | No | Optional two-letter USPS state code, e.g. TX. A state with no row means no qualifying action was found in sources checked. | |
| vendor | No | Exact vendor name from the register; a named vendor does not prove a signed contract or installed cameras. | |
| subject | No | Register subject code from the matter title; it describes the topic, not the outcome. | |
| disposition | No | Recorded motion outcome code. Approved means authorization; a motion that did not carry does not mean a contract ended. | |
| jurisdiction | No | Jurisdiction client slug or case-insensitive name substring; no row means no qualifying action was found in sources checked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description adds substantial semantic context on top: outcome means only the recorded motion, approval is authorization not a signed contract, amounts are printed ceilings not money spent, and an empty result is not proof of no ALPR use. This is exactly the interpretive context an agent needs to avoid misreading results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and then the filtering options and caveats. It runs long and some caveats (e.g. 'no row means no qualifying action') are repeated in the schema descriptions, but nearly every sentence conveys decision-relevant interpretation rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by enumerating the returned fields (action timelines, source links, vendors, dollar figures). Combined with the caveat semantics, an agent has enough to call this correctly and interpret its output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema for the tricky fields: it clarifies that disposition is 'only the motion as recorded' and that amounts are printed figures rather than actual spend. That lifts it above baseline, though most parameter semantics still live in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Finds official city and county automated license plate reader matters in the MORVS License Plate Reader Register.' An agent can tell this is a local-decision search, though it never explicitly names the close sibling plate_reader_state_law to draw the boundary between local decisions and state statutes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists the available filters (state, jurisdiction, vendor, outcome, subject, year, query) which implies usage, but never states when to prefer this over plate_reader_state_law or other siblings, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_reader_state_lawGet Plate Reader State LawARead-onlyIdempotentInspect
Returns the MORVS License Plate Reader Register's full state-law research record for one US state or DC, including official law citations and URLs, checked date, verification status, retention and sharing provisions, exceptions and search limitations. A "none_found" or unverified status describes the sources checked; it does not prove that no applicable law exists. Verify the current official text before relying on a provision.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | Required two-letter USPS state code. A none_found, not_verified card means not verified; it does not establish no law. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool is read-only, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds valuable interpretation context by warning that a none_found or unverified status reflects sources checked rather than proof that no law exists, and it advises verifying current official text before relying on a provision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loads the return scope before adding the necessary verification caveats. Every sentence adds useful information with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with rich annotations and complete schema coverage, the description is complete enough: it enumerates the returned record contents and explains the key limitation around none_found or unverified status. No output schema is present, and the description adequately covers what the agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage and an enum of two-letter USPS state codes, so the parameter is already well documented. The description reinforces that the tool covers one US state or DC but does not add format or selection details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns the MORVS License Plate Reader Register's full state-law research record for one US state or DC. It clearly identifies the scope and content, though it does not explicitly distinguish this tool from the related sibling plate_reader_decisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource scope: use this for a single state's plate-reader law research record. However, the description does not explicitly state when to use this tool versus alternatives such as plate_reader_decisions or other search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
police_grant_awardsFind DOJ Police Grant AwardsARead-onlyIdempotentInspect
Search the Police Grant Register's DOJ COPS award lists by fiscal year (FY2020 to the latest published, default latest), program, state and recipient name. Amounts are DOJ's announced awards, not outlays; the lists do not record scoring, so an award must never be attributed to a recipient's immigration posture. DOJ's Estimated Award Amount columns are labelled estimated. The FY2024 technology rows are held because that list does not reconcile; DOJ's printed total is identified as its figure only. JAG formula allocations, COPS awards and forfeiture payments are never added together. Reviewed DOJ-list and ICE 287(g) matches are labelled as such; forfeiture payments appear only side by side.
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | Fiscal year of DOJ announced award lists, from 2020 to the latest published; defaults to latest. | |
| limit | No | Maximum award rows returned, allowed 1-100. | |
| state | No | Optional two-letter recipient state or territory code. | |
| program | No | Optional program code from the published program list. | |
| recipient | No | Optional case-insensitive recipient name substring, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, and the description layers on substantive behavior beyond them: amounts are announced awards rather than outlays, estimated columns are labeled as estimates, FY2024 technology rows are held because the list does not reconcile, and reviewed DOJ/ICE 287(g) matches are labeled. That is exactly the kind of provenance and data-quality disclosure an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, which is good, but the body is a dense run of methodology and policy caveats; several sentences (scoring attribution, forfeiture side-by-side) inform downstream interpretation more than tool invocation and dilute the actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters, no output schema, and a read-only annotation profile, the definition supplies the return semantics an agent needs (announced vs estimated amounts, held FY2024 rows, label conventions). The gap is that the relationship to the sibling recipient-level tool is never stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including the FY range, two-letter state pattern, and program code source. The description's restatement that FY defaults to latest duplicates the schema rather than adding syntax or edge-case meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: search the Police Grant Register's DOJ COPS award lists, with the filterable dimensions (fiscal year, program, state, recipient) named. An agent can tell it apart from unrelated siblings, though the obvious neighbor police_grant_recipient is never referenced by name, so the differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one useful usage default (FY defaults to latest, range FY2020 to latest) but never says when to pick this over police_grant_recipient, sanctuary_doj_list, or forfeiture_payments. The remaining sentences are analytical caveats (don't attribute awards to immigration posture, don't sum JAG/COPS/forfeiture) rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
police_grant_recipientFind Police Grant RecipientsARead-onlyIdempotentInspect
Find institutional recipients by name substring in the Police Grant Register's DOJ COPS award lists from FY2020 to the latest published fiscal year. Returns each recipient's award rows by program and fiscal year, reviewed DOJ-list and ICE 287(g) match labels, and any DOJ equitable-sharing payments side by side. COPS, JAG formula allocations and forfeiture payments are never added. 'No COPS award appears in the published lists' never means an agency gets no federal money; absence covers only the published COPS lists. Award lists do not record application scoring or money paid out.
| Name | Required | Description | Default |
|---|---|---|---|
| recipient | Yes | Required case-insensitive recipient name substring, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, but the description adds substantial context beyond that: what rows are returned, which labels appear side by side, that COPS/JAG/forfeiture figures are never summed, and critical interpretation caveats about absence from published lists and lack of scoring/payout data. These are exactly the behavioral nuances an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and dataset scope, then layers in return contents and necessary caveats. It is somewhat dense and long, but nearly every sentence (non-additivity, absence interpretation, scoring/payout disclaimers) carries real information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description does a good job explaining what is returned and the limits of the data. It covers absent data and non-additive figures, though it could be slightly more explicit about result structure or pagination behavior for a list-returning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single 'recipient' parameter, including its case-insensitive substring semantics and 80-character limit. The description restates 'by name substring' but adds no new parameter-level meaning beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find), resource (institutional recipients), and precise dataset scope (Police Grant Register's DOJ COPS award lists, FY2020 to latest). It also distinguishes the content from related datasets by naming what is included (award rows, DOJ-list/ICE 287(g) labels, equitable-sharing payments) and what is not (COPS/JAG/forfeiture additions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via 'by name substring' and clarifies the scope of the COPS lists, but it does not explicitly say when to use this tool versus siblings such as police_grant_awards, sanctuary_doj_list, or forfeiture_payments. No exclusions or alternative-selection guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_exchangeGet Prediction Market ExchangeARead-onlyIdempotentInspect
Find a CFTC designated contract market (DCM) or pending application by exchange code or name substring in the MORVS Prediction Market Register. Returns CFTC-listed status/date and fixed-phrase remark flags, filing counts by listed year/category/status, stay and withdrawal counts, approval-pending and perpetual-futures counts, code-map evidence and open federal comment periods. Pending means only pending; a stay is a CFTC remark, not a finding. Filing counts measure filing practice, not markets, trading, users or odds. Dates are as listed by the CFTC and may be re-dated.
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Required DCM code or case-insensitive exchange name substring; a pending application is only pending. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by enumerating what actually comes back (status/date, remark flags, filing counts by year/category/status, stay and withdrawal counts, approval-pending and perpetual-futures counts, code-map evidence, open comment periods). It also sets interpretive guardrails — pending means only pending, a stay is a remark not a finding, counts measure filing practice not markets or odds, and dates may be re-dated — which materially affect how an agent should report results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource, and register, followed by a dense but purposeful return inventory and three interpretive caveats that each add real value. The middle enumeration is long and close to a run-on list, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single required parameter, no output schema, and annotations covering the safety profile, the description fills the remaining gap by describing the full return payload and the caveats needed to interpret it. An agent can call and correctly report on this tool without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter already documents code-or-case-insensitive-substring plus the pending semantics, so the description adds little beyond restating 'by exchange code or name substring'. Baseline 3 applies when the schema carries the parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Find), a specific resource (CFTC designated contract market or pending application), and the exact index it queries (MORVS Prediction Market Register), plus the matching keys. That scope cleanly separates it from the sibling prediction_market_filings, which deals with the underlying filings rather than the exchange entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the lookup scenario (resolve an exchange by code or name before inspecting its filings) and clarifies the pending-vs-stay distinction, but it never explicitly says when to use this tool instead of prediction_market_filings or the other register/search siblings. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_filingsFind Prediction Market FilingsARead-onlyIdempotentInspect
Search event-type CFTC product filings in the MORVS Prediction Market Register by exchange code/name, listed year, filing status, MORVS topic, CFTC stay remark or public title substring. The default year is the latest published listed-year shard. A Certified filing was self-certified by the exchange under CFTC rule 40.2; it was not approved by the CFTC. Approval Pending and Approved are a separate product-approval route. Filings are not markets, volume, users or odds. Dates are as listed by the CFTC and can be re-dated after a status change. Topics are MORVS classification. Titles that may name individuals are withheld and are never searched; use the CFTC ID link for the source record. A stay is not a finding of a violation.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional case-insensitive title substring, at most 80 characters; withheld titles are never searched. | |
| year | No | CFTC listed year; defaults to the latest published filings shard. Listed dates can re-date. | |
| limit | No | Maximum filing rows returned, allowed 1-100. | |
| topic | No | Optional MORVS event-topic classification. | |
| status | No | Optional published filing status. | |
| stayed | No | If supplied, filter filings by whether a CFTC stay is recorded; a stay is not a finding. | |
| exchange | No | Optional DCM code or case-insensitive exchange name substring. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world safety, so the description is freed to carry domain semantics — and it does: Certified means exchange self-certification, not CFTC approval; Approval Pending/Approved are a separate route; dates can be re-dated after status change; topics are MORVS classification; a stay is not a finding of a violation. This is substantial interpretive context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the search operation and filter surface, then caveats. Every sentence carries distinct information (no filler), but it is a dense, long block with several legalistic asides; the reader must parse clause-heavy sentences. Efficient but not maximally crisp.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema tool in a domain with real ambiguity (filing status vs approval route, stay vs violation), the description supplies the needed disambiguation and defaults. It stops short of describing the shape of returned rows or result ordering, but the essential call-correctness context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter's type and enum. The description adds meaning beyond that: default-year shard behavior, that title search never touches withheld titles, and that the stay flag is not a violation finding — clarifying the semantics of the Boolean filter rather than just restating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search event-type CFTC product filings in the MORVS Prediction Market Register') plus the exact filter dimensions (exchange, year, status, topic, stay remark, title substring). It also actively disambiguates from adjacent data — 'Filings are not markets, volume, users or odds' — so an agent knows this is not the prediction_market_exchange sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: default year is the latest published listed-year shard, withheld titles are 'never searched' and the agent should 'use the CFTC ID link for the source record.' It does not, however, explicitly name a sibling (e.g., prediction_market_exchange) and state when to prefer it, so the alternative-naming component of a 5 is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolveResolve Company IdentityARead-onlyIdempotentInspect
Entity locator: resolve a company name/ticker/CIK to its canonical SEC identity + aliases, and an available_in map of which federal datasets contain it (with links). Use first to find an entity and discover where it has data.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Entity name (>=3 chars) | |
| cik | No | 10-digit SEC CIK | |
| ticker | No | Stock ticker |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds real behavioral value by disclosing the return shape (canonical identity, aliases, and an availability map with links), which matters because no output schema exists. It omits auth requirements, rate limits, and no-match behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the entity-locator role and followed by the output inventory. Every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param, zero-required lookup with no output schema, the description is nearly sufficient: it explains the resolution behavior and what comes back. The one notable gap is that the schema marks nothing required, and the description only loosely implies that a name, ticker, or CIK must be supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of q/cik/ticker is documented in the schema itself. The description restates that any of the three identifier forms can be used but adds no format, precedence, or mutual-exclusion detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('resolve a company name/ticker/CIK to its canonical SEC identity + aliases') and names the concrete outputs (aliases and an available_in map with links). This is clearly distinguishable from siblings like company_profile or dossiers, which the description implies happen after the entity is found.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use first to find an entity and discover where it has data' gives an explicit ordering cue relative to the rest of the toolset. It does not name a specific alternative or an exclusion, so it falls short of a full when/when-not/routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_checkSearch Partial OFAC IndexARead-onlyIdempotentInspect
Search MORVS's partial local OFAC SDN index by case-insensitive substring, including indexed aliases. Returns hit=true for a local match. A non-match is not sanctions clearance; check /coverage and OFAC's current official lists.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity or individual name to screen (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the coverage caveat and the meaning of the return value ('hit=true for a local match'). The false-negative warning is high-value disclosure. It stops short of describing the full response shape or how multiple alias matches are represented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the scope constraint front-loaded and the critical caveat attached directly to the return-value claim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter screening call with no output schema, the description supplies the essential context: data source, matching behavior, hit semantics, and the coverage limitation. It only marginally under-specifies the response beyond hit=true, which is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above baseline by specifying case-insensitivity, substring (not exact) matching, and that indexed aliases are searched — semantics the schema's one-line description does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) against a precisely bounded resource (MORVS's partial local OFAC SDN index), including match semantics (case-insensitive substring, indexed aliases). The qualifiers 'partial' and 'local' implicitly separate it from broader screening siblings such as screen_all, screen_batch, watchlist and debarments_check, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the negative case: 'A non-match is not sanctions clearance', and directs the agent to /coverage and OFAC's current official lists for verification. That is clear when-to-trust and when-to-escalate guidance, though it never names an alternative sibling tool for broader coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctuary_doj_listFind DOJ Sanctuary List EntriesARead-onlyIdempotentInspect
Search DOJ’s current list page or its August 2025 announcement by name; defaults to the current page. “Sanctuary jurisdictions” is DOJ’s label, not a finding by MORVS. The two DOJ pages differ; removed entries carry DOJ’s linked release and stated reason. A county-level 287(g) agreement and a state-level designation can both be true; no conclusion is drawn from the two records. A non-match says only that a name was not found on the selected DOJ page; DOJ says its list is not exhaustive.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional case-insensitive jurisdiction name substring, at most 80 characters. | |
| version | No | DOJ list version: current list page (default) or original announcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description adds critical interpretive context: the label is DOJ's not MORVS's, the two pages differ, removed entries include a linked release and reason, county 287(g) and state designations can coexist, and non-matches do not mean nonexistence. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the caveats are substantive rather than filler. However, the description is somewhat long and could be tightened by merging related interpretive notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-parameter search tool with full schema coverage and strong annotations, the description covers all the caveats an agent needs to interpret results correctly. The absence of an output schema is offset by the explanation of what entries and non-matches mean.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines both parameters, including the enum and substring behavior. The description reinforces the default version but adds no new syntax or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Search') and resource ('DOJ’s current list page or its August 2025 announcement') and names the two variants. It does not explicitly differentiate from sibling tools such as sanctuary_state_reports, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the two versions and the default, which implies when to use each, but gives no explicit when-not-to-use guidance or alternatives to sibling tools. Usage is therefore implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctuary_state_reportsFind State Immigration ReportsARead-onlyIdempotentInspect
Search published California Values Act transfer counts, Illinois Way Forward Act detainer, warrant, transfer and request reports, or Oregon Sanctuary Promise Act requests and communications. These are agency self-reports. State measures differ and are never added or ranked across states. State is required; agency name, year and result limit are optional. Oregon’s year is the end year of its June–May reporting period. Illinois agency rows are available for 2024; 2023 has statewide figures and a separate non-filer list, not agency appendix rows. A zero is a reported zero, a null is absent from an appendix. “No transfers reported” and “did not file” do not mean “no cooperation”. Never say an agency “violated” a law or acted “illegal” based on these records.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Optional report year; Oregon labels its June-to-May period by the ending year. | |
| limit | No | Maximum matching agency rows, allowed 1-50. | |
| state | Yes | Required state report: CA, IL or OR. Measures differ and are never added across states. | |
| agency | No | Optional case-insensitive agency or public-body name substring, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds critical interpretive constraints: zero versus null, “no transfers reported” versus “did not file,” and the warning not to infer cooperation or legal violation from the records. These are exactly the behavioral and semantic caveats an agent needs to avoid misusing the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded and every sentence carries substantive information: scope, required parameters, state-specific year semantics, Illinois row availability, zero/null interpretation, and legal-language warnings. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and the complexity of comparing non-comparable state self-reports, the description supplies enough scope, parameter meaning, data availability caveats, and interpretive warnings for an agent to use the tool responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds useful parameter context: state is mandatory, the other fields are optional, Oregon year refers to the end of a June–May period, and Illinois agency rows are only available for 2024. That goes beyond merely restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, “Search,” and names exactly what is searched: California Values Act transfer counts, Illinois Way Forward Act reports, and Oregon Sanctuary Promise Act requests/communications. It also clarifies that these are state agency self-reports with non-comparable measures, which meaningfully distinguishes this tool from broader immigration or DOJ-list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states that state is required and that agency, year, and limit are optional, giving the agent enough guidance to invoke the tool correctly. However, it does not explicitly name alternatives or when-not-to-use cases, such as how this differs from sanctuary_doj_list or other immigration-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_allResearch Indexed Risk SignalsARead-onlyIdempotentInspect
Experimental lookup of one name across MORVS's local public-record indexes; availability is not guaranteed. Returns per-dataset match counts and an indicative 0-100 score (risk_score) summarizing how many indexed records matched. The score is not a risk rating or compliance determination, and a low score or non-match is not clearance. Coverage and freshness vary by dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity or individual name to screen (substring) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds genuinely useful context: experimental status, variable coverage/freshness by dataset, and the critical warning that risk_score is not a compliance determination and a non-match is not clearance. Rate limits and latency behavior are unmentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with purpose and caveat, with no filler. Every clause carries information, though the disclaimer sentence is long enough to slightly dilute the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the return shape (per-dataset match counts plus an indicative 0-100 risk_score) and its interpretive limits. Combined with the full schema coverage, an agent has enough to call and interpret the tool, though return structure detail (dataset names, ordering) is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100% — the schema already documents that 'name' is a substring match. The description adds the useful scope detail that it takes exactly one name (implying batch names belong elsewhere), but nothing about matching semantics beyond that. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'lookup of one name across MORVS's local public-record indexes,' and clarifies single-name scope. It does not, however, distinguish itself from close siblings like screen_batch, sanctions_check, watchlist, or debarments_check, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are offered. 'Experimental' and 'availability is not guaranteed' are caveats about reliability, not conditions for selecting this tool over screen_batch (batch names) or the more specific check tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_batchResearch Batch Risk SignalsARead-onlyIdempotentInspect
Screen up to 50 entities in one call. Returns a per-entity risk_score + risk_level + per-vertical summary for each, plus the list sorted highest-risk-first. Use to vet a whole vendor / counterparty / portfolio list at once.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Up to 50 entity names to screen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond them: the returned fields (risk_score, risk_level, per-vertical summary) and the highest-risk-first sort order, which matters because there is no output schema. It does not mention auth, rate limits, or how unresolvable names are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads the cap and the return shape, the second gives the use case. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully discloses the return structure and ordering, and the single input parameter is fully covered by the schema. Minor gaps remain around failure modes for unmatched entities and how results relate to the per-entity single-lookup siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter, so the schema fully documents the input. The description's 'up to 50 entities' merely restates the maxItems constraint already in the schema, adding no new semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (screen) and resource (entities) with the batch scope made explicit ('up to 50 entities in one call'). It never differentiates itself from the very close sibling screen_all, leaving the agent to infer which is which.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete usage context ('vet a whole vendor / counterparty / portfolio list at once'), which tells the agent this is for bulk list screening rather than single lookups. It stops short of naming an alternative or stating when-not to use it (e.g., vs. screen_all or sanctions_check).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch Indexed DocumentsBRead-onlyIdempotentInspect
Full-text search across all parsed SEC/FDA/register/weather section bodies (BM25 ranking). Also resolves company names for ticker lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query (e.g. 'director departure', 'restatement', 'tornado warning') | |
| limit | No | Maximum matching document sections to return; default 25, max 200. | |
| topic | No | Filter to one topic (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context—BM25 ranking and the multi-topic corpus scope—but says nothing about result pagination, output format, or what 'resolves company names' entails operationally. This is adequate additional context, not rich disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler, and the core search capability is front-loaded. The second sentence about ticker lookup is somewhat tacked on but still brief. It could be marginally tightened, but it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with full schema coverage and strong annotations, the description covers the core operation adequately. However, it omits any routing guidance against the numerous specialized search siblings and leaves the dual 'resolves company names' capability unexplained, which an agent might need in order to choose this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (q, limit, topic) are fully documented in the schema itself. The description adds no syntax, format, or constraint details beyond what the schema provides. Baseline 3 is appropriate when the schema carries the full parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Full-text search across all parsed SEC/FDA/register/weather section bodies (BM25 ranking).' It distinguishes itself from vertical-specific siblings by covering all parsed section bodies. The secondary sentence about resolving company names adds a bit of scope blur, but the core purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to choose this generic search over the many specialized search tools (e.g., adviser_search, ag_census_county_search). It implies usage through the corpus description but provides no alternatives, exclusions, or prerequisites. The 'also resolves company names' clause is a capability hint, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_340bSearch 340B Covered EntitiesARead-onlyIdempotentInspect
Search HRSA 340B Drug Pricing Program covered entities (disproportionate-share hospitals, FQHCs, clinics buying federally-discounted outpatient drugs) by name. Returns 340B ID, entity type, state, participating status, and contract-pharmacy count. ~93k entities.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Covered-entity name (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that with the return field list (340B ID, entity type, state, participating status, contract-pharmacy count) and the dataset scale (~93k entities), which tells the agent what a hit looks like and how selective a name query must be. It still omits pagination/truncation behavior for large result sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the first states the resource, its subtypes, and the query key; the second states what comes back. Nothing repeats the schema or pads the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by enumerating returned fields and the corpus size, which is enough for an agent to plan a call. It is slightly short on what happens when a search is too broad (pagination/truncation) and on how this differs from pharmacy_340b_clients, so it is not fully complete for a search tool in a crowded sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: q (name, >=2 chars) and limit (default 25, max 100) are both fully documented in the schema. The description only echoes the name-search intent and adds nothing about minimum length, defaults, or caps, so this sits at the baseline for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Search) plus a precisely defined resource (HRSA 340B covered entities) with the entity subtypes spelled out in parentheses (disproportionate-share hospitals, FQHCs, clinics). It also states the searchable key (name) and the full return field set, so the agent can distinguish it from generic tools like 'search' without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by name' implicitly scopes usage to name lookups, but there is no explicit when-to-use/when-not guidance and no reference to adjacent tools such as pharmacy_340b_clients or the generic 'search'. An agent can infer the use case but is given no routing help among the many sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
self_driving_companyGet Self-Driving Company ReportsARead-onlyIdempotentInspect
Find reporting companies in the MORVS Self-Driving Crash Register by published name or slug. Returns separate ADS and ADAS company profiles, report and incident counts, severity, location, confidentiality index, investigations, recalls and California DMV permits. share_of_kind is a share of reports, not a crash rate. A DMV permit holder may be a different legal entity; the register notes that difference. Reports are each company’s own filings with NHTSA, not a finding, and say nothing about responsibility. The highest injury severity alleged says nothing about responsibility. ADS and Level 2 ADAS have different reporting requirements, are kept separate and are never added together; OTHER is never a crash count. Reports and crashes are different counts. Counts reflect fleet size and reporting rules; they are not rates, are never normalised by miles or fleet size, and are never a safety ranking. The third amended order changed reporting from June 16, 2025, so counts across that break are not directly comparable. A narrative marked as confidential business information is a claim, not an NHTSA decision. No people or narrative text are returned. NHTSA’s caveats are included verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | Required case-insensitive company name or slug substring, at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering readOnly/idempotent/non-destructive, the description goes well beyond them: it discloses what counts mean (share_of_kind is a share of reports, not a crash rate), that ADS/ADAS reporting regimes are never combined, that a DMV permit holder may be a different legal entity, that counts break at the June 16, 2025 amended order, and that confidential narratives are claims not determinations. It also states the return boundary (no people or narrative text) and that NHTSA caveats are echoed verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, which is good, but the caveat block is a dense run-on that repeats the same ideas ('say nothing about responsibility' twice, 'not rates' and 'never normalised' restated). The warnings are genuinely useful but could be compressed or bulleted without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates well by enumerating the returned fields (ADS/ADAS profiles, report and incident counts, severity, location, confidentiality index, investigations, recalls, permits) plus interpretive caveats. It is silent on multi-match behaviour, result limits, and empty-result handling, which matter given substring matching on an 80-character input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema, so the baseline is 3, but the description adds real semantics: matching is against the 'published name' and that a DMV permit holder may be a different legal entity from the registered filer, which matters for interpreting a match. It does not say whether matching is a substring search returning multiple companies or how many results come back.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Find reporting companies in the MORVS Self-Driving Crash Register by published name or slug', and adds that it returns company-level profiles (ADS/ADAS, counts, permits) rather than individual reports. This implicitly separates it from the sibling self_driving_reports tool, but never names that sibling or explicitly says what this tool is not, leaving the differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description says 'No people or narrative text are returned', which hints that narrative/report-level lookups belong elsewhere, and the input restriction to a name or slug signals entity-level lookup. There is no explicit when-to-use, when-not, or named alternative (e.g. self_driving_reports), so an agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
self_driving_reportsFind Self-Driving Crash ReportsARead-onlyIdempotentInspect
Search NHTSA Standing General Order crash-report rows in the MORVS Self-Driving Crash Register. Requires ADS or Level 2 ADAS and can filter by company, state, alleged injury severity, crash month and the year NHTSA first received the report. Returns latest report versions with NHTSA CSV citations, not narrative text. No report has its own NHTSA web page. OTHER filings are never returned as crashes. Reports are each company’s own filings with NHTSA, not a finding, and say nothing about responsibility. The highest injury severity alleged says nothing about responsibility. ADS and Level 2 ADAS have different reporting requirements, are kept separate and are never added together; OTHER is never a crash count. Reports and crashes are different counts. Counts reflect fleet size and reporting rules; they are not rates, are never normalised by miles or fleet size, and are never a safety ranking. The third amended order changed reporting from June 16, 2025, so counts across that break are not directly comparable. A narrative marked as confidential business information is a claim, not an NHTSA decision. No people or narrative text are returned. NHTSA’s caveats are included verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Required report kind: ADS or ADAS. These kinds are never added together. | |
| limit | No | Maximum crash report rows returned, allowed 1-100. | |
| state | No | Optional two-letter crash state code. | |
| company | No | Optional case-insensitive company name or slug substring. | |
| severity | No | Optional published severity code. It describes the highest injury severity alleged, not responsibility. | |
| crash_month | No | Optional crash month in YYYY-MM format. | |
| year_received | No | Year NHTSA received the report (2021 or later, a year the register carries); defaults to the latest published year. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it a safe read-only, idempotent operation, and the description goes well beyond that: it discloses that only latest report versions come back with CSV citations and no narrative text, that no report has its own NHTSA web page, that caveats are returned verbatim, that counts are not rates or rankings, and that the June 16, 2025 amended order breaks comparability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a dense wall of caveats with visible redundancy — 'say nothing about responsibility' and 'the highest injury severity alleged says nothing about responsibility' cover the same ground, and the non-comparability point is echoed in two places. Several sentences could be merged without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden for return values and does so: latest versions, CSV citations, no narrative, no people, verbatim NHTSA caveats. Combined with full schema coverage and read-only annotations, an agent has enough to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented, including the ADS/ADAS separation and the 'alleged severity, not responsibility' caveat for severity. The description mostly restates those constraints rather than adding new syntax or semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Search NHTSA Standing General Order crash-report rows in the MORVS Self-Driving Crash Register.' It also sharply delimits scope ('OTHER filings are never returned as crashes'), which separates it from sibling tools like self_driving_company or nhtsa_recent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the hard precondition (requires ADS or Level 2 ADAS) and enumerates the available filter dimensions, so an agent knows when this tool is the right one. It never names an alternative tool or an explicit 'do not use this for X, use Y' condition, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_interest_searchSearch Short InterestARead-onlyIdempotentInspect
Look up a ticker's FINRA short interest: shares sold short, days-to-cover, change vs prior settlement. The real short metric (distinct from short volume which includes market-maker hedging). Pairs with fails-to-deliver + short volume. FINRA source terms: https://www.finra.org/terms-of-use.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Ticker or issuer name | |
| limit | No | Max results (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: it names the upstream source (FINRA) and the specific data fields returned, which matters because there is no output schema. It omits settlement-frequency or freshness caveats, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core purpose and the returned metrics, then the disambiguation. The FINRA terms-of-use URL is defensible as an attribution/licensing note but sits awkwardly at the end and slightly dilutes the technical content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the returned metrics and the data source, and it situates the tool among the short-related siblings. Nothing essential to calling it correctly is missing, though freshness/settlement timing isn't addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (q, limit) are fully documented in the schema itself. The description's only parameter-relevant signal is that q accepts a ticker, adding nothing about accepted name formats or how limit interacts with settlement periods. Baseline 3 applies when the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Look up a ticker's FINRA short interest') and enumerates the exact metrics returned: shares sold short, days-to-cover, change vs prior settlement. It explicitly separates itself from the sibling short_volume_search by naming the distinction, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts this tool with short volume ('the real short metric ... distinct from short volume which includes market-maker hedging') and suggests pairing with fails-to-deliver + short volume. That is strong disambiguation, but it stops short of stating conditions like when to prefer short_interest_squeeze or short_squeeze_candidates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_interest_squeezeRank Short InterestARead-onlyIdempotentInspect
FINRA equity short interest: securities with the highest days-to-cover (the classic short-squeeze indicator) + the largest absolute short positions, from the latest bi-monthly settlement. TRUE short interest (not short volume). Use to find squeeze candidates and the most-shorted stocks. FINRA source terms: https://www.finra.org/terms-of-use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds real value beyond them: the FINRA data source, the bi-monthly settlement cadence (freshness), and the true-short-interest vs short-volume distinction. It does not disclose rate limits or output shape, but the source/cadence disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition and the ranking criteria are front-loaded, and every sentence carries content. The trailing FINRA terms-of-use URL is compliance boilerplate that consumes space without helping an agent decide or invoke, keeping it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only, no-output-schema tool, the description covers what data is returned, from where, and how often it refreshes. The one gap is that it does not say how many securities are ranked or how the two rankings are combined, which the agent would otherwise have to discover empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond confirming this is a parameterless snapshot query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific dataset (FINRA equity short interest), the two ranking dimensions (days-to-cover and largest absolute short positions), and the settlement vintage. It also distinguishes itself from the short-volume family with 'TRUE short interest (not short volume)'. However, it never disambiguates against the sibling short_squeeze_candidates, which appears to cover the same use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to find squeeze candidates and the most-shorted stocks' gives positive usage context, but there are no when-not conditions and no routing to the obvious alternatives (short_squeeze_candidates, short_interest_search, short_volume_most_shorted). The agent must infer which of the four short-interest tools to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_squeeze_candidatesRank Short Squeeze PressureBRead-onlyIdempotentInspect
Top short-squeeze candidates by a MORVS (AI Analytics LLC) 0-100 pressure score combining FINRA days-to-cover + short-sale volume % + SEC fails-to-deliver per symbol. The methodology is separate from and does not relicense FINRA inputs. Transparent heuristic, not investment advice. FINRA source terms: https://www.finra.org/terms-of-use. Optional min_score filter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 200) | |
| min_score | No | Minimum composite score 0-100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the data provenance (FINRA/SEC), the composite methodology, and a licensing/advice disclaimer. It does not disclose data freshness, pagination, or coverage limits, so it adds moderate value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is well front-loaded and dense with defined terms, but roughly half the text is compliance boilerplate (relicensing, 'not investment advice', FINRA terms URL). Some disclaimers are legitimate, yet they dilute the signal an agent needs for tool selection. Efficient opening, cluttered tail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a ranking/screening tool with no output schema, the description explains the score construction and the min_score filter, which is useful. However, it omits what a returned record contains and any indication of data freshness or result ordering, so an agent cannot anticipate the response shape. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and min_score are already documented with defaults and bounds in the schema. The description merely restates 'Optional min_score filter' and adds no syntax or semantics beyond that. Baseline 3 is correct when the schema carries parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific output (ranked short-squeeze candidates) and defines the composite signal precisely — FINRA days-to-cover + short-sale volume % + SEC fails-to-deliver per symbol. This composite framing distinguishes it from sibling single-source tools like short_interest_squeeze or fails_to_deliver_top, though it never names those competitors explicitly. A clear verb+resource with only implicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and never names an alternative, despite dense sibling overlap (short_interest_squeeze, short_volume_most_shorted, upcoming_sales_pressure). The only usage-adjacent line, 'Optional min_score filter,' is a parameter note rather than routing guidance. An agent must infer the relationship to neighboring tools on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_volume_most_shortedRank Short Sale VolumeARead-onlyIdempotentInspect
FINRA short-sale volume: the most-shorted liquid stocks by average short % of volume (rolling ~60 trading days), plus dataset summary. Pairs with fails-to-deliver for the short-selling picture. Caveat: FINRA short volume includes market-maker hedging, not short interest. FINRA source terms: https://www.finra.org/terms-of-use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description is not needed for that. It earns credit by adding genuine domain context an agent cannot infer from structured fields: the metric reflects market-maker hedging rather than short interest, and the window is a rolling ~60 trading days. It still omits any statement about output volume or ties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the resource and metric come first, the interpretive caveat and the licensing link trail behind. Every clause carries information, though the FINRA terms URL is a marginal addition for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with no output schema, the description is adequate: it names the ranking, the window, the companion dataset, and the key interpretive limitation. It stops short of describing result size or ordering guarantees, but nothing needed to invoke it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is trivially empty, so there is nothing for the description to document. Baseline for a no-parameter tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation (rank the most-shorted liquid stocks), the ranking metric (average short % of volume), and the scope (rolling ~60 trading days), which is far more than the title conveys. It partially disambiguates from the short_interest_* siblings by noting short volume is 'not short interest,' but it never explicitly separates itself from short_volume_search or short_squeeze_candidates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'Pairs with fails-to-deliver for the short-selling picture' points at a companion tool, and the caveat warns the metric isn't short interest. There is no explicit when-to-use vs when-not guidance, nor any routing to the several closely-named sibling tools (short_volume_search, short_squeeze_candidates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_volume_searchSearch Short Sale VolumeARead-onlyIdempotentInspect
Look up a ticker's FINRA short-sale volume: average / latest / peak short % of consolidated volume over the rolling ~60-trading-day window. FINRA source terms: https://www.finra.org/terms-of-use.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Ticker symbol | |
| limit | No | Max results (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, closed-world), so the description's job is to add context — and it does: the ~60-trading-day rolling window, the specific metrics computed, and a FINRA terms-of-use attribution link. It stops short of noting any rate limits or result ordering, so it is not fully rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads what the tool returns and the aggregation window, the second is a short source-attribution note. No filler, no restatement of the tool name, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully names the returned metrics and the window they are computed over. For a two-parameter, fully annotated read-only lookup this covers nearly everything; only result ordering and pagination behavior with respect to 'limit' remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters ("Ticker symbol", "Max results (default 25)"), so the schema carries the semantic load. The description mentions the ticker indirectly but adds no format, syntax, or default details beyond what the schema already provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Look up a ticker's FINRA short-sale volume") and even enumerates the metrics returned (average / latest / peak short % of consolidated volume) over a defined ~60-trading-day window. However, it never differentiates itself from close siblings such as short_volume_most_shorted or short_interest_search, so an agent must infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The per-ticker framing implies a lookup use case, but with several short-related siblings (short_volume_most_shorted, short_interest_search, short_interest_squeeze) nothing tells the agent which one to pick. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
super_pac_donors_donorFind Organisation Super PAC DonorsARead-onlyIdempotentInspect
Look up an organisation that gave to super PACs or hybrid PACs in the Super PAC Donors Register by name substring, matched against the reviewed name, every name as filed and the reviewed company family, optionally for one FEC cycle (2026 for 2025-26, or 2024 for 2023-24; both when omitted, never added across cycles). Returns up to 5 named organisations, each with its reviewed class and status, its company family and sector, and the parent or group record from an SEC filing where the register cites one; and by cycle, its contributions by recipient super PAC as the FEC lists it, with the committee id, refunds kept apart and never netted, dates as filed and the FEC bulk file date. Beside them, never added or put in sequence: for the company families in the register's side-by-side table, the connected PAC's contributions to federal candidates' committees with its all-committees summary line (FEC), contract obligations by fiscal year (USAspending) and LDA filing counts; the organisation's net donation to the 2025 inaugural committee where it is on both records (Form 13); and ICE and CBP contract obligations for Pay-to-Play Register contractors. An empty column is a search result, not a fact about the organisation. The word nonprofit appears only on a record an exact IRS Exempt Organizations match carries, shown with that record; other issue and social-welfare groups read organisation (status not matched). Super PACs and hybrid PACs are named exactly as the FEC committee master lists them, with their committee ids and no party or candidate label; a contribution to a super PAC is not a contribution to a candidate. Every answer carries the register's question note: these records show contributions reported to the FEC; they do not show what any donor received or intended, and they do not show cause and effect. Individual donors are counted, never named; withheld strings (trusts, holding vehicles, businesses named for a person, names resting on initials, unmatched committees) and unreviewed strings appear only as counts and amounts. A name that matches only a withheld or unreviewed string answers exactly like a name that matches nothing. Every answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)) and the FEC bulk file date; the bulk file lags the committees' latest reports.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required case-insensitive organisation or company family name substring, at most 80 characters; named donors only. | |
| cycle | No | Optional FEC cycle: 2026 (2025-26) or 2024 (2023-24); both when omitted, never added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the read-only annotations: it explains the five-result cap, cycle handling, how refunds are kept apart, how withheld strings are surfaced only as counts, and the legal restriction quoted in every answer. These are substantive behavioral details an agent would not get from annotations or schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is a dense, paragraph-length run-on with repeated 'never added' framing and legal boilerplate. Much of the content is useful, yet it would benefit from tighter phrasing and clearer separation of matching rules, output shape, and caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex lookup tool with no output schema and only basic annotations, the description supplies the missing context: return shape, matching behavior, cycle scope, withheld-string handling, data freshness caveats, and legal notice requirements. An agent has enough to call it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds useful meaning: the name substring is matched against reviewed names, names as filed, and the reviewed company family. It also clarifies that cycles are not added together, which reinforces the schema's optional cycle semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: looking up an organisation that gave to super PACs or hybrid PACs by name substring. It implicitly separates donor-side lookup from the recipient and summary siblings, but it never explicitly names those alternatives, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: name substring matching and an optional FEC cycle, with important matching caveats about withheld and unreviewed strings. It does not explicitly say when to use this versus super_pac_donors_recipient or super_pac_donors_summary, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
super_pac_donors_recipientFind Super PAC Recipient CommitteesARead-onlyIdempotentInspect
Look up a super PAC or hybrid PAC in the Super PAC Donors Register by committee name substring, as the FEC committee master lists it, or by its committee id (C followed by 8 digits). Returns up to 5 committees, each for the 2025-26 and 2023-24 cycles with its name, id and committee type as the FEC lists them, and three measures, each labelled and never combined into one figure: organisation contributions by reviewed class (issue and social-welfare groups split by IRS match; withheld and unreviewed money as amounts only), contributions from committees, and itemized contributions from individuals, counted only; conduit pass-through rows (ActBlue, WinRed) are shown apart under their own label and are excluded from every total. Each cycle lists the largest named organisation donors to that committee and the committee's own FEC summary line. Super PACs and hybrid PACs are named exactly as the FEC committee master lists them, with their committee ids and no party or candidate label; a contribution to a super PAC is not a contribution to a candidate. Organisation, committee and individual money into super PACs are three measures, each labelled and never combined into one figure. Organisation money is not corporate money: every total states its class. The word nonprofit appears only on a record an exact IRS Exempt Organizations match carries, shown with that record; other issue and social-welfare groups read organisation (status not matched). Every answer carries the register's question note: these records show contributions reported to the FEC; they do not show what any donor received or intended, and they do not show cause and effect. Individual donors are counted, never named; withheld strings (trusts, holding vehicles, businesses named for a person, names resting on initials, unmatched committees) and unreviewed strings appear only as counts and amounts. Every answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)) and the FEC bulk file date; the bulk file lags the committees' latest reports.
| Name | Required | Description | Default |
|---|---|---|---|
| committee | Yes | Required case-insensitive committee name substring as the FEC lists it, or a committee id (C and 8 digits); at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior, and the description adds substantial context beyond that: up to five results, two cycles, separate conduit rows, individual donors being counted but never named, the FEC legal restriction, and bulk-file lag. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is extremely long for a one-parameter lookup and repeats key caveats, especially that the three measures are each labelled and never combined. Several sentences could be compressed or removed without losing needed meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain the return shape, and it does so thoroughly: up to five committees, cycle-specific data, measures, donor rows, FEC summary line, legal note, and bulk-file timing. It is complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single committee parameter has 100% schema coverage with the same substring-or-id guidance already present in the schema. The description reinforces that names are as the FEC lists them and ids are C plus eight digits, but adds little semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (look up) and resource (super PAC or hybrid PAC committees in the Super PAC Donors Register), plus the two lookup modes: committee name substring or committee id. It does not explicitly distinguish itself from sibling donor/summary tools, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for finding committees by name substring or committee id, but it never states when to choose it over super_pac_donors_donor or super_pac_donors_summary, nor does it give exclusions or preconditions. Usage is inferable from the name and description but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
super_pac_donors_summaryGet Super PAC Organisation Donor TotalsARead-onlyIdempotentInspect
Totals from the Super PAC Donors Register, built from the FEC's bulk files: organisation contributions to super PACs and hybrid PACs for the 2025-26 and 2023-24 cycles, with rows, names as filed, named donors, the reviewed share and each FEC bulk file's date, and the change over the same date window in both cycles; organisation money by reviewed class, with issue and social-welfare groups split between those an exact IRS Exempt Organizations record matches and those whose status was not matched, beside companies, unions, trade associations, committees, tribal governments and other organisations; withheld and unreviewed strings as counts and amounts only; itemized contributions from individuals reported directly to these committees, counted only, beside organisation money on that exact basis, with conduit pass-through rows (ActBlue, WinRed) shown apart and excluded from every total; sectors and the largest recipient committees as the register lists them; the lag line; and the register's headlines with their basis. Organisation, committee and individual money into super PACs are three measures, each labelled and never combined into one figure. Organisation money is not corporate money: every total states its class. Super PACs and hybrid PACs are named exactly as the FEC committee master lists them, with their committee ids and no party or candidate label; a contribution to a super PAC is not a contribution to a candidate. The word nonprofit appears only on a record an exact IRS Exempt Organizations match carries, shown with that record; other issue and social-welfare groups read organisation (status not matched). Every answer carries the register's question note: these records show contributions reported to the FEC; they do not show what any donor received or intended, and they do not show cause and effect. Individual donors are counted, never named; withheld strings (trusts, holding vehicles, businesses named for a person, names resting on initials, unmatched committees) and unreviewed strings appear only as counts and amounts. Every answer quotes the FEC's restriction on the sale or use of individual contributor information (52 U.S.C. 30111(a)(4)) and the FEC bulk file date; the bulk file lags the committees' latest reports.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, non-destructive, and open-world, but the description adds substantial behavioral context beyond that: FEC bulk-file lag, withheld and unreviewed strings shown only as counts, individual donors never named, conduit pass-through rows excluded from totals, and required legal and basis notes on every answer. These disclosures materially help an agent understand the data's limitations and interpretation rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely long and dense, with multiple semicolon-chained clauses and repeated caveats about individual counts, withheld strings, organisation class, and naming. The opening sentence does front-load the core purpose, but the overall structure is hard to scan and contains redundancy that reduces conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero inputs and no output schema, the description provides a rich accounting of what the summary includes: totals, rows, reviewed shares, bulk-file dates, cross-cycle changes, sector and recipient breakdowns, lag line, and headlines with basis. It does not describe the exact output structure or field layout, but for a no-parameter summary tool the substantive completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool takes zero parameters, so the parameter-semantics baseline is 4. There are no arguments for the description to explain, and the schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this returns totals from the Super PAC Donors Register, built from FEC bulk files, and enumerates the aggregate dimensions it reports. It is specific about the resource and measures, but it does not explicitly distinguish itself from the sibling tools super_pac_donors_donor and super_pac_donors_recipient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the repeated emphasis on totals, summaries, and register headlines, suggesting it is for aggregate views rather than individual donor or recipient lookups. However, there is no explicit statement such as 'use this for totals; use super_pac_donors_donor for a specific donor' or any other when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_remedy_searchSearch Trade Remedy CasesARead-onlyIdempotentInspect
Search USITC trade-remedy investigations — antidumping/countervailing-duty (AD/CVD) + Section 337 unfair-import (patent/IP) cases — by investigation number, product, or title. ~4,386 cases; the trade-enforcement vertical (companies/countries fighting over dumped, subsidized, or IP-infringing imports).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Investigation number / product / title (>=2 chars) | |
| limit | No | Max results (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds domain context (what AD/CVD and Section 337 cases are, ~4,386 case scale) but says nothing about result ordering, pagination, or refresh behavior, so it does not go far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the action and searchable fields front-loaded. The trailing parenthetical defining the vertical is partly flavor but still earns its place by clarifying the corpus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema search tool with annotations covering the safety profile, the description supplies enough scope and domain context to call it correctly. Only return-format and pagination hints are absent, which the lack of an output schema makes tolerable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (q, limit) are already documented. The description restates the q search dimensions (investigation number / product / title) but adds no syntax, matching, or format guidance beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) plus a precise resource (USITC trade-remedy investigations) and enumerates the two case families (AD/CVD and Section 337). The domain framing makes it clearly distinguishable from siblings like courts_by_party or debarments_check without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states what can be searched by (investigation number, product, or title), which implies usage, but never says when to choose this tool over adjacent verticals or notes any exclusions. No alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukraine_money_recipientFind Ukraine Aid Money RecipientsARead-onlyIdempotentInspect
Find institutions and companies in the Ukraine Money Register by name substring: named award-record recipients of Ukraine-division accounts (obligated by fund code, obligated and outlaid by class, place of performance) and DoD contracts whose own records mention Ukraine, grouped by parent as USAspending lists it. With include_loop (default true), loop companies show three records side by side, never added and with no causation: DoD Ukraine-mention contract obligations; connected-PAC contributions to federal candidate committees by cycle, with the top recipient committees named exactly as the FEC lists them, with party and office; and lobbying filings citing Ukraine bills, each with its all-issue amount. Corporate PAC money is voluntary contributions from people the PAC may solicit, not company treasury or contract money; the FEC's own explanations are quoted. No individual donors, and no withheld or individual award recipients. The published recipient list holds the largest named institutions only, so a non-match is not evidence that no award was made.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Required case-insensitive institution or company name substring, at most 80 characters. | |
| include_loop | No | Show the contracts, PAC and lobbying records side by side for loop companies (default true); never added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, yet the description adds substantial context: loop companies return three record types side by side that are 'never added and with no causation,' corporate PAC money is voluntary contributions rather than company treasury, no individual donors, and the recipient list is limited to the largest named institutions. This is exactly the kind of disclosure that prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is stated up front, but the body is a dense wall of run-on prose with multiple semicolon-chained clauses. Every clause carries information, but the structure is hard to parse and not chunked for an agent scanning it quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description covers what is returned, what is deliberately excluded (individual donors, withheld recipients), how loop records relate, and a critical non-match caveat. Nothing an agent needs to call or interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond it: include_loop controls whether contracts/PAC/lobbying records appear side by side and clarifies those records are never summed. The substring character of q is repeated from the schema without added value, but the include_loop explanation justifies going above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find institutions and companies in the Ukraine Money Register by name substring.' It also clarifies the scope (named award-record recipients plus DoD contracts mentioning Ukraine, grouped by parent). It differentiates from the totals sibling implicitly through the recipient-level search framing, but never names ukraine_money_totals, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage ('by name substring') and gives an important caveat that 'a non-match is not evidence that no award was made.' However, it never explicitly states when to choose this over ukraine_money_totals or other siblings, and the include_loop explanation is behavioral rather than selection-guiding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukraine_money_totalsGet Ukraine Aid Money TotalsARead-onlyIdempotentInspect
Totals from the Ukraine Money Register of federal Ukraine-response money. view=stages (default): the inspectors general's made available, obligated and disbursed (outlaid) totals as printed, each with its own as-of date; acts: the five supplemental acts' made-available totals re-added clause by clause from the act text, beside SIG-OAR's table; codes: USAspending's emergency fund codes 3, 6, AAA, AAB and AAJ, where the mixed codes are split against the act text into Ukraine-only, probable and shared accounts, shown apart; places: place of performance in the award records; oversight: inspector-general and GAO findings quoted exactly with report numbers, dates and pages. Stages (made available, obligated, outlaid, announced) are never added to one another. Pentagon contracts whose own records mention Ukraine are not tied to the supplemental appropriations, and USAspending links only $0.47 billion of DoD's $121.30 billion obligated under the five codes to named awards. Words alleging loss or wrongdoing, such as fraud or diversion, appear only inside exact quotes.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | stages (default), acts, codes, places or oversight. Stages are never added together. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive safety. The description adds real behavioral context beyond them: stages are never summed, Pentagon contract records are not tied to supplemental appropriations, only $0.47B of $121.30B is linked to named awards, and loss/wrongdoing words appear only inside exact quotes. These are meaningful data-integrity caveats an agent would otherwise not know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is a single dense run-on that packs all five views plus caveats together, which hurts scanability. The caveats about stages, Pentagon contracts and quoted words are valuable but buried after the view list; the whole thing is oversized for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-enum, read-only tool with no output schema, the description covers every view, the default, non-additivity of stages, and known data-linkage limitations. An agent has enough to call it correctly and interpret the result sensibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the enum values are bare labels with one-line schema descriptions. The description substantially adds meaning by explaining what each view actually contains (acts re-added clause by clause, codes split into Ukraine-only/probable/shared, oversight quoted with report numbers and pages). Only the default value is also restated by the schema, so this is genuine added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: totals from the Ukraine Money Register of federal Ukraine-response money, with the source (inspectors general, SIG-OAR, USAspending) named. It is specific about scope but never mentions the sibling ukraine_money_recipient, so an agent cannot tell from the description which of the two Ukraine tools to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It effectively conveys which view to pick by describing what each returns (stages is flagged as default), which implies usage. But there is no explicit when-to-use / when-not-to-use guidance and no differentiation from ukraine_money_recipient or other money-tracking siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upcoming_sales_pressureFind Upcoming Insider SalesARead-onlyIdempotentInspect
Lists companies by the size of insider sales planned in recent SEC Form 144 notices (filed intentions to sell, not completed trades).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback for Form 144 filings in calendar days; future proposed sales also appear. Default 30, max 180. | |
| group_by | No | Group proposed sales by issuer CIK (default) or seller name; use issuer or seller. | issuer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds the meaningful semantic point that the data reflects filed intentions rather than executed sales, but says nothing about freshness/lag of Form 144 filings, ranking behavior, or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the ranking, the source, and the key caveat with no filler. Nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only listing tool with full schema coverage and annotations covering safety, the description is close to complete. It only leaves unspecified what the returned records contain (beyond being ranked by sale size) and whether results are truncated, though no output schema exists to carry that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 'days' (lookback, default 30, max 180) and 'group_by' (issuer vs seller) are fully documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('lists companies by the size of insider sales') and scopes the data source precisely to SEC Form 144. The parenthetical '(filed intentions to sell, not completed trades)' implicitly separates it from completed-trade siblings like cluster_sells, but no sibling is named directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'planned, not completed trades' clarification implies when this tool applies versus execution-based tools, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer the selection rule from the domain framing alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlistSummarize Ticker ActivityARead-onlyIdempotentInspect
Consolidated activity rollup for a list of tickers — insider 30d net flow, Form 144 pressure, recent material events, cluster-sell flag. Up to 25 tickers per call.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes | Comma-separated tickers (e.g. AAPL,MSFT,NVDA) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds a genuine operational constraint beyond the annotations — 'Up to 25 tickers per call' — which tells the agent how to batch requests. It does not describe return shape or latency, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and the constituent signals, closing with the hard cap. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only rollup with annotations carrying the safety profile and a fully covered schema, the description supplies the essential content list and a batch limit. The lack of an output schema means the mental model of what comes back is only lightly sketched, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented 'tickers' parameter (comma-separated example given), so the schema carries param semantics. The description reinforces the batch limit but adds no syntax detail beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('consolidated activity rollup for a list of tickers') and enumerates the bundled signals (insider 30d net flow, Form 144 pressure, material events, cluster-sell flag), which implicitly differentiates it as a multi-signal rollup versus single-signal siblings like cluster_sells or company_insider_pulse. It stops short of naming any sibling explicitly, so it is clear but not fully self-locating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The batch/rollup framing implies usage (screening many tickers at once), but there is no explicit when-to-use, when-not-to-use, or routing to alternatives such as cluster_sells or company_insider_pulse. An agent must infer whether to call this versus the single-signal tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
what_your_pension_ownsFind Public Pension Holdings by ListARead-onlyIdempotentInspect
What public pension funds reported holding in companies on US government lists or in MORVS's registers, from What Your Pension Owns, a MORVS register built from the SEC's quarterly Form 13F data sets (Q3 2025 to Q2 2026 at launch) and five funds' own holdings reports, matched issuer by reviewed issuer to the Pentagon's Section 1260H list, Treasury's NS-CMIC list, DHS's UFLPA Entity List and two MORVS registers (the Detention Ledger's publicly traded operators, and the listed parents of vendors counted in Who Gets Your Data's government lane). Optional filters: fund (a reviewed fund's name, a two-letter state or a 10-digit SEC CIK), issuer (a company name, a ticker the register carries, or a 9-character CUSIP), list (a list ID the register carries, or its title), source (13f or report) and quarter (a quarter-end date the register carries, YYYY-MM-DD). With filters: for each list, the matched holdings by source, date and security kind, Form 13F rows and the funds' own report rows kept apart and debt apart from shares, each group's value split into holdings on the list at the holding date and holdings designated later. When the matches are one fund's: up to 25 of its positions, the two sources kept apart, latest holding date leading (holding date, issuer, shares or debt, the value as filed or printed, each list's names as printed with its designation or register date and the designation-after-holding flag, the register's claim sentence, and the filing or report rows behind it). When they span funds: each fund with its count of positions and the arguments that return its positions (for_positions). With no filters: the register's headlines with their basis, each list's latest-quarter Form 13F figures, and the counter-findings (how many funds' filings hold no reviewed match to each list). The two sources are never added together, and no total adds two lists, two dates, two reports, or shares and debt; a company on two lists appears under each. A holding is a position a fund reported on a stated date: it does not show why the fund held it, whether it followed an index, or what the fund holds today. A designation dated after a holding is flagged on that position (designation_postdates_holding) and its value is kept apart from holdings on the list at the holding date. The MORVS registers are not government designations. No state divestment law is applied. Answers are kept under about 25 KB. The answer carries as_of, retrieved, the file dates, the question, list, index, coverage and law notes, the claim rules, the licence and the source page on morvs.ai; an empty result carries the register's absence note (no reviewed match in that fund's filing or report for that date, which is not a statement about other dates, other accounts or holdings through outside funds). Pension funds are institutions; no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| fund | No | Optional reviewed fund name (as printed or as filed), a two-letter state, or a 10-digit SEC CIK, for example CalPERS, NY or 0000810265. | |
| list | No | Optional list ID the register carries, or its title, for example dod_1260h or morvs_detention_operators. | |
| issuer | No | Optional company name, a ticker the register carries, or a 9-character CUSIP with a valid check digit, for example Alibaba, GEO or 01609W102. | |
| source | No | Optional source: 13f (the SEC Form 13F filings) or report (the funds' own holdings reports); both, kept apart, when omitted. | |
| quarter | No | Optional holding date (YYYY-MM-DD), a quarter-end the register carries, for example 2026-06-30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld/destructive=false, and the description adds substantial beyond that: additive prohibitions (never summing sources or lists), the designation_postdates_holding flag, the ~25 KB answer cap, the empty-result absence note, and the 'MORVS registers are not government designations / no state divestment law' caveats. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is one massive run-on paragraph with heavily nested clauses that is difficult to parse. Much of the content is valuable, but the packing and lack of structure (no segmentation of filters vs returns vs caveats) hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param, no-output-schema tool it is remarkably complete: it explains return shapes with and without filters, per-scope behavior, caveats, sourcing/licence, and edge-case absence notes. There is no output schema, and the description compensates fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description restates each filter (fund, issuer, list, source, quarter) with accepted value forms and adds behavioral nuance—source kept apart when omitted, quarter must be a quarter-end the register carries. This adds some value but largely mirrors the already-rich schema examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'What public pension funds reported holding in companies on US government lists.' It names the data sources (SEC Form 13F, funds' own reports) and the matching registers, so an agent can tell it apart from the singleton sibling what_your_pension_owns_fund and from fund_holdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Extensively describes how behavior varies by input: with filters, no filters, one-fund vs multi-fund matches, and it explicitly routes multi-fund results via the for_positions argument. It stops short of naming sibling alternatives (e.g., what_your_pension_owns_fund) or stating when NOT to use it, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
what_your_pension_owns_fundGet a Pension Fund's Reviewed HoldingsARead-onlyIdempotentInspect
One reviewed public pension fund in What Your Pension Owns, a MORVS register built from the SEC's quarterly Form 13F data sets (Q3 2025 to Q2 2026 at launch) and five funds' own holdings reports, matched issuer by reviewed issuer to the Pentagon's Section 1260H list, Treasury's NS-CMIC list, DHS's UFLPA Entity List and two MORVS registers (the Detention Ledger's publicly traded operators, and the listed parents of vendors counted in Who Gets Your Data's government lane), found by fund (its name as the register prints it or as filed, a two-letter state, or a 10-digit SEC CIK; when several match, each in short form with the arguments that return its full profile). Returns the fund's profile (state, type and its label, the basis for counting it as a public pension fund, CIK, legal name as filed and SEC filer link, and its own holdings report where the register reads one, with its as-of date, unit and scope), its Form 13F filing for each quarter (accession, amendments, table entries and value as filed), its figures by list, source and date and up to 25 matched positions (shares and debt apart, with each list's date and the designation-after-holding flag), the register's quarter-to-quarter changes for the fund (positions added and exited per list between quarters it filed, with the values on each date side by side, never subtracted), and, for each list where it holds no reviewed match, the counter-finding with the quarters and report read. The two sources are never added together, and no total adds two lists, two dates, two reports, or shares and debt; a company on two lists appears under each. A holding is a position a fund reported on a stated date: it does not show why the fund held it, whether it followed an index, or what the fund holds today. A designation dated after a holding is flagged on that position (designation_postdates_holding) and its value is kept apart from holdings on the list at the holding date. The MORVS registers are not government designations. No state divestment law is applied. Answers are kept under about 25 KB. The answer carries as_of, retrieved, the file dates, the question, list, index, coverage and law notes, the claim rules, the licence and the source page on morvs.ai; an empty result carries the register's absence note (no reviewed match in that fund's filing or report for that date, which is not a statement about other dates, other accounts or holdings through outside funds). Pension funds are institutions; no person is named.
| Name | Required | Description | Default |
|---|---|---|---|
| fund | Yes | Required reviewed fund name (as printed or as filed), a two-letter state, or a 10-digit SEC CIK, for example CalSTRS, TX or 0000810265. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description goes far beyond them: aggregation rules (sources and lists never summed, shares and debt kept apart), the ~25 KB answer cap, designation_postdates_holding flagging, empty-result absence semantics, the no-divestment-law and non-government-register caveats, and the coverage/law notes carried in the response. That is exactly the behavioral context an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly 450 words delivered as two enormous sentences, with the core purpose and the return shape entangled with caveats, licence text and register provenance. Information is dense and mostly relevant, but it is badly front-loaded and hard to parse, which undercuts the structure requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema and no nested objects, the description carries the full burden of explaining the response, and it does: profile fields, per-quarter filings, figures by list/source/date, capped positions, quarter deltas, counter-findings and the metadata envelope. Nothing an agent needs in order to interpret a result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already gives the three accepted forms with examples, so the baseline is 3. The description earns an extra point by describing the ambiguity-resolution behavior -- multiple matches returned in short form with the arguments needed to fetch each full profile -- which is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool returns one reviewed public pension fund with its profile, quarterly 13F filings, matched positions by list, quarter-to-quarter changes and counter-findings -- a specific verb+resource. It is clearly distinct from a list-style tool, but the sibling what_your_pension_owns and fund_holdings are never named, so the agent must infer the split rather than being routed. The purpose only emerges after a very long opening run-on, which weakens first-glance clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this rather than what_your_pension_owns or fund_holdings, and no exclusions or prerequisites. The only usage-adjacent content is how to address a fund (name, state, CIK) and what happens when several match, which is lookup mechanics rather than tool selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_gets_your_data_governmentFind Federal Data Tool PurchasesARead-onlyIdempotentInspect
Federal purchases in the "Bought by the government" lane of Who Gets Your Data, a MORVS pilot register built from USAspending prime contract transactions (award types A to D) by action-date fiscal year over the lane's window (FY2017 to FY2026 at launch): what agencies obligated to the reviewed vendors and resellers of the lane's capability classes (nine at launch; ids as the register carries them, such as device_forensics, people_search, comms_analysis, social_media_osint, plate_data, face_recognition, cell_site_simulators and location_data). Optional filters: agency (an agency or sub-agency name, or an abbreviation derived from the names, such as ICE or FBI), vendor (a recipient as filed, its parent, a reviewed vendor family or a recipient UEI, such as Cellebrite or LexisNexis), capability (a class id or its label, as the register carries them) and fiscal_year (an action-date fiscal year the register carries). With filters: the matching counted totals by fiscal year and by capability, bundles kept beside, the count of matching awards awaiting review, and up to 25 awards, largest matching obligation leading (PIID, agency, recipient as filed, fiscal years, the amount obligated, each matching transaction's capability and basis, the matched words and the words as published or "withheld", the outlay for the whole award where the record gives it, and the USAspending link). With no filters: the lane's headlines with their basis, the totals by fiscal year and by capability, and the top buyers. Amounts are obligations net of de-obligations, never outlays: an outlay appears only where the award record gives one, labelled as the outlay for the whole award. A contract is not proof of use on any person. Capability comes from the award's own words or a single-product vendor's product line, each with its basis (transaction_words, award_base_words, vendor_product or review); a bundle naming two capabilities sits in the lane total and in no capability total. The floor year (FY2026 at launch) is a floor, as Defense Department actions reach FPDS late, and each figure for it is flagged. A reviewed universe, not a complete inventory. An empty result returns the lane's absence note: no award in this reviewed universe, which says nothing about purchases outside it. The lane is a separate table: never added to the benefits and identity panel, the context (Palantir, Dataminr Defense Department licences), the excluded amounts or the handoff, broker and legal-duty tables. The answer carries as_of, the file dates, the source page on morvs.ai, the licence and the lane's universe, obligation, use, capability, floor, absence, context and panel notes. Recipients as filed, organisations only: the register drops sole proprietors and person-shaped recipients, and award words that could name a person are published as "withheld".
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Optional agency or sub-agency name, or an abbreviation derived from the names, for example ICE, FBI or Department of Homeland Security; at most 80 characters. | |
| vendor | No | Optional recipient as filed, its parent, a vendor family or a recipient UEI, for example Cellebrite, LexisNexis or Pen-Link; at most 80 characters. | |
| capability | No | Optional capability class id or its label, as the register carries them, for example device_forensics or Face recognition. | |
| fiscal_year | No | Optional action-date fiscal year (YYYY) the register carries, for example 2026 (a floor); all years when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/non-destructive/openWorld, which already cover safety), the description discloses non-obvious behavioral rules: amounts are obligations net of de-obligations and never outlays, bundled awards count in the lane total but no capability total, the FY2026 floor is flagged, empty results return an absence note, and person-shaped recipients/words are withheld. It also states what the response carries (as_of, file dates, source page, licence, notes).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single ~400-word paragraph of run-on sentences with deep parenthetical nesting; the core purpose (what it returns) is buried behind a long provenance clause. Much of the content is substantive, but the lack of structure and front-loading makes it hard to scan and the volume exceeds what an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden and does so: it enumerates both filtered and unfiltered return payloads field by field, documents the counting/attribution caveats, the absence note, and explicitly warns the lane is a separate table never merged into the benefits, context, excluded-amounts or handoff tables. Nothing an agent needs to interpret the result correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds meaning beyond the schema: it enumerates the capability class ids the register carries (device_forensics, people_search, comms_analysis, social_media_osint, plate_data, face_recognition, cell_site_simulators, location_data) and explains that fiscal_year is action-date based and FY2026 is a floor. It also clarifies that agency accepts abbreviations derived from agency names and vendor accepts UEIs/parents/families.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb and resource: federal prime-contract purchases (award types A–D) from USAspending in the 'Bought by the government' lane, filtered by agency/vendor/capability/fiscal year. Scope and data source are unambiguous. It never explicitly distinguishes itself from the sibling who_gets_your_data_government_award, so it falls short of the sibling-differentiation bar for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is described behaviorally — 'With filters: ...' vs 'With no filters: the lane's headlines' — which implies how to call it, but there are no explicit when-to-use/when-not statements or routing to alternatives such as who_gets_your_data_government_award or who_gets_your_data_summary. The agent must infer which WHO-GETS-YOUR-DATA tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_gets_your_data_government_awardGet a Federal Award by PIIDARead-onlyIdempotentInspect
One federal award in the "Bought by the government" lane of Who Gets Your Data, a MORVS pilot register built from USAspending prime contract transactions (award types A to D) by action-date fiscal year over the lane's window (FY2017 to FY2026 at launch), found by its PIID (6 to 40 letters, digits or hyphens, case ignored) through the register's lookup file. Returns each transaction with its date, fiscal year, amount obligated, label (a capability, a bundle, or a label that is never counted), basis, the matched words and the words as published or "withheld"; the award's review (label, verified words and note); its net obligations by fiscal year; and the outlay for the whole award where the award record gives it. It says whether the award is counted in the lane, awaiting review (never counted until reviewed), not counted (words mixed with another product), unclassified or in the separate benefits and identity panel. A PIID can name more than one award; each is returned. Amounts are obligations net of de-obligations, never outlays: an outlay appears only where the award record gives one, labelled as the outlay for the whole award. A contract is not proof of use on any person. Capability comes from the award's own words or a single-product vendor's product line, each with its basis (transaction_words, award_base_words, vendor_product or review); a bundle naming two capabilities sits in the lane total and in no capability total. The floor year (FY2026 at launch) is a floor, as Defense Department actions reach FPDS late, and each figure for it is flagged. A reviewed universe, not a complete inventory. An empty result returns the lane's absence note: no award in this reviewed universe, which says nothing about purchases outside it. The lane is a separate table: never added to the benefits and identity panel, the context (Palantir, Dataminr Defense Department licences), the excluded amounts or the handoff, broker and legal-duty tables. The answer carries as_of, the file dates, the source page on morvs.ai, the licence and the lane's universe, obligation, use, capability, floor, absence, context and panel notes. Recipients as filed, organisations only: the register drops sole proprietors and person-shaped recipients, and award words that could name a person are published as "withheld".
| Name | Required | Description | Default |
|---|---|---|---|
| piid | Yes | Required award PIID, 6 to 40 letters, digits or hyphens (case ignored), for example 70CMSD25P00000111. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, but the description adds substantial context: counting statuses, review state, net obligations versus outlays, floor-year flagging, empty-result absence note, recipient exclusions, and withheld words. It discloses behavior well beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense wall of clauses and caveats rather than a structured, front-loaded explanation. While much of the content is substantive, it is far longer than needed for a one-parameter lookup tool and would benefit from grouping into purpose, returns, and caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a complex data product, the description carries the full burden of explaining returned fields, statuses, caveats, and metadata such as `as_of`, file dates, source page, and licence. It is complete enough for an agent to understand what a successful or empty response means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single `piid` parameter at 100%, including format, length, pattern, and an example. The description adds some PIID semantics, notably that one PIID can name more than one award, but most input details are already in the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific resource and scope: one federal award in the "Bought by the government" lane, found by PIID through the register's lookup file. An agent can distinguish this from lane-level or summary tools because the lookup key and single-award return are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the required PIID and the lookup-file framing, but the description never explicitly says when to use this versus `who_gets_your_data_government`, `who_gets_your_data_lookup`, or `who_gets_your_data_summary`. It also gives no when-not-use guidance beyond noting that a PIID can return multiple awards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_gets_your_data_handoffsList Documented Data HandoffsARead-onlyIdempotentInspect
List documented data handoffs in Who Gets Your Data, a MORVS pilot register: edges from a source organisation and product, through a data type, to a recipient, each from one primary document (an FTC complaint or order, a Federal Register notice, a court opinion or order). Optional filters: data_type (a substring of the data type in the document's words), legal_status (a status key the register carries, such as allegation_in_complaint, finding, order_terms or request_count; matched against the row's own status and its settlement and remedy statuses, with the match shown), recipient (a substring of the recipient as worded or of a named recipient organisation) and year (the primary document's year, a year the register carries). Up to 25 edges in published order, with the full count and the counts by the rows' own legal status. Each handoff gives the source organisations, product and brands, the data type in the document's words, the recipient exactly as worded (named, or the document's own recipient class), the conduct period as worded, the verbatim quote, the document's type, issuer, date and URL, and a settlement, remedy, current status or opt-out only where a document states one. Each handoff carries its primary document's own legal status with the register's label exactly as published (a court's finding, an allegation in a complaint, a settlement with or without an admission, an order's terms, or a count of requests): an allegation is not a finding, a request is not a disclosure, and old conduct is not current practice. An empty result returns the register's absence note: no documented record in this corpus, which says nothing about what a product or company does now. The three tables (handoffs, broker registry answers, legal duties) hold different kinds of evidence and are never added together, scored or ranked; no answer gives a total across them. A pilot: a small, hand-checked set of documented handoffs, the brokers' own registry answers and one legal-duty exhibit, in three separate tables; it is not a census of data sharing. The answer carries the pilot note, lane note, coverage line, as-of date, file dates, legal-status labels, the register's rules, its licence and the source page on morvs.ai. Organisations, companies, agencies and governments only: no individual is named, and there is no bank or personal-report lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Optional year of the primary document (YYYY), a year the register carries; all years when omitted. | |
| data_type | No | Optional case-insensitive substring of the data type in the document's words, for example location or viewing history; at most 80 characters. | |
| recipient | No | Optional case-insensitive substring of the recipient as the document words it, or of a named recipient organisation, for example Verisk. | |
| legal_status | No | Optional legal-status key the register carries, for example allegation_in_complaint, finding, order_terms or request_count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false. The description goes well beyond those annotations by describing the returned fields, the 25-edge limit with total counts, the absence note, the handling of legal-status labels, and the crucial caveats that allegations are not findings and older conduct is not current practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is a single dense paragraph that repeats the pilot framing and the 'three tables are never combined' point. Several details (licence, source page, pilot note metadata) are relevant background but make the definition longer than necessary for selecting and invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and four optional filters, the description carries the full burden of explaining return values and is thorough: it lists the fields per handoff, pagination/count behavior, absence handling, legal-status labeling and dataset limitations. An agent has enough information to call it and interpret the response correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3. The description adds useful meaning beyond the schema, especially that legal_status is matched against the row's own status and its settlement and remedy statuses with the match shown, and that data_type matches a substring in the document's own words.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it lists documented data handoffs from source organisation/product through data type to recipient, each tied to a primary document. It distinguishes handoffs from the register's other tables (broker registry answers, legal duties), but it does not explicitly name or route against the sibling tools who_gets_your_data_lookup and who_gets_your_data_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the optional filters and how to interpret results, including the absence note and the rule that the three tables are never combined. However, it never states when an agent should choose this tool over the sibling lookup or summary tools; the selection guidance is at best implied by the word 'List' and the described output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_gets_your_data_lookupLook Up Who Gets Your Data RecordsARead-onlyIdempotentInspect
Look up a brand, product, company or recipient, or a 5-digit ZIP code, in Who Gets Your Data, a MORVS pilot register built from FTC complaints and orders, Federal Register notices, a Supreme Court opinion, a Sacramento court order, FinCEN's Year in Review and one Geographic Targeting Order, and the California data broker registry as MORVS's Data Broker Register republishes it. Names are matched against the register's published lookup keys (case, accents, punctuation and legal-form words such as Inc. or LLC ignored); a ZIP is matched against the order's list. Returns the matching rows grouped by table, each table with its own coverage line and notes: handoffs (up to 25 edges with their full fields), broker registry answers (up to 25 brokers, each matched registration with the questions it answered yes), legal duties (a ZIP's covered-location row with the order's dates and its terms and exceptions as quoted), and "Bought by the government" (agency, sub-agency, vendor family, recipient, reseller, capability, fiscal year as FY2026 or award PIID keys, and agency abbreviations such as ICE derived from the names: each row with the lane's published obligations by fiscal year, the floor year flagged, or the award's standing), with benefits and identity panel matches in their own group. Each handoff carries its primary document's own legal status with the register's label exactly as published (a court's finding, an allegation in a complaint, a settlement with or without an admission, an order's terms, or a count of requests): an allegation is not a finding, a request is not a disclosure, and old conduct is not current practice. Each handoff gives the source organisations, product and brands, the data type in the document's words, the recipient exactly as worded (named, or the document's own recipient class), the conduct period as worded, the verbatim quote, the document's type, issuer, date and URL, and a settlement, remedy, current status or opt-out only where a document states one. An empty result returns the register's absence note: no documented record in this corpus, which says nothing about what a product or company does now. A ZIP result is a covered business location under one FinCEN Geographic Targeting Order, subject to its exceptions, and carries the register's ZIP note: it says nothing about any resident, account or transaction. Broker rows are each business's own answer to the California registry, with the question as the form words it, and carry the broker note: no broker is accused of anything. The three tables (handoffs, broker registry answers, legal duties) hold different kinds of evidence and are never added together, scored or ranked; no answer gives a total across them. The lane is a separate table: never added to the benefits and identity panel, the context (Palantir, Dataminr Defense Department licences), the excluded amounts or the handoff, broker and legal-duty tables. A pilot: a small, hand-checked set of documented handoffs, the brokers' own registry answers and one legal-duty exhibit, in three separate tables; it is not a census of data sharing. The answer carries the pilot note, lane note, coverage line, as-of date, file dates, legal-status labels, the register's rules, its licence and the source page on morvs.ai. Organisations, companies, agencies and governments only: no individual is named, and there is no bank or personal-report lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Required brand, product, company or recipient name, or a 5-digit ZIP code, for example OnStar, Verizon or 78040; at most 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds substantial context beyond them: the matching normalization rules, the empty-result absence note and its meaning, per-table notes (ZIP note, broker note, pilot note), the no-summation rule across the three evidence tables, and the legal-status labeling discipline ('an allegation is not a finding, a request is not a disclosure'). This is exactly the kind of interpretive constraint an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One ~500-word paragraph. The first sentence front-loads well, but the body sprawls into restated caveats — the separateness of the tables is asserted twice ('never added together, scored or ranked' then 'The lane is a separate table: never added to...'), and the pilot disclaimer is repeated. The information is mostly substantive, but it is not structured into scannable sections, making it costly to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one parameter, the description carries the entire burden of describing return shape, and it does: the four row groups, per-table coverage lines and notes, the handoff field list, the legal-status labels, and the trailing metadata (as-of date, licence, source page). An agent can predict the response structure before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'query' param already documents accepted inputs with examples, so the baseline would be 3. The description earns above baseline by adding matching semantics the schema lacks: names are matched against published lookup keys with case, accents, punctuation and legal-form words ignored, while a ZIP is matched against the order's list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource — "Look up a brand, product, company or recipient, or a 5-digit ZIP code, in Who Gets Your Data" — and immediately frames it as a MORVS pilot register built from FTC complaints, FinCEN GTOs, and the California broker registry. It is clear what the tool does; however, it never names its close siblings (who_gets_your_data_handoffs, who_gets_your_data_government, who_gets_your_data_summary), so the agent must infer the split from the table names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the reader infers this is the entry-point lookup, since it returns rows across all three tables and the lane. Scope exclusions are stated ("Organisations, companies, agencies and governments only... no bank or personal-report lookup"), which is useful, but there is no explicit 'use this instead of who_gets_your_data_handoffs when...' routing despite four obvious siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_gets_your_data_summaryGet Who Gets Your Data FiguresBRead-onlyIdempotentInspect
Figures from Who Gets Your Data, a MORVS pilot register built from FTC complaints and orders, Federal Register notices, a Supreme Court opinion, a Sacramento court order, FinCEN's Year in Review and one Geographic Targeting Order, and the California data broker registry as MORVS's Data Broker Register republishes it, table by table and never added across tables: handoff edges and primary documents, counts by legal status with the register's labels, named and class-only recipients, rows with a settlement or a current status, and the review queue's counts (a candidate is never an edge until reviewed); the brokers' California registry answers, with each sharing question as the form words it, the registrations and distinct brokers answering yes, and the government or law-enforcement overlap; FinCEN's fiscal-year Bank Secrecy Act figures with their wording, page and unit, and the Geographic Targeting Order's dates, ZIP count by county group and quoted terms; the register's headlines with their basis, legal status and sources; what is not covered (documents left for manual download, hosts never fetched, the incumbents credited and the register's stated gap), with the stop rules; and, kept separate, the "Bought by the government" lane (obligations by fiscal year with the floor year flagged, by capability with basis, bundles, the top buyers, the people, location and plate-data group, awards pending review, the lane's headlines with their basis, and the mixed, unclassified, context, excluded and dropped amounts kept apart) and the benefits and identity panel with its own headline. FinCEN's figures count searches, reports and filers, never people, and carry the register's count note. Broker rows are each business's own answer to the California registry, with the question as the form words it, and carry the broker note: no broker is accused of anything. Each handoff carries its primary document's own legal status with the register's label exactly as published (a court's finding, an allegation in a complaint, a settlement with or without an admission, an order's terms, or a count of requests): an allegation is not a finding, a request is not a disclosure, and old conduct is not current practice. The three tables (handoffs, broker registry answers, legal duties) hold different kinds of evidence and are never added together, scored or ranked; no answer gives a total across them. The lane is a separate table: never added to the benefits and identity panel, the context (Palantir, Dataminr Defense Department licences), the excluded amounts or the handoff, broker and legal-duty tables. Amounts are obligations net of de-obligations, never outlays: an outlay appears only where the award record gives one, labelled as the outlay for the whole award. A contract is not proof of use on any person. Capability comes from the award's own words or a single-product vendor's product line, each with its basis (transaction_words, award_base_words, vendor_product or review); a bundle naming two capabilities sits in the lane total and in no capability total. The floor year (FY2026 at launch) is a floor, as Defense Department actions reach FPDS late, and each figure for it is flagged. A reviewed universe, not a complete inventory. A pilot: a small, hand-checked set of documented handoffs, the brokers' own registry answers and one legal-duty exhibit, in three separate tables; it is not a census of data sharing. The answer carries the pilot note, lane note, coverage line, as-of date, file dates, legal-status labels, the register's rules, its licence and the source page on morvs.ai. Organisations, companies, agencies and governments only: no individual is named, and there is no bank or personal-report lookup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, open-world, idempotent and non-destructive, but the description adds extensive behavioral context: it names data sources, warns 'a pilot... not a census,' says no individual is named, and explains output caveats like 'obligations net of de-obligations, never outlays.' This is valuable disclosure, though delivered in an unstructured wall of text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single enormous run-on paragraph of several hundred words, repeating 'never added together' and burying the purpose behind long clauses. It is informative but poorly structured and not front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter summary tool with no output schema, the description is thorough about scope, sources, and caveats, and it notes that the answer carries notes, as-of date, labels and licence. It stops short of describing the actual response structure, leaving some ambiguity about how the figures are organized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is nothing for the description to clarify. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that it returns figures from the 'Who Gets Your Data' MORVS pilot register across handoff, broker, FinCEN, government-lane and benefits tables. The resource and content are specific, but it never explicitly distinguishes itself from sibling tools such as who_gets_your_data_handoffs or who_gets_your_data_government.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No sentence says when to choose this summary over the sibling detail tools. The closest guidance is a constraint ('no answer gives a total across them'), which tells the agent what not to expect rather than when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiretap_ordersFind Reported Wiretap OrdersARead-onlyIdempotentInspect
Finds individual court-authorized wiretap orders as published in one annual US Courts Wiretap Report. Defaults to the latest report year; filters use the report year, court, state, jurisdiction, offense group and intercept type. A row was reported to the courts in that report year and may have ended earlier. Results and costs are per order as reported. The annual headline count undercounts that year because some orders are reported in later years. Related orders can share people, intercepts and arrests, so do not sum those fields across rows. Zero or blank means none reported, not that nothing happened. Flags identify missing prosecutor reports and implausible figures. A missing row is not proof that no surveillance occurred; the published order shards start in 2016.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Interception type code from the register lookups. | |
| court | No | Court type: federal or state. | |
| limit | No | Maximum order rows returned; default is set by the register, allowed 1-100. Never sum people or intercepts across orders. | |
| state | No | State name as printed in the register, for example TEXAS. | |
| report_year | No | Report year; defaults to the latest published year. Each row is an order reported in that year; late reports can raise later counts. | |
| jurisdiction | No | Case-insensitive jurisdiction name substring. | |
| offense_group | No | Offense group label from the register, for example drugs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Very rich beyond annotations: explains that zero/blank means none reported rather than nothing happened, that flags mark missing prosecutor reports and implausible figures, that a missing row is not proof of no surveillance, and that shards start in 2016. It also warns that rows may double-count shared people/intercepts/arrests.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: verb and source first, then caveats. Every sentence carries an interpretive caveat, though the aggregation of warnings makes it somewhat heavy relative to a filtered-list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the interpretation pitfalls an agent needs (per-order costs, non-summable fields, undercounting, 2016 start boundary). Complete for correct use and reporting of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: report_year denotes the year an order was reported (late reports raise later counts), and filters are framed as report-year scoped. This goes beyond the schema's per-parameter text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds individual court-authorized wiretap orders') plus the exact source ('one annual US Courts Wiretap Report'). An agent can immediately distinguish this from broad surveillance-related siblings like national_security_surveillance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the default (latest report year) and which fields are filterable, which orients usage. However, it does not state when to prefer this over a sibling tool or give explicit when-not conditions, leaving usage routing implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Added
agent_access - Added
agent_access_changes - Added
agent_access_check_url - Added
agent_access_institution - Added
agent_access_route
4 tool updates
- Added
bought_by_your_police - Added
bought_by_your_police_vendor - Added
what_your_pension_owns - Added
what_your_pension_owns_fund
2 tool updates
- Added
who_gets_your_data_government - Added
who_gets_your_data_government_award
3 tool updates
- Added
who_gets_your_data_handoffs - Added
who_gets_your_data_lookup - Added
who_gets_your_data_summary
10 tool updates
- Changed
arms_sales_notices4 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Optional year the notice was delivered to Congress, 2017 to 2026."New value: +"Optional year the notice was delivered to Congress (YYYY, from 2017); a year the register does not carry returns the years it does." - removed
Input schema / properties / year / enumRemoved value: -[ - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026 -] - added
Input schema / properties / year / maximumAdded value: +2100 - added
Input schema / properties / year / minimumAdded value: +1900
- Changed
data_broker_diff6 fields changed- changed
Input schema / properties / year_a / descriptionPrevious value: -"One register file: 2026, 2025 or 2024 (CPPA registry) or 2020-2023 (Attorney General list). Order does not matter."New value: +"One register file the register carries: a CPPA registry year (YYYY, 2024 onward) or 2020-2023 (Attorney General list). Order does not matter." - removed
Input schema / properties / year_a / enumRemoved value: -[ - "2026", - "2025", - "2024", - "2020-2023" -] - added
Input schema / properties / year_a / patternAdded value: +"^[0-9]{4}(?:-[0-9]{4})?$" - changed
Input schema / properties / year_b / descriptionPrevious value: -"The other register file, different from year_a: 2026, 2025, 2024 or 2020-2023. The earlier file is reported as earlier."New value: +"The other register file, different from year_a: a CPPA registry year (YYYY) or 2020-2023. The earlier file is reported as earlier." - removed
Input schema / properties / year_b / enumRemoved value: -[ - "2026", - "2025", - "2024", - "2020-2023" -] - added
Input schema / properties / year_b / patternAdded value: +"^[0-9]{4}(?:-[0-9]{4})?$"
- Changed
election_voting_systems2 fields changed- removed
Input schema / properties / standard / enumRemoved value: -[ - "VSS 2002", - "VVSG 1.0 (2005)", - "VVSG 1.1", - "VVSG 2.0", - "VEPBCR 1.0" -] - added
Input schema / properties / standard / patternAdded value: +"^[A-Z][A-Za-z0-9 .()-]{1,39}$"
- Changed
foreign_agents_country3 fields changed- removed
Input schema / properties / year / enumRemoved value: -[ - 2024, - 2025 -] - added
Input schema / properties / year / maximumAdded value: +2100 - added
Input schema / properties / year / minimumAdded value: +1900
- Changed
inaugural_donors_donor3 fields changed- removed
Input schema / properties / year / enumRemoved value: -[ - 2025, - 2021 -] - added
Input schema / properties / year / maximumAdded value: +2100 - added
Input schema / properties / year / minimumAdded value: +1900
- Changed
mdl_lookup4 fields changed- removed
Input schema / properties / category / enumRemoved value: -[ - "Products Liability", - "Common Disaster", - "Antitrust", - "Miscellaneous", - "Securities", - "Data Breach and Consumer Privacy", - "Employment Practices", - "Sales Practices", - "Intellectual Property", - "Contract", - "Air Disaster" -] - added
Input schema / properties / category / maxLengthAdded value: +80 - added
Input schema / properties / category / minLengthAdded value: +1 - added
Input schema / properties / category / patternAdded value: +"^[A-Z][A-Za-z0-9,&'/().-]*(?: [A-Za-z0-9,&'/().-]+)*$"
- Changed
media_money_advertising3 fields changed- removed
Input schema / properties / fiscal_year / enumRemoved value: -[ - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026 -] - added
Input schema / properties / fiscal_year / maximumAdded value: +2100 - added
Input schema / properties / fiscal_year / minimumAdded value: +1900
- Changed
police_grant_awards4 fields changed- changed
Input schema / properties / fy / descriptionPrevious value: -"Fiscal year of DOJ announced award lists, 2020-2026; defaults to latest."New value: +"Fiscal year of DOJ announced award lists, from 2020 to the latest published; defaults to latest." - changed
Input schema / properties / fy / maximumPrevious value: -2026New value: +2100 - removed
Input schema / properties / program / enumRemoved value: -[ - "chp", - "tep", - "svpp", - "ahtf", - "camp", - "cpd", - "lemhwa", - "saferoutcomes", - "cri", - "pass", - "ctas", - "bluealert" -] - added
Input schema / properties / program / patternAdded value: +"^[a-z]{2,32}$"
- Changed
self_driving_reports1 field changed- changed
Input schema / properties / year_received / descriptionPrevious value: -"Year NHTSA received the report, 2021-2026; defaults to the latest published year."New value: +"Year NHTSA received the report (2021 or later, a year the register carries); defaults to the latest published year."
- Changed
super_pac_donors_donor3 fields changed- removed
Input schema / properties / cycle / enumRemoved value: -[ - 2026, - 2024 -] - added
Input schema / properties / cycle / maximumAdded value: +2100 - added
Input schema / properties / cycle / minimumAdded value: +1900
4 tool updates
- Added
drug_money_agreements - Added
drug_money_company - Added
drug_money_drug - Added
drug_money_summary
4 tool updates
- Added
media_money_advertising - Added
media_money_family - Added
media_money_summary - Added
media_money_terminations
4 tool updates
- Added
arms_sales_buyer - Added
arms_sales_contractor - Added
arms_sales_notices - Added
arms_sales_summary
4 tool updates
- Added
migrant_programs_program - Added
migrant_programs_recipient - Added
migrant_programs_summary - Added
migrant_programs_terminations
5 tool updates
- Added
inaugural_donors_donor - Added
inaugural_donors_summary - Added
super_pac_donors_donor - Added
super_pac_donors_recipient - Added
super_pac_donors_summary
5 tool updates
- Added
foreign_agents_country - Added
foreign_agents_enforcement - Added
foreign_agents_principal - Added
foreign_agents_registrant - Added
foreign_agents_summary
4 tool updates
- Added
pay_to_play_awards - Added
pay_to_play_committees - Added
pay_to_play_contractor - Added
pay_to_play_totals
4 tool updates
- Added
border_force_area - Added
border_force_national - Added
ukraine_money_recipient - Added
ukraine_money_totals
4 tool updates
- Added
police_grant_awards - Added
police_grant_recipient - Added
sanctuary_doj_list - Added
sanctuary_state_reports
4 tool updates
- Added
breach_notice_organization - Added
breach_notices - Added
election_equipment_jurisdiction - Added
election_voting_systems
4 tool updates
- Added
china_ai_filings - Added
china_ai_us_lists - Added
prediction_market_exchange - Added
prediction_market_filings
5 tool updates
- Added
forfeiture_agency - Added
forfeiture_payments - Added
nhtsa_automation_investigations - Added
self_driving_company - Added
self_driving_reports
6 tool updates
- Added
judgment_fund_payee - Added
judgment_fund_payments - Added
lobbying_client - Added
mdl_lookup - Added
national_security_surveillance - Added
wiretap_orders
4 tool updates
- Added
federal_file_search - Added
federal_file_system - Added
plate_reader_decisions - Added
plate_reader_state_law
2 tool updates
- Added
data_demand_compare - Added
data_demand_source
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm55 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1618 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.