search_opportunities

Pack: grants-gov · 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/search_opportunities for the schema, then POST the same URL with its arguments for the data.

Search Grants.gov for currently-open or recently-closed federal funding opportunities. Filter by keyword, opportunity status, agency code, funding category, or date range. Returns opportunity number, title, agency, open/close dates, and assistance listing numbers (formerly CFDA).

Parameters

NameTypeRequiredDescription
keywordstringnoGrants.gov’s own keyword match behaves like an exact/AND phrase across title and synopsis text, not a relevance-ranked full-text search — a compound multi-concept phrase (e.g. joining three unrelated nouns) routinely matches ZERO opportunities even when relevant ones are open (verified live 2026-09-25, fleet #2450: “cancer liquid biopsy diagnostic” -> 0 hits; the single word “SBIR” -> 29 hits including the exact NIH SBIR/STTR hub the compound phrase was trying to find). Prefer ONE short, salient term (“SBIR”, “liquid biopsy”, “wastewater”) and narrow with agencies/funding_categories/status instead of cramming every concept into this field. A zero-hit result is worth one retry with a shorter keyword before concluding nothing is open.
statusstringnoposted (open for applications now) | forecasted (announced, not yet posted) | closed | archived. Default posted. There is no “open” or “active” status: use “posted”. For posted plus forecasted together pass open_only: true.
open_onlybooleannotrue restricts to currently-open or forthcoming opportunities (same as status “posted|forecasted”); omit or false leaves status at its default. Alias for status when a caller only knows open/not-open, not the exact status vocabulary.
agenciesstringnoComma-separated agency codes (e.g., “EPA,USDA” or a bare department like “HHS” or “NIH”). Grants.gov itself indexes opportunities under a FULLY-QUALIFIED sub-agency code (“HHS-NIH11”, “HHS-CDC1”, …), and its own filter returns ZERO hits for a bare department code (verified live 2026-09-25, fleet #2450) — this tool detects a bare code automatically and matches it client-side against every hit’s sub-agency code instead of sending it upstream, so “HHS” still finds NIH/CDC/FDA opportunities. A code you already have in the full “DEPT-SUBAGENCY#” form is sent upstream unchanged.
agencystringnoAlias for agencies — a single agency or department code (e.g. “NIH” or “HHS”; see agencies for how a bare code is matched).
funding_categoriesstringnoComma-separated category codes (e.g., “ED” education, “ENV” environment, “ST” science)
alnstringnoAssistance Listing Number / CFDA number (e.g., “10.001”)
limitnumbernoRows per page (1-1000, default 25)
offsetnumberno0-based start record (default 0)

Example call

Arguments

{
  "keyword": "climate resilience",
  "status": "posted",
  "agencies": "EPA,NOAA",
  "funding_categories": "ENV",
  "limit": 25
}

curl

curl -X POST https://gateway.pipeworx.io/grants-gov/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_opportunities","arguments":{"keyword":"climate resilience","status":"posted","agencies":"EPA,NOAA","funding_categories":"ENV","limit":25}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('search_opportunities', {
  "keyword": "climate resilience",
  "status": "posted",
  "agencies": "EPA,NOAA",
  "funding_categories": "ENV",
  "limit": 25
});

More examples

{
  "keyword": "research",
  "open_only": true,
  "aln": "47.041",
  "limit": 50,
  "offset": 0
}

Response shape

Always returns: total, returned, opportunities

FieldTypeDescription
totalnumberTotal number of opportunities matching search criteria
returnednumberNumber of opportunities returned in this response
opportunitiesarrayList of opportunity search results
Full JSON Schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number",
      "description": "Total number of opportunities matching search criteria"
    },
    "returned": {
      "type": "number",
      "description": "Number of opportunities returned in this response"
    },
    "opportunities": {
      "type": "array",
      "description": "List of opportunity search results",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "number",
              "null"
            ],
            "description": "Numeric opportunity ID"
          },
          "number": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opportunity number"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opportunity title"
          },
          "agency_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Agency code"
          },
          "agency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Agency name"
          },
          "open_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opportunity open date"
          },
          "close_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opportunity close date"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opportunity status"
          },
          "doc_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Document type"
          },
          "assistance_listing_numbers": {
            "type": "array",
            "description": "Assistance listing numbers (formerly CFDA)",
            "items": {
              "type": "string"
            }
          },
          "grants_gov_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Direct link to opportunity on Grants.gov"
          }
        }
      }
    }
  },
  "required": [
    "total",
    "returned",
    "opportunities"
  ]
}

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 grants-gov pack
{
  "mcpServers": {
    "grants-gov": {
      "url": "https://gateway.pipeworx.io/grants-gov/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 30, 2026