Smithery servers API

Browse the MCP server registry, manage server configuration, and handle deployments

Operations 19

GET /servers/{qualifiedName} Get a server #
PUT /servers/{qualifiedName} Create a server #
PATCH /servers/{qualifiedName} Update a server #
DELETE /servers/{qualifiedName} Delete a server #
GET /servers/{qualifiedName}/download Download server bundle #
PUT /servers/{qualifiedName}/releases Publish a server #
GET /servers/{qualifiedName}/releases List releases #
GET /servers/{qualifiedName}/releases/{id} Get a release #
GET /servers/{qualifiedName}/releases/{id}/stream Stream release logs #
POST /servers/{qualifiedName}/releases/{id}/resume Resume a release #
GET /servers/{qualifiedName}/logs List runtime logs #
GET /servers/{qualifiedName}/secrets List secrets #
PUT /servers/{qualifiedName}/secrets Set a secret #
DELETE /servers/{qualifiedName}/secrets/{secretName} Delete a secret #
PUT /servers/{qualifiedName}/icon Upload server icon #
DELETE /servers/{qualifiedName}/icon Delete server icon #
GET /servers/{qualifiedName}/icon Get server icon #
GET /servers/{qualifiedName}/experimental/tools/{toolName}/output-schema Infer a tool output schema #
GET /servers List all servers #

Documentation

Specifications

Schemas & Data

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/smithery-servers-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

smithery-servers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smithery Platform connect Servers API
  description: API for the Smithery platform — discover, deploy, and manage MCP (Model Context Protocol) servers. Provides endpoints for browsing the server registry, managing deployments, creating scoped access tokens, and connecting to MCP servers.
  version: 1.0.0
servers:
- url: https://api.smithery.ai
security:
- bearerAuth: []
tags:
- name: servers
  description: Browse the MCP server registry, manage server configuration, and handle deployments
