Skip to main content
Glama

What changed in the notice record

compare_notice_record_versions

Not affiliated with the U.S. government, GSA, or SAM.gov. Not a U.S. government service. Compares recorded notice facts with the baseline identified by a receipt previously returned by get_notice_record. The receipt must belong to the same caller and must not be expired. Reports source-supported fact changes and whether the supplied comparison filters changed; it does not compare or generate model estimates. Creates a new private comparison receipt, with the exact UTC expiry shown in expires_at. An empty changed_facts array means that no recorded fact changes were found against that baseline. Does not recommend bids, determine eligibility, or suggest partners. Follow-ups within 30 minutes after a search ride free (up to 30 per search); otherwise one accepted call counts as one use. Without a connected GovInbox account, both limits apply: 3 searches per UTC calendar day and 10 per UTC calendar month. With a connected free GovInbox account, the limit is 20 searches per UTC calendar month, with no separate daily limit. One accepted search counts as one use, regardless of the number of records returned. Follow-up calls (opening records, comparing versions, listing awards or subawards) within 30 minutes after a search do not count extra, up to 30 follow-ups per search. A follow-up invoked with no active search window counts as one use and opens a new 30-minute window. Empty results consume the search. A lookup for a record that does not exist is not charged. Each retry of a search counts as a new search, as does each call for another page of search results. Daily limits reset at 00:00 UTC each day; monthly limits reset at 00:00 UTC on the first day of each month. Requests rejected for invalid authentication or an exhausted quota do not consume a use.

Input Schema

NameRequiredDescriptionDefault
notice_idNoNotice id; defaults to the receipt's notice
prior_receiptYesreceipt_id from a get_notice_record result
search_filtersNoSame filters as get_notice_record; supply them again to detect input changes

Output Schema

NameRequiredDescriptionDefault
quotaYes
notice_idYes
new_receiptYes
sam_gov_urlNoDeep link to the notice on SAM.gov for verification
changed_factsNo
inputs_changedYes
prior_receipt_idYes
analytical_disclaimerYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedOutput schema / $defs / StatementSource / properties / calculated_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "UTC time a derived statement was calculated; not source retrieval",
      +  "title": "Calculated At"
      +}
    • addedOutput schema / $defs / StatementSource / properties / query_time
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "UTC time this stored-data query was evaluated; not source freshness",
      +  "title": "Query Time"
      +}
    • addedOutput schema / $defs / StatementSource / properties / retrieved_at / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / StatementSource / properties / retrieved_at / default
      Added value: +null
    • changedOutput schema / $defs / StatementSource / properties / retrieved_at / description
      Previous value: -"UTC ISO 8601 when the source was retrieved"New value: +"Recorded UTC source retrieval time, or null when unknown; never response time"
    • removedOutput schema / $defs / StatementSource / properties / retrieved_at / type
      Removed value: -"string"
    • changedOutput schema / $defs / StatementSource / required
      Previous value: -[
      -  "system",
      -  "record_id",
      -  "retrieved_at"
      -]New value: +[
      +  "system",
      +  "record_id"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / $defs / QuotaBlock / properties / mode
      Added value: +{
      +  "default": "ordinary",
      +  "enum": [
      +    "ordinary",
      +    "testing",
      +    "review",
      +    "beta"
      +  ],
      +  "title": "Mode",
      +  "type": "string"
      +}
  3. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Goes well beyond the annotations: it discloses that a new private receipt is created with a UTC expiry in expires_at, that the receipt is caller-scoped and expiry-checked, that an empty changed_facts array means no recorded changes, and how quota consumption works. readOnlyHint=false is consistent with the stated side effect of creating a receipt, so no contradiction. Minor deduction because the quota prose is generic boilerplate rather than specific to this tool's behavior.

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

Conciseness2/5

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

The core comparison sentence is front-loaded, but the body is dominated by repeated quota rules — the 30-minute follow-up window and the 'up to 30 follow-ups per search' limit are literally stated twice, and daily/monthly reset rules are restated across several sentences. A large fraction of the text is boilerplate duplicated from other tools rather than earning its place here.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description covers the remaining essentials: receipt origin, ownership and expiry constraints, side effects, filter semantics, and empty-result meaning. The only gap is that it does not clarify what happens when notice_id conflicts with the receipt's notice.

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

Parameters3/5

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

Schema coverage is 100%, so notice_id defaulting, prior_receipt provenance, and search_filters' role are already fully documented in the schema. The description restates the receipt provenance requirement and the filter input-change detection but adds no syntax or format details beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: compares recorded notice facts against a baseline receipt produced by get_notice_record, and explicitly names what it does not do (no model estimates, no bid recommendations, no eligibility determination). An agent can tell it apart from get_notice_record, though the legal disclaimer lead-in delays the actual purpose statement.

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

Usage Guidelines3/5

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

Gives prerequisite conditions (receipt must be from the same caller, must not be expired) and positional context (a follow-up call), which implies when to use it. However it never explicitly states when to choose this over get_notice_record or check_notice_filters, and the caller must infer that this tool applies only after a prior get_notice_record call.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources