openapi: 3.1.0 info: title: AgentRegistry description: AgentRegistry API for managing MCP servers, agents, skills, and deployments. version: dev paths: /v0/agents: get: tags: - agents summary: List Agentic agents description: Get a paginated list of Agentic agents from the registry operationId: list-agents-v0 parameters: - name: cursor in: query description: Pagination cursor explode: false schema: type: string description: Pagination cursor examples: - agent-cursor-123 example: agent-cursor-123 - name: limit in: query description: Number of items per page explode: false schema: type: integer description: Number of items per page format: int64 default: 30 examples: - 50 minimum: 1 maximum: 100 example: 50 - name: updated_since in: query description: Filter agents updated since timestamp (RFC3339 datetime) explode: false schema: type: string description: Filter agents updated since timestamp (RFC3339 datetime) examples: - "2025-08-07T13:15:04.280Z" example: "2025-08-07T13:15:04.280Z" - name: search in: query description: Search agents by name (substring match) explode: false schema: type: string description: Search agents by name (substring match) examples: - filesystem example: filesystem - name: version in: query description: Filter by version ('latest' for latest version, or an exact version like '1.2.3') explode: false schema: type: string description: Filter by version ('latest' for latest version, or an exact version like '1.2.3') examples: - latest example: latest - name: semantic_search in: query description: Use semantic search for the search term explode: false schema: type: boolean description: Use semantic search for the search term - name: semantic_threshold in: query description: Optional maximum cosine distance when semantic_search is enabled explode: false schema: type: number description: Optional maximum cosine distance when semantic_search is enabled format: double responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AgentListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' post: tags: - agents summary: Create or update agent description: Create a new Agentic agent in the registry or update an existing one. Resources are immediately visible after creation. operationId: create-agent-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentJSON' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AgentResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/agents/{agentName}/versions: get: tags: - agents summary: Get all versions of an Agentic agent description: Get all available versions for a specific Agentic agent operationId: get-agent-versions-v0 parameters: - name: agentName in: path description: URL-encoded agent name required: true schema: type: string description: URL-encoded agent name examples: - com.example%2Fmy-agent example: com.example%2Fmy-agent responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AgentListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/agents/{agentName}/versions/{version}: get: tags: - agents summary: Get specific Agentic agent version description: Get detailed information about a specific version of an Agentic agent. Use the special version 'latest' to get the latest version. operationId: get-agent-version-v0 parameters: - name: agentName in: path description: URL-encoded agent name required: true schema: type: string description: URL-encoded agent name examples: - com.example%2Fmy-agent example: com.example%2Fmy-agent - name: version in: path description: URL-encoded agent version required: true schema: type: string description: URL-encoded agent version examples: - 1.0.0 example: 1.0.0 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AgentResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' delete: tags: - agents summary: Delete an agent version (admin) description: Permanently delete a specific agent version from the registry. Admin only. operationId: delete-agent-version-v0 parameters: - name: agentName in: path description: URL-encoded agent name required: true schema: type: string description: URL-encoded agent name examples: - com.example%2Fmy-agent example: com.example%2Fmy-agent - name: version in: path description: URL-encoded agent version required: true schema: type: string description: URL-encoded agent version examples: - 1.0.0 example: 1.0.0 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/auth/dns: post: tags: - auth summary: Exchange DNS signature for Registry JWT description: Authenticate using DNS TXT record public key and signed timestamp operationId: exchange-dns-token-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/SignatureTokenExchangeInput' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TokenResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/auth/github-at: post: tags: - auth summary: Exchange GitHub OAuth access token for Registry JWT description: Exchange a GitHub OAuth access token for a short-lived Registry JWT token operationId: exchange-github-token-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/GitHubTokenExchangeInputBody' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TokenResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/auth/github-oidc: post: tags: - auth summary: Exchange GitHub OIDC token for Registry JWT description: Exchange a GitHub Actions OIDC token for a short-lived Registry JWT token operationId: exchange-github-oidc-token-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/GitHubOIDCTokenExchangeInputBody' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TokenResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/auth/http: post: tags: - auth summary: Exchange HTTP signature for Registry JWT description: Authenticate using HTTP-hosted public key and signed timestamp operationId: exchange-http-token-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/SignatureTokenExchangeInput' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TokenResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/deployments: get: tags: - deployments summary: List deployed resources description: Retrieve all deployed resources (MCP servers, agents) with their configurations. Optionally filter by resource type. operationId: list-deployments parameters: - name: platform in: query description: 'Filter by provider platform type (for OSS: local or kubernetes)' explode: false schema: type: string description: 'Filter by provider platform type (for OSS: local or kubernetes)' examples: - local example: local - name: providerId in: query description: Filter by provider instance ID explode: false schema: type: string description: Filter by provider instance ID - name: resourceType in: query description: Filter by resource type (mcp, agent) explode: false schema: type: string description: Filter by resource type (mcp, agent) examples: - mcp enum: - mcp - agent example: mcp - name: status in: query description: Filter by deployment status explode: false schema: type: string description: Filter by deployment status - name: origin in: query description: Filter by deployment origin (managed, discovered) explode: false schema: type: string description: Filter by deployment origin (managed, discovered) enum: - managed - discovered - name: resourceName in: query description: Case-insensitive substring filter on resource name explode: false schema: type: string description: Case-insensitive substring filter on resource name responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/DeploymentsListResponseBody' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' post: tags: - deployments summary: Deploy a resource description: Deploy a resource (MCP server or agent) with deployment env vars (`env`) and optional provider-specific settings (`providerConfig`). Defaults to MCP server if resourceType is not specified. operationId: deploy-server requestBody: content: application/json: schema: $ref: '#/components/schemas/DeploymentRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Deployment' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/deployments/{id}: get: tags: - deployments summary: Get deployment details description: Retrieve details for a specific deployment by ID operationId: get-deployment parameters: - name: id in: path description: Deployment ID required: true schema: type: string description: Deployment ID examples: - 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be example: 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Deployment' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' delete: tags: - deployments summary: Remove a deployed resource description: Remove a deployment by ID operationId: remove-deployment parameters: - name: id in: path description: Deployment ID required: true schema: type: string description: Deployment ID examples: - 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be example: 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be responses: "204": description: No Content default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/deployments/{id}/cancel: post: tags: - deployments summary: Cancel deployment description: Cancel an in-progress deployment when supported by the provider operationId: cancel-deployment parameters: - name: id in: path description: Deployment ID required: true schema: type: string description: Deployment ID examples: - 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be example: 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be responses: "204": description: No Content default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/deployments/{id}/logs: get: tags: - deployments summary: Get deployment logs description: Get logs for async deployments when supported by the provider operationId: get-deployment-logs parameters: - name: id in: path description: Deployment ID required: true schema: type: string description: Deployment ID examples: - 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be example: 6b7ce4ab-ec3d-4789-95f4-8be5fac2e6be responses: "204": description: No Content headers: DeploymentID: schema: type: string Logs: schema: type: string default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/health: get: tags: - health summary: Health check description: Check the health status of the API operationId: get-health-v0 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/HealthBody' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/ping: get: tags: - ping summary: Ping description: Simple ping endpoint operationId: ping-v0 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PingBody' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/providers: get: tags: - providers summary: List providers description: List configured deployment target providers. operationId: list-providers parameters: - name: platform in: query description: Filter providers by platform type (local, kubernetes) explode: false schema: type: string description: Filter providers by platform type (local, kubernetes) responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProvidersListResponseBody' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' post: tags: - providers summary: Create provider description: Create a deployment target provider for a specific platform type. operationId: create-provider requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateProviderInput' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Provider' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/providers/{providerId}: get: tags: - providers summary: Get provider description: Get a provider by ID. operationId: get-provider parameters: - name: providerId in: path description: Provider ID required: true schema: type: string description: Provider ID - name: platform in: query description: Provider platform hint (optional) explode: false schema: type: string description: Provider platform hint (optional) responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Provider' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' put: tags: - providers summary: Update provider description: Update mutable fields of a provider by ID. operationId: update-provider parameters: - name: providerId in: path description: Provider ID required: true schema: type: string description: Provider ID - name: platform in: query description: Provider platform hint (optional) explode: false schema: type: string description: Provider platform hint (optional) requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateProviderInput' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Provider' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' delete: tags: - providers summary: Delete provider description: Delete a provider by ID. operationId: delete-provider parameters: - name: providerId in: path description: Provider ID required: true schema: type: string description: Provider ID - name: platform in: query description: Provider platform hint (optional) explode: false schema: type: string description: Provider platform hint (optional) responses: "204": description: No Content default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/servers: get: tags: - servers summary: List MCP servers description: Get a paginated list of MCP servers from the registry operationId: list-servers-v0 parameters: - name: cursor in: query description: Pagination cursor explode: false schema: type: string description: Pagination cursor examples: - server-cursor-123 example: server-cursor-123 - name: limit in: query description: Number of items per page explode: false schema: type: integer description: Number of items per page format: int64 default: 30 examples: - 50 minimum: 1 maximum: 100 example: 50 - name: updated_since in: query description: Filter servers updated since timestamp (RFC3339 datetime) explode: false schema: type: string description: Filter servers updated since timestamp (RFC3339 datetime) examples: - "2025-08-07T13:15:04.280Z" example: "2025-08-07T13:15:04.280Z" - name: search in: query description: Search servers by name (substring match) explode: false schema: type: string description: Search servers by name (substring match) examples: - filesystem example: filesystem - name: version in: query description: Filter by version ('latest' for latest version, or an exact version like '1.2.3') explode: false schema: type: string description: Filter by version ('latest' for latest version, or an exact version like '1.2.3') examples: - latest example: latest - name: semantic_search in: query description: Use semantic search for the search term (hybrid with substring filter when search is set) explode: false schema: type: boolean description: Use semantic search for the search term (hybrid with substring filter when search is set) default: false - name: semantic_threshold in: query description: Optional maximum distance for semantic matches (cosine distance) explode: false schema: type: number description: Optional maximum distance for semantic matches (cosine distance) format: double responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' post: tags: - servers summary: Create or update MCP server description: Create a new MCP server in the registry or update an existing one. Resources are immediately visible after creation. operationId: create-server-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/ServerJSON' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/servers/{serverName}/readme: get: tags: - servers summary: Get server README description: Fetch the README markdown document for the latest version of a server operationId: get-server-readme-v0 parameters: - name: serverName in: path description: URL-encoded server name required: true schema: type: string description: URL-encoded server name examples: - com.example%2Fmy-server example: com.example%2Fmy-server responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerReadmeResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/servers/{serverName}/versions: get: tags: - servers summary: Get all versions of an MCP server description: Get all available versions for a specific MCP server operationId: get-server-versions-v0 parameters: - name: serverName in: path description: URL-encoded server name required: true schema: type: string description: URL-encoded server name examples: - com.example%2Fmy-server example: com.example%2Fmy-server responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/servers/{serverName}/versions/{version}: get: tags: - servers summary: Get specific MCP server version description: Get detailed information about a specific version of an MCP server. Set 'all=true' query parameter to get all versions. operationId: get-server-version-v0 parameters: - name: serverName in: path description: URL-encoded server name required: true schema: type: string description: URL-encoded server name examples: - com.example%2Fmy-server example: com.example%2Fmy-server - name: version in: path description: URL-encoded server version required: true schema: type: string description: URL-encoded server version examples: - 1.0.0 example: 1.0.0 - name: all in: query description: If true, return all versions of the server instead of a single version explode: false schema: type: boolean description: If true, return all versions of the server instead of a single version default: false responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' put: tags: - servers - admin summary: Edit MCP server description: Update a specific version of an existing MCP server (admin only). operationId: edit-server-v0 parameters: - name: serverName in: path description: URL-encoded server name required: true schema: type: string description: URL-encoded server name examples: - com.example%2Fmy-server example: com.example%2Fmy-server - name: version in: path description: URL-encoded version to edit required: true schema: type: string description: URL-encoded version to edit examples: - 1.0.0 example: 1.0.0 - name: status in: query description: New status for the server (active, deprecated, deleted) explode: false schema: type: string description: New status for the server (active, deprecated, deleted) enum: - active - deprecated - deleted requestBody: content: application/json: schema: $ref: '#/components/schemas/ServerJSON' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' security: - bearer: [] delete: tags: - servers - admin summary: Delete MCP server version description: Permanently delete an MCP server version from the registry. operationId: delete-server-version-v0 parameters: - name: serverName in: path description: URL-encoded server name required: true schema: type: string description: URL-encoded server name examples: - com.example%2Fmy-server example: com.example%2Fmy-server - name: version in: path description: URL-encoded server version required: true schema: type: string description: URL-encoded server version examples: - 1.0.0 example: 1.0.0 - name: all in: query description: If true, return all versions of the server instead of a single version explode: false schema: type: boolean description: If true, return all versions of the server instead of a single version default: false responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/servers/{serverName}/versions/{version}/readme: get: tags: - servers summary: Get server README for a version description: Fetch the README markdown document for a specific server version operationId: get-server-version-readme-v0 parameters: - name: serverName in: path description: URL-encoded server name required: true schema: type: string description: URL-encoded server name examples: - com.example%2Fmy-server example: com.example%2Fmy-server - name: version in: path description: URL-encoded server version required: true schema: type: string description: URL-encoded server version examples: - 1.0.0 example: 1.0.0 - name: all in: query description: If true, return all versions of the server instead of a single version explode: false schema: type: boolean description: If true, return all versions of the server instead of a single version default: false responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ServerReadmeResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/skills: get: tags: - skills summary: List Agentic skills description: Get a paginated list of Agentic skills from the registry operationId: list-skills-v0 parameters: - name: cursor in: query description: Pagination cursor explode: false schema: type: string description: Pagination cursor examples: - skill-cursor-123 example: skill-cursor-123 - name: limit in: query description: Number of items per page explode: false schema: type: integer description: Number of items per page format: int64 default: 30 examples: - 50 minimum: 1 maximum: 100 example: 50 - name: updated_since in: query description: Filter skills updated since timestamp (RFC3339 datetime) explode: false schema: type: string description: Filter skills updated since timestamp (RFC3339 datetime) examples: - "2025-08-07T13:15:04.280Z" example: "2025-08-07T13:15:04.280Z" - name: search in: query description: Search skills by name (substring match) explode: false schema: type: string description: Search skills by name (substring match) examples: - filesystem example: filesystem - name: version in: query description: Filter by version ('latest' for latest version, or an exact version like '1.2.3') explode: false schema: type: string description: Filter by version ('latest' for latest version, or an exact version like '1.2.3') examples: - latest example: latest responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SkillListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' post: tags: - skills summary: Create or update skill description: Create a new Agentic skill in the registry or update an existing one. Resources are immediately visible after creation. operationId: create-skill-v0 requestBody: content: application/json: schema: $ref: '#/components/schemas/SkillJSON' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SkillResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/skills/{skillName}/versions: get: tags: - skills summary: Get all versions of an Agentic skill description: Get all available versions for a specific Agentic skill operationId: get-skill-versions-v0 parameters: - name: skillName in: path description: URL-encoded skill name required: true schema: type: string description: URL-encoded skill name examples: - com.example%2Fmy-skill example: com.example%2Fmy-skill responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SkillListResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/skills/{skillName}/versions/{version}: get: tags: - skills summary: Get specific Agentic skill version description: Get detailed information about a specific version of an Agentic skill. Use the special version 'latest' to get the latest version. operationId: get-skill-version-v0 parameters: - name: skillName in: path description: URL-encoded skill name required: true schema: type: string description: URL-encoded skill name examples: - com.example%2Fmy-skill example: com.example%2Fmy-skill - name: version in: path description: URL-encoded skill version required: true schema: type: string description: URL-encoded skill version examples: - 1.0.0 example: 1.0.0 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SkillResponse' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' /v0/version: get: tags: - version summary: Get version information description: Returns the version, git commit, and build time of the registry application operationId: get-version-v0 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/VersionBody' default: description: Error content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' components: schemas: AgentJSON: type: object additionalProperties: false properties: description: type: string framework: type: string image: type: string language: type: string mcpServers: type: array items: $ref: '#/components/schemas/McpServerType' modelName: type: string modelProvider: type: string name: type: string packages: type: array items: $ref: '#/components/schemas/AgentPackageInfo' remotes: type: array items: $ref: '#/components/schemas/Transport' repository: description: Optional repository metadata for the agent source code. $ref: '#/components/schemas/Repository' skills: type: array items: $ref: '#/components/schemas/SkillRef' status: type: string telemetryEndpoint: type: string title: type: string updatedAt: type: string format: date-time version: type: string websiteUrl: type: string required: - version - name - image - language - framework - modelProvider - modelName - description AgentListResponse: type: object additionalProperties: false properties: agents: type: array items: $ref: '#/components/schemas/AgentResponse' metadata: $ref: '#/components/schemas/AgentMetadata' required: - agents - metadata AgentMetadata: type: object additionalProperties: false properties: count: type: integer format: int64 nextCursor: type: string required: - count AgentPackageInfo: type: object additionalProperties: false properties: identifier: type: string registryType: type: string transport: $ref: '#/components/schemas/AgentPackageInfoTransportStruct' version: type: string required: - registryType - identifier - version - transport AgentPackageInfoTransportStruct: type: object additionalProperties: false properties: type: type: string required: - type AgentRegistryExtensions: type: object additionalProperties: false properties: isLatest: type: boolean publishedAt: type: string format: date-time status: type: string updatedAt: type: string format: date-time required: - status - publishedAt - updatedAt - isLatest AgentResponse: type: object additionalProperties: false properties: _meta: $ref: '#/components/schemas/AgentResponseMeta' agent: $ref: '#/components/schemas/AgentJSON' required: - agent - _meta AgentResponseMeta: type: object additionalProperties: false properties: aregistry.ai/deployments: $ref: '#/components/schemas/ResourceDeploymentsMeta' aregistry.ai/semantic: $ref: '#/components/schemas/AgentSemanticMeta' io.modelcontextprotocol.registry/official: $ref: '#/components/schemas/AgentRegistryExtensions' AgentSemanticMeta: type: object additionalProperties: false properties: score: type: number format: double required: - score Argument: type: object additionalProperties: false properties: choices: type: array description: A list of possible values for the input. If provided, the user must select one of these values. items: type: string default: type: string 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. description: type: string description: A description of the input, which clients can use to provide context to the user. format: type: string 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 isRepeated: type: boolean description: Whether the argument can be repeated multiple times. isRequired: type: boolean description: Whether the input is required isSecret: type: boolean description: Indicates whether the input is a secret value (e.g., password, token). If true, clients should handle the value securely. name: type: string description: The flag name (for named arguments), including any leading dashes. Empty for positional arguments. examples: - --port placeholder: type: string 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: type: string description: 'Argument type: ''positional'' or ''named''' examples: - positional value: type: string 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. valueHint: type: string description: An identifier for positional arguments. Used in transport URL variable substitution. examples: - file_path variables: type: object 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. additionalProperties: $ref: '#/components/schemas/Input' required: - type CreateProviderInput: type: object additionalProperties: false properties: config: type: object additionalProperties: {} id: type: string name: type: string platform: type: string required: - name - platform Deployment: type: object additionalProperties: false properties: deployedAt: type: string format: date-time env: type: object additionalProperties: type: string error: type: string id: type: string origin: type: string preferRemote: type: boolean providerConfig: type: object additionalProperties: {} providerId: type: string providerMetadata: type: object additionalProperties: {} resourceType: type: string serverName: type: string status: type: string updatedAt: type: string format: date-time version: type: string required: - id - serverName - version - resourceType - status - origin - env - preferRemote - deployedAt - updatedAt DeploymentRequest: type: object additionalProperties: false properties: env: type: object description: Deployment environment variables. additionalProperties: type: string preferRemote: type: boolean description: Prefer remote deployment over local default: false providerConfig: type: object description: Optional provider-specific deployment settings (not env vars). additionalProperties: {} providerId: type: string description: Concrete provider instance ID. Defaults to local singleton when omitted. resourceType: type: string description: Type of resource to deploy (mcp, agent) default: mcp examples: - mcp enum: - mcp - agent serverName: type: string description: Server name to deploy examples: - io.github.user/weather version: type: string description: Version to deploy (use 'latest' for latest version) default: latest examples: - 1.0.0 required: - serverName - version DeploymentSummary: type: object additionalProperties: false properties: deployedAt: type: string format: date-time id: type: string origin: type: string providerId: type: string status: type: string updatedAt: type: string format: date-time version: type: string required: - id - status - origin - deployedAt - updatedAt DeploymentsListResponseBody: type: object additionalProperties: false properties: deployments: type: array description: List of deployed servers items: $ref: '#/components/schemas/Deployment' required: - deployments EmptyResponse: type: object additionalProperties: false properties: message: type: string description: Success message examples: - Operation completed successfully required: - message ErrorDetail: type: object additionalProperties: false properties: location: type: string description: Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id' message: type: string description: Error message text value: description: The value at the given location ErrorModel: type: object additionalProperties: false properties: detail: type: string description: A human-readable explanation specific to this occurrence of the problem. examples: - Property foo is required but is missing. errors: type: array description: Optional list of individual error details items: $ref: '#/components/schemas/ErrorDetail' instance: type: string description: A URI reference that identifies the specific occurrence of the problem. format: uri examples: - https://example.com/error-log/abc123 status: type: integer description: HTTP status code format: int64 examples: - 400 title: type: string description: A short, human-readable summary of the problem type. This value should not change between occurrences of the error. examples: - Bad Request type: type: string description: A URI reference to human-readable documentation for the error. format: uri default: about:blank examples: - https://example.com/errors/example GitHubOIDCTokenExchangeInputBody: type: object additionalProperties: false properties: oidc_token: type: string description: GitHub Actions OIDC token required: - oidc_token GitHubTokenExchangeInputBody: type: object additionalProperties: false properties: github_token: type: string description: GitHub OAuth token required: - github_token HealthBody: type: object additionalProperties: false properties: github_client_id: type: string description: GitHub OAuth App Client ID status: type: string description: Health status examples: - ok required: - status Icon: type: object additionalProperties: false properties: mimeType: type: string 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.' examples: - image/png enum: - image/png - image/jpeg - image/jpg - image/svg+xml - image/webp sizes: type: array 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 src: type: string 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. format: uri examples: - https://example.com/icon.png maxLength: 255 theme: type: string 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 required: - src Input: type: object additionalProperties: false properties: choices: type: array description: A list of possible values for the input. If provided, the user must select one of these values. items: type: string default: type: string 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. description: type: string description: A description of the input, which clients can use to provide context to the user. format: type: string 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 isRequired: type: boolean description: Whether the input is required isSecret: type: boolean description: Indicates whether the input is a secret value (e.g., password, token). If true, clients should handle the value securely. placeholder: type: string 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. value: type: string 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. KeyValueInput: type: object additionalProperties: false properties: choices: type: array description: A list of possible values for the input. If provided, the user must select one of these values. items: type: string default: type: string 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. description: type: string description: A description of the input, which clients can use to provide context to the user. format: type: string 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 isRequired: type: boolean description: Whether the input is required isSecret: type: boolean description: Indicates whether the input is a secret value (e.g., password, token). If true, clients should handle the value securely. name: type: string description: Name of the header or environment variable. examples: - SOME_VARIABLE placeholder: type: string 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. value: type: string 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. variables: type: object 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. additionalProperties: $ref: '#/components/schemas/Input' required: - name McpServerType: type: object additionalProperties: false properties: args: type: array items: type: string build: type: string command: type: string env: type: array items: type: string headers: type: object additionalProperties: type: string image: type: string name: type: string registryServerName: type: string registryServerPreferRemote: type: boolean registryServerVersion: type: string registryURL: type: string type: type: string url: type: string required: - type - name Package: type: object additionalProperties: false properties: environmentVariables: type: array description: A mapping of environment variables to be set when running the package. items: $ref: '#/components/schemas/KeyValueInput' fileSha256: type: string 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}$ identifier: type: string description: Package identifier - either a package name (for registries) or URL (for direct downloads) examples: - '@modelcontextprotocol/server-brave-search' minLength: 1 packageArguments: type: array description: A list of arguments to be passed to the package's binary. items: $ref: '#/components/schemas/Argument' registryBaseUrl: type: string description: Base URL of the package registry format: uri examples: - https://registry.npmjs.org registryType: type: string description: Registry type indicating how to download packages (e.g., 'npm', 'pypi', 'oci', 'nuget', 'mcpb') examples: - npm minLength: 1 runtimeArguments: type: array 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' runtimeHint: type: string description: A hint to help clients determine the appropriate runtime for the package. This field should be provided when runtimeArguments are present. examples: - npx transport: description: Transport protocol configuration for the package $ref: '#/components/schemas/Transport' version: type: string 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 minLength: 1 required: - registryType - identifier - transport PingBody: type: object additionalProperties: false properties: pong: type: boolean description: Ping response examples: - true required: - pong Provider: type: object additionalProperties: false properties: config: type: object additionalProperties: {} createdAt: type: string format: date-time id: type: string name: type: string platform: type: string updatedAt: type: string format: date-time required: - id - name - platform - createdAt - updatedAt ProvidersListResponseBody: type: object additionalProperties: false properties: count: type: integer format: int64 providers: type: array items: $ref: '#/components/schemas/Provider' required: - providers - count RegistryExtensions: type: object additionalProperties: false properties: isLatest: type: boolean description: Whether this is the latest version of the server publishedAt: type: string description: Timestamp when the server was first published to the registry format: date-time status: type: string description: Server lifecycle status enum: - active - deprecated - deleted updatedAt: type: string description: Timestamp when the server entry was last updated format: date-time required: - status - publishedAt - isLatest Repository: type: object additionalProperties: false properties: id: type: string 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// --jq ''.id''' examples: - b94b5f7e-c7c6-d760-2c78-a5e9b8a5b8c9 source: type: string description: Repository hosting service identifier. Used by registries to determine validation and API access methods. examples: - github subfolder: type: string 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 url: type: string description: Repository URL for browsing source code. Should support both web browsing and git clone operations. format: uri examples: - https://github.com/modelcontextprotocol/servers ResourceDeploymentsMeta: type: object additionalProperties: false properties: count: type: integer format: int64 deployments: type: array items: $ref: '#/components/schemas/DeploymentSummary' required: - deployments - count ServerJSON: type: object additionalProperties: false properties: $schema: type: string description: JSON Schema URI for this server.json format format: uri examples: - https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json minLength: 1 _meta: description: Extension metadata using reverse DNS namespacing for vendor-specific data $ref: '#/components/schemas/ServerMeta' description: type: string description: Clear human-readable explanation of server functionality. examples: - MCP server providing weather data and forecasts via OpenWeatherMap API minLength: 1 maxLength: 100 icons: type: array description: Optional set of sized icons that the client can display in a user interface. items: $ref: '#/components/schemas/Icon' name: type: string description: Server name in reverse-DNS format. Must contain exactly one forward slash separating namespace from server name. examples: - io.github.user/weather minLength: 3 maxLength: 200 pattern: ^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$ packages: type: array description: Array of package configurations items: $ref: '#/components/schemas/Package' remotes: type: array description: Array of remote configurations items: $ref: '#/components/schemas/Transport' repository: description: Optional repository metadata for the MCP server source code. $ref: '#/components/schemas/Repository' title: type: string description: Optional human-readable title or display name for the MCP server. examples: - Weather API minLength: 1 maxLength: 100 version: type: string description: Version string for this server. SHOULD follow semantic versioning. examples: - 1.0.2 websiteUrl: type: string description: Optional URL to the server's homepage, documentation, or project website. format: uri examples: - https://modelcontextprotocol.io/examples required: - $schema - name - description - version ServerListResponse: type: object additionalProperties: false properties: metadata: $ref: '#/components/schemas/ServerMetadata' servers: type: array items: $ref: '#/components/schemas/ServerResponse' required: - servers - metadata ServerMeta: type: object additionalProperties: false properties: io.modelcontextprotocol.registry/publisher-provided: type: object description: Publisher-provided metadata for downstream registries additionalProperties: {} ServerMetadata: type: object additionalProperties: false properties: count: type: integer format: int64 nextCursor: type: string required: - count ServerReadmeResponse: type: object additionalProperties: false properties: content: type: string contentType: type: string fetchedAt: type: string format: date-time sha256: type: string sizeBytes: type: integer format: int64 version: type: string required: - content - contentType - sizeBytes - sha256 - version - fetchedAt ServerResponse: type: object additionalProperties: false properties: _meta: $ref: '#/components/schemas/ServerResponseMeta' server: $ref: '#/components/schemas/ServerJSON' required: - server - _meta ServerResponseMeta: type: object additionalProperties: false properties: aregistry.ai/deployments: $ref: '#/components/schemas/ResourceDeploymentsMeta' aregistry.ai/semantic: $ref: '#/components/schemas/ServerSemanticMeta' io.modelcontextprotocol.registry/official: $ref: '#/components/schemas/RegistryExtensions' ServerSemanticMeta: type: object additionalProperties: false properties: score: type: number format: double required: - score SignatureTokenExchangeInput: type: object additionalProperties: false properties: domain: type: string description: Domain name examples: - example.com signed_timestamp: type: string description: Hex-encoded signature of timestamp examples: - abcdef1234567890 timestamp: type: string description: RFC3339 timestamp examples: - "2023-01-01T00:00:00Z" required: - domain - timestamp - signed_timestamp SkillJSON: type: object additionalProperties: false properties: category: type: string description: type: string name: type: string packages: type: array items: $ref: '#/components/schemas/SkillPackageInfo' remotes: type: array items: $ref: '#/components/schemas/SkillRemoteInfo' repository: $ref: '#/components/schemas/SkillRepository' status: type: string title: type: string version: type: string websiteUrl: type: string required: - name - description - version SkillListResponse: type: object additionalProperties: false properties: metadata: $ref: '#/components/schemas/SkillMetadata' skills: type: array items: $ref: '#/components/schemas/SkillResponse' required: - skills - metadata SkillMetadata: type: object additionalProperties: false properties: count: type: integer format: int64 nextCursor: type: string required: - count SkillPackageInfo: type: object additionalProperties: false properties: identifier: type: string registryType: type: string transport: $ref: '#/components/schemas/SkillPackageInfoTransportStruct' version: type: string required: - registryType - identifier - version - transport SkillPackageInfoTransportStruct: type: object additionalProperties: false properties: type: type: string required: - type SkillRef: type: object additionalProperties: false properties: image: type: string name: type: string registrySkillName: type: string registrySkillVersion: type: string registryURL: type: string required: - name SkillRegistryExtensions: type: object additionalProperties: false properties: isLatest: type: boolean publishedAt: type: string format: date-time status: type: string updatedAt: type: string format: date-time required: - status - publishedAt - updatedAt - isLatest SkillRemoteInfo: type: object additionalProperties: false properties: url: type: string required: - url SkillRepository: type: object additionalProperties: false properties: source: type: string url: type: string required: - url - source SkillResponse: type: object additionalProperties: false properties: _meta: $ref: '#/components/schemas/SkillResponseMeta' skill: $ref: '#/components/schemas/SkillJSON' required: - skill - _meta SkillResponseMeta: type: object additionalProperties: false properties: io.modelcontextprotocol.registry/official: $ref: '#/components/schemas/SkillRegistryExtensions' TokenResponse: type: object additionalProperties: false properties: expires_at: type: integer format: int64 registry_token: type: string required: - registry_token - expires_at Transport: type: object additionalProperties: false properties: headers: type: array description: HTTP headers for streamable-http or sse transports items: $ref: '#/components/schemas/KeyValueInput' type: type: string description: Transport type (stdio, streamable-http, or sse) examples: - stdio url: type: string description: URL for streamable-http or sse transports examples: - https://api.example.com/mcp required: - type UpdateProviderInput: type: object additionalProperties: false properties: config: type: object additionalProperties: {} name: type: string VersionBody: type: object additionalProperties: false properties: build_time: type: string description: Build timestamp examples: - "2025-10-14T12:00:00Z" git_commit: type: string description: Git commit SHA examples: - abc123d version: type: string description: Application version examples: - v1.0.0 required: - version - git_commit - build_time