Official MCP Registry API

The Official MCP Registry is the community registry service for Model Context Protocol servers, run by the MCP project. Its REST API publishes a full OpenAPI 3.1.0 contract with 32 operations across two live version prefixes (/v0.1 and /v0). Reads are anonymous — list, search and fetch server records with cursor pagination and an updated_since incremental-sync filter; writes require a Registry JWT minted by proving namespace ownership through GitHub OAuth, GitHub or generic OIDC, a DNS signature, or an HTTP signature. Errors are RFC 9457 problem details.

Operations 32

POST /v0.1/auth/dns Exchange DNS signature for Registry JWT #
POST /v0.1/auth/github-at Exchange GitHub OAuth access token for Registry JWT #
POST /v0.1/auth/github-oidc Exchange GitHub OIDC token for Registry JWT #
POST /v0.1/auth/http Exchange HTTP signature for Registry JWT #
POST /v0.1/auth/oidc Exchange OIDC ID token for Registry JWT #
GET /v0.1/health Health check #
GET /v0.1/ping Ping #
POST /v0.1/publish Publish MCP server #
GET /v0.1/servers List MCP servers #
PATCH /v0.1/servers/{serverName}/status Update status for all versions of an MCP server #
GET /v0.1/servers/{serverName}/versions Get all versions of an MCP server #
GET /v0.1/servers/{serverName}/versions/{version} Get specific MCP server version #
PUT /v0.1/servers/{serverName}/versions/{version} Edit MCP server #
PATCH /v0.1/servers/{serverName}/versions/{version}/status Update MCP server status #
POST /v0.1/validate Validate MCP server JSON #
GET /v0.1/version Get version information #
POST /v0/auth/dns Exchange DNS signature for Registry JWT #
POST /v0/auth/github-at Exchange GitHub OAuth access token for Registry JWT #
POST /v0/auth/github-oidc Exchange GitHub OIDC token for Registry JWT #
POST /v0/auth/http Exchange HTTP signature for Registry JWT #
POST /v0/auth/oidc Exchange OIDC ID token for Registry JWT #
GET /v0/health Health check #
GET /v0/ping Ping #
POST /v0/publish Publish MCP server #
GET /v0/servers List MCP servers #
PATCH /v0/servers/{serverName}/status Update status for all versions of an MCP server #
GET /v0/servers/{serverName}/versions Get all versions of an MCP server #
GET /v0/servers/{serverName}/versions/{version} Get specific MCP server version #
PUT /v0/servers/{serverName}/versions/{version} Edit MCP server #
PATCH /v0/servers/{serverName}/versions/{version}/status Update MCP server status #
POST /v0/validate Validate MCP server JSON #
GET /v0/version Get version information #

Documentation

Specifications

SDKs

Other Resources

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/mcp-registry"
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

