Skip to content

Commit 90ce596

Browse files
Update ToolHive reference docs for v0.19.0 (#703)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent ed0183e commit 90ce596

4 files changed

Lines changed: 24 additions & 11 deletions

File tree

docs/toolhive/reference/cli/thv_run.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ thv run [flags] SERVER_OR_IMAGE_OR_PROTOCOL [-- ARGS...]
193193
--transport string Transport mode (sse, streamable-http or stdio)
194194
--trust-proxy-headers Trust X-Forwarded-* headers from reverse proxies (X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Prefix) (default false)
195195
-v, --volume stringArray Mount a volume into the container (format: host-path:container-path[:ro])
196+
--webhook-config stringArray Path to webhook configuration file (can be specified multiple times to merge configs)
196197
```
197198

198199
### Options inherited from parent commands

docs/toolhive/reference/cli/thv_skill_install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ thv skill install [skill-name] [flags]
2525
### Options
2626

2727
```
28-
--client string Target client application (e.g. claude-code)
28+
--clients string Comma-separated target client apps (e.g. claude-code,opencode), or "all" for every available client
2929
--force Overwrite existing skill directory
3030
--group string Group to add the skill to after installation
3131
-h, --help help for install

docs/toolhive/reference/crd-spec.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -896,8 +896,8 @@ _Appears in:_
896896

897897
| Field | Description | Default | Validation |
898898
| --- | --- | --- | --- |
899-
| `type` _string_ | Type defines the authentication type | | Enum: [discovered external_auth_config_ref] <br />Required: \{\} <br /> |
900-
| `externalAuthConfigRef` _[api.v1alpha1.ExternalAuthConfigRef](#apiv1alpha1externalauthconfigref)_ | ExternalAuthConfigRef references an MCPExternalAuthConfig resource<br />Only used when Type is "external_auth_config_ref" | | Optional: \{\} <br /> |
899+
| `type` _string_ | Type defines the authentication type | | Enum: [discovered externalAuthConfigRef external_auth_config_ref] <br />Required: \{\} <br /> |
900+
| `externalAuthConfigRef` _[api.v1alpha1.ExternalAuthConfigRef](#apiv1alpha1externalauthconfigref)_ | ExternalAuthConfigRef references an MCPExternalAuthConfig resource<br />Only used when Type is "externalAuthConfigRef" (or deprecated "external_auth_config_ref") | | Optional: \{\} <br /> |
901901

902902

903903
#### api.v1alpha1.BearerTokenConfig
@@ -1803,7 +1803,6 @@ _Appears in:_
18031803
| `volumeMounts` _[JSON](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#json-v1-apiextensions-k8s-io) array_ | VolumeMounts defines additional volume mounts for the registry-api container.<br />Each entry is a standard Kubernetes VolumeMount object (JSON/YAML).<br />The operator appends them to the container's volume mounts alongside the config mount.<br />Mount paths must match the file paths referenced in configYAML.<br />For example, if configYAML references passwordFile: /secrets/git-creds/token,<br />a corresponding volume mount must exist with mountPath: /secrets/git-creds. | | Optional: \{\} <br /> |
18041804
| `pgpassSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#secretkeyselector-v1-core)_ | PGPassSecretRef references a Secret containing a pre-created pgpass file.<br />Why this is a dedicated field instead of a regular volume/volumeMount:<br />PostgreSQL's libpq rejects pgpass files that aren't mode 0600. Kubernetes<br />secret volumes mount files as root-owned, and the registry-api container<br />runs as non-root (UID 65532). A root-owned 0600 file is unreadable by<br />UID 65532, and using fsGroup changes permissions to 0640 which libpq also<br />rejects. The only solution is an init container that copies the file to an<br />emptyDir as the app user and runs chmod 0600. This cannot be expressed<br />through volumes/volumeMounts alone -- it requires an init container, two<br />extra volumes (secret + emptyDir), a subPath mount, and an environment<br />variable, all wired together correctly.<br />When specified, the operator generates all of that plumbing invisibly.<br />The user creates the Secret with pgpass-formatted content; the operator<br />handles only the Kubernetes permission mechanics.<br />Example Secret:<br /> apiVersion: v1<br /> kind: Secret<br /> metadata:<br /> name: my-pgpass<br /> stringData:<br /> .pgpass: \|<br /> postgres:5432:registry:db_app:mypassword<br /> postgres:5432:registry:db_migrator:otherpassword<br />Then reference it:<br /> pgpassSecretRef:<br /> name: my-pgpass<br /> key: .pgpass | | Optional: \{\} <br /> |
18051805
| `displayName` _string_ | DisplayName is a human-readable name for the registry. | | Optional: \{\} <br /> |
1806-
| `enforceServers` _boolean_ | EnforceServers indicates whether MCPServers in this namespace must have their images<br />present in at least one registry in the namespace. When any registry in the namespace<br />has this field set to true, enforcement is enabled for the entire namespace.<br />MCPServers with images not found in any registry will be rejected.<br />When false (default), MCPServers can be deployed regardless of registry presence. | false | Optional: \{\} <br /> |
18071806
| `podTemplateSpec` _[RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#rawextension-runtime-pkg)_ | PodTemplateSpec defines the pod template to use for the registry API server.<br />This allows for customizing the pod configuration beyond what is provided by the other fields.<br />Note that to modify the specific container the registry API server runs in, you must specify<br />the `registry-api` container name in the PodTemplateSpec.<br />This field accepts a PodTemplateSpec object as JSON/YAML. | | Type: object <br />Optional: \{\} <br /> |
18081807

18091808

@@ -1904,7 +1903,7 @@ _Appears in:_
19041903

19051904
| Field | Description | Default | Validation |
19061905
| --- | --- | --- | --- |
1907-
| `remoteURL` _string_ | RemoteURL is the URL of the remote MCP server to proxy | | Pattern: `^https?://` <br />Required: \{\} <br /> |
1906+
| `remoteUrl` _string_ | RemoteURL is the URL of the remote MCP server to proxy | | Pattern: `^https?://` <br />Required: \{\} <br /> |
19081907
| `proxyPort` _integer_ | ProxyPort is the port to expose the MCP proxy on | 8080 | Maximum: 65535 <br />Minimum: 1 <br /> |
19091908
| `transport` _string_ | Transport is the transport method for the remote proxy (sse or streamable-http) | streamable-http | Enum: [sse streamable-http] <br /> |
19101909
| `oidcConfig` _[api.v1alpha1.OIDCConfigRef](#apiv1alpha1oidcconfigref)_ | OIDCConfig defines OIDC authentication configuration for the proxy.<br />Deprecated: Use OIDCConfigRef to reference a shared MCPOIDCConfig resource instead.<br />This field will be removed in v1beta1. OIDCConfig and OIDCConfigRef are mutually exclusive. | | Optional: \{\} <br /> |
@@ -1915,7 +1914,8 @@ _Appears in:_
19151914
| `authzConfig` _[api.v1alpha1.AuthzConfigRef](#apiv1alpha1authzconfigref)_ | AuthzConfig defines authorization policy configuration for the proxy | | Optional: \{\} <br /> |
19161915
| `audit` _[api.v1alpha1.AuditConfig](#apiv1alpha1auditconfig)_ | Audit defines audit logging configuration for the proxy | | Optional: \{\} <br /> |
19171916
| `toolConfigRef` _[api.v1alpha1.ToolConfigRef](#apiv1alpha1toolconfigref)_ | ToolConfigRef references a MCPToolConfig resource for tool filtering and renaming.<br />The referenced MCPToolConfig must exist in the same namespace as this MCPRemoteProxy.<br />Cross-namespace references are not supported for security and isolation reasons.<br />If specified, this allows filtering and overriding tools from the remote MCP server. | | Optional: \{\} <br /> |
1918-
| `telemetry` _[api.v1alpha1.TelemetryConfig](#apiv1alpha1telemetryconfig)_ | Telemetry defines observability configuration for the proxy | | Optional: \{\} <br /> |
1917+
| `telemetryConfigRef` _[api.v1alpha1.MCPTelemetryConfigReference](#apiv1alpha1mcptelemetryconfigreference)_ | TelemetryConfigRef references an MCPTelemetryConfig resource for shared telemetry configuration.<br />The referenced MCPTelemetryConfig must exist in the same namespace as this MCPRemoteProxy.<br />Cross-namespace references are not supported for security and isolation reasons.<br />Mutually exclusive with the deprecated inline Telemetry field. | | Optional: \{\} <br /> |
1918+
| `telemetry` _[api.v1alpha1.TelemetryConfig](#apiv1alpha1telemetryconfig)_ | Telemetry defines inline observability configuration for the proxy.<br />Deprecated: Use TelemetryConfigRef to reference a shared MCPTelemetryConfig resource instead.<br />This field will be removed in a future release. Setting both telemetry and telemetryConfigRef<br />is rejected by CEL validation. | | Optional: \{\} <br /> |
19191919
| `resources` _[api.v1alpha1.ResourceRequirements](#apiv1alpha1resourcerequirements)_ | Resources defines the resource requirements for the proxy container | | Optional: \{\} <br /> |
19201920
| `serviceAccount` _string_ | ServiceAccount is the name of an already existing service account to use by the proxy.<br />If not specified, a ServiceAccount will be created automatically and used by the proxy. | | Optional: \{\} <br /> |
19211921
| `trustProxyHeaders` _boolean_ | TrustProxyHeaders indicates whether to trust X-Forwarded-* headers from reverse proxies<br />When enabled, the proxy will use X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port,<br />and X-Forwarded-Prefix headers to construct endpoint URLs | false | Optional: \{\} <br /> |
@@ -1940,10 +1940,11 @@ _Appears in:_
19401940
| --- | --- | --- | --- |
19411941
| `phase` _[api.v1alpha1.MCPRemoteProxyPhase](#apiv1alpha1mcpremoteproxyphase)_ | Phase is the current phase of the MCPRemoteProxy | | Enum: [Pending Ready Failed Terminating] <br />Optional: \{\} <br /> |
19421942
| `url` _string_ | URL is the internal cluster URL where the proxy can be accessed | | Optional: \{\} <br /> |
1943-
| `externalURL` _string_ | ExternalURL is the external URL where the proxy can be accessed (if exposed externally) | | Optional: \{\} <br /> |
1943+
| `externalUrl` _string_ | ExternalURL is the external URL where the proxy can be accessed (if exposed externally) | | Optional: \{\} <br /> |
19441944
| `observedGeneration` _integer_ | ObservedGeneration reflects the generation of the most recently observed MCPRemoteProxy | | Optional: \{\} <br /> |
19451945
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#condition-v1-meta) array_ | Conditions represent the latest available observations of the MCPRemoteProxy's state | | Optional: \{\} <br /> |
19461946
| `toolConfigHash` _string_ | ToolConfigHash stores the hash of the referenced ToolConfig for change detection | | Optional: \{\} <br /> |
1947+
| `telemetryConfigHash` _string_ | TelemetryConfigHash stores the hash of the referenced MCPTelemetryConfig for change detection | | Optional: \{\} <br /> |
19471948
| `externalAuthConfigHash` _string_ | ExternalAuthConfigHash is the hash of the referenced MCPExternalAuthConfig spec | | Optional: \{\} <br /> |
19481949
| `authServerConfigHash` _string_ | AuthServerConfigHash is the hash of the referenced authServerRef spec,<br />used to detect configuration changes and trigger reconciliation. | | Optional: \{\} <br /> |
19491950
| `oidcConfigHash` _string_ | OIDCConfigHash is the hash of the referenced MCPOIDCConfig spec for change detection | | Optional: \{\} <br /> |
@@ -2050,7 +2051,7 @@ _Appears in:_
20502051

20512052
| Field | Description | Default | Validation |
20522053
| --- | --- | --- | --- |
2053-
| `remoteURL` _string_ | RemoteURL is the URL of the remote MCP server.<br />Both HTTP and HTTPS schemes are accepted at admission time. | | Pattern: `^https?://` <br />Required: \{\} <br /> |
2054+
| `remoteUrl` _string_ | RemoteURL is the URL of the remote MCP server.<br />Both HTTP and HTTPS schemes are accepted at admission time. | | Pattern: `^https?://` <br />Required: \{\} <br /> |
20542055
| `transport` _string_ | Transport is the transport method for the remote server (sse or streamable-http).<br />No default is set (unlike MCPRemoteProxy) because MCPServerEntry points at external<br />servers the user doesn't control — requiring explicit transport avoids silent mismatches. | | Enum: [sse streamable-http] <br />Required: \{\} <br /> |
20552056
| `groupRef` _string_ | GroupRef is the name of the MCPGroup this entry belongs to.<br />Required — every MCPServerEntry must be part of a group for vMCP discovery. | | MinLength: 1 <br />Required: \{\} <br /> |
20562057
| `externalAuthConfigRef` _[api.v1alpha1.ExternalAuthConfigRef](#apiv1alpha1externalauthconfigref)_ | ExternalAuthConfigRef references a MCPExternalAuthConfig resource for token exchange<br />when connecting to the remote MCP server. The referenced MCPExternalAuthConfig must<br />exist in the same namespace as this MCPServerEntry. | | Optional: \{\} <br /> |
@@ -2245,6 +2246,7 @@ same namespace as the MCPServer.
22452246

22462247

22472248
_Appears in:_
2249+
- [api.v1alpha1.MCPRemoteProxySpec](#apiv1alpha1mcpremoteproxyspec)
22482250
- [api.v1alpha1.MCPServerSpec](#apiv1alpha1mcpserverspec)
22492251

22502252
| Field | Description | Default | Validation |

static/api-specs/toolhive-api.yaml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,6 +1936,8 @@ components:
19361936
proxy_port:
19371937
description: Port for the HTTP proxy to listen on
19381938
type: integer
1939+
runtime_config:
1940+
$ref: '#/components/schemas/github_com_stacklok_toolhive_pkg_container_templates.RuntimeConfig'
19391941
secrets:
19401942
description: Secret parameters to inject
19411943
items:
@@ -2094,9 +2096,15 @@ components:
20942096
pkg_api_v1.installSkillRequest:
20952097
description: Request to install a skill
20962098
properties:
2097-
client:
2098-
description: Client is the target client (e.g., "claude-code")
2099-
type: string
2099+
clients:
2100+
description: |-
2101+
Clients lists target client identifiers (e.g., "claude-code"),
2102+
or ["all"] to target every skill-supporting client.
2103+
Omitting this field installs to all available clients.
2104+
items:
2105+
type: string
2106+
type: array
2107+
uniqueItems: false
21002108
force:
21012109
description: Force allows overwriting unmanaged skill directories
21022110
type: boolean
@@ -2394,6 +2402,8 @@ components:
23942402
proxy_port:
23952403
description: Port for the HTTP proxy to listen on
23962404
type: integer
2405+
runtime_config:
2406+
$ref: '#/components/schemas/github_com_stacklok_toolhive_pkg_container_templates.RuntimeConfig'
23972407
secrets:
23982408
description: Secret parameters to inject
23992409
items:

0 commit comments

Comments
 (0)