Skip to main content
Glama

Server Details

Find federal opportunities, research awards and vendors, and review dated exclusion evidence.

Ownership verified
Status
Healthy
Uptime
85.2% over 57 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
mooshee/govgazette-mcp
GitHub Stars
0
Server Listing
GovGazette

TDQS

A3.6/5.0

Scored across 12 tools

Disambiguation3/5

The generic `search` tool overlaps heavily with the specialized `search_opportunities` and `search_exclusions`, leaving an agent unsure which to pick for a given query. Similarly, `detail` and `document` both retrieve records by a known identifier, and four exclusion-related tools (check_exclusions, exclusion_changes, exclusion_context, search_exclusions) require careful reading to separate. Descriptions do help, but real boundary ambiguity remains.

Naming Consistency4/5

All names are consistently snake_case, which is good. However, the verb pattern is mixed: several are verb_noun (check_exclusions, search_opportunities, explain_match) while others are bare nouns or ambiguous single words (detail, document, freshness, search). Still readable and predictable enough.

Tool Count5/5

12 tools sit squarely in the well-scoped 3-15 range. Each tool maps to a distinct capability (search, exclusion checks, provenance, research briefs, saved searches), so the count feels earned rather than padded.

Completeness4/5

The surface covers search across collections, exclusion lookup/context/changes, record retrieval, provenance/freshness, research briefs, and saved-search management—broad coverage for a procurement research server. Minor gaps exist (e.g., no dedicated vendor or award detail tool beyond the generic search/detail paths), but core workflows are supported.

Available Tools

17 tools
check_exclusionsCheck possible exclusion matches
Read-onlyIdempotent
Inspect

Check 1 to 20 identities against a dated active SAM snapshot. Pass identities as an array of objects, not a record ID or page URL. Each identity needs a name, UEI, CAGE, or NPI. Exact identifier matches and name-only possible matches remain distinct. Read coverage.freshness; stale or unknown-source empty lookups report unavailable with snapshot_status no_match_in_snapshot. No match is not clearance.

ParametersJSON Schema
NameRequiredDescriptionDefault
generationNoRetained snapshot UUID; omit for the current snapshot.
identitiesYesOne to twenty identities to compare with the dated SAM snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes
coverageYes
generationYes
delete_saved_search_workspaceDelete the saved search workspace
Destructive
Inspect

Permanently delete the authenticated private saved-search workspace and all its searches, baselines, change events and feed links. Requires explicit user intent to delete the entire workspace. Does not delete the GovGazette login account, public records or another workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
detailRead a federal record
Read-onlyIdempotent
Inspect

Retrieve a public record using the exact collection and id returned by search, never a page URL, title or slug. Supply the returned generation for a consistent result.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExact stable record ID returned by search, not a page URL or slug.
collectionYesPublic collection name returned by search.
generationNoRetained generation UUID from search for a consistent record snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
dataYes
textYes
titleYes
coverageNoPresent for exclusions, including explicit source-age warnings.
collectionNoAbsent for curated reference records.
generationYes
text_lengthNoTotal text characters; absent from internal brief notices.
text_has_moreNoWhether another text chunk is available.
award_coverageNoAward snapshot age and latest official release evidence.
documentRead source text
Read-onlyIdempotent
Inspect

Read official record text using the exact collection, id and generation returned by search. Start at offset 0 with length 1 to 16,000 characters, then use next_offset unchanged for the next chunk. Does not fetch arbitrary URLs or paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable ID of a known public record.
lengthNoCharacters to return, from 1 to 16,000. Smaller chunks may be needed to fit the response byte budget.
offsetNoCharacter offset for the next bounded text chunk.
collectionYesPublic record collection returned by search.
generationNoRetained snapshot UUID; omit for the current snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
textYes
offsetYes
coverageNoPresent for exclusion text chunks, with the same source-age policy as detail.
generationYes
provenanceNoSource metadata attached to the retained record.
next_offsetNo
document_kindYes
exclusion_changesReview exclusion changes
Read-onlyIdempotent
Inspect

Compare two retained snapshots. No longer observed does not mean reinstated; enrichment-only changes are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum changes to return, up to the service page limit.
cursorNoOpaque next_cursor from an earlier change page.
to_generationNoNewer retained snapshot UUID; omit for the current snapshot.
from_generationYesOlder retained snapshot UUID to compare.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
meaningYes
next_cursorNo
to_coverageYes
from_coverageYes
to_generationYes
from_generationYes
exclusion_contextRead exclusion evidence
Read-onlyIdempotent
Inspect

Retrieve an exclusion with agency explanation, named restriction references, source evidence, explicit source-age warnings and supported business links.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable exclusion record ID returned by search_exclusions or check_exclusions.
generationNoRetained snapshot UUID; omit for the current snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
dataYes
textYes
titleYes
coverageYesDated SAM source coverage.
collectionYes
generationYes
text_lengthYes
text_has_moreYes
business_contextYesSupported vendor and award links, with match basis.
explain_matchExplain a vendor matchA
Read-onlyIdempotent
Inspect

Explain deterministic primary NAICS overlap between a registered vendor and opportunity. Not an eligibility determination.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_idYesStable vendor ID returned by search.
opportunity_idYesStable opportunity ID returned by search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rulesYes
vendor_idYes
generationYes
interpretationYes
opportunity_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already include readOnlyHint: true, idempotentHint: true, and destructiveHint: false, covering safety. The description adds value by specifying that it explains 'deterministic primary NAICS overlap' and is not an eligibility determination, which is behavioral context beyond the hints. However, it doesn't detail the exact nature of the explanation (e.g., textual vs visual) but that is partially covered by having an output schema.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the core purpose and ends with a crucial caveat. Every word earns its place, with no filler or redundancy.

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

Completeness4/5

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

The tool has an output schema, so return value specifics are covered. Given its simple two-parameter input and the annotations, the description provides sufficient context for an agent to understand what the tool does and when to use it. Minor lack: omission of explicit alternative or exclusion scenarios, but the overarching purpose is clear.

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

Parameters3/5

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

The schema description coverage is 100%, meaning both parameters are described in the schema. The description does not add extra meaning beyond what's in the schema, but it does mention 'registered vendor' and 'opportunity' which aligns with the parameter descriptions. This is baseline 3 as schema already carries the semantic load.

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

Purpose5/5

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

