Agentic AI Foundation Validate API

The validate API from Agentic AI Foundation — 2 operation(s) for validate.

Operations 2

POST /v0.1/validate Validate MCP server JSON #
POST /v0/validate Validate MCP server JSON #

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/agentic-ai-foundation-validate-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

agentic-ai-foundation-validate-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'A community driven registry service for Model Context Protocol (MCP) servers.


    GitHub repository | Documentation'
  title: Official MCP Registry Validate API
  version: 1.0.0
tags:
- name: Validate
paths:
  /v0.1/validate:
    post:
      description: Validate a server.json file without publishing it to the registry
      operationId: validate-server-v0.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServerJSON'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResult'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
          description: Error
      summary: Validate MCP server JSON
      tags:
      - Validate
  /v0/validate:
    post:
      description: Validate a server.json file without publishing it to the registry
      operationId: validate-server-v0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServerJSON'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResult'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
          description: Error
      summary: Validate MCP server JSON
      tags:
      - Validate
components:
  schemas:
    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
    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
    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
    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
    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
    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
    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
    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
    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
    ServerMeta:
      additionalProperties: false
      properties:
        io.modelcontextprotocol.registry/publisher-provided:
          additionalProperties: {}
          description: Publisher-provided metadata for downstream registries
          type: object
      type: object
    ValidationResult:
      additionalProperties: false
      properties:
        issues:
          items:
            $ref: '#/components/schemas/ValidationIssue'
          type:
          - array
          - 'null'
        valid:
          type: boolean
      required:
      - valid
      - issues
      type: object
    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
    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