agentic-ai-foundation-mcp-registry-openapi.yaml Raw ↑
components:
  schemas:
    Argument:
      additionalProperties: false
      properties:
        choices:
          description: A list of possible values for the input. If provided, the user must select one of these values.
          items:
            type: string
          type:
            - array
            - "null"
        default:
          description: The default value for the input. This should be a valid value for the input. If you want to provide input examples or guidance, use the placeholder field instead.
          type: string
        description:
          description: A description of the input, which clients can use to provide context to the user.
          type: string
        format:
          description: Specifies the input format. Supported values include filepath, which should be interpreted as a file on the user's filesystem.
          enum:
            - string
            - number
            - boolean
            - filepath
          type: string
        isRepeated:
          description: Whether the argument can be repeated multiple times.
          type: boolean
        isRequired:
          description: Whether the input is required
          type: boolean
        isSecret:
          description: Indicates whether the input is a secret value (e.g., password, token). If true, clients should handle the value securely.
          type: boolean
        name:
          description: The flag name (for named arguments), including any leading dashes. Empty for positional arguments.
          examples:
            - --port
          type: string
        placeholder:
          description: A placeholder for the input to be displaying during configuration. This is used to provide examples or guidance about the expected form or content of the input.
          type: string
        type:
          description: "Argument type: 'positional' or 'named'"
          examples:
            - positional
          type: string
        value:
          description: The value for the input. If this is not set, the user may be prompted to provide a value. Identifiers wrapped in {curly_braces} will be replaced with the corresponding properties from the input variables map.
          type: string
        valueHint:
          description: An identifier for positional arguments. Used in transport URL variable substitution.
          examples:
            - file_path
          type: string
        variables:
          additionalProperties:
            $ref: "#/components/schemas/Input"
          description: A map of variable names to their values. Keys in the input value that are wrapped in {curly_braces} will be replaced with the corresponding variable values.
          type: object
      required:
        - type
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    ErrorModel:
      additionalProperties: false
      properties:
        detail:
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: "#/components/schemas/ErrorDetail"
          type:
            - array
            - "null"
        instance:
          description: A URI reference that identifies the specific occurrence of the problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    GitHubOIDCTokenExchangeInputBody:
      additionalProperties: false
      properties:
        oidc_token:
          description: GitHub Actions OIDC token
          type: string
      required:
        - oidc_token
      type: object
    GitHubTokenExchangeInputBody:
      additionalProperties: false
      properties:
        github_token:
          description: GitHub OAuth token
          type: string
      required:
        - github_token
      type: object
    HealthBody:
      additionalProperties: false
      properties:
        github_client_id:
          description: GitHub OAuth App Client ID
          type: string
        status:
          description: Health status
          examples:
            - ok
          type: string
      required:
        - status
      type: object
    Icon:
      additionalProperties: false
      properties:
        mimeType:
          description: "Optional MIME type override if the source MIME type is missing or generic. Must be one of: image/png, image/jpeg, image/jpg, image/svg+xml, image/webp."
          enum:
            - image/png
            - image/jpeg
            - image/jpg
            - image/svg+xml
            - image/webp
          examples:
            - image/png
          type: string
        sizes:
          description: Optional array of strings that specify sizes at which the icon can be used. Each string should be in WxH format (e.g., '48x48', '96x96') or 'any' for scalable formats like SVG. If not provided, the client should assume that the icon can be used at any size.
          items:
            type: string
          type:
            - array
            - "null"
        src:
          description: A standard URI pointing to an icon resource. Must be an HTTPS URL. Consumers SHOULD take steps to ensure URLs serving icons are from the same domain as the server or a trusted domain. Consumers SHOULD take appropriate precautions when consuming SVGs as they can contain executable JavaScript.
          examples:
            - https://example.com/icon.png
          format: uri
          maxLength: 255
          type: string
        theme:
          description: Optional specifier for the theme this icon is designed for. 'light' indicates the icon is designed to be used with a light background, and 'dark' indicates the icon is designed to be used with a dark background. If not provided, the client should assume the icon can be used with any theme.
          enum:
            - light
            - dark
          type: string
      required:
        - src
      type: object
    Input:
      additionalProperties: false
      properties:
        choices:
          description: A list of possible values for the input. If provided, the user must select one of these values.
          items:
            type: string
          type:
            - array
            - "null"
        default:
          description: The default value for the input. This should be a valid value for the input. If you want to provide input examples or guidance, use the placeholder field instead.
          type: string
        description:
          description: A description of the input, which clients can use to provide context to the user.
          type: string
        format:
          description: Specifies the input format. Supported values include filepath, which should be interpreted as a file on the user's filesystem.
          enum:
            - string
            - number
            - boolean
            - filepath
          type: string
        isRequired:
          description: Whether the input is required
          type: boolean
        isSecret:
          description: Indicates whether the input is a secret value (e.g., password, token). If true, clients should handle the value securely.
          type: boolean
        placeholder:
          description: A placeholder for the input to be displaying during configuration. This is used to provide examples or guidance about the expected form or content of the input.
          type: string
        value:
          description: The value for the input. If this is not set, the user may be prompted to provide a value. Identifiers wrapped in {curly_braces} will be replaced with the corresponding properties from the input variables map.
          type: string
      type: object
    KeyValueInput:
      additionalProperties: false
      properties:
        choices:
          description: A list of possible values for the input. If provided, the user must select one of these values.
          items:
            type: string
          type:
            - array
            - "null"
        default:
          description: The default value for the input. This should be a valid value for the input. If you want to provide input examples or guidance, use the placeholder field instead.
          type: string
        description:
          description: A description of the input, which clients can use to provide context to the user.
          type: string
        format:
          description: Specifies the input format. Supported values include filepath, which should be interpreted as a file on the user's filesystem.
          enum:
            - string
            - number
            - boolean
            - filepath
          type: string
        isRequired:
          description: Whether the input is required
          type: boolean
        isSecret:
          description: Indicates whether the input is a secret value (e.g., password, token). If true, clients should handle the value securely.
          type: boolean
        name:
          description: Name of the header or environment variable.
          examples:
            - SOME_VARIABLE
          type: string
        placeholder:
          description: A placeholder for the input to be displaying during configuration. This is used to provide examples or guidance about the expected form or content of the input.
          type: string
        value:
          description: The value for the input. If this is not set, the user may be prompted to provide a value. Identifiers wrapped in {curly_braces} will be replaced with the corresponding properties from the input variables map.
          type: string
        variables:
          additionalProperties:
            $ref: "#/components/schemas/Input"
          description: A map of variable names to their values. Keys in the input value that are wrapped in {curly_braces} will be replaced with the corresponding variable values.
          type: object
      required:
        - name
      type: object
    Metadata:
      additionalProperties: false
      properties:
        count:
          description: Number of items in current page
          format: int64
          type: integer
        nextCursor:
          description: Pagination cursor for retrieving the next page of results. Use this exact value in the cursor query parameter of your next request.
          type: string
      required:
        - count
      type: object
    OIDCTokenExchangeInputBody:
      additionalProperties: false
      properties:
        oidc_token:
          description: OIDC ID token from any provider
          type: string
      required:
        - oidc_token
      type: object
    Package:
      additionalProperties: false
      properties:
        environmentVariables:
          description: A mapping of environment variables to be set when running the package.
          items:
            $ref: "#/components/schemas/KeyValueInput"
          type:
            - array
            - "null"
        fileSha256:
          description: SHA-256 hash of the package file for integrity verification. Required for MCPB packages and optional for other package types. Authors are responsible for generating correct SHA-256 hashes when creating server.json. If present, MCP clients must validate the downloaded file matches the hash before running packages to ensure file integrity.
          examples:
            - fe333e598595000ae021bd27117db32ec69af6987f507ba7a63c90638ff633ce
          pattern: ^[a-f0-9]{64}$
          type: string
        identifier:
          description: Package identifier - either a package name (for registries) or URL (for direct downloads)
          examples:
            - "@modelcontextprotocol/server-brave-search"
          minLength: 1
          type: string
        packageArguments:
          description: A list of arguments to be passed to the package's binary.
          items:
            $ref: "#/components/schemas/Argument"
          type:
            - array
            - "null"
        registryBaseUrl:
          description: Base URL of the package registry
          examples:
            - https://registry.npmjs.org
          format: uri
          type: string
        registryType:
          description: Registry type indicating how to download packages (e.g., 'npm', 'pypi', 'cargo', 'oci', 'nuget', 'mcpb')
          examples:
            - npm
          minLength: 1
          type: string
        runtimeArguments:
          description: A list of arguments to be passed to the package's runtime command (such as docker or npx). The runtimeHint field should be provided when runtimeArguments are present.
          items:
            $ref: "#/components/schemas/Argument"
          type:
            - array
            - "null"
        runtimeHint:
          description: A hint to help clients determine the appropriate runtime for the package. This field should be provided when runtimeArguments are present.
          examples:
            - npx
          type: string
        transport:
          $ref: "#/components/schemas/Transport"
          description: Transport protocol configuration for the package
        version:
          description: Package version. Must be a specific version. Version ranges are rejected (e.g., '^1.2.3', '~1.2.3', '>=1.2.3', '1.x', '1.*').
          examples:
            - 1.0.2
          maxLength: 255
          minLength: 1
          type: string
      required:
        - registryType
        - identifier
        - transport
      type: object
    PingBody:
      additionalProperties: false
      properties:
        pong:
          description: Ping response
          examples:
            - true
          type: boolean
      required:
        - pong
      type: object
    RegistryExtensions:
      additionalProperties: false
      properties:
        isLatest:
          description: Whether this is the latest version of the server
          type: boolean
        publishedAt:
          description: Timestamp when the server was first published to the registry
          format: date-time
          type: string
        status:
          description: Server lifecycle status
          enum:
            - active
            - deprecated
            - deleted
          type: string
        statusChangedAt:
          description: Timestamp when the server status was last changed
          format: date-time
          type: string
        statusMessage:
          description: Optional message explaining status change (e.g., deprecation reason, migration guidance)
          type: string
        updatedAt:
          description: Timestamp when the server entry was last updated
          format: date-time
          type: string
      required:
        - status
        - statusChangedAt
        - publishedAt
        - isLatest
      type: object
    Repository:
      additionalProperties: false
      properties:
        id:
          description: "Repository identifier from the hosting service (e.g., GitHub repo ID). Owned and determined by the source forge. Should remain stable across repository renames and may be used to detect repository resurrection attacks - if a repository is deleted and recreated, the ID should change. For GitHub, use: gh api repos/<owner>/<repo> --jq '.id'"
          examples:
            - b94b5f7e-c7c6-d760-2c78-a5e9b8a5b8c9
          type: string
        source:
          description: Repository hosting service identifier. Used by registries to determine validation and API access methods.
          examples:
            - github
          type: string
        subfolder:
          description: Optional relative path from repository root to the server location within a monorepo or nested package structure. Must be a clean relative path.
          examples:
            - src/everything
          type: string
        url:
          description: Repository URL for browsing source code. Should support both web browsing and git clone operations.
          examples:
            - https://github.com/modelcontextprotocol/servers
          format: uri
          type: string
      type: object
    ResponseMeta:
      additionalProperties: false
      properties:
        io.modelcontextprotocol.registry/official:
          $ref: "#/components/schemas/RegistryExtensions"
          description: Official MCP registry metadata
      type: object
    ServerJSON:
      additionalProperties: false
      properties:
        $schema:
          description: JSON Schema URI for this server.json format
          examples:
            - https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json
          format: uri
          minLength: 1
          type: string
        _meta:
          $ref: "#/components/schemas/ServerMeta"
          description: Extension metadata using reverse DNS namespacing for vendor-specific data
        description:
          description: Clear human-readable explanation of server functionality.
          examples:
            - MCP server providing weather data and forecasts via OpenWeatherMap API
          maxLength: 100
          minLength: 1
          type: string
        icons:
          description: Optional set of sized icons that the client can display in a user interface.
          items:
            $ref: "#/components/schemas/Icon"
          type:
            - array
            - "null"
        name:
          description: Server name in reverse-DNS format. Must contain exactly one forward slash separating namespace from server name.
          examples:
            - io.github.user/weather
          maxLength: 200
          minLength: 3
          pattern: ^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$
          type: string
        packages:
          description: Array of package configurations
          items:
            $ref: "#/components/schemas/Package"
          type:
            - array
            - "null"
        remotes:
          description: Array of remote configurations
          items:
            $ref: "#/components/schemas/Transport"
          type:
            - array
            - "null"
        repository:
          $ref: "#/components/schemas/Repository"
          description: Optional repository metadata for the MCP server source code.
        title:
          description: Optional human-readable title or display name for the MCP server.
          examples:
            - Weather API
          maxLength: 100
          minLength: 1
          type: string
        version:
          description: Version string for this server. SHOULD follow semantic versioning.
          examples:
            - 1.0.2
          maxLength: 255
          minLength: 1
          type: string
        websiteUrl:
          description: Optional URL to the server's homepage, documentation, or project website.
          examples:
            - https://modelcontextprotocol.io/examples
          format: uri
          type: string
      required:
        - $schema
        - name
        - description
        - version
      type: object
    ServerListResponse:
      additionalProperties: false
      properties:
        metadata:
          $ref: "#/components/schemas/Metadata"
          description: Pagination metadata
        servers:
          description: List of server entries
          items:
            $ref: "#/components/schemas/ServerResponse"
          type:
            - array
            - "null"
      required:
        - servers
        - metadata
      type: object
    ServerMeta:
      additionalProperties: false
      properties:
        io.modelcontextprotocol.registry/publisher-provided:
          additionalProperties: {}
          description: Publisher-provided metadata for downstream registries
          type: object
      type: object
    ServerResponse:
      additionalProperties: false
      properties:
        _meta:
          $ref: "#/components/schemas/ResponseMeta"
          description: Registry-managed metadata
        server:
          $ref: "#/components/schemas/ServerJSON"
          description: Server configuration and metadata
      required:
        - server
        - _meta
      type: object
    SignatureTokenExchangeInput:
      additionalProperties: false
      properties:
        domain:
          description: Domain name
          examples:
            - example.com
          type: string
        signed_timestamp:
          description: Hex-encoded signature of timestamp
          examples:
            - abcdef1234567890
          type: string
        timestamp:
          description: RFC3339 timestamp
          examples:
            - "2023-01-01T00:00:00Z"
          type: string
      required:
        - domain
        - timestamp
        - signed_timestamp
      type: object
    TokenResponse:
      additionalProperties: false
      properties:
        expires_at:
          format: int64
          type: integer
        registry_token:
          type: string
      required:
        - registry_token
        - expires_at
      type: object
    Transport:
      additionalProperties: false
      properties:
        headers:
          description: HTTP headers for streamable-http or sse transports
          items:
            $ref: "#/components/schemas/KeyValueInput"
          type:
            - array
            - "null"
        type:
          description: Transport type (stdio, streamable-http, or sse)
          examples:
            - stdio
          type: string
        url:
          description: URL for streamable-http or sse transports
          examples:
            - https://api.example.com/mcp
          type: string
        variables:
          additionalProperties:
            $ref: "#/components/schemas/Input"
          description: Variables for URL templating in remote transports
          type: object
      required:
        - type
      type: object
    UpdateAllVersionsStatusResponse:
      additionalProperties: false
      properties:
        servers:
          description: List of all updated server versions
          items:
            $ref: "#/components/schemas/ServerResponse"
          type:
            - array
            - "null"
        updatedCount:
          description: Number of versions updated
          format: int64
          type: integer
      required:
        - updatedCount
        - servers
      type: object
    UpdateServerStatusBody:
      additionalProperties: false
      properties:
        status:
          description: New server lifecycle status
          enum:
            - active
            - deprecated
            - deleted
          type: string
        statusMessage:
          description: Optional message explaining the status change (e.g., reason for deprecation)
          maxLength: 500
          type: string
      required:
        - status
      type: object
    ValidationIssue:
      additionalProperties: false
      properties:
        message:
          type: string
        path:
          type: string
        reference:
          type: string
        severity:
          type: string
        type:
          type: string
      required:
        - type
        - path
        - message
        - severity
        - reference
      type: object
    ValidationResult:
      additionalProperties: false
      properties:
        issues:
          items:
            $ref: "#/components/schemas/ValidationIssue"
          type:
            - array
            - "null"
        valid:
          type: boolean
      required:
        - valid
        - issues
      type: object
    VersionBody:
      additionalProperties: false
      properties:
        build_time:
          description: Build timestamp
          examples:
            - "2025-10-14T12:00:00Z"
          type: string
        git_commit:
          description: Git commit SHA
          examples:
            - abc123d
          type: string
        version:
          description: Application version
          examples:
            - v1.0.0
          type: string
      required:
        - version
        - git_commit
        - build_time
      type: object
