Stacklok Registry Servers API
The registry-servers API from Stacklok — 2 operation(s) for registry-servers.
The registry-servers API from Stacklok — 2 operation(s) for registry-servers.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/stacklok-registry-servers-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
description: This is the ToolHive API server.
title: ToolHive Registry Servers API
version: '1.0'
tags:
- name: registry-servers
paths:
/registry/{registryName}/v0.1/servers:
get:
description: Get a paginated list of servers from the registry. Supports optional full-text search and pagination.
parameters:
- description: Registry name (currently ignored, uses the default provider)
in: path
name: registryName
required: true
schema:
type: string
- description: Search filter — matches against server name and description
in: query
name: q
schema:
type: string
- description: 'Page number, 1-based (default: 1)'
in: query
name: page
schema:
type: integer
- description: 'Items per page, max 200 (default: 50)'
in: query
name: limit
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.serversV01Response'
description: OK
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.registryErrorResponse'
description: Internal server error
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.registryErrorResponse'
description: Registry authentication required or upstream registry unavailable
summary: List available registry servers
tags:
- registry-servers
operationId: getRegistryByRegistryNameV01Servers
x-operation-id-source: derived
/registry/{registryName}/v0.1/servers/{serverName}/versions/latest:
get:
description: Retrieve a single server by name. Names use reverse-DNS format; URL-encode slashes.
parameters:
- description: Registry name (currently ignored, uses the default provider)
in: path
name: registryName
required: true
schema:
type: string
- description: Server name (URL-encoded reverse-DNS format)
in: path
name: serverName
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/v0.ServerJSON'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.registryErrorResponse'
description: Invalid server name encoding
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.registryErrorResponse'
description: Server not found
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.registryErrorResponse'
description: Internal server error
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/pkg_api_v1.registryErrorResponse'
description: Registry authentication required or upstream registry unavailable
summary: Get a registry server
tags:
- registry-servers
operationId: getRegistryByRegistryNameV01ServersByServerNameVersionsLatest
x-operation-id-source: derived
components:
schemas:
model.ArgumentType:
enum:
- positional
- named
example: positional
type: string
x-enum-varnames:
- ArgumentTypePositional
- ArgumentTypeNamed
model.Repository:
properties:
id:
example: b94b5f7e-c7c6-d760-2c78-a5e9b8a5b8c9
type: string
source:
example: github
type: string
subfolder:
example: src/everything
type: string
url:
example: https://github.com/modelcontextprotocol/servers
format: uri
type: string
type: object
model.Format:
enum:
- string
- number
- boolean
- filepath
type: string
x-enum-varnames:
- FormatString
- FormatNumber
- FormatBoolean
- FormatFilePath
pkg_api_v1.serversV01Response:
description: Paginated list of servers from the registry
properties:
metadata:
$ref: '#/components/schemas/pkg_api_v1.paginationV01Metadata'
servers:
description: Servers is the list of servers on the current page
items:
$ref: '#/components/schemas/v0.ServerJSON'
type: array
uniqueItems: false
type: object
pkg_api_v1.paginationV01Metadata:
description: Metadata contains pagination information
properties:
limit:
description: Limit is the maximum number of items per page
type: integer
page:
description: Page is the current page number (1-based)
type: integer
total:
description: Total is the total number of items matching the query
type: integer
type: object
model.Package:
properties:
environmentVariables:
description: EnvironmentVariables are set when running the package
items:
$ref: '#/components/schemas/model.KeyValueInput'
type: array
uniqueItems: false
fileSha256:
description: FileSHA256 is the SHA-256 hash for integrity verification (required for mcpb, optional for others)
example: fe333e598595000ae021bd27117db32ec69af6987f507ba7a63c90638ff633ce
pattern: ^[a-f0-9]{64}$
type: string
identifier:
description: "Identifier is the package identifier:\n - For NPM/PyPI/NuGet: package name or ID\n - For OCI: full image reference (e.g., \"ghcr.io/owner/repo:v1.0.0\")\n - For MCPB: direct download URL"
example: '@modelcontextprotocol/server-brave-search'
minLength: 1
type: string
packageArguments:
description: PackageArguments are passed to the package's binary
items:
$ref: '#/components/schemas/model.Argument'
type: array
uniqueItems: false
registryBaseUrl:
description: RegistryBaseURL is the base URL of the package registry (used by npm, pypi, nuget, cargo; not used by oci, mcpb)
example: https://registry.npmjs.org
format: uri
type: string
registryType:
description: RegistryType indicates how to download packages (e.g., "npm", "pypi", "cargo", "oci", "nuget", "mcpb")
example: npm
minLength: 1
type: string
runtimeArguments:
description: RuntimeArguments are passed to the package's runtime command (e.g., docker, npx)
items:
$ref: '#/components/schemas/model.Argument'
type: array
uniqueItems: false
runtimeHint:
description: RunTimeHint suggests the appropriate runtime for the package
example: npx
type: string
transport:
$ref: '#/components/schemas/model.Transport'
version:
description: Version is the package version (required for npm, pypi, nuget; optional for mcpb; not used by oci where version is in the identifier)
example: 1.0.2
maxLength: 255
minLength: 1
type: string
type: object
model.Input:
properties:
choices:
items:
type: string
type: array
uniqueItems: false
default:
type: string
description:
type: string
format:
$ref: '#/components/schemas/model.Format'
isRequired:
type: boolean
isSecret:
type: boolean
placeholder:
type: string
value:
type: string
type: object
model.KeyValueInput:
properties:
choices:
items:
type: string
type: array
uniqueItems: false
default:
type: string
description:
type: string
format:
$ref: '#/components/schemas/model.Format'
isRequired:
type: boolean
isSecret:
type: boolean
name:
example: SOME_VARIABLE
type: string
placeholder:
type: string
value:
type: string
variables:
additionalProperties:
$ref: '#/components/schemas/model.Input'
type: object
type: object
model.Transport:
description: Transport is required and specifies the transport protocol configuration
properties:
headers:
items:
$ref: '#/components/schemas/model.KeyValueInput'
type: array
uniqueItems: false
type:
example: stdio
type: string
url:
example: https://api.example.com/mcp
type: string
variables:
additionalProperties:
$ref: '#/components/schemas/model.Input'
type: object
type: object
v0.ServerMeta:
properties:
io.modelcontextprotocol.registry/publisher-provided:
additionalProperties: {}
type: object
type: object
pkg_api_v1.registryErrorResponse:
description: Structured error response returned by registry endpoints
properties:
code:
description: Code is a machine-readable error code (e.g. "not_found", "registry_auth_required")
type: string
message:
description: Message is a human-readable description of the error
type: string
type: object
model.Icon:
properties:
mimeType:
example: image/png
type: string
sizes:
items:
type: string
type: array
uniqueItems: false
src:
example: https://example.com/icon.png
format: uri
maxLength: 255
type: string
theme:
type: string
type: object
v0.ServerJSON:
properties:
$schema:
example: https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json
format: uri
minLength: 1
type: string
_meta:
$ref: '#/components/schemas/v0.ServerMeta'
description:
example: MCP server providing weather data and forecasts via OpenWeatherMap API
maxLength: 100
minLength: 1
type: string
icons:
items:
$ref: '#/components/schemas/model.Icon'
type: array
uniqueItems: false
name:
example: io.github.user/weather
maxLength: 200
minLength: 3
pattern: ^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$
type: string
packages:
items:
$ref: '#/components/schemas/model.Package'
type: array
uniqueItems: false
remotes:
items:
$ref: '#/components/schemas/model.Transport'
type: array
uniqueItems: false
repository:
$ref: '#/components/schemas/model.Repository'
title:
example: Weather API
maxLength: 100
minLength: 1
type: string
version:
example: 1.0.2
maxLength: 255
minLength: 1
type: string
websiteUrl:
example: https://modelcontextprotocol.io/examples
format: uri
type: string
type: object
model.Argument:
properties:
choices:
items:
type: string
type: array
uniqueItems: false
default:
type: string
description:
type: string
format:
$ref: '#/components/schemas/model.Format'
isRepeated:
type: boolean
isRequired:
type: boolean
isSecret:
type: boolean
name:
example: --port
type: string
placeholder:
type: string
type:
$ref: '#/components/schemas/model.ArgumentType'
value:
type: string
valueHint:
example: file_path
type: string
variables:
additionalProperties:
$ref: '#/components/schemas/model.Input'
type: object
type: object
externalDocs:
description: ''
url: ''