The description clearly states the specific action ('Explain deterministic primary NAICS overlap') and the resources involved ('between a registered vendor and opportunity'). It also provides a crucial scoping caveat ('Not an eligibility determination') that distinguishes it from potential related tools like check_exclusions or research_opportunity, making the tool's specific purpose unmistakable.

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

Usage Guidelines4/5

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

The description gives clear context on when to use the tool: when explaining deterministic primary NAICS overlap between vendor and opportunity. However, it does not explicitly state when NOT to use it or mention alternative tools. The scoping note ('Not an eligibility determination') implies an alternative but does not name it.

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

freshnessCheck source dates
Read-onlyIdempotent
Inspect

Report actual source dates, coverage, record counts and SHA256 provenance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
historyYes
sourcesYes
generationYes
get_saved_search_eventsRead saved search changes
Read-onlyIdempotent
Inspect

Read the latest 100 retained change observations for one saved search owned by the authenticated private workspace. Does not change the search. Retention and missing intermediate observations are explicit; observations are not proof of delivered notifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSaved search UUID returned by create_saved_search or list_saved_searches, owned by this workspace.

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventsYesUp to the latest 100 observed changes, newest first.
retentionYes
list_saved_searchesList saved searches
Read-onlyIdempotent
Inspect

List the saved opportunity searches in the authenticated private workspace, including criteria, status and change counts. Does not change searches. Requires workspace Authorization headers on /mcp or account OAuth on /account/mcp; never accept keys in tool arguments.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
watchesYesEach saved search includes its ID, status, criteria and event count.
research_opportunityResearch an opportunity
Read-onlyIdempotent
Inspect

Build a cited research brief with retained notice requirements, exact award-number candidates and same-industry comparisons. Does not infer an incumbent or eligibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable opportunity ID returned by search_opportunities.
generationNoRetained generation UUID from search_opportunities.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeYes
generationYes
next_stepsYes
requirementsYes
linked_awardsYes
comparison_awardsYes
relationship_basisYes
rotate_saved_search_feedReplace a saved search feed link
Destructive
Inspect

Replace the private feed link for one saved search owned by the authenticated workspace, immediately revoking its previous link. Requires explicit user intent. Does not delete the search or its events. Keep the replacement link private; a lost response may mean the link changed and cannot be recovered by listing searches.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSaved search UUID returned by create_saved_search or list_saved_searches, owned by this workspace.

Output Schema

ParametersJSON Schema
NameRequiredDescription
feed_pathYesReplacement private capability path; the previous link is revoked.
search_exclusionsSearch exclusions
Read-onlyIdempotent
Inspect

Filter active exclusion records by agency, program, classification, geography and dates. Limit is a maximum; large records can produce a smaller page with page_size_limited true. Continue with next_cursor and unchanged filters and limit. Preserve generation and read coverage.freshness for source age and warnings; results are dated evidence, not clearance.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoName, identifier, or other text to find in active exclusion records.
limitNoMaximum records to return, from 1 to 50. Large records may produce a smaller page; continue with next_cursor and unchanged filters and limit.
stateNoUS state name or postal code in the exclusion record.
agencyNoExcluding agency name or code.
cursorNoOpaque next_cursor from a previous search response.
countryNoCountry name or code in the exclusion record.
programNoExclusion program name or code.
generationNoRetained snapshot UUID; omit for the current snapshot.
effective_toNoInclude records effective on or before this ISO date.
classificationNoOfficial SAM exclusion classification code or label.
effective_fromNoInclude records effective on or after this ISO date.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
coverageYesDated source coverage, or an unavailable status.
generationYes
next_cursorNo
page_size_limitedYesWhole records were deferred to next_cursor to fit the response budget. Continue with the same filters and requested limit.
search_opportunitiesFind federal opportunitiesB
Read-onlyIdempotent
Inspect

Find official opportunity records by keywords, industry, set-aside, state, agency and source status. Active does not imply the deadline is open.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoPlain-language keywords; empty returns notices matching the other filters.
afterNoLast notice ID from next_after in the preceding page.
limitNoMaximum notices to return, from 1 to 50; defaults to 25.
naicsNoTwo- to six-digit NAICS industry code from a notice or the NAICS reference collection.
stateNoState or territory code for the place of performance.
activeNoFilter by source active status; this does not mean the response deadline is open.
agencyNoAgency code on the source notice.
set_asideNoOfficial set-aside code from a notice or the set-asides reference collection.
generationNoRetained generation UUID from a prior result for a consistent snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
scopeYesLimits of this retained official-notice search.
filtersYesApplied search filters.
generationYes
next_afterNoLast record ID for the next page, or null at the end.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare this is a read-only, idempotent, open-world search, so the safety profile is covered. The description's one behavioral addition—clarifying that 'active' means source status, not an open deadline—is genuinely useful but largely repeats the schema description for the `active` parameter.

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

Conciseness5/5

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

Two tight sentences with the core scope front-loaded in the first clause and the single caveat trailing it. No filler, no redundancy in structure.

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

Completeness4/5

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

With an output schema present and all nine parameters fully documented, the description needn't explain return values; the annotation set covers safety. It is nearly complete, only missing sibling routing and any mention of pagination intent (after/limit), which the schema handles.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (q, naics, state, set_aside, agency, generation, after, limit) is already documented. The description only lists filter categories at a high level and adds no syntax, format, or interaction details beyond the schema.

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

Purpose4/5

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

States a specific verb (Find) plus resource (official opportunity records) and enumerates the filterable dimensions, so the agent knows exactly what it returns. However, it does not differentiate itself from sibling tools like 'search' or 'research_opportunity', which likely overlap, leaving the agent to guess which one to pick.

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

Usage Guidelines2/5

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

