{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sealgate-ai/json-schema/sealgate-ai-create-mcp-request-body-schema.json",
  "title": "CreateMcpRequestBody",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sealgate-ai-dashboard-openapi.json#/components/schemas/CreateMcpRequestBody",
  "properties": {
    "name": {
      "type": "string",
      "title": "Name",
      "description": "Proposed server name"
    },
    "display_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Display Name",
      "description": "Human-readable server label"
    },
    "command": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Command",
      "description": "Command for stdio servers"
    },
    "args": {
      "items": {},
      "type": "array",
      "title": "Args",
      "description": "Command-line arguments"
    },
    "env": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "title": "Env",
      "description": "Environment variables"
    },
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Url",
      "description": "URL for HTTP/SSE servers"
    },
    "headers": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Headers",
      "description": "Custom HTTP headers for HTTP/SSE servers"
    },
    "type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Type",
      "description": "Server type: stdio, sse, http"
    },
    "hostname": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hostname",
      "description": "Machine the server was discovered on. Sent by the detector daemon for local (stdio) servers so approval can resolve the stdiod device and gate on it being online."
    },
    "source_app": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source App",
      "description": "App where server was discovered"
    },
    "source_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Path",
      "description": "Config file path"
    },
    "roots": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Roots",
      "description": "Root paths"
    },
    "from_marketplace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "From Marketplace Id",
      "description": "Marketplace ID"
    },
    "justification": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Justification",
      "description": "Reason for request"
    },
    "template_fields": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Template Fields",
      "description": "Template field definitions for detected secrets"
    },
    "origin": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "quarantine_watcher",
            "dashboard"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Origin",
      "description": "Where the request was raised. 'dashboard' for a request a user filed by hand in the dashboard (My Connectors, marketplace, /add-mcp); it is never quarantined and lands in the new-server-requests queue. Omitted means 'quarantine_watcher' (the desktop client's detector), so clients that predate this field keep landing in the quarantine queue while the org's auto-quarantine flag is on."
    }
  },
  "type": "object",
  "required": [
    "name"
  ]
}