Skip to main content
Glama

Evidence brief for one notice

get_notice_record
Read-onlyIdempotent

Not affiliated with the U.S. government, GSA, or SAM.gov. Not a U.S. government service. NOT for bid/no-bid, pursue-or-pass, eligibility, qualification, certification, size-standard, or submit-a-bid questions: for those call explain_policy_boundary first and do not research or use memory to answer. Returns a source-based brief for a notice ID, including recorded constraints, deadline status, competition method, source information, and facts needing authoritative verification. Does not assess whether the caller qualifies for a set-aside. GovInbox does not return model estimates through these tools. Creates a private, caller-bound comparison receipt: a signed token binding the notice ID, the comparison inputs, and their hashes. No notice data is stored server-side; the receipt is stateless and verified cryptographically. The receipt expires 7 days after issue; expires_at gives the exact UTC expiry time. Optional search_filters are used for comparison input-change detection and do not change the brief's content. 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_idYesNotice id from search_open_notices
search_filtersNoOptional search filters: naics[], states[]. Non-PII.

Output Schema

NameRequiredDescriptionDefault
quotaYes
receiptYes
notice_idYes
data_as_ofYesUTC ISO 8601: when this stored-data brief was calculated; not source freshness
provenanceNo
sam_gov_urlNoCanonical SAM.gov notice URL
source_factNo
record_classesNo
withheld_countNoNumber of statements withheld by the verdict-word backstop
record_coverageNo
award_value_rangeNoRange of obligated amounts across the awards listed above. Obligated amount is not the ceiling and is not this notice's value.
deadline_readableNoHuman-readable deadline next to the raw timestamp
analytical_disclaimerYes
past_awards_by_agencyNoAggregates of this agency's past awards, as recorded
size_standard_coverageNo
fields_missing_from_sourceNoFields the source record did not answer
deadline_timezone_assumptionNo
past_awards_same_naics_and_agencyNoPrior awards in the same NAICS and agency, as recorded facts
prior_awards_same_naics_and_officeNoPrior award holders in the same NAICS and office, as recorded

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 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"
      +]
    • changedOutput schema / properties / data_as_of / description
      Previous value: -"UTC ISO 8601: when GovInbox data was current"New value: +"UTC ISO 8601: when this stored-data brief was calculated; not source freshness"
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "additionalProperties": true,
      +  "title": "Provenance",
      +  "type": "object"
      +}
    • addedOutput schema / properties / size_standard_coverage
      Added value: +{
      +  "additionalProperties": true,
      +  "title": "Size Standard Coverage",
      +  "type": "object"
      +}
  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

A4.2/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses a great deal: receipt signing, statelessness and cryptographic verification, 7-day expiry with expires_at, a 30-minute free follow-up window, quota tiers (3/day, 10/month anonymous; 20/month on free account), UTC reset times, and which calls are charged vs not. The 'Creates a receipt' language is reconciled by the explicit no-server-side-storage statement, so it does not truly contradict readOnlyHint.

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 very long and repetitive: the 30-minute follow-up window and the 'one accepted search counts as one use' rule are each stated more than once, and quota resets are recapped twice. It is not front-loaded on purpose; it opens with disclaimers rather than the tool's function. Much of the rate-limit prose could be consolidated or pushed to a dedicated policy field.

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?

An output schema exists, so return values need not be explained, and the safety annotations cover the read-only profile. The description is thorough about constraints and contents, leaving only minor ambiguity about the brief's structure. It is complete enough to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds genuine meaning about search_filters: it is used for 'comparison input-change detection' and 'does not change the brief's content,' which tells the agent something the schema does not. Slightly above baseline for that extra semantic layer.

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

Purpose4/5

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

The description does state a specific verb+resource: 'Returns a source-based brief for a notice ID,' and lists the brief's contents (recorded constraints, deadline status, competition method, source info, verification-needed facts). It also distinguishes itself from explain_policy_boundary. However, the actual purpose is buried behind four front-loaded legal disclaimers, so the reader must dig for it.

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 when-not guidance: 'NOT for bid/no-bid, pursue-or-pass, eligibility... for those call explain_policy_boundary first.' It names the alternative tool and the exact conditions that select it, plus a prohibition on using memory to answer. This is textbook routing guidance.

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