The only guidance is a caveat ('Active does not imply the deadline is open'), which tells the agent how to interpret a flag, not when to use this tool versus siblings. With 'search', 'research_opportunity', and 'detail' in the sibling set, the absence of any routing advice is a real gap.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedcheck_exclusions2 fields changed
      • changedInput schema / $defs / Identity / properties / name / description
        Previous value: -"Person or organization name; name-only matches are possible matches."New value: +"Person or organization name, within 256 UTF-8 bytes; name-only matches are possible matches."
      • changedOutput schema / $defs / Identity / properties / name / description
        Previous value: -"Person or organization name; name-only matches are possible matches."New value: +"Person or organization name, within 256 UTF-8 bytes; name-only matches are possible matches."
    • Changedsearch_exclusions3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum records to return, up to the service page limit."New value: +"Maximum records to return, from 1 to 50. Large records may produce a smaller page; continue with next_cursor and unchanged filters and limit."
      • addedOutput schema / properties / page_size_limited
        Added value: +{
        +  "description": "Whole records were deferred to next_cursor to fit the response budget. Continue with the same filters and requested limit.",
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "generation",
        -  "items",
        -  "coverage"
        -]New value: +[
        +  "generation",
        +  "items",
        +  "page_size_limited",
        +  "coverage"
        +]
  2. 1 tool update
    • Changeddocument3 fields changed
      • changedInput schema / properties / length / description
        Previous value: -"Characters to return, up to 16,000."New value: +"Characters to return, from 1 to 16,000. Smaller chunks may be needed to fit the response byte budget."
      • addedInput schema / properties / length / maximum
        Added value: +16000
      • changedInput schema / properties / length / minimum
        Previous value: -0New value: +1
  3. 7 tool updates
    • Addedcreate_saved_search
    • Addeddelete_saved_search
    • Addeddelete_saved_search_workspace
    • Addedget_saved_search_events
    • Addedlist_saved_searches
    • Addedrotate_saved_search_feed
    • Removedsaved_searches
  4. 9 tool updates
    • Changedcheck_exclusions3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changeddetail3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changeddocument3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changedexclusion_changes3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changedexclusion_context3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changedfreshness7 fields changed
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceCoverage / properties / exclusion_freshness
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/SourceFreshness"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / $defs / SourceCoverage / properties / reference_edition
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / $defs / SourceCoverage / properties / reference_scope
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / $defs / SourceCoverage / properties / source_date_kind
        Added value: +{
        +  "description": "Meaning of the supplied date; not an importer or scheduler timestamp.",
        +  "type": "string"
        +}
      • changedOutput schema / $defs / SourceCoverage / required
        Previous value: -[
        -  "dataset",
        -  "source_url",
        -  "source_date",
        -  "sha256",
        -  "input_rows",
        -  "public_rows"
        -]New value: +[
        +  "dataset",
        +  "source_url",
        +  "source_date",
        +  "sha256",
        +  "input_rows",
        +  "public_rows",
        +  "source_date_kind"
        +]
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "attention_required": {
        +      "type": "boolean"
        +    },
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warn_age_seconds": {
        +      "description": "Early-warning boundary, separate from the stale-source boundary.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds",
        +    "warn_age_seconds",
        +    "attention_required"
        +  ],
        +  "type": "object"
        +}
    • Changedresearch_opportunity3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changedsearch3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
    • Changedsearch_exclusions3 fields changed
      • addedOutput schema / $defs / SourceFreshness / properties / attention_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
        Added value: +{
        +  "description": "Early-warning boundary, separate from the stale-source boundary.",
        +  "format": "int64",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / SourceFreshness / required
        Previous value: -[
        -  "state",
        -  "evaluated_at",
        -  "max_age_seconds"
        -]New value: +[
        +  "state",
        +  "evaluated_at",
        +  "max_age_seconds",
        +  "warn_age_seconds",
        +  "attention_required"
        +]
  5. 4 tool updates
    • Changeddetail4 fields changed
      • addedOutput schema / $defs / AwardAvailability
        Added value: +{
        +  "properties": {
        +    "artifact_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "check_interval_seconds": {
        +      "format": "uint64",
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "checked_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inventory_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "latest_release_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "latest_release_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "max_check_age_seconds": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "state": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "check_interval_seconds",
        +    "max_check_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardCoverage
        Added value: +{
        +  "properties": {
        +    "dataset": {
        +      "type": "string"
        +    },
        +    "freshness": {
        +      "$ref": "#/$defs/AwardFreshness"
        +    },
        +    "source_date": {
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "dataset",
        +    "source_date",
        +    "source_url",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardFreshness
        Added value: +{
        +  "properties": {
        +    "age_state": {
        +      "type": "string"
        +    },
        +    "age_warning_after_days": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "effective_source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_age_days": {
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "upstream": {
        +      "$ref": "#/$defs/AwardAvailability"
        +    },
        +    "warning": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "age_state",
        +    "age_warning_after_days",
        +    "upstream"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / award_coverage
        Added value: +{
        +  "description": "Award snapshot age and latest official release evidence.",
        +  "items": {
        +    "$ref": "#/$defs/AwardCoverage"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
    • Changedfreshness3 fields changed
      • addedOutput schema / $defs / AwardAvailability
        Added value: +{
        +  "properties": {
        +    "artifact_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "check_interval_seconds": {
        +      "format": "uint64",
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "checked_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inventory_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "latest_release_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "latest_release_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "max_check_age_seconds": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "state": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "check_interval_seconds",
        +    "max_check_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardFreshness
        Added value: +{
        +  "properties": {
        +    "age_state": {
        +      "type": "string"
        +    },
        +    "age_warning_after_days": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "effective_source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_age_days": {
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "upstream": {
        +      "$ref": "#/$defs/AwardAvailability"
        +    },
        +    "warning": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "age_state",
        +    "age_warning_after_days",
        +    "upstream"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / SourceCoverage / properties / award_freshness
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/AwardFreshness"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Award age and latest official release evidence, independent of publication or scheduler state."
        +}
    • Changedresearch_opportunity4 fields changed
      • addedOutput schema / $defs / AwardAvailability
        Added value: +{
        +  "properties": {
        +    "artifact_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "check_interval_seconds": {
        +      "format": "uint64",
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "checked_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inventory_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "latest_release_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "latest_release_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "max_check_age_seconds": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "state": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "check_interval_seconds",
        +    "max_check_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardCoverage
        Added value: +{
        +  "properties": {
        +    "dataset": {
        +      "type": "string"
        +    },
        +    "freshness": {
        +      "$ref": "#/$defs/AwardFreshness"
        +    },
        +    "source_date": {
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "dataset",
        +    "source_date",
        +    "source_url",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardFreshness
        Added value: +{
        +  "properties": {
        +    "age_state": {
        +      "type": "string"
        +    },
        +    "age_warning_after_days": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "effective_source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_age_days": {
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "upstream": {
        +      "$ref": "#/$defs/AwardAvailability"
        +    },
        +    "warning": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "age_state",
        +    "age_warning_after_days",
        +    "upstream"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / RecordDetail / properties / award_coverage
        Added value: +{
        +  "description": "Award snapshot age and latest official release evidence.",
        +  "items": {
        +    "$ref": "#/$defs/AwardCoverage"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
    • Changedsearch4 fields changed
      • addedOutput schema / $defs / AwardAvailability
        Added value: +{
        +  "properties": {
        +    "artifact_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "check_interval_seconds": {
        +      "format": "uint64",
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "checked_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inventory_http_status": {
        +      "format": "uint16",
        +      "maximum": 65535,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "latest_release_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "latest_release_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "max_check_age_seconds": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "state": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "check_interval_seconds",
        +    "max_check_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardCoverage
        Added value: +{
        +  "properties": {
        +    "dataset": {
        +      "type": "string"
        +    },
        +    "freshness": {
        +      "$ref": "#/$defs/AwardFreshness"
        +    },
        +    "source_date": {
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "dataset",
        +    "source_date",
        +    "source_url",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AwardFreshness
        Added value: +{
        +  "properties": {
        +    "age_state": {
        +      "type": "string"
        +    },
        +    "age_warning_after_days": {
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "effective_source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_age_days": {
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "upstream": {
        +      "$ref": "#/$defs/AwardAvailability"
        +    },
        +    "warning": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "age_state",
        +    "age_warning_after_days",
        +    "upstream"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / award_coverage
        Added value: +{
        +  "description": "Dated award coverage and official release availability, when applicable.",
        +  "items": {
        +    "$ref": "#/$defs/AwardCoverage"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
  6. 8 tool updates
    • Changedcheck_exclusions7 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ExclusionMatch / properties / snapshot_status
        Added value: +{
        +  "description": "Observed lookup outcome in the dated snapshot, even when status is unavailable.",
        +  "type": "string"
        +}
      • changedOutput schema / $defs / ExclusionMatch / properties / status / description
        Previous value: -"Distinguishes exact-identifier, possible-name and no-match outcomes."New value: +"Exact or possible match, fresh-snapshot no-match, or unavailable. Stale,\nunknown and missing sources never produce a clean no-match status."
      • changedOutput schema / $defs / ExclusionMatch / required
        Previous value: -[
        -  "identity",
        -  "status",
        -  "records",
        -  "truncated"
        -]New value: +[
        +  "identity",
        +  "status",
        +  "snapshot_status",
        +  "records",
        +  "truncated"
        +]
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / coverage / $ref
        Previous value: -"#/$defs/JsonObject"New value: +"#/$defs/ExclusionCoverage"
    • Changeddetail4 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / coverage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/ExclusionCoverage"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Present for exclusions, including explicit source-age warnings."
        +}
    • Changeddocument4 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / coverage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/ExclusionCoverage"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Present for exclusion text chunks, with the same source-age policy as detail."
        +}
    • Changedexclusion_changes6 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / $defs / JsonObject
        Removed value: -{
        -  "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        -  "type": "object"
        -}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / from_coverage / $ref
        Previous value: -"#/$defs/JsonObject"New value: +"#/$defs/ExclusionCoverage"
      • changedOutput schema / properties / to_coverage / $ref
        Previous value: -"#/$defs/JsonObject"New value: +"#/$defs/ExclusionCoverage"
    • Changedexclusion_context4 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / coverage / $ref
        Previous value: -"#/$defs/JsonObject"New value: +"#/$defs/ExclusionCoverage"
    • Changedresearch_opportunity4 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / RecordDetail / properties / coverage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/ExclusionCoverage"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Present for exclusions, including explicit source-age warnings."
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch4 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / coverage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/ExclusionCoverage"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Exclusion-specific source age and freshness warnings, when applicable."
        +}
    • Changedsearch_exclusions4 fields changed
      • addedOutput schema / $defs / ExclusionCoverage
        Added value: +{
        +  "properties": {
        +    "freshness": {
        +      "$ref": "#/$defs/SourceFreshness",
        +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
        +    },
        +    "observed_at": {
        +      "description": "Observation time does not replace the official source timestamp.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sha256": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / $defs / FreshnessState
        Added value: +{
        +  "enum": [
        +    "fresh",
        +    "stale",
        +    "unknown",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / $defs / SourceFreshness
        Added value: +{
        +  "properties": {
        +    "evaluated_at": {
        +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
        +      "type": "string"
        +    },
        +    "max_age_seconds": {
        +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
        +      "format": "int64",
        +      "type": "integer"
        +    },
        +    "source_age_seconds": {
        +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
        +      "format": "int64",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "state": {
        +      "$ref": "#/$defs/FreshnessState"
        +    },
        +    "warning": {
        +      "description": "User-facing warning, or null when within the warning threshold.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "evaluated_at",
        +    "max_age_seconds"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / coverage / $ref
        Previous value: -"#/$defs/JsonObject"New value: +"#/$defs/ExclusionCoverage"
  7. 2 tool updates
    • Changedcheck_exclusions2 fields changed
      • addedInput schema / properties / identities / maxItems
        Added value: +20
      • addedInput schema / properties / identities / minItems
        Added value: +1
    • Changeddetail1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Stable record ID returned by search."New value: +"Exact stable record ID returned by search, not a page URL or slug."
  8. 5 tool updates
    • Changedexclusion_changes2 fields changed
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • changedInput schema / properties / limit / minimum
        Previous value: -0New value: +1
    • Changedsaved_searches2 fields changed
      • addedInput schema / $defs / OpportunityQuery / properties / limit / maximum
        Added value: +50
      • changedInput schema / $defs / OpportunityQuery / properties / limit / minimum
        Previous value: -0New value: +1
    • Changedsearch2 fields changed
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • changedInput schema / properties / limit / minimum
        Previous value: -0New value: +1
    • Changedsearch_exclusions2 fields changed
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • changedInput schema / properties / limit / minimum
        Previous value: -0New value: +1
    • Changedsearch_opportunities4 fields changed
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • changedInput schema / properties / limit / minimum
        Previous value: -0New value: +1
      • addedOutput schema / $defs / OpportunityQuery / properties / limit / maximum
        Added value: +50
      • changedOutput schema / $defs / OpportunityQuery / properties / limit / minimum
        Previous value: -0New value: +1
  9. 12 tool updates
    • Changedcheck_exclusions7 fields changed
      • addedInput schema / $defs / Identity / properties / cage / description
        Added value: +"Exact five-character CAGE code, when known."
      • addedInput schema / $defs / Identity / properties / name / description
        Added value: +"Person or organization name; name-only matches are possible matches."
      • addedInput schema / $defs / Identity / properties / npi / description
        Added value: +"Exact ten-digit National Provider Identifier, when known."
      • addedInput schema / $defs / Identity / properties / uei / description
        Added value: +"Exact 12-character Unique Entity ID, when known."
      • addedInput schema / properties / generation / description
        Added value: +"Retained snapshot UUID; omit for the current snapshot."
      • addedInput schema / properties / identities / description
        Added value: +"One to twenty identities to compare with the dated SAM snapshot."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "ExclusionMatch": {
        +      "properties": {
        +        "identity": {
        +          "$ref": "#/$defs/Identity"
        +        },
        +        "records": {
        +          "description": "Candidate exclusion records with match basis; not a clearance decision.",
        +          "items": {
        +            "$ref": "#/$defs/JsonObject"
        +          },
        +          "type": "array"
        +        },
        +        "status": {
        +          "description": "Distinguishes exact-identifier, possible-name and no-match outcomes.",
        +          "type": "string"
        +        },
        +        "truncated": {
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "identity",
        +        "status",
        +        "records",
        +        "truncated"
        +      ],
        +      "type": "object"
        +    },
        +    "Identity": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "cage": {
        +          "description": "Exact five-character CAGE code, when known.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "name": {
        +          "description": "Person or organization name; name-only matches are possible matches.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "npi": {
        +          "description": "Exact ten-digit National Provider Identifier, when known.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "uei": {
        +          "description": "Exact 12-character Unique Entity ID, when known.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "coverage": {
        +      "$ref": "#/$defs/JsonObject"
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "$ref": "#/$defs/ExclusionMatch"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "results",
        +    "coverage"
        +  ],
        +  "type": "object"
        +}
    • Changeddetail4 fields changed
      • addedInput schema / properties / collection / description
        Added value: +"Public collection name returned by search."
      • addedInput schema / properties / generation / description
        Added value: +"Retained generation UUID from search for a consistent record snapshot."
      • addedInput schema / properties / id / description
        Added value: +"Stable record ID returned by search."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "collection": {
        +      "description": "Absent for curated reference records.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "data": {
        +      "$ref": "#/$defs/JsonObject"
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    },
        +    "text_has_more": {
        +      "description": "Whether another text chunk is available.",
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "text_length": {
        +      "description": "Total text characters; absent from internal brief notices.",
        +      "format": "uint",
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "id",
        +    "title",
        +    "text",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changeddocument6 fields changed
      • addedInput schema / properties / collection / description
        Added value: +"Public record collection returned by search."
      • addedInput schema / properties / generation / description
        Added value: +"Retained snapshot UUID; omit for the current snapshot."
      • addedInput schema / properties / id / description
        Added value: +"Stable ID of a known public record."
      • addedInput schema / properties / length / description
        Added value: +"Characters to return, up to 16,000."
      • addedInput schema / properties / offset / description
        Added value: +"Character offset for the next bounded text chunk."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "document_kind": {
        +      "type": "string"
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "next_offset": {
        +      "format": "uint",
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "offset": {
        +      "format": "uint64",
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "provenance": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/JsonObject"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Source metadata attached to the retained record."
        +    },
        +    "text": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "id",
        +    "text",
        +    "offset",
        +    "document_kind"
        +  ],
        +  "type": "object"
        +}
    • Changedexclusion_changes5 fields changed
      • addedInput schema / properties / cursor / description
        Added value: +"Opaque next_cursor from an earlier change page."
      • addedInput schema / properties / from_generation / description
        Added value: +"Older retained snapshot UUID to compare."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum changes to return, up to the service page limit."
      • addedInput schema / properties / to_generation / description
        Added value: +"Newer retained snapshot UUID; omit for the current snapshot."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "ExclusionChange": {
        +      "properties": {
        +        "change": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "title": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "title",
        +        "change"
        +      ],
        +      "type": "object"
        +    },
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "from_coverage": {
        +      "$ref": "#/$defs/JsonObject"
        +    },
        +    "from_generation": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "$ref": "#/$defs/ExclusionChange"
        +      },
        +      "type": "array"
        +    },
        +    "meaning": {
        +      "type": "string"
        +    },
        +    "next_cursor": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "to_coverage": {
        +      "$ref": "#/$defs/JsonObject"
        +    },
        +    "to_generation": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "from_generation",
        +    "to_generation",
        +    "from_coverage",
        +    "to_coverage",
        +    "items",
        +    "meaning"
        +  ],
        +  "type": "object"
        +}
    • Changedexclusion_context3 fields changed
      • addedInput schema / properties / generation / description
        Added value: +"Retained snapshot UUID; omit for the current snapshot."
      • addedInput schema / properties / id / description
        Added value: +"Stable exclusion record ID returned by search_exclusions or check_exclusions."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "business_context": {
        +      "$ref": "#/$defs/JsonObject",
        +      "description": "Supported vendor and award links, with match basis."
        +    },
        +    "collection": {
        +      "type": "string"
        +    },
        +    "coverage": {
        +      "$ref": "#/$defs/JsonObject",
        +      "description": "Dated SAM source coverage."
        +    },
        +    "data": {
        +      "$ref": "#/$defs/JsonObject"
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    },
        +    "text_has_more": {
        +      "type": "boolean"
        +    },
        +    "text_length": {
        +      "format": "uint",
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "title": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "collection",
        +    "id",
        +    "title",
        +    "text",
        +    "data",
        +    "text_length",
        +    "text_has_more",
        +    "coverage",
        +    "business_context"
        +  ],
        +  "type": "object"
        +}
    • Changedexplain_match3 fields changed
      • addedInput schema / properties / opportunity_id / description
        Added value: +"Stable opportunity ID returned by search."
      • addedInput schema / properties / vendor_id / description
        Added value: +"Stable vendor ID returned by search."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "MatchRule": {
        +      "properties": {
        +        "matched": {
        +          "type": "boolean"
        +        },
        +        "opportunity_value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "rule": {
        +          "type": "string"
        +        },
        +        "vendor_value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "rule",
        +        "matched"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "generation": {
        +      "type": "string"
        +    },
        +    "interpretation": {
        +      "type": "string"
        +    },
        +    "opportunity_id": {
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "$ref": "#/$defs/MatchRule"
        +      },
        +      "type": "array"
        +    },
        +    "vendor_id": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "vendor_id",
        +    "opportunity_id",
        +    "rules",
        +    "interpretation"
        +  ],
        +  "type": "object"
        +}
    • Changedfreshness1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "SourceCoverage": {
        +      "properties": {
        +        "dataset": {
        +          "type": "string"
        +        },
        +        "input_rows": {
        +          "format": "int64",
        +          "type": "integer"
        +        },
        +        "public_rows": {
        +          "format": "int64",
        +          "type": "integer"
        +        },
        +        "sha256": {
        +          "type": "string"
        +        },
        +        "source_date": {
        +          "type": "string"
        +        },
        +        "source_url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "dataset",
        +        "source_url",
        +        "source_date",
        +        "sha256",
        +        "input_rows",
        +        "public_rows"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "generation": {
        +      "type": "string"
        +    },
        +    "history": {
        +      "type": "string"
        +    },
        +    "sources": {
        +      "items": {
        +        "$ref": "#/$defs/SourceCoverage"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "sources",
        +    "history"
        +  ],
        +  "type": "object"
        +}
    • Changedresearch_opportunity3 fields changed
      • addedInput schema / properties / generation / description
        Added value: +"Retained generation UUID from search_opportunities."
      • addedInput schema / properties / id / description
        Added value: +"Stable opportunity ID returned by search_opportunities."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "AwardSummary": {
        +      "properties": {
        +        "data": {
        +          "$ref": "#/$defs/JsonObject"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "title": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "vendor_url": {
        +          "description": "Vendor path when an exact recipient UEI is available.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "title",
        +        "data",
        +        "url"
        +      ],
        +      "type": "object"
        +    },
        +    "BriefRequirements": {
        +      "properties": {
        +        "scope": {
        +          "type": "string"
        +        },
        +        "source": {
        +          "anyOf": [
        +            {
        +              "$ref": "#/$defs/JsonObject"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "description": "Notice provenance for the retained text."
        +        },
        +        "text": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "text",
        +        "scope"
        +      ],
        +      "type": "object"
        +    },
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    },
        +    "RecordDetail": {
        +      "properties": {
        +        "collection": {
        +          "description": "Absent for curated reference records.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "data": {
        +          "$ref": "#/$defs/JsonObject"
        +        },
        +        "generation": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "text": {
        +          "type": "string"
        +        },
        +        "text_has_more": {
        +          "description": "Whether another text chunk is available.",
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "text_length": {
        +          "description": "Total text characters; absent from internal brief notices.",
        +          "format": "uint",
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "title": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "generation",
        +        "id",
        +        "title",
        +        "text",
        +        "data"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "comparison_awards": {
        +      "items": {
        +        "$ref": "#/$defs/AwardSummary"
        +      },
        +      "type": "array"
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "linked_awards": {
        +      "items": {
        +        "$ref": "#/$defs/AwardSummary"
        +      },
        +      "type": "array"
        +    },
        +    "next_steps": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "notice": {
        +      "$ref": "#/$defs/RecordDetail"
        +    },
        +    "relationship_basis": {
        +      "type": "string"
        +    },
        +    "requirements": {
        +      "$ref": "#/$defs/BriefRequirements"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "notice",
        +    "linked_awards",
        +    "comparison_awards",
        +    "relationship_basis",
        +    "requirements",
        +    "next_steps"
        +  ],
        +  "type": "object"
        +}
    • Changedsaved_searches14 fields changed
      • addedInput schema / $defs / OpportunityQuery / properties / active / description
        Added value: +"Filter by source active status; this does not mean the response deadline is open."
      • addedInput schema / $defs / OpportunityQuery / properties / after / description
        Added value: +"Last notice ID from next_after in the preceding page."
      • addedInput schema / $defs / OpportunityQuery / properties / agency / description
        Added value: +"Agency code on the source notice."
      • addedInput schema / $defs / OpportunityQuery / properties / generation / description
        Added value: +"Retained generation UUID from a prior result for a consistent snapshot."
      • addedInput schema / $defs / OpportunityQuery / properties / limit / description
        Added value: +"Maximum notices to return, from 1 to 50; defaults to 25."
      • addedInput schema / $defs / OpportunityQuery / properties / naics / description
        Added value: +"Two- to six-digit NAICS industry code from a notice or the NAICS reference collection."
      • addedInput schema / $defs / OpportunityQuery / properties / q / description
        Added value: +"Plain-language keywords; empty returns notices matching the other filters."
      • addedInput schema / $defs / OpportunityQuery / properties / set_aside / description
        Added value: +"Official set-aside code from a notice or the set-asides reference collection."
      • addedInput schema / $defs / OpportunityQuery / properties / state / description
        Added value: +"State or territory code for the place of performance."
      • addedInput schema / properties / criteria / description
        Added value: +"Opportunity filters for create; the server chooses the current generation."
      • addedInput schema / properties / id / description
        Added value: +"Saved search UUID for events, delete, or rotate_feed."
      • addedInput schema / properties / name / description
        Added value: +"Human-readable name for a new saved search; at most 100 characters."
      • addedInput schema / properties / operation / description
        Added value: +"Action to perform: list, create, events, delete, rotate_feed, or delete_workspace."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "deleted": {
        +      "description": "Present for deletion.",
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "events": {
        +      "description": "Present for events.",
        +      "items": {
        +        "$ref": "#/$defs/JsonObject"
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "feed_path": {
        +      "description": "Present for create or feed rotation.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "id": {
        +      "description": "Present for create.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "message": {
        +      "description": "Present for create.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Present for create.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "watches": {
        +      "description": "Present for list; each watch includes status, criteria and event count.",
        +      "items": {
        +        "$ref": "#/$defs/JsonObject"
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch5 fields changed
      • addedInput schema / properties / collection / description
        Added value: +"Public collection name, such as opportunities, vendors, awards, exclusions, or naics."
      • addedInput schema / properties / cursor / description
        Added value: +"Opaque next_cursor from the preceding search page."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum records to return, from 1 to 50."
      • addedInput schema / properties / q / description
        Added value: +"Plain-language search terms; empty lists the selected collection."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    },
        +    "RecordSummary": {
        +      "properties": {
        +        "data": {
        +          "$ref": "#/$defs/JsonObject",
        +          "description": "Source-specific fields, including provenance and official identifiers."
        +        },
        +        "id": {
        +          "description": "Stable identifier for a record in this generation.",
        +          "type": "string"
        +        },
        +        "summary": {
        +          "description": "Short searchable text, when returned by this operation.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "title": {
        +          "description": "Human-readable record title.",
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "Public canonical path for the record.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "title",
        +        "url",
        +        "data"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "collection": {
        +      "description": "Collection searched, such as opportunities or awards.",
        +      "type": "string"
        +    },
        +    "coverage_url": {
        +      "description": "Public source-date endpoint, when this collection supplies it.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "generation": {
        +      "description": "UUID of the snapshot used for every result on this page.",
        +      "type": "string"
        +    },
        +    "items": {
        +      "description": "Matching public records.",
        +      "items": {
        +        "$ref": "#/$defs/RecordSummary"
        +      },
        +      "type": "array"
        +    },
        +    "next_cursor": {
        +      "description": "Opaque cursor for the next page, or null at the end.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "collection",
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_exclusions12 fields changed
      • addedInput schema / properties / agency / description
        Added value: +"Excluding agency name or code."
      • addedInput schema / properties / classification / description
        Added value: +"Official SAM exclusion classification code or label."
      • addedInput schema / properties / country / description
        Added value: +"Country name or code in the exclusion record."
      • addedInput schema / properties / cursor / description
        Added value: +"Opaque next_cursor from a previous search response."
      • addedInput schema / properties / effective_from / description
        Added value: +"Include records effective on or after this ISO date."
      • addedInput schema / properties / effective_to / description
        Added value: +"Include records effective on or before this ISO date."
      • addedInput schema / properties / generation / description
        Added value: +"Retained snapshot UUID; omit for the current snapshot."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum records to return, up to the service page limit."
      • addedInput schema / properties / program / description
        Added value: +"Exclusion program name or code."
      • addedInput schema / properties / q / description
        Added value: +"Name, identifier, or other text to find in active exclusion records."
      • addedInput schema / properties / state / description
        Added value: +"US state name or postal code in the exclusion record."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    },
        +    "RecordSummary": {
        +      "properties": {
        +        "data": {
        +          "$ref": "#/$defs/JsonObject",
        +          "description": "Source-specific fields, including provenance and official identifiers."
        +        },
        +        "id": {
        +          "description": "Stable identifier for a record in this generation.",
        +          "type": "string"
        +        },
        +        "summary": {
        +          "description": "Short searchable text, when returned by this operation.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "title": {
        +          "description": "Human-readable record title.",
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "Public canonical path for the record.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "title",
        +        "url",
        +        "data"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "coverage": {
        +      "$ref": "#/$defs/JsonObject",
        +      "description": "Dated source coverage, or an unavailable status."
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "$ref": "#/$defs/RecordSummary"
        +      },
        +      "type": "array"
        +    },
        +    "next_cursor": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "items",
        +    "coverage"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_opportunities10 fields changed
      • addedInput schema / properties / active / description
        Added value: +"Filter by source active status; this does not mean the response deadline is open."
      • addedInput schema / properties / after / description
        Added value: +"Last notice ID from next_after in the preceding page."
      • addedInput schema / properties / agency / description
        Added value: +"Agency code on the source notice."
      • addedInput schema / properties / generation / description
        Added value: +"Retained generation UUID from a prior result for a consistent snapshot."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum notices to return, from 1 to 50; defaults to 25."
      • addedInput schema / properties / naics / description
        Added value: +"Two- to six-digit NAICS industry code from a notice or the NAICS reference collection."
      • addedInput schema / properties / q / description
        Added value: +"Plain-language keywords; empty returns notices matching the other filters."
      • addedInput schema / properties / set_aside / description
        Added value: +"Official set-aside code from a notice or the set-asides reference collection."
      • addedInput schema / properties / state / description
        Added value: +"State or territory code for the place of performance."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "JsonObject": {
        +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
        +      "type": "object"
        +    },
        +    "OpportunityQuery": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "active": {
        +          "description": "Filter by source active status; this does not mean the response deadline is open.",
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "after": {
        +          "description": "Last notice ID from next_after in the preceding page.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "agency": {
        +          "description": "Agency code on the source notice.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "generation": {
        +          "description": "Retained generation UUID from a prior result for a consistent snapshot.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "limit": {
        +          "description": "Maximum notices to return, from 1 to 50; defaults to 25.",
        +          "format": "uint",
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "naics": {
        +          "description": "Two- to six-digit NAICS industry code from a notice or the NAICS reference collection.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "q": {
        +          "default": "",
        +          "description": "Plain-language keywords; empty returns notices matching the other filters.",
        +          "type": "string"
        +        },
        +        "set_aside": {
        +          "description": "Official set-aside code from a notice or the set-asides reference collection.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "state": {
        +          "description": "State or territory code for the place of performance.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "OpportunitySummary": {
        +      "properties": {
        +        "content_hash": {
        +          "description": "Hash of retained notice content for change detection.",
        +          "type": "string"
        +        },
        +        "data": {
        +          "$ref": "#/$defs/JsonObject"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "summary": {
        +          "type": "string"
        +        },
        +        "title": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "title",
        +        "summary",
        +        "content_hash",
        +        "data",
        +        "url"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "filters": {
        +      "$ref": "#/$defs/OpportunityQuery",
        +      "description": "Applied search filters."
        +    },
        +    "generation": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "$ref": "#/$defs/OpportunitySummary"
        +      },
        +      "type": "array"
        +    },
        +    "next_after": {
        +      "description": "Last record ID for the next page, or null at the end.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scope": {
        +      "description": "Limits of this retained official-notice search.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "generation",
        +    "items",
        +    "filters",
        +    "scope"
        +  ],
        +  "type": "object"
        +}
  10. 7 tool updates
    • Addedcheck_exclusions
    • Addedexclusion_changes
    • Addedexclusion_context
    • Addedresearch_opportunity
    • Addedsaved_searches
    • Addedsearch_exclusions
    • Addedsearch_opportunities
  11. 46 tool updates
    • Removedapply_business_profile_update
    • Removedassess_opportunity_for_business
    • Removedcheck_business_exclusions
    • Addeddetail
    • Addeddocument
    • Addedexplain_match
    • Removedexport_opportunities
    • Removedfind_recompetes
    • Removedfind_recompetes_for_business
    • Addedfreshness
    • Removedget_award
    • Removedget_award_evidence
    • Removedget_business_awards
    • Removedget_business_defaults
    • Removedget_business_market
    • Removedget_business_profile
    • Removedget_market_summary
    • Removedget_opportunity
    • Removedget_opportunity_brief
    • Removedget_opportunity_changes
    • Removedget_opportunity_comps
    • Removedget_opportunity_documents
    • Removedget_opportunity_extracted
    • Removedget_vendor
    • Removedget_vendor_awards
    • Removedget_watch_status
    • Removedlookup_reference
    • Removedpreview_business_profile_update
    • Removedresolve_identifier
    • Removedreview_opportunity
    • Removedsave_opportunity_search
    • Removedsave_recompete_radar
    • Addedsearch
    • Removedsearch_awards
    • Removedsearch_exclusions
    • Removedsearch_extracted_facts
    • Removedsearch_opportunities
    • Removedsearch_opportunities_for_business
    • Removedsearch_vendors
    • Removedtrack_opportunity
    • Removedupdate_award_watch
    • Removedupdate_recompete_radar
    • Removedupdate_saved_search
    • Removedupdate_tracked_opportunity
    • Removedwatch_award
    • Removedwatch_vendor
  12. 2 tool updates
    • Addedexport_opportunities
    • Addedreview_opportunity
  13. 17 tool updates
    • Addedapply_business_profile_update
    • Addedassess_opportunity_for_business
    • Addedcheck_business_exclusions
    • Addedfind_recompetes_for_business
    • Addedget_award_evidence
    • Addedget_business_awards
    • Addedget_business_defaults
    • Addedget_business_market
    • Addedget_business_profile
    • Addedget_opportunity_brief
    • Addedpreview_business_profile_update
    • Addedsave_recompete_radar
    • Addedsearch_opportunities_for_business
    • Addedupdate_award_watch
    • Addedupdate_recompete_radar
    • Addedwatch_award
    • Addedwatch_vendor
  14. 22 tool updates
    • Addedfind_recompetes
    • Addedget_award
    • Addedget_market_summary
    • Changedget_opportunity1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedget_opportunity_changes
    • Changedget_opportunity_comps1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedget_opportunity_documents
    • Addedget_opportunity_extracted
    • Changedget_vendor1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_vendor_awards1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_watch_status1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedlookup_reference
    • Addedresolve_identifier
    • Changedsave_opportunity_search5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / delivery_channels / default
        Removed value: -[
        -  "email",
        -  "in_app"
        -]
      • removedInput schema / properties / search_spec / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / search_spec / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / search_spec / type
        Removed value: -"object"
    • Addedsearch_awards
    • Addedsearch_exclusions
    • Addedsearch_extracted_facts
    • Changedsearch_opportunities15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / agency / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / awarded_contractor_name / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / awardee_cage / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / awardee_uei / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • addedInput schema / properties / cursor / minLength
        Added value: +1
      • addedInput schema / properties / deadline_preset / minLength
        Added value: +1
      • changedInput schema / properties / naics / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / notice_type / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • addedInput schema / properties / posted_preset / minLength
        Added value: +1
      • changedInput schema / properties / psc / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • addedInput schema / properties / q / minLength
        Added value: +1
      • changedInput schema / properties / set_aside / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • addedInput schema / properties / sort / minLength
        Added value: +1
      • changedInput schema / properties / state / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
    • Addedsearch_vendors
    • Changedtrack_opportunity2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / delivery_channels / default
        Removed value: -[
        -  "email",
        -  "in_app"
        -]
    • Changedupdate_saved_search8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / cadence / default
        Removed value: -"daily"
      • removedInput schema / properties / delivery_channels / default
        Removed value: -[
        -  "email",
        -  "in_app"
        -]
      • removedInput schema / properties / enabled / default
        Removed value: -true
      • removedInput schema / properties / search_spec / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / search_spec / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / search_spec / type
        Removed value: -"object"
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "search_spec"
        -]New value: +[
        +  "id"
        +]
    • Changedupdate_tracked_opportunity9 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / alert_cadence / default
        Removed value: -"immediate"
      • removedInput schema / properties / delivery_channels / default
        Removed value: -[
        -  "email",
        -  "in_app"
        -]
      • removedInput schema / properties / enabled / default
        Removed value: -true
      • removedInput schema / properties / next_action / default
        Removed value: -null
      • removedInput schema / properties / next_action_due_at / default
        Removed value: -null
      • removedInput schema / properties / notes / default
        Removed value: -null
      • removedInput schema / properties / pursuit_state / default
        Removed value: -"watching"
      • removedInput schema / properties / source_profile_id / default
        Removed value: -null
  15. 10 tool updates
    • First observedget_opportunity
    • First observedget_opportunity_comps
    • First observedget_vendor
    • First observedget_vendor_awards
    • First observedget_watch_status
    • First observedsave_opportunity_search
    • First observedsearch_opportunities
    • First observedtrack_opportunity
    • First observedupdate_saved_search
    • First observedupdate_tracked_opportunity

Publisher details

Operator
Daniel Hallman · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Public research needs no account or API key. Managing private saved searches requires a workspace key. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables searching and filtering federal contract opportunities by keyword, agency, set-aside, NAICS, and more from any MCP client. Analyzes solicitations for small-business fit and risk, and provides reference lookups for NAICS codes, set-asides, and federal thresholds.
    9
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables agents to search and analyze US federal procurement data across SAM.gov opportunities, FPDS awards, SAM entities, FFATA subawards, exclusions, and full-text solicitation attachments, with 6 tools for market research, opportunity discovery, teaming, pricing, and compliance.
    53
    52 PyPI
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Federal procurement intelligence toolkit that searches SAM.gov contract opportunities, analyzes agency spending patterns, tracks competitor wins, and monitors small business set-aside programs (8a, HUBZone, SDVOSB, WOSB). 4 tools using SAM.gov and USASpending.gov data.
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search federal contracts, analyze agency spending, track competitor wins, and monitor small business set-aside opportunities using SAM.gov, USASpending.gov, and FPDS data.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.