sbir_search_solicitations
Pack: sbir · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)
No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/sbir_search_solicitations for the schema, then POST the same URL with its arguments for the data.
“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.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
keyword | string | no | Search term to match against solicitation/topic titles and descriptions. |
agency | string | no | 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”. |
open_only | boolean | no | 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. |
limit | number | no | Number of results to return across all sources combined (default 20, max 100). |
Example call
Arguments
{
"keyword": "cancer liquid biopsy diagnostic",
"agency": "NIH"
}
curl
curl -X POST https://gateway.pipeworx.io/sbir/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"sbir_search_solicitations","arguments":{"keyword":"cancer liquid biopsy diagnostic","agency":"NIH"}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('sbir_search_solicitations', {
"keyword": "cancer liquid biopsy diagnostic",
"agency": "NIH"
});
More examples
{
"agency": "ARMY"
}
Response shape
Always returns: keyword, open_only, count, solicitations
| Field | Type | Description |
|---|---|---|
keyword | string | null | Search keyword used; null when the call was not narrowed by keyword |
agency | string | null | Canonical agency code the search was narrowed to; null when none was given |
open_only | boolean | Whether only open solicitations were returned |
count | number | Number of solicitations returned |
sources_used | object | How many rows each live source contributed before the limit was applied |
solicitations | array |
Full JSON Schema
{
"type": "object",
"properties": {
"keyword": {
"type": [
"string",
"null"
],
"description": "Search keyword used; null when the call was not narrowed by keyword"
},
"agency": {
"type": [
"string",
"null"
],
"description": "Canonical agency code the search was narrowed to; null when none was given"
},
"open_only": {
"type": "boolean",
"description": "Whether only open solicitations were returned"
},
"count": {
"type": "number",
"description": "Number of solicitations returned"
},
"sources_used": {
"type": "object",
"description": "How many rows each live source contributed before the limit was applied",
"properties": {
"sbir.gov": {
"type": "number"
},
"dodsbirsttr.mil": {
"type": "number"
},
"grants.gov": {
"type": "number"
}
}
},
"solicitations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"topic_title": {
"type": "string",
"description": "Title of the solicitation topic"
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of the solicitation"
},
"agency": {
"type": [
"string",
"null"
],
"description": "Sponsoring agency"
},
"branch": {
"type": [
"string",
"null"
],
"description": "Agency branch"
},
"program": {
"type": [
"string",
"null"
],
"description": "Program name"
},
"phase": {
"type": [
"string",
"null"
],
"description": "Funding phase"
},
"topic_number": {
"type": [
"string",
"null"
],
"description": "Topic number identifier"
},
"solicitation_id": {
"type": [
"string",
"null"
],
"description": "Unique solicitation identifier"
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Opening date"
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Closing date"
},
"url": {
"type": [
"string",
"null"
],
"description": "Link to solicitation details"
},
"source": {
"type": "string",
"enum": [
"sbir.gov",
"dodsbirsttr.mil",
"grants.gov"
],
"description": "Which live source this row came from"
}
},
"required": [
"topic_title",
"agency"
]
}
}
},
"required": [
"keyword",
"open_only",
"count",
"solicitations"
]
}
Connect
Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:
{
"mcpServers": {
"pipeworx": {
"url": "https://pipeworx.io/mcp"
}
}
}
Connect to just the sbir pack
{
"mcpServers": {
"sbir": {
"url": "https://gateway.pipeworx.io/sbir/mcp"
}
}
}
See Getting Started for client-specific install steps.