paths:
  /servers/{qualifiedName}:
    get:
      operationId: getServers:namespace
      tags:
      - servers
      summary: Get a server
      description: Retrieve server details including connections, tools, and security status.
      responses:
        '200':
          description: Server found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Server'
        '404':
          description: Server or namespace not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst server = await client.servers.get('qualifiedName');\n\nconsole.log(server.connections);"
    put:
      operationId: putServers:namespace
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                displayName:
                  example: My Server
                  type: string
                description:
                  example: A simple server
                  type: string
              id: CreateNamespaceServerRequest
      tags:
      - servers
      summary: Create a server
      description: Create a new server. Idempotent — returns success if the server already exists and is owned by the caller.
      responses:
        '201':
          description: Server created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  namespace:
                    type: string
                    example: myorg
                  server:
                    type: string
                    example: ''
                  displayName:
                    type: string
                    example: My Server
                  description:
                    type: string
                    example: A simple server
                  createdAt:
                    type: string
                    example: '2024-01-01T00:00:00.000Z'
                required:
                - namespace
                - server
                - displayName
                - description
                - createdAt
                id: CreateNamespaceServerResponse
        '400':
          description: Bad request (invalid name format)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
        '403':
          description: Forbidden (namespace not owned by user or missing servers:write permission)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
        '404':
          description: Namespace not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst server = await client.servers.create('qualifiedName');\n\nconsole.log(server.createdAt);"
    patch:
      operationId: patchServers:namespace
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                displayName:
                  type: string
                description:
                  type: string
                homepage:
                  anyOf:
                  - type: string
                  - type: 'null'
                repositoryUrl:
                  anyOf:
                  - type: string
                  - type: 'null'
                backlinkUrl:
                  anyOf:
                  - type: string
                  - type: 'null'
                license:
                  anyOf:
                  - type: string
                  - type: 'null'
                iconUrl:
                  anyOf:
                  - type: string
                  - type: 'null'
                unlisted:
                  type: boolean
              id: UpdateServerRequest
      tags:
      - servers
      summary: Update a server
      description: Update server metadata such as display name, description, repository, icon, or visibility.
      responses:
        '200':
          description: Server updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  namespace:
                    type: string
                  server:
                    type: string
                required:
                - success
                - namespace
                - server
                id: UpdateServerResponse
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst server = await client.servers.update('qualifiedName');\n\nconsole.log(server.namespace);"
    delete:
      operationId: deleteServers:namespace
      tags:
      - servers
      summary: Delete a server
      description: Permanently delete a server, its releases, and associated resources.
      responses:
        '200':
          description: Server deleted
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  namespace:
                    type: string
                  server:
                    type: string
                required:
                - success
                - namespace
                - server
                id: DeleteSuccess
        '404':
          description: Server not found or not owned by user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst server = await client.servers.delete('qualifiedName');\n\nconsole.log(server.namespace);"
  /servers/{qualifiedName}/download:
    get:
      operationId: getServers:namespaceDownload
      tags:
      - servers
      summary: Download server bundle
      description: Download the MCPB bundle for the latest successful stdio release.
      responses:
        '200':
          description: Bundle file
          content:
            application/zip:
              schema:
                type: string
                format: binary
        '404':
          description: Bundle not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
                id: BundleDownloadError
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.servers.download('qualifiedName');\n\nconsole.log(response);\n\nconst content = await response.blob();\nconsole.log(content);"
  /servers/{qualifiedName}/releases:
    put:
      operationId: putServers:namespaceReleases
      tags:
      - servers
      summary: Publish a server
      description: Submit a release via multipart form. Supports hosted (JS module upload), external (URL), and stdio (MCPB bundle) release types.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                payload:
                  type: string
                  description: JSON-encoded release payload. See DeployPayload schema for structure.
                module:
                  type: string
                  format: binary
                  description: JavaScript module file (for hosted releases)
                sourcemap:
                  type: string
                  format: binary
                  description: Source map file (for hosted releases)
                bundle:
                  type: string
                  format: binary
                  description: MCPB bundle file (for stdio releases)
              required:
              - payload
      responses:
        '202':
          description: Release accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployResponse'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import fs from 'fs';\nimport Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.servers.releases.deploy('qualifiedName', { payload: 'payload' });\n\nconsole.log(response.deploymentId);"
    get:
      operationId: getServers:namespaceReleases
      parameters:
      - in: query
        name: page
        schema:
          default: 1
          type: integer
          minimum: 1
          maximum: 9007199254740991
      - in: query
        name: pageSize
        schema:
          default: 20
          type: integer
          minimum: 1
          maximum: 100
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      tags:
      - servers
      summary: List releases
      description: List releases ordered by most recent first. Logs are omitted — fetch a specific release to see logs.
      responses:
        '200':
          description: Paginated list of releases
          content:
            application/json:
              schema:
                type: object
                properties:
                  releases:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        status:
                          type: string
                          description: 'Current status: QUEUED, WORKING, SUCCESS, FAILURE, FAILURE_SCAN, AUTH_REQUIRED, AUTH_TIMEOUT, CANCELLED, or INTERNAL_ERROR.'
                        type:
                          type: string
                          description: 'Release type: hosted_shttp (Smithery-hosted), external_shttp (external URL), or stdio (local binary).'
                        commit:
                          description: Git commit SHA that triggered this release.
                          anyOf:
                          - type: string
                          - type: 'null'
                        commitMessage:
                          description: Git commit message associated with this release.
                          anyOf:
                          - type: string
                          - type: 'null'
                        branch:
                          description: Git branch this release was built from.
                          anyOf:
                          - type: string
                          - type: 'null'
                        upstreamUrl:
                          description: Upstream MCP server URL. Present only for external releases.
                          anyOf:
                          - type: string
                          - type: 'null'
                        mcpUrl:
                          description: The MCP endpoint URL for connecting to this server.
                          type: string
                          format: uri
                        createdAt:
                          type: string
                          description: ISO 8601 timestamp of when the release was created.
                        updatedAt:
                          type: string
                          description: ISO 8601 timestamp of the last status change.
                      required:
                      - id
                      - status
                      - type
                      - createdAt
                      - updatedAt
                  pagination:
                    type: object
                    properties:
                      currentPage:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      pageSize:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      totalPages:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      totalCount:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                    required:
                    - currentPage
                    - pageSize
                    - totalPages
                    - totalCount
                required:
                - releases
                - pagination
                id: DeploymentListPage
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentError'
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const releaseListResponse of client.servers.releases.list('qualifiedName')) {\n  console.log(releaseListResponse.id);\n}"
  /servers/{qualifiedName}/releases/{id}:
    get:
      operationId: getServers:namespaceReleases:id
      tags:
      - servers
      summary: Get a release
      description: Retrieve release details including status, git metadata, pipeline logs, and MCP endpoint URL.
      responses:
        '200':
          description: Release info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentInfo'
        '404':
          description: Server or release not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      - schema:
          type: string
        in: path
        name: id
        required: true
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst release = await client.servers.releases.get('id', { qualifiedName: 'qualifiedName' });\n\nconsole.log(release.id);"
  /servers/{qualifiedName}/releases/{id}/stream:
    get:
      operationId: getServers:namespaceReleases:idStream
      tags:
      - servers
      summary: Stream release logs
      description: Real-time SSE stream of release logs and status updates.
      responses:
        '200':
          description: SSE stream of release events
          content:
            text/event-stream:
              schema:
                type: string
                description: 'SSE events: init (with buffered logs), log, status, complete'
        '404':
          description: Release not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      - schema:
          type: string
        in: path
        name: id
        required: true
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.servers.releases.stream('id', { qualifiedName: 'qualifiedName' });\n\nconsole.log(response);"
  /servers/{qualifiedName}/releases/{id}/resume:
    post:
      operationId: postServers:namespaceReleases:idResume
      tags:
      - servers
      summary: Resume a release
      description: Resume a paused release (e.g. after OAuth authorization). Use id='latest' to resume the most recent one.
      responses:
        '202':
          description: Resume accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResumeResponse'
        '400':
          description: Release not in resumable state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentError'
        '404':
          description: Server or release not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentError'
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      - schema:
          type: string
        in: path
        name: id
        required: true
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.servers.releases.resume('id', { qualifiedName: 'qualifiedName' });\n\nconsole.log(response.deploymentId);"
  /servers/{qualifiedName}/logs:
    get:
      operationId: getServers:namespaceLogs
      tags:
      - servers
      summary: List runtime logs
      description: Fetch recent runtime logs grouped by invocation.
      responses:
        '200':
          description: Logs fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeLogsResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeLogsError'
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeLogsError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeLogsError'
      parameters:
      - in: query
        name: from
        schema:
          example: '2026-01-01T00:00:00Z'
          type: string
        description: Start of time range (ISO 8601).
      - in: query
        name: to
        schema:
          example: '2026-01-01T01:00:00Z'
          type: string
        description: End of time range (ISO 8601).
      - in: query
        name: limit
        schema:
          example: 20
          type: integer
          minimum: 1
          maximum: 100
        description: Max invocations to return. Defaults to 20.
      - in: query
        name: search
        schema:
          example: error
          type: string
        description: Text search across log messages.
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst logs = await client.servers.logs.list('qualifiedName');\n\nconsole.log(logs.invocations);"
  /servers/{qualifiedName}/secrets:
    get:
      operationId: getServers:namespaceSecrets
      tags:
      - servers
      summary: List secrets
      description: List secret names. Values are not returned.
      responses:
        '200':
          description: Secrets listed
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      example: API_KEY
                    type:
                      type: string
                      example: secret_text
                  required:
                  - name
                  - type
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Server not found
                required:
                - error
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-hidden: true
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst secrets = await client.servers.secrets.list('qualifiedName');\n\nconsole.log(secrets);"
    put:
      operationId: putServers:namespaceSecrets
      tags:
      - servers
      summary: Set a secret
      description: Create or update a secret value.
      responses:
        '200':
          description: Secret updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                required:
                - success
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Server not found
                required:
                - error
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                value:
                  type: string
                  minLength: 1
              required:
              - name
              - value
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-hidden: true
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.servers.secrets.set('qualifiedName', { name: 'x', value: 'x' });\n\nconsole.log(response.success);"
  /servers/{qualifiedName}/secrets/{secretName}:
    delete:
      operationId: deleteServers:namespaceSecrets:secretName
      tags:
      - servers
      summary: Delete a secret
      description: Remove a secret by name.
      responses:
        '200':
          description: Secret deleted
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                required:
                - success
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Server not found
                required:
                - error
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      - schema:
          type: string
        in: path
        name: secretName
        required: true
      x-hidden: true
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst secret = await client.servers.secrets.delete('secretName', {\n  qualifiedName: 'qualifiedName',\n});\n\nconsole.log(secret.success);"
  /servers/{qualifiedName}/icon:
    put:
      operationId: putServers:namespaceIcon
      tags:
      - servers
      summary: Upload server icon
      description: 'Upload or replace the server icon. Accepts a single image file via multipart/form-data. Max 1MB. Supported formats: PNG, JPEG, GIF, SVG, WebP.'
      responses:
        '200':
          description: Icon uploaded successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  iconUrl:
                    type: string
                    example: https://icons.smithery.ai/server-id.png
                required:
                - iconUrl
                id: IconResponse
        '400':
          description: Bad request (invalid file type, too large, or no file)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: File too large
                required:
                - error
                id: IconError
        '403':
          description: Forbidden (user doesn't own server)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: File too large
                required:
                - error
                id: IconError
        '404':
          description: Server not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: File too large
                required:
                - error
                id: IconError
      parameters:
      - schema:
          type: string
        in: path
        name: qualifiedName
        required: true
        description: The server's qualified name (e.g. 'namespace/server' or 'namespace' for namespace-only servers). Use %2F to encode the slash.
      x-codeSamples:
      - lang: JavaScript
        source: "import Smithery from '@smithery/api';\n\nconst client = new Smithery({\n  apiKey: process.env['SMITHERY_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.servers.icon.upload('qualifiedName');\n\nconsole.log(response.iconUrl);"
    delete:
      operationId: deleteServers:namespaceIcon
      tags:
      - servers
      summary: Delete server icon
      description: Remove the server's icon.
      responses:
        '200':
          description: Icon deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
            

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/smithery/refs/heads/main/openapi/smithery-servers-api-openapi.yml