Skip to main content
Glama

Sbir Search Solicitations

sbir_search_solicitations
Read-onlyIdempotent

"Which SBIR or STTR solicitations are open at [agency]?" / "current SBIR topics" / "open DoD SBIR solicitations" / "SBIR proposal deadlines" / "SBIR opportunities for [research area]" — active SBIR/STTR funding opportunities merged from three live sources: www.sbir.gov/topics (multi-agency topic listing), the DoD/DARPA topics-app JSON API (Pre-Release and Open DoD topics sbir.gov itself does not yet carry), and Grants.gov (NIH/HHS SBIR & STTR Notices of Funding Opportunity, which never appear as sbir.gov "topics" at all — e.g. the NIH parent SBIR/STTR announcements and NCI omnibus solicitations). Every result names its own program (SBIR or STTR) and source, and a Grants.gov hit is only ever labelled SBIR/STTR when its own title or NIH activity code says so — a plain, unrelated grant is never presented as SBIR. Filter by keyword, agency (e.g., "DOD", "DARPA", "NSF", "NASA", "DOE", "HHS", "NIH"), and open/closed status. This is the tool for open federal small-business R&D solicitations and topics; for who already WON SBIR money use sbir_search_awards.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return across all sources combined (default 20, max 100).
agencyNoFilter by agency: DOD, HHS, NASA, NSF, DOE, USDA, EPA, DOC, ED, DOT, DHS, NIH, DARPA, ARMY, NAVY, USAF, and others sbir.gov itself lists. "DOW" is also accepted and translated to "DOD".
keywordNoSearch term to match against solicitation/topic titles and descriptions.
open_onlyNoOnly return currently open (or pre-release) solicitations (default true). false also includes recently closed sbir.gov/topics results — the DoD app and Grants.gov legs are open-opportunities-only sources and are skipped when this is false.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesNumber of solicitations returned
agencyNoCanonical agency code the search was narrowed to; null when none was given
keywordYesSearch keyword used; null when the call was not narrowed by keyword
open_onlyYesWhether only open solicitations were returned
sources_usedNoHow many rows each live source contributed before the limit was applied
solicitationsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "agency": "NSF",
      -    "keyword": "artificial intelligence",
      -    "open_only": true
      -  },
      -  {
      -    "keyword": "biotechnology",
      -    "limit": 10
      -  }
      -]New value: +[
      +  {
      +    "agency": "NIH",
      +    "keyword": "cancer liquid biopsy diagnostic"
      +  },
      +  {
      +    "agency": "ARMY"
      +  }
      +]
    • changedInput schema / properties / agency / description
      Previous value: -"Filter by agency: DOW (Department of War, formerly DOD — \"DOD\" is accepted and translated), HHS, NASA, NSF, DOE, USDA, EPA, DOC, ED, DOT, DHS."New value: +"Filter by agency: DOD, HHS, NASA, NSF, DOE, USDA, EPA, DOC, ED, DOT, DHS, NIH, DARPA, ARMY, NAVY, USAF, and others sbir.gov itself lists. \"DOW\" is also accepted and translated to \"DOD\"."
    • changedInput schema / properties / keyword / description
      Previous value: -"Search term to match against solicitation topics and descriptions"New value: +"Search term to match against solicitation/topic titles and descriptions."
    • changedInput schema / properties / limit / description
      Previous value: -"Number of results to return (default 20)"New value: +"Number of results to return across all sources combined (default 20, max 100)."
    • changedInput schema / properties / open_only / description
      Previous value: -"Only return currently open solicitations (default true)"New value: +"Only return currently open (or pre-release) solicitations (default true). false also includes recently closed sbir.gov/topics results — the DoD app and Grants.gov legs are open-opportunities-only sources and are skipped when this is false."
    • addedOutput schema / properties / agency
      Added value: +{
      +  "description": "Canonical agency code the search was narrowed to; null when none was given",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / keyword / description
      Previous value: -"Search keyword used"New value: +"Search keyword used; null when the call was not narrowed by keyword"
    • changedOutput schema / properties / keyword / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / solicitations / items / properties / agency / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / solicitations / items / properties / source
      Added value: +{
      +  "description": "Which live source this row came from",
      +  "enum": [
      +    "sbir.gov",
      +    "dodsbirsttr.mil",
      +    "grants.gov"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / sources_used
      Added value: +{
      +  "description": "How many rows each live source contributed before the limit was applied",
      +  "properties": {
      +    "dodsbirsttr.mil": {
      +      "type": "number"
      +    },
      +    "grants.gov": {
      +      "type": "number"
      +    },
      +    "sbir.gov": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedInput schema / required
      Previous value: -[
      -  "keyword"
      -]New value: +[]
  3. Changed1 schema field changed
    • changedInput schema / properties / agency / description
      Previous value: -"Filter by agency (e.g., \"DOD\", \"HHS\", \"NASA\", \"NSF\", \"DOE\", \"USDA\")"New value: +"Filter by agency: DOW (Department of War, formerly DOD — \"DOD\" is accepted and translated), HHS, NASA, NSF, DOE, USDA, EPA, DOC, ED, DOT, DHS."
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "count": {
      +      "description": "Number of solicitations returned",
      +      "type": "number"
      +    },
      +    "keyword": {
      +      "description": "Search keyword used",
      +      "type": "string"
      +    },
      +    "open_only": {
      +      "description": "Whether only open solicitations were returned",
      +      "type": "boolean"
      +    },
      +    "solicitations": {
      +      "items": {
      +        "properties": {
      +          "agency": {
      +            "description": "Sponsoring agency",
      +            "type": "string"
      +          },
      +          "branch": {
      +            "description": "Agency branch",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "close_date": {
      +            "description": "Closing date",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "description": {
      +            "description": "Description of the solicitation",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "open_date": {
      +            "description": "Opening date",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "phase": {
      +            "description": "Funding phase",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "program": {
      +            "description": "Program name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "solicitation_id": {
      +            "description": "Unique solicitation identifier",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "topic_number": {
      +            "description": "Topic number identifier",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "topic_title": {
      +            "description": "Title of the solicitation topic",
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Link to solicitation details",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "topic_title",
      +          "agency"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "keyword",
      +    "open_only",
      +    "count",
      +    "solicitations"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "agency": "NSF",
      +    "keyword": "artificial intelligence",
      +    "open_only": true
      +  },
      +  {
      +    "keyword": "biotechnology",
      +    "limit": 10
      +  }
      +]
  6. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld, so the bar is lower; the description still adds real value by disclosing provenance (three live sources), the labelling guarantee that a Grants.gov hit is only tagged SBIR/STTR when its own title or NIH activity code says so, and the fact that program and source are always returned per result. It stops short of noting freshness/caching or pagination behavior, so it is not a full 5.

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

Conciseness4/5

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

Front-loaded with routing examples, then a dense paragraph of source and labelling detail; almost every clause carries information an agent can act on. The seven-item trigger-phrase list and the parenthetical source enumeration are longer than strictly necessary, but not padding.

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

Completeness5/5

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

An output schema exists, so return-value detail is not required, and annotations carry the safety profile. Combined with the source/labelling explanation, filtering capabilities, and explicit sibling routing, nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (limit, agency, keyword, open_only) are already documented, including the DOW->DOD translation and default values. The description's sentence 'Filter by keyword, agency ... and open/closed status' restates the schema rather than adding format or syntax guidance. Baseline 3 is correct.

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

Purpose5/5

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

States a specific verb (search) and resource (SBIR/STTR solicitations/topics) with unusual precision, including the three upstream data sources it merges. It explicitly distinguishes itself from the sibling sbir_search_awards, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Leads with representative trigger phrasings ('current SBIR topics', 'open DoD SBIR solicitations'), names the alternative tool (sbir_search_awards) and the condition that selects it. It also states the open_only semantics: closed results only come from the sbir.gov leg, and the other legs are skipped.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.