Register your organization as an S2S applicant on Grants.gov and obtain the client certificate required for S2S web service authentication; S2S uses certificate-based mutual TLS, not API key authentication.
Use the Grants.gov S2S applicant web service (SOAP) to call GetOpportunityList or the newer REST search endpoint at https://api.grants.gov/v1/api/search2 to find the target funding opportunity and retrieve its applicationPackageId.
Download the application package schema using the S2S GetApplicationPackage web service call; the package defines the required forms (SF-424, project narrative, budget) in grantor-specified XML schemas.
Populate all required form schemas in XML, validate each against the package schema, and bundle them into a submission package; attach supporting documents as base64-encoded file attachments within the XML envelope.
Submit the package via the S2S SubmitApplication web service call using your client certificate for authentication; the service returns a trackingNumber that you use to monitor submission status.
Poll GetApplicationStatus with the trackingNumber until the status transitions from Received to Validated or Rejected; a Validated status means Grants.gov has accepted the package for forwarding to the awarding agency.
Known gotchas
S2S uses mutual TLS certificate authentication, not API keys; the newer public REST search endpoints do not require authentication but the submission endpoints still require a valid client certificate — do not conflate the two.
Application package schemas are opportunity-specific and version-controlled; downloading the package schema for each opportunity rather than reusing a cached schema is essential, as form requirements change between competitions.
A Validated status from Grants.gov only confirms technical acceptance by the grants portal — it does not mean the awarding agency has received or reviewed the application; monitor agency-specific systems for downstream status updates.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp