OD. Media & Technology MCP OAuth API

The MCP OAuth API from OD. Media & Technology — 10 operation(s) for mcp oauth.

Operations 10

GET /.well-known/oauth-protected-resource/mcp Discover the ScrapeAtlas MCP resource and its authorization server #
GET /.well-known/oauth-protected-resource Discover the ScrapeAtlas MCP resource and its authorization server #
GET /.well-known/oauth-authorization-server Discover OAuth registration, authorization, token and revocation endpoints #
GET /.well-known/oauth-authorization-server/mcp Discover OAuth endpoints from the MCP path #
POST /oauth/register Register an MCP client and its OAuth callback URLs #
GET /oauth/authorize Start browser authorization with PKCE and redirect to account consent. #
GET /oauth/request Read the client and requested permissions for an authorization request #
POST /oauth/decision Approve or decline a connection using a signed-in ScrapeAtlas account #
POST /oauth/token Exchange a PKCE authorization code or rotate a refresh token #
POST /oauth/revoke Revoke a client connection using its access or refresh token #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scrapeatlas:scrapeatlas-mcp-oauth-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scrapeatlas-mcp-oauth-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ScrapeAtlas MCP OAuth API
  version: 0.1.0
  description: ScrapeAtlas turns public social media data into structured JSON. Get profiles, posts, videos, comments, ads and products through one API for your apps and AI agents. Authenticate at api.scrapeatlas.com with a customer x-api-key. Availability is documented per platform; local worker origins are operator references.
servers:
- url: https://api.scrapeatlas.com
tags:
- name: MCP OAuth
paths:
  /.well-known/oauth-protected-resource/mcp:
    get:
      operationId: mcpOAuthResource
      summary: Discover the ScrapeAtlas MCP resource and its authorization server
      tags:
      - MCP OAuth
      security: []
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthResourceSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /.well-known/oauth-protected-resource:
    get:
      operationId: mcpOAuthResourceRoot
      summary: Discover the ScrapeAtlas MCP resource and its authorization server
      tags:
      - MCP OAuth
      security: []
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthResourceSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /.well-known/oauth-authorization-server:
    get:
      operationId: mcpOAuthMetadata
      summary: Discover OAuth registration, authorization, token and revocation endpoints
      tags:
      - MCP OAuth
      security: []
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthMetadataSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /.well-known/oauth-authorization-server/mcp:
    get:
      operationId: mcpOAuthMetadataPath
      summary: Discover OAuth endpoints from the MCP path
      tags:
      - MCP OAuth
      security: []
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthMetadataSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /oauth/register:
    post:
      operationId: mcpOAuthRegister
      summary: Register an MCP client and its OAuth callback URLs
      tags:
      - MCP OAuth
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/oauthRegistrationSchema'
      responses:
        '201':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthRegistrationResponseSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /oauth/authorize:
    get:
      operationId: mcpOAuthAuthorize
      summary: Start browser authorization with PKCE and redirect to account consent.
      tags:
      - MCP OAuth
      security: []
      parameters:
      - in: query
        name: client_id
        required: true
        schema:
          type: string
          format: uuid
      - in: query
        name: redirect_uri
        required: true
        schema:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
      - in: query
        name: response_type
        required: true
        schema:
          type: string
          const: code
      - in: query
        name: code_challenge
        required: true
        schema:
          type: string
          pattern: ^[A-Za-z0-9_-]{43}$
      - in: query
        name: code_challenge_method
        required: true
        schema:
          type: string
          const: S256
      - in: query
        name: state
        required: false
        schema:
          type: string
          maxLength: 1024
      - in: query
        name: scope
        required: false
        schema:
          type: string
          const: scrapeatlas
      - in: query
        name: resource
        required: false
        schema:
          type: string
          maxLength: 2048
      responses:
        '302':
          description: Redirect to browser consent
          headers:
            Location:
              schema:
                type: string
                format: uri
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /oauth/request:
    get:
      operationId: mcpOAuthRequest
      summary: Read the client and requested permissions for an authorization request
      tags:
      - MCP OAuth
      security: []
      parameters:
      - in: query
        name: request_id
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthRequestResponseSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /oauth/decision:
    post:
      operationId: mcpOAuthDecision
      summary: Approve or decline a connection using a signed-in ScrapeAtlas account
      tags:
      - MCP OAuth
      security:
      - dashboardSession: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/oauthDecisionSchema'
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthDecisionResponseSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /oauth/token:
    post:
      operationId: mcpOAuthToken
      summary: Exchange a PKCE authorization code or rotate a refresh token
      tags:
      - MCP OAuth
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/oauthTokenSchema'
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthTokenResponseSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
  /oauth/revoke:
    post:
      operationId: mcpOAuthRevoke
      summary: Revoke a client connection using its access or refresh token
      tags:
      - MCP OAuth
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/oauthRevokeSchema'
      responses:
        '200':
          description: OAuth response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthEmptyResponseSchema'
        default:
          description: OAuth error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthErrorSchema'
components:
  schemas:
    oauthErrorSchema:
      type: object
      properties:
        error:
          type: string
      required:
      - error
      additionalProperties: false
    oauthMetadataSchema:
      type: object
      properties:
        issuer:
          type: string
          format: uri
        authorization_endpoint:
          type: string
          format: uri
        token_endpoint:
          type: string
          format: uri
        registration_endpoint:
          type: string
          format: uri
        revocation_endpoint:
          type: string
          format: uri
        response_types_supported:
          type: array
          items:
            type: string
            const: code
        grant_types_supported:
          type: array
          items:
            type: string
        token_endpoint_auth_methods_supported:
          type: array
          items:
            type: string
        revocation_endpoint_auth_methods_supported:
          type: array
          items:
            type: string
        code_challenge_methods_supported:
          type: array
          items:
            type: string
            const: S256
        scopes_supported:
          type: array
          items:
            type: string
            const: scrapeatlas
      required:
      - issuer
      - authorization_endpoint
      - token_endpoint
      - registration_endpoint
      - revocation_endpoint
      - response_types_supported
      - grant_types_supported
      - token_endpoint_auth_methods_supported
      - revocation_endpoint_auth_methods_supported
      - code_challenge_methods_supported
      - scopes_supported
      additionalProperties: false
    oauthRevokeSchema:
      type: object
      properties:
        token:
          type: string
          maxLength: 256
        token_type_hint:
          type: string
          enum:
          - access_token
          - refresh_token
        client_id:
          type: string
          format: uuid
        client_secret:
          type: string
          maxLength: 256
      required:
      - token
      additionalProperties: false
    oauthEmptyResponseSchema:
      type: object
      properties: {}
      required: []
      additionalProperties: false
    oauthDecisionSchema:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
        approve:
          type: boolean
      required:
      - request_id
      - approve
      additionalProperties: false
    oauthDecisionResponseSchema:
      type: object
      properties:
        redirect_url:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
      required:
      - redirect_url
      additionalProperties: false
    oauthRegistrationSchema:
      type: object
      properties:
        client_name:
          type: string
          minLength: 1
          maxLength: 80
          default: MCP client
        redirect_uris:
          type: array
          items:
            type: string
            maxLength: 2048
            x-runtime-refinement: true
          minItems: 1
          maxItems: 10
        token_endpoint_auth_method:
          type: string
          enum:
          - none
          - client_secret_post
          - client_secret_basic
          default: client_secret_basic
        grant_types:
          type: array
          items:
            type: string
            enum:
            - authorization_code
            - refresh_token
          minItems: 1
          maxItems: 2
          default:
          - authorization_code
          - refresh_token
        response_types:
          type: array
          items:
            type: string
            const: code
          default:
          - code
        scope:
          type: string
          const: scrapeatlas
        client_uri:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
        logo_uri:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
      required:
      - redirect_uris
      additionalProperties: true
    oauthTokenSchema:
      type: object
      properties:
        grant_type:
          type: string
          enum:
          - authorization_code
          - refresh_token
        client_id:
          type: string
          format: uuid
        client_secret:
          type: string
          maxLength: 256
        code:
          type: string
          pattern: ^[a-f0-9]{64}$
        code_verifier:
          type: string
          pattern: ^[A-Za-z0-9._~-]{43,128}$
        redirect_uri:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
        refresh_token:
          type: string
          pattern: ^sa_refresh_[a-f0-9]{64}$
        resource:
          type: string
          maxLength: 2048
        scope:
          type: string
          const: scrapeatlas
      required:
      - grant_type
      additionalProperties: false
    oauthTokenResponseSchema:
      type: object
      properties:
        access_token:
          type: string
          pattern: ^sa_mcp_[a-f0-9]{64}$
        refresh_token:
          type: string
          pattern: ^sa_refresh_[a-f0-9]{64}$
        token_type:
          type: string
          const: Bearer
        expires_in:
          type: number
          const: 3600
        scope:
          type: string
          const: scrapeatlas
      required:
      - access_token
      - token_type
      - expires_in
      - scope
      additionalProperties: false
    oauthRequestResponseSchema:
      type: object
      properties:
        client_name:
          type: string
        redirect_uri:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
        scope:
          type: string
          const: scrapeatlas
      required:
      - client_name
      - redirect_uri
      - scope
      additionalProperties: false
    oauthResourceSchema:
      type: object
      properties:
        resource:
          type: string
          format: uri
        authorization_servers:
          type: array
          items:
            type: string
            format: uri
        scopes_supported:
          type: array
          items:
            type: string
            const: scrapeatlas
        bearer_methods_supported:
          type: array
          items:
            type: string
            const: header
        resource_name:
          type: string
          const: ScrapeAtlas
      required:
      - resource
      - authorization_servers
      - scopes_supported
      - bearer_methods_supported
      - resource_name
      additionalProperties: false
    oauthRegistrationResponseSchema:
      type: object
      properties:
        client_name:
          type: string
          minLength: 1
          maxLength: 80
          default: MCP client
        redirect_uris:
          type: array
          items:
            type: string
            maxLength: 2048
            x-runtime-refinement: true
          minItems: 1
          maxItems: 10
        token_endpoint_auth_method:
          type: string
          enum:
          - none
          - client_secret_post
          - client_secret_basic
          default: client_secret_basic
        grant_types:
          type: array
          items:
            type: string
            enum:
            - authorization_code
            - refresh_token
          minItems: 1
          maxItems: 2
          default:
          - authorization_code
          - refresh_token
        response_types:
          type: array
          items:
            type: string
            const: code
          default:
          - code
        scope:
          type: string
          const: scrapeatlas
        client_uri:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
        logo_uri:
          type: string
          maxLength: 2048
          x-runtime-refinement: true
        client_id:
          type: string
          format: uuid
        client_id_issued_at:
          type: integer
        client_secret:
          type: string
        client_secret_expires_at:
          type: integer
      required:
      - redirect_uris
      - client_id
      - client_id_issued_at
      additionalProperties: false
  securitySchemes:
    amazon:
      type: apiKey
      in: header
      name: x-api-key
    bluesky:
      type: apiKey
      in: header
      name: x-api-key
    cosmos:
      type: apiKey
      in: header
      name: x-api-key
    couchsurfing:
      type: apiKey
      in: header
      name: x-api-key
    depop:
      type: apiKey
      in: header
      name: x-api-key
    dribbble:
      type: apiKey
      in: header
      name: x-api-key
    etsy:
      type: apiKey
      in: header
      name: x-api-key
    facebook-events:
      type: apiKey
      in: header
      name: x-api-key
    facebook-marketplace:
      type: apiKey
      in: header
      name: x-api-key
    facebook:
      type: apiKey
      in: header
      name: x-api-key
    github:
      type: apiKey
      in: header
      name: x-api-key
    hackernews:
      type: apiKey
      in: header
      name: x-api-key
    instagram:
      type: apiKey
      in: header
      name: x-api-key
    kalshi:
      type: apiKey
      in: header
      name: x-api-key
    kick:
      type: apiKey
      in: header
      name: x-api-key
    komi:
      type: apiKey
      in: header
      name: x-api-key
    kwai:
      type: apiKey
      in: header
      name: x-api-key
    linkbio:
      type: apiKey
      in: header
      name: x-api-key
    linkedin-ads:
      type: apiKey
      in: header
      name: x-api-key
    linkedin:
      type: apiKey
      in: header
      name: x-api-key
    linkme:
      type: apiKey
      in: header
      name: x-api-key
    linktree:
      type: apiKey
      in: header
      name: x-api-key
    mastodon:
      type: apiKey
      in: header
      name: x-api-key
    medium:
      type: apiKey
      in: header
      name: x-api-key
    meetup:
      type: apiKey
      in: header
      name: x-api-key
    meta-ads:
      type: apiKey
      in: header
      name: x-api-key
    pillar:
      type: apiKey
      in: header
      name: x-api-key
    pinterest:
      type: apiKey
      in: header
      name: x-api-key
    polymarket:
      type: apiKey
      in: header
      name: x-api-key
    producthunt:
      type: apiKey
      in: header
      name: x-api-key
    quora:
      type: apiKey
      in: header
      name: x-api-key
    reddit:
      type: apiKey
      in: header
      name: x-api-key
    rumble:
      type: apiKey
      in: header
      name: x-api-key
    skool:
      type: apiKey
      in: header
      name: x-api-key
    snapchat:
      type: apiKey
      in: header
      name: x-api-key
    substack:
      type: apiKey
      in: header
      name: x-api-key
    telegram:
      type: apiKey
      in: header
      name: x-api-key
    threads:
      type: apiKey
      in: header
      name: x-api-key
    tiktok-shop:
      type: apiKey
      in: header
      name: x-api-key
    tiktok:
      type: apiKey
      in: header
      name: x-api-key
    truthsocial:
      type: apiKey
      in: header
      name: x-api-key
    tumblr:
      type: apiKey
      in: header
      name: x-api-key
    twitch:
      type: apiKey
      in: header
      name: x-api-key
    twitter:
      type: apiKey
      in: header
      name: x-api-key
    usage:
      type: apiKey
      in: header
      name: x-api-key
    vinted:
      type: apiKey
      in: header
      name: x-api-key
    whatnot:
      type: apiKey
      in: header
      name: x-api-key
    youtube:
      type: apiKey
      in: header
      name: x-api-key
    dashboardSession:
      type: http
      scheme: bearer
      description: ScrapeAtlas dashboard session