Skip to main content
Glama
govconapi

io.github.govconapi/govconapi

Official

Server Quality Checklist

50%
Profile completionA complete profile improves this server's visibility in search results.
  • A "release" on Glama is not the same as a GitHub release. To create a Glama release:

    1. if you haven't already.
    2. Go to the Dockerfile admin page, configure the build spec, and click Deploy.
    3. Once the build test succeeds, click Make Release, enter a version, and publish.

    This process allows Glama to run security checks on your server and enables users to deploy it.

    Read the detailed guide

  • Disambiguation4/5

    Each tool targets a distinct resource/action, and many descriptions explicitly call out which similar tool not to use instead. The main risk spots are award subset tools, registry searches, and the NAICS/wage suites, but the cross-references are strong enough for an agent to pick correctly.

    Naming Consistency4/5

    The overwhelming majority follow a consistent verb_noun pattern: search_*, get_*, list_*, lookup_*, find_*, discover_*, check_*, resolve_*. Minor deviations like recent_changes and acronym-based names such as get_wds_by_location keep it from being perfect.

    Tool Count1/5

    53 tools is in the extreme-mismatch band even for a broad government-contracting domain. The logical category structure does not offset the MCP selection burden of having dozens of near-synonym search/get pairs an agent must consider.

    Completeness4/5

    For a read-only market-intelligence API, coverage is remarkably complete: opportunities, awards, contracts, vehicles, subawards, companies, entities, NAICS, wage data, protests, offices, and orgs all have search and detail paths with chained identifiers. Minor gaps include no direct enum-list tool for valid set-aside/notice_type values and no state filter on search_contracts, but agents can work around both.

  • Average 4.7/5 across 53 of 53 tools scored. Lowest: 4/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 3 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • This repository includes a glama.json configuration file.

  • This server has been verified by its author.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

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

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the read-only nature is covered. The description adds value by detailing the returned content (agency, contacts, description, attachments, award data, 50+ fields), which is beyond the annotations. It does not cover error conditions or rate limits, but given the annotation coverage, this is sufficient.

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

    Conciseness5/5

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

    The description is two tight sentences, front-loading the action and target, then listing return highlights. No wasted words or redundancy.

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

    Completeness4/5

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

    Since an output schema exists, the description need not enumerate every field; it highlights representative content (agency, contacts, attachments, award data) and notes 50+ fields. For a simple fetch operation with all annotations and a schema, this is complete enough for correct invocation.

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

    Parameters3/5

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

    The sole parameter notice_id has zero schema description coverage, so the description carries the burden. The description explains it is the identifier for a contract opportunity but does not clarify its format (e.g., alphanumeric pattern, length). This is a minimal but acceptable compensation for a single self-explanatory parameter.

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

    Purpose5/5

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

    The description clearly states the verb 'Fetch' and the resource 'single contract opportunity' identified by 'notice_id'. It effectively distinguishes itself from sibling tools like search_opportunities by specifying it returns one record, not a search result.

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

    Usage Guidelines3/5

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

    The intended use case is implied: use when you have a specific notice_id and need the full record. However, it does not explicitly mention alternatives or when not to use this tool, such as for searching or bulk retrieval. Some guidance on the required parameter format would help.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that this returns a specific FFATA report by SAM report ID, but does not discuss not-found behavior, response shape, or any operational nuances beyond what annotations already convey.

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

    Conciseness5/5

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

    The description is compact and front-loaded: the first sentence states exactly what the tool does, followed by a brief category label and a single useful parameter note. No filler or redundant repetition of the schema.

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

    Completeness4/5

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

    For a one-parameter, read-only lookup tool with strong annotations, the description is adequately complete. It states what is returned (a FFATA subaward report), how to identify it, and where the ID comes from. It does not detail the response structure, but the tool's simplicity and annotation coverage make that less critical.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description must compensate. It does by stating the parameter is a UUID and explaining where to obtain it ('from search_subawards or a company's subaward list'). This adds meaningful guidance beyond the bare schema title and type.

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

    Purpose5/5

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

    The description uses a specific verb ('Get'), a specific resource ('one FFATA subaward report'), and a precise lookup key ('SAM report ID'). This clearly distinguishes it from list/search siblings like search_subawards.

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

    Usage Guidelines4/5

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

    The description indicates the ID is sourced 'from search_subawards or a company's subaward list', which implies this tool is for retrieving a specific known report after a search. It does not explicitly name alternatives or exclusions, but the context is clear enough for a simple lookup tool.

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

  • Behavior4/5

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

    Beyond the annotations (readOnly, idempotent, etc.), the description discloses behavioral details: it returns separate lists with counts, rolls up related PIIDs via vehicle_family.piids, and notes the 'Pro only' access restriction. These are meaningful behaviors not captured by annotations.

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

    Conciseness2/5

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

    The description is verbose and repetitive, restating the holder/earner distinction multiple times and repeating the same return-value explanation. It could be condensed significantly without losing meaning, making it less efficient for agents to parse.

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

    Completeness4/5

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

    Despite having an output schema (not shown), the description thoroughly explains the return structure (awardees, earners, counts, vehicle_family.piids) and the use case. It is complete enough for an agent to understand when and how to invoke the tool correctly.

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

    Parameters5/5

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

    The schema provides only types and defaults, but the description explains that 'piid' is the vehicle's own PIID (from specific sources) and that 'limit' has a max of 250, adding crucial context. This fully compensates for the schema's lack of parameter descriptions.

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

    Purpose5/5

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

    The description clearly states the tool retrieves vehicle holders and earners as distinct populations, emphasizing not to conflate them. It identifies the specific resource (vehicle) and differentiates from similar tools by highlighting the unique holder-vs-earner distinction.

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

    Usage Guidelines4/5

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

    Provides contextual guidance such as 'Award & Compliance tool, Pro only' and 'only holders can bid task orders,' indicating when this tool is relevant. However, it does not explicitly state when to prefer this over sibling tools like get_vehicle or search_vehicles, though the holder/earner distinction implies its niche.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is known. The description adds behavioral context beyond annotations by specifying the structure of the returned record (location array, classifications, fringe, CBA detail block). It does not mention response size or pagination, but the output schema handles return format details.

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

    Conciseness4/5

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

    The description is concise (two short paragraphs and a bullet), front-loads the tool's purpose, and includes a helpful parameter note. The tag 'Bid & Proposal / Negotiate tool' adds a small amount of context but is not necessary; there is some minor redundancy, yet overall it is well-structured and efficient.

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

    Completeness5/5

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

    Given the tool has a single, well-documented parameter and an output schema (indicated by 'Has output schema: true'), the description covers everything needed for correct invocation: what the tool returns, the ID formats accepted, and the sources for those IDs. No critical information is missing for an agent to use it properly.

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

    Parameters5/5

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

    The schema provides no description and coverage is 0%, so the description fully carries the burden. It explains that wd_id accepts either an internal sgs id ('43309') or a human-readable WD number ('AK20260001'), and lists the three source tools where these IDs can be obtained. This is thorough, explicit parameter documentation.

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

    Purpose5/5

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

    The description clearly states 'Get one wage determination's full record' and enumerates exactly what that includes (location array, each classification's hourly wage + fringe, and CBA contractor/union block). It distinguishes itself from sibling search/list tools like search_wage_determinations or get_wage_rate_summary by focusing on a single full record.

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

    Usage Guidelines3/5

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

    The description labels the tool as 'Bid & Proposal / Negotiate' and lists the source tools that produce valid wd_id values, which implies a workflow (search first, then retrieve full record). However, it does not explicitly state when to prefer this over alternatives like get_wage_rate_summary or when not to use it. Guidance is implied, not explicit.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the agent knows it's a safe read operation. The description adds valuable behavioral context: it is keyset-based (so no performance degradation with depth) and it explains the sync pattern with server_time to be passed as `since` on the next call. This goes beyond the annotations and helps the agent understand the tool's streaming behavior, though it doesn't describe any edge cases like empty results or error handling.

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

    Conciseness4/5

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

    The description is concise but packs a lot: purpose, usage, keyset note, parameter bullets, and return format. It opens with the purpose, then usage, then technical detail. Bullet points for parameters are clear. The only minor inefficiency is the mention of 'keyset-based' and 'depth doesn't degrade performance' which could be folded, but it's acceptable. It's front-loaded and not verbose.

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

    Completeness4/5

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

    For a sync tool, the description covers the essential flow: how to start (since), how to paginate (keyset, server_time), what is returned (data, pagination, sync.server_time), and the pattern for the next call. It even mentions an alternative. The output schema is said to exist but not shown; the description summarizes the key fields. The only gap is the undocumented `offset` parameter, which could confuse an agent. Overall, it's nearly complete for its purpose.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must compensate for all parameters. It explains `since` (ISO 8601 timestamp with example) and `limit` (max 1000 per page), which is helpful. However, it omits any explanation for `offset`, which appears in the schema as a parameter with default 0. Given the keyset-based nature, offset is likely irrelevant or discouraged, but the description doesn't clarify its purpose or whether it should be used. This partial coverage earns a 3.

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

    Purpose5/5

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

    The description opens with a specific verb and resource ('List opportunities added or updated since a timestamp') and immediately distinguishes itself from pagination-based searches. It clearly names the alternative (search_opportunities) and the purpose (incremental sync), so an agent can tell it apart from sibling list tools without inspecting schemas.

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

    Usage Guidelines5/5

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

    It explicitly instructs when to use this tool: 'Use this for incremental sync instead of paginating through search results.' This is a direct usage directive that contrasts with the pagination-filled search_opportunities. The description also implies when not to use it (when you need full result sets) by highlighting the incremental sync advantage.

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

  • Behavior4/5

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

    Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds return-shape guidance (each entity's uei), the within_days constraint, optional narrowing filters, and the limit cap, which are useful beyond the annotations. No contradiction exists.

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

    Conciseness5/5

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

    The description is well organized with a clear opening statement, brief use-case rationale, a compact bullet summary of parameters, and a chaining hint. Every sentence adds useful information and no filler is present.

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

    Completeness4/5

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

    For a 5-parameter read-only list tool, the description covers purpose, usage, key parameters, return shape, and the follow-up get_entity call. The main gap is that offset is completely absent from the description despite being part of the schema, but the output schema and annotations reduce the impact of that omission.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description bears the burden of documenting parameters. It covers within_days range/default, state and naics as optional filters, and limit's max value. It omits offset, but the schema shows its default, and the documented parameters are meaningfully explained.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: "Find SAM registrations expiring within N days." It also explicitly distinguishes this from a name lookup, so an agent can separate it from sibling tools like search_entities or get_entity.

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

    Usage Guidelines4/5

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

    The description clearly frames the tool as a monitoring/list query and gives concrete use cases: self-monitoring and checking teammates/subs. It also tells the agent to chain results into get_entity for full registration records. It does not explicitly name every alternative search tool, but the guidance is strong enough to route correct usage.

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

  • Behavior4/5

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

    Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful behavioral detail beyond annotations: the summary block composition, paginated data rows, a 'read summary first' directive, and the limit cap of 250. This gives the agent operational expectations without contradicting the annotations.

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

    Conciseness5/5

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

    The description is compact and front-loaded: the core purpose appears first, followed by concise parameter bullets and a note about the response structure. Every sentence adds information, with no filler or repetition of the tool name.

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

    Completeness4/5

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

    Annotations cover the safety profile, an output schema exists, and the description supplies enough operational guidance to call the tool: required UEI, limit cap, pagination, and the summary block. It could add explicit date-parameter guidance, but the remaining gaps are minor given the schema and titles.

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

    Parameters3/5

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

    With 0% schema description coverage, the description must compensate for parameter meaning. It explains uei as the SUB's 12-character UEI and constrains limit to max 250, which is valuable. However, it does not describe offset, date_from, or date_to semantics or formats, leaving part of the parameter space undocumented.

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

    Purpose5/5

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

    The description states a specific verb and resource: 'Get every prime that has paid THIS company as a subcontractor,' and immediately distinguishes the direction from get_prime_subawards. This makes the tool's purpose unambiguous and clearly differentiates it from the closest sibling.

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

    Usage Guidelines5/5

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

    The description explicitly names get_prime_subawards as the opposite-direction alternative, telling an agent when to prefer this tool. It also provides domain context with 'Award & Compliance tool' and clarifies the entity being queried as the subcontractor.

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

  • Behavior4/5

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

    Annotations already cover safety (readOnlyHint, openWorldHint, idempotentHint, destructiveHint:false). The description adds non-obvious behavioral context: paginated `data` rows, a `summary` block with specific fields, and a recommendation to read `summary` first rather than summing pages. This exceeds what annotations and schema alone would tell the agent.

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

    Conciseness5/5

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

    The description is front-loaded with core purpose, then a sibling-contrast sentence, then tight parameter bullets, then a response-reading hint. Every sentence and bullet earns its place; no filler or repetition.

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

    Completeness4/5

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

    The required parameter is explained, direction vs sibling is crystal clear, pagination and summary handling are described, and an output schema exists so return structure need not be repeated. The only gap is optional parameters (`offset`, `date_from`, `date_to`) not being explained, though their purpose is fairly inferable from names.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must compensate. It does explain `uei` (12-character PRIME's UEI) and `limit` (max 250), but leaves `offset`, `date_to`, and `date_from` undocumented. With 5 parameters, covering only 2 leaves clear gaps that the agent must infer from parameter names and defaults.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Get every subaward THIS company (as a prime) paid out, "who did they subcontract to."' It clearly defines the direction of the query and contrasts it with get_prime_relationships, so an agent can distinguish the tool from its closest sibling immediately.

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

    Usage Guidelines5/5

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

    Explicitly names the alternative get_prime_relationships, explains the opposite direction, and states that both use the same 'uei' parameter, telling the agent to 'pick based on which direction you're asking.' This is model when-to-use guidance with a clear exclusion.

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

  • Behavior5/5

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

    The annotations already mark this as read-only, idempotent, and non-destructive, and the description adds substantial behavioral detail beyond that: the ~907 node scope, the free tier, the cgac warning that it is 'NOT the same code space as awarding_agency_code', the direct-children-only behavior of parent_id, and the search minimum length of 2 chars. This materially improves an agent's ability to use the tool correctly.

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

    Conciseness4/5

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

    The description is well-structured with a clear opening sentence and bulleted parameter explanations. It is longer than minimal but nearly every line adds useful context, such as the code-space warning and the limit cap. Minor redundancy exists between the opening usage sentence and the search bullet, preventing a perfect score.

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

    Completeness4/5

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

    For an 8-parameter tool with no schema descriptions, the description covers the core workflow, pagination via parent_id, and important integration caveats. The output schema exists, so return value documentation is not required. The main gaps are the undocumented is_active and offset parameters, which leave a small but real completeness hole.

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

    Parameters4/5

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

    With schema description coverage at 0%, the description carries the burden and explains six of eight parameters: type, cgac, parent_id, hierarchy_level, search, and limit. The cgac explanation is especially valuable. However, is_active and offset receive no explanatory text, so the coverage is strong but not complete.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Search the federal agency organization tree (~907 departments/agencies/offices).' It clearly distinguishes this from related siblings such as get_organization and lookup_agency by framing it as the search/list entry point over the hierarchy tree.

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

    Usage Guidelines4/5

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

    It gives clear usage context: 'Market Research tool. Use search to resolve a name/acronym to an org, or parent_id to list an agency's direct sub-units.' It also explains how to chain results to get_organization or page through children. It does not explicitly enumerate when not to use this tool versus siblings like lookup_agency or discover_offices, 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.

  • Behavior5/5

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

    Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds critical behavioral detail beyond annotations: there is no per-request date filter, data only exists from FY2025 onward, and sequences may start mid-way (e.g., P00026 instead of P00001) due to non-ingested history. It also tells the agent to inspect specific response fields (clamped, earliest_searchable, reason) to verify completeness.

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

    Conciseness5/5

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

    The description is organized with a front-loaded purpose statement, a critical caveat, a clear instruction for handling response incompleteness, and a concise parameter list. Every section earns its place and the format is easy to scan.

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

    Completeness4/5

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

    The output schema and annotations cover return values and safety traits, and the description provides the key data-floor caveat and window-block guidance. The only notable gap is the lack of pagination guidance via offset given the explicit 500-row limit on limit, which would be helpful for contracts with long modification trails.

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

    Parameters3/5

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

    With 0% schema description coverage, the description must compensate for parameter meaning. It clarifies that piid is the 'award PIID' and notes limit has a max of 500, but it fails to mention offset at all and does not explain that limit controls the number of rows returned. This is partial compensation but not complete.

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

    Purpose5/5

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

    The description states a specific verb ('Get') and resource ('EVERY transaction row for a contract') and explicitly contrasts itself with get_contract, which returns only the latest snapshot. This clearly distinguishes the tool from its sibling and conveys the exact scope of what it returns.

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

    Usage Guidelines5/5

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

    The description explicitly says this tool provides the full modification trail 'not just the latest snapshot get_contract gives you', which tells an agent when to choose this tool over get_contract. It also gives a practical usage caveat about the FY2025 data floor and instructs checking the response's window block before treating results as complete.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context: returning the same shape regardless of which identifier is supplied, and noting the free Developer tier. No contradiction with annotations exists.

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

    Conciseness5/5

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

    The description is compact and front-loaded, with a clear opening sentence followed by a concise bulleted parameter guide. Every sentence adds value, including the 'one tool, not two' clarification and the same-shape guarantee. No filler or redundant restatement of the name/schema.

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

    Completeness5/5

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

    For a simple two-parameter lookup with a comprehensive output schema and clear annotations, the description covers everything needed to invoke the tool correctly: identifier sources, the exactly-one rule, the free-tier context, and response consistency. The absence of explicit not-found behavior is acceptable given the openWorldHint and output schema.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description carries full responsibility for explaining parameters. It does so excellently: uei is defined as a 12-character Unique Entity ID with source fields from other tools, and cage_code is sourced from contract/award records. It also clarifies the exactly-one-parameter constraint, which the nullable schema alone does not convey.

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

    Purpose5/5

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

    The description uses a specific verb and resource: 'Get one SAM entity's full registration record by UEI or CAGE code.' It also explicitly addresses the apparent duplication by noting that UEI and CAGE are two keys for the same question, which distinguishes this from being misread as two tools. This clearly separates it from sibling entity search/lookup tools.

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

    Usage Guidelines4/5

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

    The description clearly states when to use this tool: when you need a full SAM entity record and already have a UEI or CAGE code. It also gives concrete source guidance for each identifier, e.g., UEI from search_entities/search_companies and CAGE from contract/award records. It does not explicitly enumerate exclusions or when to prefer another tool, but the guidance is strong and actionable.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and no destroy. The description adds meaningful behavior beyond this: 'Factual, never scored', the performance-stay implication of status=Open, and the fact that each result includes a solicitation number for follow-up. No contradiction with annotations.

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

    Conciseness5/5

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

    The purpose is front-loaded, and the parameter guidance is a tight bulleted list with no filler. Every sentence adds value, and the length is justified given 12 parameters with zero schema descriptions.

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

    Completeness4/5

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

    For a zero-required-parameter search tool with an output schema, the description covers the core filters and provides a sibling handoff. Yet five parameters remain effectively undocumented in both the schema and description, so an agent may not know the expected format or semantics for agency, filed_from, filed_to, offset, and case_type.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description carries the burden. It explains protester versus search, the full-text coverage of search, case_number format, outcome/status enums, sort values, and limit max. However, agency, filed_from, filed_to, offset, and case_type are only listed without added meaning, leaving a partial gap.

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

    Purpose5/5

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

    The description opens with a precise action and resource: 'Search GAO bid protests: who protested, on which solicitation, when, and the outcome.' It also distinguishes itself from the sibling get_protests_on_solicitation by telling the agent to pass a solicitation number to that tool for every protest on the same procurement.

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

    Usage Guidelines4/5

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

    The description gives clear usage context, such as calling status=Open the live set and recommending outcome=Sustained for protests that disturbed an award. It also routes the agent to get_protests_on_solicitation for broader lookup on a single procurement, though it does not explicitly list when not to use this tool versus other siblings.

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

  • Behavior5/5

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

    The description discloses important behavioral quirks beyond the annotations: data coverage starts FY2025, date_from values before the floor are silently clamped rather than rejected, and the response's window block reports what actually ran. It also warns about the missing cage_code field, which prevents a common cross-check operation. These details go well beyond the readOnly/idempotent hints.

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

    Conciseness5/5

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

    The description is well-structured: purpose first, then the alternative-tool routing, then a compact bullet list of parameter constraints, then critical data-coverage and schema caveats. Every sentence contributes useful information, and the formatting makes it easy to scan.

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

    Completeness4/5

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

    The description covers the most important operational constraints — date-floor clamping, response window disclosure, no cage_code, and key parameter limits — and an output schema exists to cover return-value details. However, with 14 optional parameters and zero schema descriptions, a few parameter formats remain unspecified, such as date string format and accepted sort_by/sort_order values. This is a minor but real gap.

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

    Parameters3/5

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

    With schema description coverage at 0%, the description adds meaning for several key parameters: prime_uei/sub_uei are exact 12-char, piid is the PRIME contract's PIID, naics must be exactly 6 digits, sub_name is a substring with a 3-char minimum, and limit maxes at 250. However, it leaves other parameters like agency, offset, date_to, amount_min/max, sort_by, and sort_order without any format or value guidance, so the compensation is only partial.

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

    Purpose5/5

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

    The description opens with a precise verb and resource — 'Search FFATA subawards: who primes paid as subcontractors' — making the tool's function immediately clear. It also distinguishes this search tool from the narrower sibling tools get_prime_subawards and get_prime_relationships, so an agent can tell them apart without inspecting schemas.

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

    Usage Guidelines5/5

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

    The description explicitly states when to prefer alternatives: for a single company's subs-paid or primes-that-paid-them reverse lookups, use get_prime_subawards or get_prime_relationships when you already have one UEI. It also provides a negative usage constraint — there is no cage_code field, so CAGE cross-checking is not possible through this tool.

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

  • Behavior5/5

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

    Even with readOnlyHint, openWorldHint, idempotentHint, and destructiveHint annotations already present, the description adds meaningful behavioral detail: vehicles persist beyond a rolling window, the ceiling placeholder 999999999999/.99 is explained as FPDS's 'no negotiated ceiling' marker, and active_only is defined as filtering by period of performance. It also discloses that the result set returns award_id_piid and that limit maxes at 250, giving the agent practical expectations beyond the annotations.

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

    Conciseness5/5

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

    The description is dense but efficiently organized: a one-line purpose, a brief contextual note, a scannable parameter list, and a closing pointer to related tools. Every sentence adds value and there is no filler or redundant repetition of schema information.

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

    Completeness4/5

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

    For a 15-parameter search tool with no schema descriptions, the description covers the most semantically important filters and caveats, including the ceiling placeholder behavior and the long-lived nature of vehicles. An output schema exists, so return structure is already available. Still, pagination, date range semantics, and a few filter parameters receive no explanation, leaving minor gaps for an agent operating without additional examples.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description carries the burden of parameter explanation. It does this well for the non-obvious parameters: uei/parent_uei exact 12-character format, idv_type's allowed values, active_only semantics, ceiling_min/ceiling_max and the FPDS placeholder, and limit max 250. However, it leaves several parameters undocumented—naics, agency, offset, date_from, date_to, sort_by, sort_order—though these are somewhat self-explanatory from their names.

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

    Purpose5/5

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

    The description opens with a specific verb and resource—'Search contract vehicles'—and enumerates the exact vehicle types: IDIQs, GWACs, FSS schedules, BPAs, BOAs. It also distinguishes this tool from prime-contract search by explaining that vehicles are long-lived and not limited to a rolling window, which helps differentiate it from siblings like search_contracts.

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

    Usage Guidelines4/5

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

    The description provides clear context for when this tool is appropriate: it is an 'Award & Compliance tool' for finding contract vehicles, and it explicitly contrasts vehicle search with prime-contract search. It also points to downstream tools (get_vehicle, get_vehicle_holders) but does not name a direct alternative or explicitly state when not to use it beyond the prime-contract distinction.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavior beyond annotations: it discloses that the tool returns only each WD's identifier and points to get_wage_detemination for full detail, and it clarifies date filtering as a 'dated-date window' with format YYYY-MM-DD. This is useful, though it does not mention pagination or rate limits.

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

    Conciseness5/5

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

    The description is efficiently structured: one-sentence purpose, one-sentence usage routing, a compact bullet list of parameters, and a closing note on return behavior. Each sentence earns its place, and the most decision-relevant guidance (when to use vs. the sibling) is front-loaded.

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

    Completeness4/5

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

    For a 12-parameter search tool with zero schema description coverage, the description is nearly complete: it covers the search scope, filter semantics, sort options, limit, and how to use the results via get_wage_detemination. The only material gap is the undocumented offset and sort_order parameters, which are needed for full control of pagination and result ordering.

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

    Parameters4/5

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

    With 0% schema description coverage, the description carries the full burden for parameter semantics. It provides concrete meaning for most parameters: type enum values, state format, country as substring, wd_nember examples, active_only semantics, date format, construction_type values, sort_by options, and limit cap. However, offset and sort_order appear in the schema but are not described, leaving an agent guessing about pagination and sort direction.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Search Davis-Bacon (DBA), Service Contract Act (SCA), and CBA wage deteminations by jurisdiction, number, or revision date.' It distinctishes this from the sibling get_wds_by_location by explicitly naming what this tool does and what it does not do. The purpose is unambiguous and well differentiated.

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

    Usage Guidelines5/5

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

    The description gives explicit when-to-use guidance: 'Bid & Proposal / Negotiate tool. For "which WDs apply where I'm bidding" use get_wds_by_location instead (the compliance shortcut); use this one when you need to browse/filter broadly or track revisions over time.' This names the alternative and states the condition that selects this tool, leaving no ambiguity.

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

  • Behavior4/5

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

    The description discloses that it returns matching exclusion records with reason, agency, and dates. It aligns with readOnlyHint and idempotentHint, adding behavioral detail beyond annotations without contradiction.

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

    Conciseness5/5

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

    The description is concise, well-organized with bullet points for parameters, and uses clear, direct language without redundant information.

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

    Completeness5/5

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

    Provides comprehensive guidance: what it does, when to use, required input, and the nature of the output. The presence of an output schema means detailed return fields need not be enumerated.

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

    Parameters4/5

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

    The description explains the meaning of three parameters (name, uei, cage_code) but omits the 'limit' parameter, which is present in the schema with a default. Coverage is high but not complete.

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

    Purpose5/5

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

    The description clearly states the tool checks the SAM.gov exclusions list (debarred/suspended entities) and distinguishes it from sibling search tools by its specific exclusion-checking purpose.

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

    Usage Guidelines5/5

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

    Explicitly states when to use ('before subcontracting or teaming, and again periodically post-award') and provides a precondition ('Provide at least one of: name, uei, cage_code').

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

  • Behavior5/5

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

    Annotations already mark it readOnly/idempotent, and the description adds rich behavior: full pagination, limit cap of 1000, sort allowed values, and the source-specific notice_id null behavior for FPDS rows. This explains data provenance consequences the schema and annotations cannot express.

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

    Conciseness5/5

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

    The purpose is front-loaded, followed by short bullets for parameters and a focused caveat about notice_id/source. The longer source explanation earns its place because it prevents an agent from assuming every row has a notice_id.

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

    Completeness5/5

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

    Given an output schema exists and annotations cover read-only/idempotent behavior, the description covers the remaining operational details: pagination cap, sort semantics, UEI format, and source-specific null behavior. An agent has enough 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.

    Parameters4/5

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

    Schema description coverage is 0%, so the description must compensate. It explains uei's 12-character format, sort_by acceptable values, sort_order values, and limit max. Offset is not described, but its default is in the schema and pagination is implied by 'full paginated.'

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

    Purpose5/5

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

    The description opens with a specific verb-resource pair: 'Get the full paginated award history for one company (every individual award, not just the summary totals get_company_profile gives you).' This clearly distinguishes it from the sibling get_company_profile and makes the scope explicit.

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

    Usage Guidelines4/5

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

    It explicitly contrasts with get_company_profile (summary totals vs individual awards) and identifies the tool as Capture & Teaming/Pro-only. It does not cover all alternative routes like search_awards, so it stops short of full when-to-use/when-not-to-use guidance.

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

  • Behavior4/5

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

    Annotations already declare readOnly, idempotent, and non-destructive behavior, so the bar for additional disclosure is low. The description adds useful behavioral context beyond annotations: 404 when no FPDS activity exists, 503 during index building with retry guidance, and 'Free on every plan.' This meaningfully helps an agent handle edge cases.

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

    Conciseness5/5

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

    The description is tight and well-structured: a one-sentence summary, a usage line, a parameter definition, and an error-handling note. No filler; each sentence adds necessary information and the most important behavioral context is front-loaded.

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

    Completeness5/5

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

    For a single-parameter read-only tool with an output schema, the description covers the main needs: what it returns, when to use it, where the parameter comes from, and expected errors. No significant gap remains for an agent to invoke it correctly.

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

    Parameters4/5

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

    The input schema provides no description for office_code (0% schema coverage), but the tool description compensates by defining it as the office's FPDS office code and giving concrete sources: discover_offices or a contract/award record. This is sufficient for the single required parameter.

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

    Purpose5/5

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

    The description states a specific verb and resource: 'Get one contracting office's full buying profile' and lists the content (obligations, competition, set-aside lean, NAICS codes). It clearly differentiates this from sibling tools by emphasizing the office-level, cross-NAICS scope as opposed to single-NAICS tools.

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

    Usage Guidelines5/5

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

    Explicit guidance is given: use this after discover_offices or when you already have an office_code from a contract/award record. It also states the scope as the office's 'ENTIRE buying pattern, not just one NAICS,' which implies when not to use it and distinguishes it from narrower alternatives.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: 'Pro only' access restriction, 'Factual positioning, not a recommendation', and the fact that each sample's recipient_uei and award_id_piid chain into get_company_profile / get_contract. It does not detail failure modes or edge cases, but for a read-only query tool with strong annotations, this is a solid disclosure.

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

    Conciseness5/5

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

    The lead sentence front-loads the core purpose, followed by a compact usage/distinction paragraph, then a scannable bullet list of parameters, and finally output-chaining and disclaimer notes. Every sentence earns its place, and the structure is appropriate for a tool with 10 parameters and 0% schema descriptions.

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

    Completeness5/5

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

    Given the tool's complexity, the description covers purpose, usage alternative, access restriction, all parameters at a functional level, output sample linkage, and interpretational caveats. The output schema exists to handle return-value details, and annotations handle the read-only safety profile. The only deferred information is the benchmark param caveats, but that is a reasonable reference to a sibling tool's docstring.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description carries the full burden for parameter documentation. It covers naics and value with formats and required status, explains that the filter parameters behave the same as get_price_benchmark, and gives sample_limit's max of 25. It defers detailed caveats (pricing_type raw-code, action_date issues) to get_price_benchmark's docstring rather than spelling them out, which is a minor gap that prevents a 5.

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

    Purpose5/5

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

    The description states a specific verb and resource: 'Get where YOUR specific contract/bid value sits (percentile rank) against real comparable contracts, plus a sample of the nearest ones by value.' It also explicitly distinguishes itself from get_price_benchmark, naming what that tool does differently. An agent can tell exactly what this tool computes and how it differs from its closest sibling.

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

    Usage Guidelines5/5

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

    It provides explicit usage context: 'Bid & Proposal / Negotiate tool, Pro only' and labels this the "is my number reasonable" check. It contrasts with get_price_benchmark by noting the benchmark gives a market range without placing any one number in it, which tells the agent when to choose which tool. The closing 'Factual positioning, not a recommendation' further sets expectations for the tool's output.

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

  • Behavior5/5

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

    Beyond the readOnly/idempotent annotations, the description adds behavioral details: it is 'Factual, signals-not-scores, no win-probability guess' (indicating the nature of outputs) and 'Not windowed' (suggesting no time filtering). It also notes the consistency of the 'incumbent_uei' field across tools, enhancing predictability. No contradictions with annotations.

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

    Conciseness4/5

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

    The description is moderately detailed but each sentence adds value: it states the purpose, tool category, nature of outputs, contrast with a sibling, parameter source, and output field consistency. It is well-structured and avoids redundancy, though slightly longer than strictly necessary.

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

    Completeness4/5

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

    The description provides substantial context: tool type, Pro-only restriction, output nature (signals), and difference from search_recompetes. It also gives clues about the response (e.g., includes incumbent_uei). However, it does not elaborate on the exact structure of the vulnerability signals or response format, which might be expected given the absence of an output schema in the provided context.

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

    Parameters4/5

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

    The only parameter 'piid' is a string, and the description provides context on its provenance ('from search_recompetes, get_contract, or get_vehicle'), which helps an agent understand what value to supply. It does not specify format constraints, but the guidance is sufficient for typical use. The description also clarifies that 'incumbent_uei' in the response corresponds to the 'uei' parameter in other tools, indirectly aiding parameter understanding.

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

    Purpose5/5

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

    The description clearly states the tool's primary action: 'Get one recompeting/expiring contract by PIID' and what it provides (incumbent-vulnerability signals). It also distinguishes itself from the sibling 'search_recompetes' by noting it is a direct ID lookup, making the purpose unambiguous.

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

    Usage Guidelines5/5

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

    The description explicitly contrasts with 'search_recompetes' ('Not windowed, a direct ID lookup') and indicates when to use this tool (when you already have a specific PIID). It also specifies the context ('Capture & Teaming / Post-Award tool') and directs where to obtain the PIID ('from search_recompetes, get_contract, or get_vehicle'), providing clear guidance for selection.

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

  • Behavior5/5

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

    Even with annotations already indicating a safe read-only operation, the description adds substantial behavioral context: case-insensitive substring matching, min 2 chars, the distinction between SAM-only and FPDS-only metrics, and the caveat that a company can show $0 in one metric and millions in the other. It also clarifies that the returned uei is the same identifier accepted by sibling tools.

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

    Conciseness4/5

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

    The description is dense but well-structured with a brief opening paragraph and bulleted parameter notes. Every sentence adds distinct semantic value, though it is longer than average; the length is justified by the zero schema coverage and the need to explain field-level return semantics.

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

    Completeness4/5

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

    For a search tool with six parameters and an output schema, the description covers overall scope, parameter restrictions, sibling alternatives, and return-value semantics thoroughly. The only notable gap is offset/pagination behavior, and the q-required wording creates minor schema friction. Overall, an agent has enough context to select and invoke this tool correctly.

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

    Parameters4/5

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

    Schema coverage is 0%, so the description carries the full burden. It explains q, naics, agency, naics_small, and limit with useful details like min length and max value. However, offset is not described at all, and q being called REQUIRED conflicts with the schema's nullable/default-null declaration, even if q is semantically necessary for a meaningful search.

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

    Purpose5/5

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

    Description states a specific verb and resource: 'Search companies that have WON at least one federal award, by name, across both SAM Award Notices and FPDS prime contracts.' It distinguishes itself from search_entities and get_company_profile, so an agent can immediately tell what this tool does and does not do.

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

    Usage Guidelines5/5

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

    Provides explicit routing guidance: use search_entities for ALL registered SAM firms, use get_company_profile for direct UEI lookup, and clarifies that naics/agency/naics_small only narrow an existing name search rather than working standalone. Also notes the Pro-only restriction.

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

  • Behavior5/5

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

    Even with readOnlyHint, openWorldHint, idempotentHint, and destructiveHint annotations already present, the description adds meaningful behavioral context: it emphasizes real past performance rather than mere registration, states that results include each firm's `uei`, suggests follow-on chaining to get_company_profile or check_exclusion, and warns about the agency field's limitations with contract-level awarding_agency_code filters. 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.

    Conciseness4/5

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

    The description is well-structured with an introductory purpose statement, a use-case distinction, a bulleted parameter list, and return/chaining guidance. It is mostly tight and front-loaded, though the appended 'NOTE' is somewhat awkwardly phrased and the emphasis on 'REAL' past performance is slightly redundant with 'not just who's registered for it.' Still, it earns its place overall.

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

    Completeness4/5

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

    For a tool with 8 optional parameters and no required fields, the description is quite complete: it explains the core use case, differentiates from siblings, documents most parameters, and notes return/chaining behavior. The main missing piece is offset/pagination semantics, and the agency note contains a field-name inconsistency (`agencies` vs. the schema's `agency`). These are minor gaps given the output schema and annotations already provide additional context.

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

    Parameters4/5

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

    Since schema description coverage is 0%, the description carries the burden of explaining parameters, and it does so well for most fields: naics is exact 6-digit, agency is crosswalk-resolved with examples, state is 2-letter place-of-performance, set_aside lists valid values, psc is exact, keywords match award description, and limit has a max of 50. However, the `offset` parameter is not explained at all, which is a small but real gap in otherwise strong parameter documentation.

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

    Purpose5/5

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

    The description clearly states the tool's purpose with a specific verb and resource: 'Find teaming/partner firms with REAL past performance, by NAICS + agency + state + set-aside.' It also distinguishes itself from sibling tools by naming search_companies and get_company_peers and explaining the differences. An agent can immediately understand what this tool does and how it differs from nearby alternatives.

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

    Usage Guidelines5/5

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

    The description explicitly frames the tool as answering the 'who could I team with' question and identifies two alternatives: search_companies for open name search and get_company_peers for similarity to one specific company. This gives clear when-to-use guidance and names the siblings it should not be confused with. 'Capture & Teaming tool, Pro only' adds an access constraint as well.

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

  • Behavior5/5

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

    Annotations already mark the tool readOnly, openWorld, idempotent, and non-destructive, and the description adds meaningful behavioral detail beyond that: it explains the value_basis enum difference from get_price_benchmark, clarifies that next_year/second_year returns escalated out-year rates directly, and discloses that escalation is based on median year-over-year ceiling-rate growth rather than a guessed flat escalator.

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

    Conciseness5/5

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

    The description is long but every sentence earns its place given the tool's 12 parameters and distinct output semantics. It is front-loaded with a one-sentence summary, then uses a scannable bullet list for parameters, and closes with the response shape. No filler or redundancy.

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

    Completeness5/5

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

    The description covers the data source (GSA CALC), proposal use case, Pro-only access, all parameters, vendor lookup scenario, value-basis distinction from a sibling, and expected response fields including rate_distribution, escalation, category_breakdown, and rates_sample. With 12 parameters and no schema param descriptions, this is complete enough for an agent to select and invoke the tool correctly.

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

    Parameters5/5

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

    The schema description coverage is 0%, so the description fully compensates by explaining every parameter with examples and constraints (e.g. match 'contains' vs 'exact', education_level values, min/max_experience range, naics via SIN bridge, worksite values, business_size values, value_basis enums, sample_limit max 25). It adds meaning far beyond the raw schema titles.

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

    Purpose5/5

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

    The description states a specific verb and resource: get an awarded labor-rate (should-cost) benchmark for a labor category from GSA CALC. It also clearly distinguishes itself from get_price_benchmark by framing the tool as the 'labor-cost input for a proposal' versus a 'contract-value read.'

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

    Usage Guidelines4/5

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

    The description gives clear usage context: 'Bid & Proposal / Negotiate tool, Pro only,' and explains when to use the vendor parameter for checking a competitor's or teammate's rate card. It references get_price_benchmark as the paired tool, which helps an agent choose between them, though it does not exhaustively discuss when not to use the tool relative to all wage-related siblings.

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

  • Behavior5/5

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

    Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds substantial non-obvious behavioral context: the whole GAO case resolution, docket spelling normalization, pre-computed booleans, and the earliest_open_due_date semantics. This goes well beyond what the annotations provide.

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

    Conciseness5/5

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

    The description is dense but each sentence earns its place: the lead sentence states scope, the return fields are listed with usage advice, and the surprising GAO docket behavior is explained in a final paragraph. There is no filler or repetition of structured metadata.

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

    Completeness5/5

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

    For a single-parameter read tool, the description covers input sourcing, return-field semantics, pre-computed flags to check first, deadline meaning, and the cross-docket edge case. Even with an output schema present, the description still summarizes the return behavior usefully and is complete for safe invocation.

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

    Parameters5/5

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

    The schema has 0% description coverage, so the description carries the full burden for the single parameter. It explains that solicitation_number comes from three named search tools, identifies a solicitation, and that GAO spelling variants still resolve to the complete case set. This fully compensates for the missing schema description.

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

    Purpose5/5

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

    The description states a specific verb and resource: it gets every protest filed on ONE solicitation, including pending protests and the statutory GAO decision deadline. This clearly distinguishes it from broader tools like search_protests and from single-record tools like get_contract.

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

    Usage Guidelines4/5

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

    The description tells the agent where to source the solicitation_number from (search_opportunities, search_contracts, or search_protests), instructs it to check any_open and any_sustained before scanning the protests list, and labels the tool as Award & Compliance/Pro only. It does not explicitly name search_protests as the alternative for broader queries, but the scoping language makes the intended use case clear.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds high-value behavioral context beyond annotations: the vehicle_family block's semantics, the FPDS quirk where each awardee has its own PIID, the scoping of transaction_rollup/orders_rollup fields, and the 999999999999 ceiling placeholder meaning 'effectively unlimited.' This prevents serious misinterpretation of returned data.

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

    Conciseness4/5

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

    The description is long, but nearly every sentence earns its place by explaining a FPDS quirk or disambiguating from get_vehicle_holders. The structure is clear: purpose, tool category, parameter, then caveats. The 'Award & Compliance tool' line adds minimal value, and the text could be tightened slightly, but the density is justified by the semantic complexity.

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

    Completeness5/5

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

    The description is complete for an agent to correctly select and invoke this tool. It specifies the purpose, the parameter, the key alternative, and the surprising data behaviors around multi-award vehicles and placeholder ceilings. Since an output schema exists, the description does not need to enumerate return values, and it appropriately focuses on the caveats that structured data cannot convey.

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

    Parameters4/5

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

    The schema has zero description coverage, so the description must carry parameter meaning. The bullet '- piid: vehicle's own PIID (from search_vehicles or get_contract_vehicle)' clarifies the exact value expected and its source, which is important because a user could otherwise pass the wrong PIID. It does not provide an example or format details, but for a single simple string parameter this is sufficient guidance.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Get one contract vehicle's detail: ceiling, period, and what's been ordered through it.' It explicitly differentiates this tool from get_vehicle_holders by noting that this one only counts family sibling PIIDs while get_vehicle_holders lists them. The purpose is unambiguous and distinct from sibling tools.

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

    Usage Guidelines5/5

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

    The description gives clear context for when to use this tool and explicitly directs the agent to get_vehicle_holders for a real family-wide count: 'use get_vehicle_holders for the real family-wide count.' It also tells the agent where the piid comes from ('from search_vehicles or get_contract_vehicle'), covering both the source of the input and the key alternative.

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

  • Behavior5/5

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

    Even though annotations already mark this as read-only, idempotent, and non-destructive, the description adds valuable behavioral context: each row is one classification's hourly base wage plus fringe tied to its WD, type is restricted to DBA or SCA with a note that CBAs have no rate table, and state filtering works through the WD's jurisdictions. This goes well beyond the annotation flags.

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

    Conciseness5/5

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

    The description is front-loaded with the core purpose, then gives sibling differentiation, then a tight bullet list of parameters. Every sentence contributes useful information and the structure makes it easy to scan quickly.

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

    Completeness4/5

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

    The description explains row semantics, main filtering behavior, and when to prefer a sibling tool, which is strong. It leaves three optional parameters (offset, sort_order, active_only) unexplained and does not mention pagination beyond 'limit: max 100,' but the presence of an output schema and rich annotations mitigates the impact.

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

    Parameters4/5

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

    With schema description coverage at 0%, the description compensates well for most parameters: classification is documented as a substring with an example, occupation_code as an SCA 5-digit code, wd_number as exact, type as DBA|SCA with the CBA caveat, and sort_by with valid values. However, offset, sort_order, and active_only are left undocumented, so parameter coverage is not complete.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Query prevailing-wage rates ACROSS wage determinations, by occupation,' and captures the core meaning with 'what does a given trade actually pay.' It also explicitly distinguishes itself from sibling tools that answer 'which WDs apply,' so an agent can easily tell them apart.

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

    Usage Guidelines5/5

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

    The description names two sibling tools that answer a different question and directs the agent to get_wage_rate_summary for aggregated distribution/floor across many WDs instead of paging through this tool. It also labels the tool as 'Bid & Proposal / Negotiate,' providing clear context for when it should be used.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, but the description adds genuinely useful behavior: only currently-active records, no date filter, statewide DBAs included regardless of county, and the default sort order that can bury DBA/SCA under CBA. This is exactly the kind of 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.

    Conciseness5/5

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

    The description is longer than average, but every section earns its place: use case, jurisdiction semantics, type-filter rationale, and limit. It is front-loaded with the core behavior and uses bullets for scannability. The VA/Fairfax example is concrete and illustrates exactly why the type filter matters.

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

    Completeness4/5

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

    Given the 5-parameter schema and existing output schema, the description covers the main use case, required state, optional county/type/limit semantics, and the sibling alternative for historical queries. The main gaps are the undocumented `offset` parameter and a slight ambiguity in 'omit for statewide only.' Overall it is nearly complete but not flawless.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description must explain parameters. It covers state (2-letter, required), county (optional, omit for statewide only), type (DBA/SCA/CBA with a sorting rationale), and limit (max 100). However, `offset` is never described and pagination is not explained, leaving a real usability gap for agents trying to retrieve more than one page.

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

    Purpose5/5

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

    The description leads with a concrete use case and states exactly what the tool does: 'Returns every currently-active DBA, SCA, and CBA record covering that jurisdiction.' It also distinguishes itself from sibling search_wage_determinations by explicitly saying this is not a historical query. That makes the purpose unmistakable.

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

    Usage Guidelines5/5

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

    The description explicitly defines when to use it: bidding a contract in a state/county and needing applicable wage determinations. It also names the alternative for historical queries ('use search_wage_determinations for that'). The parameter bullets add guidance on when to omit county and when to use the type filter.

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

  • Behavior5/5

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

    Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds meaningful context beyond those annotations by characterizing the data as a sparse subset (~52K notices), self-reported, and potentially unrepresentative of a company's full award book. This directly informs interpretation of results and complements the openWorldHint.

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

    Conciseness5/5

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

    The description is front-loaded with the core purpose and the critical caveat before moving to parameters. The bullet list is scannable and each sentence adds either selection guidance, data-quality context, or parameter semantics. No redundant restatement of the schema or title.

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

    Completeness4/5

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

    For a 10-parameter tool with no required parameters, the description covers the key selection context, data caveats, and most parameter semantics. An output schema exists, so return-value details are not needed. The only notable gap is pagination/offset behavior, which would be useful for agents working with large result sets.

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

    Parameters4/5

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

    Schema description coverage is 0%, but the description compensates well by listing most parameters with their meaning and format: awardee partial match, UEI, 6-digit NAICS, agency substring, USD for value bounds, and YYYY-MM-DD for dates. However, the 'offset' parameter is not mentioned, and pagination semantics beyond 'limit max 1000' are left undocumented.

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

    Purpose5/5

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

    The description clearly identifies the resource ('SAM Award Notices'), the question it answers ('who won, how much, when'), and its scope. It also explicitly contrasts itself with search_contracts, so an agent can immediately distinguish this tool from the most likely sibling alternative.

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

    Usage Guidelines5/5

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

    The description gives explicit guidance: use search_contracts for the comprehensive award record, and use search_awards specifically when the question concerns SAM-noticed awards. It also warns about the sparse, self-reported nature of the data, preventing misuse.

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

  • Behavior5/5

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

    Reveals behavioral details beyond the annotations, such as Pro-gated contact fields, the recompete signal chaining to get_contract/get_vehicle, and the default active_only filter. This adds valuable transparency about data availability and cross-tool integration.

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

    Conciseness5/5

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

    The description is well-structured, starting with a clear purpose, then a parameter list with examples, and a separate note on recompete and contact fields. It packs substantial information without redundancy or fluff.

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

    Completeness4/5

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

    Given that an output schema exists, the description provides sufficient context about return fields (e.g., incumbent_piid, poc_email) and cross-tool usage. It lacks explicit pagination details but includes defaults for limit and offset. Overall, it is fairly complete for a search tool.

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

    Parameters4/5

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

    Provides meaningful explanations for key parameters (source, naics, is_recompete, amount_min/max, active_only, keywords, sort_by) with concrete examples. However, several parameters (limit, offset, state, agency, status, set_aside, etc.) are not explicitly described, though their names are self-explanatory. Overall, adds value but not exhaustive.

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

    Purpose5/5

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

    Clearly states the tool's purpose as searching procurement forecasts, explicitly distinguishing them as forward-looking pre-solicitation. Names the alternative tool 'search_opportunities' for live notices, making the scope unambiguous.

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

    Usage Guidelines5/5

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

    Provides explicit guidance on when to use this tool versus alternatives, and includes detailed parameter explanations with examples (e.g., NAICS prefix matching, recompete chaining). Directs users to related tools for additional context.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, but the description adds substantial behavioral detail beyond that: it is 'Pro only,' 'factual, never scored,' and explains the date_anchor semantics (current_end vs potential_end) and the options_exhausted_only filter for high-confidence recompetes. It also notes a limitation (get_recompete does not carry agency_code) — transparency that annotations cannot provide.

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

    Conciseness4/5

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

    The description is long but every sentence earns its place: it front-loads the core purpose, then uses a compact bullet-style parameter list, then explains return fields and a caveat. The structure is efficient for the tool's complexity, though it could trim a few redundant phrases (e.g., 'Capture & Teaming / Post-Award tool' could be merged). It remains appropriately sized for a 14-parameter tool.

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

    Completeness4/5

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

    Given the tool's complexity (14 filterable parameters, domain-specific behavior, and an output schema), the description is remarkably complete. It covers all critical filters, explains the date window semantics, clarifies the difference between the two date anchors, and tells the agent which fields to pass to which follow-up tools. It does not describe the `state`, `set_aside`, `amount_min/max` parameters, though those are relatively self-explanatory from their names. The existence of an output schema mitigates the need to describe return objects further.

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

    Parameters5/5

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

    With 0% schema description coverage, the description carries the full burden for parameter meaning. It explains naics (exactly 6 digits), agency (name substring), the ends_after_months/ends_within_months window with an example (0-18 = 'ending in the next 18 months'), date_anchor options, options_exhausted_only, incumbent_excluded (both true and false semantics), and all four sort_by values. It also maps return fields to next-step tools. This goes well beyond the schema and makes the parameters actionable.

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

    Purpose5/5

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

    The description opens with a specific verb-resource pair ('Find contracts entering recompete within a window') and immediately distinguishes itself from its sibling get_recompete, noting this is the search form while that is the single-contract form. It also clarifies two concrete use cases (market read for new business, and monitoring your own contract's expiration), giving the agent unambiguous purpose.

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

    Usage Guidelines5/5

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

    It explicitly states when to use this tool over the sibling get_recompete ('see get_recompete for the single-contract form') and describes the two primary contexts (Capture & Teaming / Post-Award). It also mentions it's a 'factual, never scored' read, which sets expectations for what it is not (no win-probability scoring). The pointer to get_recompete is a clear alternative-routing instruction.

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

  • Behavior5/5

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

    Annotations already establish read-only, open-world, idempotent, non-destructive behavior. The description goes beyond them by disclosing the transient 503 state, the conditionality of family_share_pct, and the behavior of sort_by when set_aside_family is combined with it.

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

    Conciseness5/5

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

    The purpose is front-loaded, the parameters are organized as a scannable bullet list, and the downstream usage and error caveat are placed at the end. Each section earns its place without redundant filler.

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

    Completeness5/5

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

    For a 10-parameter discovery tool with output schema and rich annotations, the description covers the entry-point position, filter semantics, result handoff to deeper tools, and a known transient failure mode. The only omissions are generic pagination fields, which do not materially impair an agent's ability to invoke the tool correctly.

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

    Parameters4/5

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

    With 0% schema description coverage, the description carries the burden and does document the non-obvious parameters: sector, prefix, min_market, max_competitors, set_aside_family, keywords, and sort_by, including value lists and edge semantics. It omits only limit, offset, and sort_order, which are generic pagination/sorting parameters.

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

    Purpose5/5

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

    The description opens with a specific verb and resource ('Discover NAICS codes') and states the distinguishing selection criterion: use when you don't already know which code to look at. It also frames the tool as the entry point into the NAICS/Market Pulse family, separating it from the get_naics_* siblings.

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

    Usage Guidelines5/5

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

    It explicitly says 'use this when you don't already know which NAICS code to look at' and explains that the returned naics_code should be passed to get_naics_market, get_naics_positioning, get_naics_simplified_acquisition, or get_naics_competition. This gives both the triggering condition and the downstream alternatives.

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

  • Behavior5/5

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

    Beyond the readOnly/idempotent annotations, it discloses that SAM registration agents are filtered out so the result is the actual decision-maker contact, and that the tool has separate IP + key burst limits and is rate-limited more tightly than other tools. This is genuine operational context that annotations do not carry, and it does not contradict the readOnlyHint=true annotation.

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

    Conciseness5/5

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

    Packs purpose, filtering behavior, sibling distinction, access restriction, parameter format, and a rate-limit caution into roughly 70 words, with the core purpose front-loaded and a clean bullet for the parameter. Every sentence carries distinct information and earns its place.

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

    Completeness5/5

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

    Complete for a single-parameter lookup: an output schema exists (so return format needs no prose), annotations cover the safety profile, and the description covers what is filtered, when to use it versus the sibling, who can use it (Pro only), and the operational rate-limit caveat. Nothing an agent needs to call it correctly is missing.

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

    Parameters4/5

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

    Schema coverage is 0%, so the description carries the full burden for the sole parameter and compensates by defining uei as a 12-character Unique Entity ID. It provides the essential meaning and format, though it stops short of details like accepted formatting variants, leading-zero handling, or invalid-input behavior.

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

    Purpose5/5

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

    States a specific verb+resource: 'Resolve a vendor's REAL decision-maker contact.' It explicitly excludes SAM registration agents and positions the tool on the vendor/teammate side, contrasted with the buyer-side search_contacts, so it is clearly distinguishable from siblings without opening their schemas.

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

    Usage Guidelines5/5

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

    Names the alternative explicitly (search_contacts) and gives the selection rule: search_contacts finds a CONTRACTING OFFICER at an agency (buyer side), while this tool serves the vendor/teammate side. It also flags the Pro-only restriction and advises against tight loops across many UEIs due to tighter rate limits.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: the response contains three sibling top-level keys, subaward_rollup is Pro-only, and a legitimate subaward_count of 0 is not an error. These details help the agent interpret responses correctly.

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

    Conciseness5/5

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

    The primary purpose is front-loaded, followed by clear sibling-tool guidance and a compact parameter explanation. The return-key breakdown is lengthy but earns its place because it clarifies structure, Pro-only behavior, and an important zero-count edge case. No sentence is filler.

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

    Completeness5/5

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

    For a single-parameter read-only lookup tool with an output schema present, the description covers purpose, alternatives, parameter sourcing, response shape, and edge-case interpretation. Nothing essential for correct invocation is missing.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description must compensate. It defines piid as 'award PIID' and names the source tools where an agent can obtain it. This adds real meaning beyond the bare string schema, though it stops short of providing format examples or validation guidance.

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

    Purpose5/5

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

    The description states a specific verb and resource: 'Get one contract's LATEST transaction plus a roll-up of obligation/value totals across every modification.' It clearly frames this as the SUMMARY view and explicitly distinguishes it from get_contract_modifications and get_contract_vehicle, so an agent can select it correctly among siblings.

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

    Usage Guidelines5/5

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

    It provides explicit routing guidance: use get_contract_modifications for individual modification rows and get_contract_vehicle for the vehicle context. It also tells the agent where to source the piid parameter (search_contracts, search_recompetes, or company award history), making the when-to-use and how-to-prepare instructions concrete.

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

  • Behavior5/5

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

    Beyond the readOnly/openWorld/idempotent annotations, the description discloses the data source (whole FPDS prime-award market), time window (last 12 months), 404 behavior when no activity exists, and that it is factual and never scored. These are meaningful behavioral details not present in annotations.

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

    Conciseness5/5

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

    The description is front-loaded with the core purpose, uses a scannable metric list, then handles sibling distinction, parameter format, and behavior. Every sentence earns its place; the length is justified by the tool's analytical richness.

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

    Completeness5/5

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

    Given an output schema exists, the description need not spell out return values; it covers data scope, temporal window, 404 error, parameter format, and sibling tool boundaries. This is complete for a single-parameter read-only tool.

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

    Parameters4/5

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

    Input schema only says 'code' with no description; the description compensates by specifying '2-6 digit NAICS code'. It adds format and meaning, though it could offer more detail such as formatting examples or whether leading zeros are needed.

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

    Purpose5/5

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

    Description opens with a specific verb and resource ('Get how contested a NAICS market is') and enumerates concrete metrics. It explicitly differentiates itself from get_naics_market, get_naics_simplified_acquisition, and get_naics_positioning, so an agent can distinguish it from siblings.

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

    Usage Guidelines5/5

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

    States the intended workflow ('Market Research / Capture tool ... before committing a capture cycle') and names alternatives for size/concentration, small-buy bands, and language. This gives an agent clear when-to-use and when-to-choose-another-tool guidance.

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

  • Behavior5/5

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

    Beyond the readOnly/openWorld/idempotent annotations, the description discloses important behavioral caveats: size_standard is null with a 'pending_sba_table' status, users should check SBA directly for small-business eligibility, and a 404 occurs when there is no FY2025+ contract activity. These are non-obvious response behaviors 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.

    Conciseness5/5

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

    Every sentence earns its place: the core purpose is front-loaded, sibling distinctions follow, the parameter is documented, and response caveats are clearly appended. It is dense but not bloated.

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

    Completeness5/5

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

    For a single-parameter read tool with an output schema already present, the description covers purpose, parameter format, sibling alternatives, data caveats, and error behavior. Nothing essential is missing for correct invocation.

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

    Parameters4/5

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

    The schema only defines 'code' as a required string with 0% description coverage. The tool description compensates by specifying '2-6 digit NAICS code', adding format and range meaning beyond the raw schema.

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

    Purpose5/5

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

    Description states a specific verb and resource: 'Get the federal market profile for one NAICS code' and enumerates the output contents (spending, competition, set-aside leverage, top buyers, top incumbents). It also differentiates itself from siblings by labeling itself the 'AWARD side' of a market.

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

    Usage Guidelines5/5

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

    Provides explicit pairing guidance with sibling tools: get_naics_positioning for the solicitation side, get_naics_simplified_acquisition for small-buy bands, and get_naics_competition for contestability. This tells an agent exactly when to choose this tool over alternatives.

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

  • Behavior5/5

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

    Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value beyond these: the 24-month SAM opportunity window, the 'Free tier' note, and the specific 404 error when there is no activity for the code. No contradiction with annotations exists.

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

    Conciseness5/5

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

    The description is organized into four purposeful blocks: what data is returned, the use case and sibling pairing, the parameter spec, and the error condition. Every sentence carries information, and the core function is front-loaded.

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

    Completeness5/5

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

    For a single-parameter read-only tool, this is complete: data contents, time window, data source, use case, companion tool, parameter format, pricing, and error behavior are all covered. Safety is already handled by annotations, and an output schema exists to cover return values.

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

    Parameters4/5

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

    Schema coverage is 0%, so the description must compensate. It adds the '2-6 digit NAICS code' format constraint, which is the key semantic not present in the schema. It stops short of examples or invalid-input behavior, but for a single parameter this is strong compensation.

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

    Purpose5/5

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

    The description states a specific verb and resource ('Get the language and set-aside makeup for a NAICS code's SOLICITATION side') and enumerates exactly what is returned: phrase vocabulary, set-aside share, and top soliciting agencies. It also differentiates from the nearest sibling, get_naics_market, by explicitly contrasting the solicitation side with the award side.

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

    Usage Guidelines5/5

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

    The description gives an explicit use case ('This is what to put in a SAM/DSBS profile or capability statement so contracting officers find you') and names the companion tool with the condition for using it ('Pair with get_naics_market for the award side'). This routes the agent to the correct alternative without inference.

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

  • Behavior5/5

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

    Even though annotations already mark this read-only and idempotent, the description adds meaningful beyond-annotation behavior: it is free tier, factual and never scored, returns no pursuit recommendation, and returns 404 when there is no qualifying FPDS activity. These are operational traits an agent needs that are absent from the annotations.

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

    Conciseness5/5

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

    The description is dense but every element earns its place: outputs are front-loaded, the FAR 13 context is compressed, sibling pairing is one clause, and the param/error/positioning are at the end. No filler.

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

    Completeness5/5

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

    For a one-parameter tool with an output schema and safety annotations, the description fully covers the code format, the time window, the segmenting concept, the 404 behavior, and sibling relationships. Nothing essential is left to inference.

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

    Parameters4/5

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

    With 0% schema description coverage, the description carries the full burden for the single parameter and does supply 'code: 2-6 digit NAICS code', adding format detail beyond the bare string type. It does not give examples or leading-zero guidance, so it is strong but not exhaustive.

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

    Purpose5/5

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

    The opening sentence names a specific verb-resource pair ('Get the award-value breakdown for a NAICS code') and enumerates concrete outputs: micro/simplified-acquisition/above-SAT counts, offices, distinct-firm and set-aside counts. It also differentiates from siblings by naming get_naics_positioning and get_naics_market and describing their distinct roles.

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

    Usage Guidelines5/5

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

    The description establishes when this tool is the right read ('the SMALL-BUY value-band read' in a FAR Part 13 context) and explicitly tells the agent to pair it with get_naics_positioning and get_naics_market for the same code. It also states the factual/no-recommendation stance and the 404 condition, leaving little ambiguity about use context.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds valuable behavioral context: the full record includes parent/children/ancestors, it is a broader/heavier call than get_org_relationships, it returns 404 for non-existent IDs, and it is free tier. No contradiction with annotations.

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

    Conciseness5/5

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

    The description is well-structured and every sentence earns its place. The core function is front-loaded, followed by usage guidance, parameter provenance, and error/cost notes. It is compact yet complete, with clear separation between sections via line breaks.

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

    Completeness5/5

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

    Given the tool has one parameter, an output schema, and annotations covering safety, the description is well-rounded: it explains what the response includes, how to get the ID, when to use the sibling instead, what happens on failure, and the free tier. Nothing essential for correct invocation is missing.

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

    Parameters4/5

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

    With schema description coverage at 0%, the description carries the burden for the single parameter. It states 'organization_id: from list_organizations', which tells the agent how to obtain a valid value. This is sufficient for a simple integer ID parameter, though it could have added a bit more detail about the ID's meaning or format beyond the source.

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

    Purpose5/5

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

    The description uses a specific verb ('Get') and resource ('one federal organization's full record'), then precisely defines the scope: parent, immediate children, and full ancestor chain. It explicitly distinguishes itself from the sibling tool get_org_relationships by stating that the relationship data is already included. An agent can immediately understand both what this tool returns and how it differs from related tools.

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

    Usage Guidelines5/5

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

    The description gives explicit usage guidance: 'use this first' and 'only call get_org_relationships if you want JUST the children or JUST the ancestors without the rest of the record'. It also tells the agent where to get organization_id ('from list_organizations') and documents error behavior (404) and cost tier. This is comprehensive guidance for when to choose this tool versus its alternative.

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

  • Behavior5/5

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

    Adds substantial behavior beyond annotations: it is a resolver, not a browseable directory, name searches are substring matches returning up to 5, email searches are exact matches returning one record, and it documents 404 and 402 error conditions. This goes beyond the readOnly/idempotent hints.

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

    Conciseness5/5

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

    The description is front-loaded with the core identity and key differentiator, then uses compact bulleted modes and error cases. Every sentence adds operational value with no filler.

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

    Completeness5/5

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

    Covers identity, access requirements, mode selection, expected result counts, and error codes. Output schema exists so return value details are not needed in the description. Complete enough for correct invocation and troubleshooting.

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

    Parameters4/5

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

    Schema has 0% description coverage, so the description must carry the meaning. It explains name (substring match), email (exact match), and the disambiguation role of agency/state. It does not define value formats, but the schema already marks them as plain optional strings.

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

    Purpose5/5

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

    States a specific verb and resource: look up a CONTRACTING OFFICER's contact info, and explicitly distinguishes itself from get_company_contact. The buyer-side framing makes the purpose immediately obvious and differentiates it from a large sibling list.

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

    Usage Guidelines5/5

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

    Explicitly names the sibling tool it is not and gives the selection criterion (buyer vs vendor/teammate side). It also describes two exclusive modes with clear conditions for choosing name vs email, including disambiguation via agency/state.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful context beyond that: it returns specific fields (code, name, total obligations, competition rate, set-aside share), notes that office_code is its own namespace with no shared identifier links, and mentions it is free on every plan. There is no contradiction with the annotations.

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

    Conciseness5/5

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

    The description is well-structured and front-loaded with the core purpose, followed by compact bullet-style parameter explanations. Every sentence adds value: usage rationale, parameter semantics, return fields, sibling routing, and namespace caveat. There is no filler or tautology.

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

    Completeness5/5

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

    Given the output schema exists and annotations cover read-only/idempotent behavior, the description still provides everything needed to call the tool correctly: required parameter format, sort options, limit cap, expected return fields, and explicit guidance on when to move to get_office_profile. No important operational detail is missing.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description carries the full burden, and it succeeds. It explains that naics is a 2-6 digit code and required, defines each sort value ('biggest' means total obligations, 'most_open' means highest full-and-open share, 'most_setaside' means highest set-aside share), and sets a maximum limit of 100.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Find which contracting offices buy a NAICS code, ranked, each with its own win-facts.' It clearly distinguishes this tool from get_office_profile by noting that discover_offices focuses on one NAICS, while get_office_profile covers all NAICS for an office.

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

    Usage Guidelines5/5

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

    The description provides explicit when-to-use guidance: it is a Market Research tool that answers 'who actually buys this, not just which department,' and explains why office-level ranking matters over department-wide averages. It also names the alternative get_office_profile and states the condition for switching to it.

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

  • Behavior5/5

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

    Beyond the readOnly and idempotent annotations, the description explains the output format ('Returns each peer's uei') and suggests chaining to other tools, revealing expected behavior and side-effect-free operation.

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

    Conciseness5/5

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

    The description is concise, with clear separation of purpose, differentiation, and parameter details. It is front-loaded with the core purpose and avoids unnecessary verbosity.

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

    Completeness5/5

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

    It covers what the tool does, when to use it, parameter semantics, and return value, making it fully self-contained for an agent to invoke correctly without ambiguity.

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

    Parameters5/5

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

    The description enriches the schema by specifying the UEI format ('12-character Unique Entity ID') and the limit maximum ('max 50'), providing crucial details not present in the schema alone.

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

    Purpose5/5

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

    The description clearly states the verb 'Find' and the resource 'companies similar' with a specific method (NAICS + agency overlap). It explicitly distinguishes from sibling tools get_company_profile and search_companies, making the purpose unambiguous.

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

    Usage Guidelines5/5

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

    It provides explicit guidance on when to use this tool ('Use this to answer...') and contrasts it with alternatives, giving clear selection criteria. The 'Pro only' note also adds usage context.

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

  • Behavior5/5

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

    Annotations already indicate readOnly, openWorld, idempotent, and non-destructive behavior, but the description adds critical behavioral nuance beyond that: total_awards/total_value/avg_value only count SAM Award Notices (10-30% of federal obligations), not total federal contract value. The warning that a contractor active only in FPDS will show total_value: 0 by design is exactly the kind of misleading-output disclosure an agent needs. This 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.

    Conciseness5/5

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

    The description is dense but every sentence earns its place: main purpose, sibling differentiation, licensing context, parameter guidance, and a critical scope caveat. The use of a bullet for uei and an uppercase IMPORTANT note for the totals limitation makes key information scannable without bloating the text.

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

    Completeness5/5

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

    Given that an output schema exists, the description does not need to enumerate return fields. It covers the essential operational context: what data is included, what is excluded, how to obtain the parameter, and which sibling tools to use for other views. Combined with the annotations, this is fully complete for safe and correct invocation.

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

    Parameters5/5

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

    The input schema provides only a bare string property name 'Uei' with no description, so the description carries the full burden. It compensates thoroughly by specifying the 12-character format and listing concrete source fields (search_companies, search_opportunities' award_uei_sam, or any tool returning a uei field). This is more than enough for an agent to correctly populate the sole parameter.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Get one company's aggregate profile', listing exact contents (SAM registration fields plus award-history totals). It explicitly distinguishes itself from get_company_awards and get_company_peers, so an agent can select it correctly among 60+ siblings.

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

    Usage Guidelines5/5

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

    The description states when to use this tool: for the SUMMARY view, with explicit routing to get_company_awards for a full paginated award list and to get_company_peers for similar firms. It also adds a licensing constraint ('Pro only') and explains where the required uei value can be obtained, leaving no ambiguity about appropriate invocation.

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

  • Behavior5/5

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

    Annotations already declare readOnly/idempotent/non-destructive, and the description adds meaningful behavior: direct awards return {status: 'standalone', vehicle: null, message: ...} and instructs the agent to check status before reading vehicle fields. This goes beyond annotation signals.

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

    Conciseness5/5

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

    Front-loaded purpose, concise usage guidance, a single parameter bullet, and a clearly separated edge-case note. Every sentence earns its place without fluff.

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

    Completeness5/5

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

    Given the tool's moderate complexity, the description covers the core behavior, the parameter source, sibling routing, and the important direct-award return shape. It is complete enough for safe autonomous invocation.

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

    Parameters5/5

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

    Schema provides 0% description coverage for piid, but the description fully compensates by clarifying it is the ORDER's PIID, not the vehicle's own PIID, and indicates where to obtain it. This prevents a likely misuse.

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

    Purpose5/5

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

    States a specific verb and resource: get the contract vehicle (IDIQ, GWAC, FSS schedule, or BPA) against which an order was placed. It also distinguishes itself from sibling tools like get_vehicle and get_vehicle_holders by explaining what those are for.

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

    Usage Guidelines5/5

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

    Explicitly tells the agent when to use this tool versus alternatives: chain into get_vehicle for vehicle ceiling/period detail, get_vehicle_holders for competing holders, and order PIID should come from search_contracts or get_contract. Also covers the direct-award edge case.

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

  • Behavior5/5

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

    Beyond the readOnly/openWorld/idempotent annotations, the description adds concrete behavioral details: valid board names, a limit cap of 100, the output shape (each ranked NAICS code's naics_code), and error responses (400 for invalid board, 503 while the index is building). This is rich behavioral context beyond 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.

    Conciseness5/5

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

    The description is efficiently structured with a front-loaded purpose, labeled parameter bullets, and a brief return/error section. Despite the long list of board values, every sentence and bullet earns its place; there is no filler or redundant repetition of schema details.

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

    Completeness5/5

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

    For a tool with two parameters and an output schema, the description covers all necessary context: valid board options, limit behavior, output format, downstream usage, and error conditions. An agent has everything needed to invoke the tool correctly and interpret results.

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

    Parameters5/5

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

    The input schema only defines board as a string and limit as an integer with a default, with no descriptions. The description fully compensates by enumerating all accepted board values and specifying the maximum limit. This adds essential semantic meaning that the schema lacks.

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

    Purpose5/5

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

    The description uses a specific verb ('Browse') with a clear resource ('curated, ranked NAICS market leaderboards') and immediately distinguishes itself from the sibling tool find_naics_codes' 'open filtered search'. An agent can accurately determine what this tool does and how it differs from closely related tools.

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

    Usage Guidelines5/5

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

    The description explicitly names the alternative tool (find_naics_codes) and contrasts this tool's fixed set of named rankings with that open filtered search. It also provides downstream guidance: pass the returned naics_code to get_naics_market or other NAICS tools. This gives clear when-to-use and when-not-to-use context.

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

  • Behavior5/5

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

    Annotations already mark the operation as read-only and idempotent, and the description adds useful behavioral details: free tier, immediate vs. ancestor chain semantics, empty result for root departments, and 404 behavior for nonexistent organizations in ancestors direction. No contradiction with annotations.

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

    Conciseness5/5

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

    The description is front-loaded with the core purpose, then gives a useful alternative, a concrete example, and a compact parameter list. Every sentence earns its place, and there is no redundant filler.

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

    Completeness5/5

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

    For a two-parameter read-only tool with an output schema, the description covers scope, parameter semantics, edge cases, and cost tier. Nothing essential for selecting or invoking the tool is missing.

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

    Parameters5/5

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

    Schema description coverage is 0%, but the description fully compensates by documenting both parameters: organization_id should come from list_organizations or get_organization, and direction is defined with exact values and meanings. This is sufficient for correct invocation.

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

    Purpose5/5

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

    The description states a specific verb, resource, and scope: 'Get JUST an organization's immediate children or its ancestor chain.' It explicitly contrasts with get_organization, which 'already includes both if you need everything,' so an agent can distinguish it from the closest sibling without opening schemas.

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

    Usage Guidelines5/5

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

    The first paragraph tells the agent when to use this tool and when to use get_organization instead. The example of listing sub-agencies under DoD reinforces the narrow-form use case, making the selection criteria explicit.

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

  • Behavior5/5

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

    Discloses that date filters operate on action_date, warns that a years-old contract can appear as 'current' via a recent action, and cautions that 'combined' is blended context only, not a real number. These are non-obvious behavioral nuances beyond the read-only annotation.

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

    Conciseness5/5

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

    The description is well-organized: a concise opening, a parameter bullet list, and a crucial IMPORTANT note. No filler or redundancy; each sentence earns its place.

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

    Completeness5/5

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

    Covers all necessary context for correct invocation: parameters, usage caveats, and tool alternatives. The output schema exists, so not describing return values is acceptable per rubric. The description is complete for an agent.

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

    Parameters5/5

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

    With zero schema description coverage, the tool-level description fully explains every parameter, including that pricing_type can be a raw single-letter code and value_basis defaults to 'current'. This completely compensates for the missing schema annotations.

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

    Purpose5/5

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

    States a specific verb ('Get'), a clear resource ('percentile distribution of comparable contract VALUE for a NAICS'), and explicitly mentions the breakdown by pricing type. It also distinguishes from get_price_position and get_labor_rate_benchmark, making it unambiguous.

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

    Usage Guidelines5/5

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

    Provides explicit pairing guidance with get_price_position and get_labor_rate_benchmark, and the IMPORTANT note instructs when to use per-pricing-type blocks vs. combined, ensuring the agent selects the appropriate tool and mode.

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

  • Behavior5/5

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

    Annotations already indicate readOnly and idempotent behavior, and the description adds substantial behavioral context by explaining the 7 signals, the pre-computed triage summary, how to interpret a 'clean' category, and the included contract_exposure and subaward_exposure data. It also discloses the Pro-only restriction. No contradiction with annotations.

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

    Conciseness5/5

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

    The description is detailed but every section earns its place: use case, tool distinction, parameter format, signal list, triage guidance, and exposure summary. Bullet points and bolded field names make it scannable and front-loaded with the key purpose.

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

    Completeness5/5

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

    Given the tool's complexity and the availability of an output schema, the description is unusually complete. It explains not just what is returned but how to interpret the most important field (triage), what each signal category means, and how to source the required parameter.

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

    Parameters5/5

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

    Schema coverage is 0% for the uei parameter, so the description carries the full burden. It specifies that uei must be a 12-character Unique Entity ID and tells the agent where to obtain it from other tools, fully compensating for the missing schema documentation.

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

    Purpose5/5

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

    The description states a specific verb and resource: 'Get a 7-signal vendor risk report for one UEI.' It clearly distinguishes itself from the sibling tool check_exclusion, which is a binary debarment check, by positioning this as a broader risk-signal read.

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

    Usage Guidelines5/5

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

    The description explicitly names when to use the tool: for due diligence on teaming or subcontracting before committing to a partner. It also names the alternative check_exclusion and explains the difference, so an agent can route between them without guesswork.

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

  • Behavior5/5

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

    Annotations already mark this read-only/idempotent, and the description adds significant behavioral context beyond them: it reveals the aggregation behavior, the distinct_classifications count, and the risk that a broad classification substring can blend multiple differently-paid titles into one distribution. This is genuinely useful for interpreting results and choosing parameters.

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

    Conciseness5/5

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

    The description is longer than average but every sentence earns its place: core definition, strategic use case, sibling distinction, explicit parameter semantics, and a behavioral caveat with concrete examples. The bullet-list parameter breakdown makes it scannable and the most important guidance is front-loaded.

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

    Completeness5/5

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

    Given the tool's moderate complexity, zero schema descriptions, and the presence of closely related siblings, the description is complete. It covers what the tool returns, how to choose parameters, what the field means, and how this tool differs from alternatives like get_wage_rates and get_labor_rate_benchmark.

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

    Parameters5/5

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

    Schema description coverage is 0%, but the description fully documents all four parameters: occupation_code with format and examples, classification as a name substring, type with SCA/DBA semantics, and state as a 2-letter scope. This more than compensates for the empty schema descriptions.

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

    Purpose5/5

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

    The description states a specific verb ('Get'), a precise resource ('labor-cost FLOOR for one occupation, aggregated across wage determinations'), and the key output components (base hourly percentiles + Health & Welfare fringe). It explicitly distinguishes this tool from siblings like get_wage_rates and get_labor_rate_benchmark, so an agent can select it correctly.

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

    Usage Guidelines5/5

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

    The description clearly frames this as a Bid & Proposal / Negotiate tool, names the DISTRIBUTION view, and contrasts it with get_wage_rates and get_labor_rate_benchmark. It also gives concrete selection guidance: prefer occupation_code when known, use classification as fallback, and notes DBA CBAs have no rate table.

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

  • Behavior5/5

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

    Annotations already mark the tool readOnly, idempotent, and non-destructive, so the safety profile is handled. The description adds behavioral nuance: results are grouped by canonical name, `suggested_filter_value` can be much broader than one component, and raw_variations can be used for a narrower filter. The search_forecasts exception is also behavioral guidance beyond what annotations convey.

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

    Conciseness5/5

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

    The description is front-loaded with the core purpose, then covers usage, the exception, parameter semantics, and output nuance. Each section earns its place and there is no filler or redundant repetition of schema or annotations.

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

    Completeness5/5

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

    For a one-parameter, read-only lookup with an output schema, the description covers what the input should be, when to use it, when not to use it, and how to interpret the response. There is no missing information an agent needs to select and invoke this tool correctly.

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

    Parameters5/5

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

    The input schema only defines `query` as a string with no description, so the description compensates by enumerating accepted inputs: acronyms with examples, partial names, or full agency names. For the single parameter, this is clear enough to construct valid calls without needing additional documentation.

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

    Purpose5/5

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

    The opening sentence states a specific verb and resource: 'Resolve an agency acronym or partial name to canonical SAM.gov agency strings.' It then names the downstream consumers and draws an explicit distinction from search_forecasts, so an agent can distinguish this lookup from the many search/get siblings.

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

    Usage Guidelines5/5

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

    It gives explicit when-to-use guidance: find the right substring for the `agency` filter on search_opportunities, search_companies, or most other tools with an `agency` param. It gives a clear when-not case: search_forecasts uses its own natural-language agency names, so this tool's suggestion will not match there. It also advises using raw_variations when the canonical suggestion is too broad.

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

  • Behavior5/5

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

    Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds substantial beyond-annotation context: the FFATA subaward source, FY2025 start, ~24K firm coverage, and the crucial caveat that a 404 is inconclusive rather than a negative proof.

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

    Conciseness5/5

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

    Every sentence earns its place: the core resolution behavior comes first, then cost, then the parameter format, then the coverage/limitations explanation. The structure is scannable and front-loads the actionable information.

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

    Completeness5/5

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

    For a single-parameter tool with an output schema, the description covers all necessary operational context: input formats, expected output, data source, coverage size, and failure semantics. Nothing an agent needs to decide whether and how to call it is missing.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description carries the full burden. It fully compensates by specifying that 'identifier' is 'a DUNS or a UEI' and detailing the accepted formats: 9-digit DUNS, 13-digit DUNS+4, and 12-character alphanumeric UEI.

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

    Purpose5/5

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

    States a specific verb and resource: resolves between legacy DUNS and current UEI identifiers, accepts either side, and returns both plus the entity name. This clearly distinguishes the tool from the long sibling list, none of which perform identifier translation.

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

    Usage Guidelines5/5

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

    Explicitly explains when the result is meaningful and when it is not: a 404 means 'not in this FFATA-derived crosswalk' rather than 'not in SAM'. It also names the official SAM translator as the authoritative alternative and explains why it is unavailable, giving the agent clear interpretive guardrails.

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

  • Behavior5/5

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

    Even though annotations already declare readOnly/openWorld/idempotent/non-destructive, the description adds significant behavioral context: FY2025 data coverage floor, silent clamping of date_from rather than rejection, the response's window block disclosure, and the returned award_id_piid chaining behavior. 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.

    Conciseness5/5

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

    The description is dense but well-organized: a one-sentence purpose, a clear sibling routing note, a concise bullet list for parameters, and focused paragraphs for coverage edge cases and chaining. Every section earns its place and the most important usage information is front-loaded.

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

    Completeness5/5

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

    For a 15-parameter, zero-required-parameter search tool with no inline schema descriptions, the description covers the important semantics, edge-case behavior, pagination limit, return-field guidance, and integration with related tools. With an output schema present, return-value documentation is not required, and the chaining hints further reduce ambiguity.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description carries the full burden and delivers it comprehensively: exact 12-char uei, exact PIID, parent_piid semantics, agency substring, exact 6-digit NAICS, award_type_code values, YYYY-MM-DD date format, amount field mapping, sort_by options with default, sort_order values, and limit max. Only offset is not described, but the breadth and precision of the remaining parameter semantics are strong enough for a top score.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Search FPDS prime contract transactions,' and further characterizes it as the 'comprehensive, authoritative award record.' It explicitly names sibling tools (search_awards, search_vehicles) and distinguishes this tool from them, so an agent can tell them apart without opening their schemas.

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

    Usage Guidelines5/5

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

    The description gives explicit routing guidance: 'For the sparse SAM Award Notice slice specifically, use search_awards instead' and contrasts search_vehicles as 'NOT floored this way.' It also explains downstream chaining to get_contract/get_contract_modifications/get_contract_vehicle, which helps an agent choose this tool as an entry point.

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

  • Behavior5/5

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

    Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds valuable behavioral details beyond annotations: q requires min 2 chars, unrecognized business_type returns 400 with the valid list, limit max is 100, and each result returns a uei usable by other listed tools.

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

    Conciseness5/5

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

    The most important scoping and sibling-differentiation guidance appears in the first sentence. The bullet list packs a lot of parameter detail with no fluff, and every line earns its place. The cross-tool uei note at the end is useful and compact.

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

    Completeness5/5

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

    With an output schema present, the description doesn't need to enumerate return fields, but it still adds the critical cross-tool uei linkage. It covers scope, plan limits, error behavior, and parameter constraints. The only minor omission is offset, but that's not essential given the schema and pagination context.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description carries full responsibility for parameter meaning. It covers 7 of 8 parameters with concrete semantics: q substring min length, NAICS suffix rules, business_type examples plus error behavior, active_only meaning, naics_small exact format, and limit maximum. Only offset is left to the schema, which is self-explanatory.

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

    Purpose5/5

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

    Description states it searches ALL SAM-registered entities by name, explicitly including those without award history. It also differentiates from sibling search_companies by noting that search_companies is for companies that won awards and has richer award-history fields.

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

    Usage Guidelines5/5

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

    Explicitly tells the agent when to use this tool vs search_companies, and when to prefer search_companies instead. It also documents plan limitations (q works on every plan, other filters are Pro), giving operational context for when filters may fail.

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

  • Behavior5/5

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

    The description discloses behaviors well beyond the read-only/idempotent annotations: invalid set_aside/notice_type values trigger a 400 with a full valid-term list, date_from is clamped with a disclosed window block, sort_by defaults to relevance when keywords are set, and value filters only apply to Award Notice records. This is rich, actionable context.

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

    Conciseness5/5

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

    The description is long but every sentence serves a purpose for a 20-parameter endpoint. Parameter names are labels, examples are concrete, and critical rules (required filter, max limit, error behavior) are front-loaded or clearly highlighted. No filler exists.

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

    Completeness5/5

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

    Given the complexity (20 params, no schema descriptions, no enums), the description is complete: it covers mandatory filters, valid values, error handling, clamping, defaults, limits, response structure, and links to related tools. The presence of an output schema reduces the need to detail return fields, and the description still summarizes the top-level response blocks.

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

    Parameters5/5

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

    With 0% schema description coverage, the description carries the full burden for 20 parameters. It provides format examples, valid values, error behavior, and defaults for nearly every parameter, including nuanced guidance for set_aside, notice_type, and date clamping. Only offset is not explicitly described, but pagination is mentioned in the response shape.

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

    Purpose5/5

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

    The first sentence states a specific verb and resource: 'Search federal contract opportunities (SAM.gov data) with filters.' This clearly differentiates the tool from siblings like get_opportunity (single record) and recent_changes (full sync), and the closing line reinforces the distinction.

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

    Usage Guidelines5/5

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

    The description explicitly requires at least one filter, tells the agent to use lookup_agency first for agency names, and directs full-database sync to recent_changes. It gives concrete usage constraints and alternatives, leaving little to inference.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

govconapi-mcp MCP server

Copy to your README.md:

Score Badge

govconapi-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/govconapi/govconapi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server