openapi: 3.1.0 info: title: PropelAuth End-User API Keys Access Tokens MCP OAuth 2.1 API description: 'Backend REST API for validating, issuing, listing, and revoking API keys that PropelAuth manages on behalf of your end users and tenant organizations. API keys can be scoped to a personal user, an organization, or imported from a legacy auth system. All endpoints require a PropelAuth Backend Integration API key. ' version: 1.0.0 contact: name: PropelAuth Support url: https://www.propelauth.com email: support@propelauth.com license: name: PropelAuth Terms url: https://www.propelauth.com/legal/terms-of-service servers: - url: https://{authId}.propelauthtest.com description: Test environment variables: authId: default: '0000000000' - url: https://auth.example.com description: Production / Staging custom domain security: - BackendApiKey: [] tags: - name: MCP OAuth 2.1 description: OAuth 2.1 flows for MCP clients paths: /oauth/2.1/authorize: get: summary: MCP Authorize description: Begin an OAuth 2.1 authorization code flow with PKCE for an MCP client. operationId: mcpAuthorize tags: - MCP OAuth 2.1 parameters: - name: response_type in: query required: true schema: type: string enum: - code - name: client_id in: query required: true schema: type: string - name: redirect_uri in: query required: true schema: type: string format: uri - name: scope in: query schema: type: string example: read:user_data tools:execute - name: state in: query schema: type: string - name: code_challenge in: query required: true schema: type: string - name: code_challenge_method in: query required: true schema: type: string enum: - S256 responses: '302': description: Redirect to login or to redirect_uri with authorization code /oauth/2.1/token: post: summary: MCP Token description: Exchange an authorization code for tokens, or refresh an existing token. operationId: mcpToken tags: - MCP OAuth 2.1 requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - grant_type - client_id properties: grant_type: type: string enum: - authorization_code - refresh_token code: type: string redirect_uri: type: string format: uri refresh_token: type: string client_id: type: string client_secret: type: string code_verifier: type: string responses: '200': description: Token issued content: application/json: schema: type: object properties: access_token: type: string refresh_token: type: string token_type: type: string expires_in: type: integer scope: type: string /oauth/2.1/introspect: post: summary: MCP Introspect description: Validate an access token and return associated user, organization, and scope information. operationId: mcpIntrospect tags: - MCP OAuth 2.1 requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - token properties: token: type: string token_type_hint: type: string enum: - access_token - refresh_token responses: '200': description: Introspection result content: application/json: schema: type: object properties: active: type: boolean scope: type: string client_id: type: string username: type: string sub: type: string exp: type: integer iat: type: integer org_id: type: string format: uuid org_role: type: string components: securitySchemes: BackendApiKey: type: http scheme: bearer