Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: Copyright 2026 Stacklok, Inc.
# SPDX-License-Identifier: Apache-2.0

name: Release

on:
push:
tags:
- 'v*'

permissions:
contents: write

jobs:
release:
name: Publish Release Artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Upload schema artifacts to release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release upload "${{ github.ref_name }}" \
registry/types/data/skill.schema.json \
registry/types/data/upstream-registry.schema.json \
registry/types/data/publisher-provided.schema.json \
registry/types/data/toolhive-legacy-registry.schema.json \
--clobber
26 changes: 13 additions & 13 deletions registry/types/data/publisher-provided.schema.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/stacklok/toolhive-core/main/registry/types/data/publisher-provided.schema.json",
"title": "ToolHive Publisher-Provided Extensions Schema",
"description": "Schema for ToolHive-specific metadata placed under _meta['io.modelcontextprotocol.registry/publisher-provided'] in MCP server definitions. This schema defines the structure of publisher extensions that ToolHive adds to servers in the upstream MCP registry format.",
Expand All @@ -9,15 +9,15 @@
"type": "object",
"description": "ToolHive publisher namespace containing server-specific extensions keyed by identifier (OCI image reference for container servers, URL for remote servers)",
"additionalProperties": {
"$ref": "#/definitions/server_extensions"
"$ref": "#/$defs/server_extensions"
}
}
},
"additionalProperties": {
"type": "object",
"description": "Other publisher namespaces may contain arbitrary extensions"
},
"definitions": {
"$defs": {
"server_extensions": {
"type": "object",
"description": "Extensions for MCP servers. Container servers (keyed by OCI image reference) may use permissions, args, provenance, docker_tags, and proxy_port. Remote servers (keyed by URL) may use oauth_config and env_vars. All servers share status, tier, tools, tags, metadata, and custom_metadata.",
Expand Down Expand Up @@ -60,15 +60,15 @@
"type": "array",
"description": "Full MCP Tool definitions describing the tools available from this server, including name, description, inputSchema, and annotations",
"items": {
"$ref": "#/definitions/tool_definition"
"$ref": "#/$defs/tool_definition"
}
},
"metadata": {
"$ref": "#/definitions/metadata"
"$ref": "#/$defs/metadata"
},
"permissions": {
"description": "Security permissions for container-based servers",
"$ref": "#/definitions/permissions"
"$ref": "#/$defs/permissions"
},
"args": {
"type": "array",
Expand All @@ -79,7 +79,7 @@
},
"provenance": {
"description": "Supply chain provenance for container-based servers",
"$ref": "#/definitions/provenance"
"$ref": "#/$defs/provenance"
},
"docker_tags": {
"type": "array",
Expand All @@ -97,13 +97,13 @@
},
"oauth_config": {
"description": "OAuth/OIDC configuration for remote servers",
"$ref": "#/definitions/oauth_config"
"$ref": "#/$defs/oauth_config"
},
"env_vars": {
"type": "array",
"description": "Environment variables for remote server client configuration",
"items": {
"$ref": "#/definitions/environment_variable"
"$ref": "#/$defs/environment_variable"
}
},
"custom_metadata": {
Expand All @@ -129,7 +129,7 @@
"format": "date-time"
},
"kubernetes": {
"$ref": "#/definitions/kubernetes_metadata"
"$ref": "#/$defs/kubernetes_metadata"
}
},
"additionalProperties": false
Expand Down Expand Up @@ -179,7 +179,7 @@
"description": "Name of the permission profile"
},
"network": {
"$ref": "#/definitions/network_permissions"
"$ref": "#/$defs/network_permissions"
},
"read": {
"type": "array",
Expand Down Expand Up @@ -212,7 +212,7 @@
"description": "Network access permissions for the MCP server",
"properties": {
"outbound": {
"$ref": "#/definitions/outbound_permissions"
"$ref": "#/$defs/outbound_permissions"
}
},
"additionalProperties": false
Expand Down Expand Up @@ -290,7 +290,7 @@
"examples": ["https://token.actions.githubusercontent.com"]
},
"attestation": {
"$ref": "#/definitions/verified_attestation"
"$ref": "#/$defs/verified_attestation"
}
},
"additionalProperties": false
Expand Down
36 changes: 18 additions & 18 deletions registry/types/data/toolhive-legacy-registry.schema.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/stacklok/toolhive-core/main/registry/types/data/toolhive-legacy-registry.schema.json",
"title": "ToolHive MCP Server Registry Schema",
"description": "JSON Schema for the ToolHive MCP server registry. This schema validates the structure and content of registry.json entries for MCP servers. See docs/registry/management.md and docs/registry/heuristics.md for inclusion criteria and management processes.",
Expand All @@ -16,7 +16,7 @@
"description": "Collection of MCP server entries indexed by server name",
"patternProperties": {
"^[a-z0-9][a-z0-9-]+[a-z0-9]$": {
"$ref": "#/definitions/server"
"$ref": "#/$defs/server"
}
},
"additionalProperties": false
Expand All @@ -26,7 +26,7 @@
"description": "Collection of remote MCP server entries indexed by server name",
"patternProperties": {
"^[a-z0-9][a-z0-9-]+[a-z0-9]$": {
"$ref": "#/definitions/remote_server"
"$ref": "#/$defs/remote_server"
}
},
"additionalProperties": false
Expand All @@ -35,7 +35,7 @@
"type": "array",
"description": "Collection of group definitions containing related MCP servers",
"items": {
"$ref": "#/definitions/group"
"$ref": "#/$defs/group"
}
},
"version": {
Expand All @@ -44,7 +44,7 @@
"pattern": "^\\d+\\.\\d+\\.\\d+$"
}
},
"definitions": {
"$defs": {
"server": {
"type": "object",
"description": "MCP server entry definition",
Expand Down Expand Up @@ -88,7 +88,7 @@
"type": "array",
"description": "Environment variables that can be passed to the server",
"items": {
"$ref": "#/definitions/environment_variable"
"$ref": "#/$defs/environment_variable"
}
},
"image": {
Expand All @@ -104,7 +104,7 @@
},
"metadata": {
"description": "Additional information about the server such as popularity metrics",
"$ref": "#/definitions/metadata"
"$ref": "#/$defs/metadata"
},
"name": {
"type": "string",
Expand All @@ -120,11 +120,11 @@
},
"permissions": {
"description": "Security profile and access permissions for the server",
"$ref": "#/definitions/permissions"
"$ref": "#/$defs/permissions"
},
"provenance": {
"description": "Verification and signing metadata",
"$ref": "#/definitions/provenance"
"$ref": "#/$defs/provenance"
},
"repository_url": {
"type": "string",
Expand Down Expand Up @@ -228,7 +228,7 @@
"required": [],
"properties": {
"network": {
"$ref": "#/definitions/network_permissions"
"$ref": "#/$defs/network_permissions"
},
"read": {
"type": "array",
Expand Down Expand Up @@ -264,7 +264,7 @@
"required": [],
"properties": {
"outbound": {
"$ref": "#/definitions/outbound_permissions"
"$ref": "#/$defs/outbound_permissions"
}
},
"additionalProperties": false
Expand Down Expand Up @@ -369,7 +369,7 @@
},
"attestation": {
"description": "Verified attestation information",
"$ref": "#/definitions/verified_attestation"
"$ref": "#/$defs/verified_attestation"
}
},
"additionalProperties": false
Expand Down Expand Up @@ -566,23 +566,23 @@
"type": "array",
"description": "HTTP headers for authentication to the remote server",
"items": {
"$ref": "#/definitions/header"
"$ref": "#/$defs/header"
}
},
"oauth_config": {
"description": "OAuth/OIDC configuration for authentication",
"$ref": "#/definitions/oauth_config"
"$ref": "#/$defs/oauth_config"
},
"env_vars": {
"type": "array",
"description": "Environment variables for client-side configuration",
"items": {
"$ref": "#/definitions/environment_variable"
"$ref": "#/$defs/environment_variable"
}
},
"metadata": {
"description": "Additional information about the server",
"$ref": "#/definitions/metadata"
"$ref": "#/$defs/metadata"
},
"repository_url": {
"type": "string",
Expand Down Expand Up @@ -630,7 +630,7 @@
"description": "Collection of MCP server entries within this group indexed by server name",
"patternProperties": {
"^[a-z0-9][a-z0-9-]+[a-z0-9]$": {
"$ref": "#/definitions/server"
"$ref": "#/$defs/server"
}
},
"additionalProperties": false
Expand All @@ -640,7 +640,7 @@
"description": "Collection of remote MCP server entries within this group indexed by server name",
"patternProperties": {
"^[a-z0-9][a-z0-9-]+[a-z0-9]$": {
"$ref": "#/definitions/remote_server"
"$ref": "#/$defs/remote_server"
}
},
"additionalProperties": false
Expand Down
Loading