# auth.md — OpenGrants

Infrastructure for the flow of public capital. OpenGrants exposes two credentialed surfaces, with different auth models. Pick the
one that matches how you intend to connect.

## Audience

Autonomous agents and integrations that need programmatic access to US public funding data.

## The two surfaces

| Surface | Auth | Details |
| --- | --- | --- |
| REST API | API key, bearer | <https://ops.opengrants.io/auth.md> |
| MCP server | OAuth 2.0 with dynamic client registration | <https://mcp.opengrants.io/auth.md> |

A third, read-only MCP server runs without authentication at
`https://opengrants-mcp-elevenlabs.fly.dev/mcp` for voice and other latency-sensitive clients.

## Registration

```json
{
  "agent_auth": {
    "skill": "opengrants-api",
    "register_uri": "https://ops.opengrants.io/app/developer",
    "methods": [
      {
        "type": "api_key",
        "credential_location": "header",
        "header": "Authorization",
        "scheme": "Bearer",
        "provisioning": "manual",
        "documentation": "https://ops.opengrants.io/api-docs"
      },
      {
        "type": "oauth2",
        "grant_types": ["authorization_code", "refresh_token"],
        "code_challenge_methods": ["S256"],
        "registration_endpoint": "https://mcp.opengrants.io/register",
        "authorization_endpoint": "https://mcp.opengrants.io/authorize",
        "token_endpoint": "https://mcp.opengrants.io/token",
        "bearer_methods_supported": ["header"]
      }
    ]
  }
}
```

## Using the credential

Both surfaces take the credential in the `Authorization` header as a bearer token.

## Related

- API catalog: <https://aistaff.opengrants.io/.well-known/api-catalog>
- Agent card: <https://aistaff.opengrants.io/.well-known/agent-card.json>
- Agent skills: <https://aistaff.opengrants.io/.well-known/agent-skills/index.json>
- Support: support@opengrants.io