info:
  description: |-
    A community driven registry service for Model Context Protocol (MCP) servers.

    [GitHub repository](https://github.com/modelcontextprotocol/registry) | [Documentation](https://github.com/modelcontextprotocol/registry/tree/main/docs)
  title: Official MCP Registry
  version: 1.0.0
openapi: 3.1.0
paths:
  /v0.1/auth/dns:
    post:
      description: Authenticate using DNS TXT record public key and signed timestamp
      operationId: exchange-dns-token-v0.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SignatureTokenExchangeInput"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Exchange DNS signature for Registry JWT
      tags:
        - auth
  /v0.1/auth/github-at:
    post:
      description: Exchange a GitHub OAuth access token for a short-lived Registry JWT token
      operationId: exchange-github-token-v0.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GitHubTokenExchangeInputBody"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Exchange GitHub OAuth access token for Registry JWT
      tags:
        - auth
  /v0.1/auth/github-oidc:
    post:
      description: Exchange a GitHub Actions OIDC token for a short-lived Registry JWT token
      operationId: exchange-github-oidc-token-v0.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GitHubOIDCTokenExchangeInputBody"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Exchange GitHub OIDC token for Registry JWT
      tags:
        - auth
  /v0.1/auth/http:
    post:
      description: Authenticate using HTTP-hosted public key and signed timestamp
      operationId: exchange-http-token-v0.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SignatureTokenExchangeInput"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Exchange HTTP signature for Registry JWT
      tags:
        - auth
  /v0.1/auth/oidc:
    post:
      description: Exchange an OIDC ID token from any configured provider for a short-lived Registry JWT token
      operationId: exchange-oidc-token-v0.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OIDCTokenExchangeInputBody"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Exchange OIDC ID token for Registry JWT
      tags:
        - auth
  /v0.1/health:
    get:
      description: Check the health status of the API
      operationId: get-health-v0.1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthBody"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Health check
      tags:
        - health
  /v0.1/ping:
    get:
      description: Simple ping endpoint
      operationId: ping-v0.1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PingBody"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      summary: Ping
      tags:
        - ping
  /v0.1/publish:
    post:
      description: Publish a new MCP server to the registry or update an existing one
      operationId: publish-server-v0.1
      parameters:
        - description: Registry JWT token (obtained from /v0/auth/token/github)
          in: header
          name: Authorization
          required: true
          schema:
            description: Registry JWT token (obtained from /v0/auth/token/github)
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServerJSON"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServerResponse"
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ErrorModel"
          description: Error
      security:
        - bearer: []
      summary: Publish MCP server
      tags:
        - publish
  /v0.1/servers:
    get:
      description: Get a paginated list of MCP servers from the registry
      operationId: list-servers-v0.1
      parameters:
        - description: Pagination cursor
          explode: false
          in: query
          name: cursor
          schema:
            description: Pagination cursor
            examples:
              - server-cursor-123
            type: string
        - description: Number of items per page
          explode: false
          in: query
          name: limit
          schema:
            default: 30
            description: Number of items per page
            examples:
              - 50
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Filter servers updated since timestamp (RFC3339 datetime)
          explode: false
          in: query
          name: updated_since
          schema:
            description: Filter servers updated since timestamp (RFC3339 datetime)
            examples:
              - "2025-08-07T13:15:04.

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/agentic-ai-foundation/refs/heads/main/openapi/agentic-ai-foundation-mcp-registry-openapi.yaml