From 63244fbabbe0dd11616ef43bad13069d079eb75c Mon Sep 17 00:00:00 2001 From: arpan Date: Wed, 16 Sep 2026 03:38:56 +0530 Subject: [PATCH] Release 0.12.2: the operator's tool descriptions, and the registry marker Four version-carrying files move together, as `test_the_registry_manifest_agrees_ with_the_version_and_the_readme_marker` and its neighbours require: `pyproject.toml`, `CHANGELOG.md`, `CITATION.cff`, and both of `server.json`'s version fields. Two things have been sitting on `main` with no way for anyone to install them. The operator's tool and argument descriptions are what an MCP client puts in front of a model, so they are behaviour, not documentation. And the `mcp-name:` marker can only do its job from a published release: the registry reads it out of the long description of a distribution on PyPI, and 0.12.1 was uploaded before the marker existed. No change to the enforcement path. `mcp-publisher validate` passes against the live registry at this version. Tagging this publishes the MCP registry listing without anyone running a CLI, which is what `publish.yml`'s registry job was added for. Signed-off-by: arpan --- CHANGELOG.md | 38 ++++++++++++++++++++++++++++++++++++++ CITATION.cff | 2 +- pyproject.toml | 2 +- server.json | 4 ++-- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b03df7e..31dbb56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,44 @@ any change to one appears here. ## [Unreleased] +## [0.12.2] — the operator's tool descriptions, and the marker the registry reads + +A patch release with no change to the enforcement path. Two things sat on `main` with no way for +anyone to install them: the operator's tool and argument descriptions, which are what an MCP +client puts in front of a model, and the `mcp-name:` marker the official MCP registry reads out +of this package's long description to verify the namespace. The second one can only work from a +published release, because the description it reads is the README of a distribution on PyPI. + +### Changed + +- **Every operator tool argument now describes itself, and the read tools say which to reach + for.** An input schema could say `control` was a string; it could not say that it filters + rather than selects, that `since` takes `24h` as readily as a timestamp, or that a `failed` + resolution is what unblocks a retry. `list_pending_approvals` now says it is where the request + ids come from, and `limit` says it bounds the response and not the scan, so a store holding + many answered requests still walks them. A caller that has to infer any of this from an + argument's name is guessing, and this server exists so that nobody guesses. + +### Added + +- **`server.json`, the manifest for the official MCP registry**, naming + `io.github.CTRLRun/ctrlrun-mcp-operator` and the PyPI distribution that carries it, with the + matching `mcp-name:` marker in the README. The namespace carries the owning organisation's own + case because the registry matches it case-sensitively against the OIDC token's + `repository_owner`, and the two are pinned to each other, and both versions to + `pyproject.toml`, by tests. +- **The registry listing publishes itself on a kernel tag.** A job in `publish.yml` that runs + after the PyPI upload, authenticates with a GitHub OIDC token rather than a stored credential, + installs the publisher binary pinned by version and checksum, and leaves alone a version the + registry already has. +- **`glama.json`**, naming the maintainer of the Glama listing. + +### Fixed + +- **The README's MCP row pointed an approver at the server and not at their own page.** It now + links the page written for the person answering the request. + + ## [0.12.1] — the verify fixes 0.12.0 was tagged just before `0.12.0` was tagged at the release merge, and these three landed on `main` shortly after, so the diff --git a/CITATION.cff b/CITATION.cff index 9ac39b9..c10b824 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -14,7 +14,7 @@ authors: - family-names: Kamath given-names: Rohan email: rkamath1610@gmail.com -version: 0.12.1 +version: 0.12.2 repository-code: https://github.com/CTRLRun/ctrlrun url: https://github.com/CTRLRun/ctrlrun license: Apache-2.0 diff --git a/pyproject.toml b/pyproject.toml index 38de6f1..faab4e1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "ctrlrun" -version = "0.12.1" +version = "0.12.2" description = "The execution safety layer for AI agents." # Mirrors the repository's GitHub topics, so PyPI search and GitHub search agree. keywords = [ diff --git a/server.json b/server.json index cbc2b65..1c0e841 100644 --- a/server.json +++ b/server.json @@ -8,13 +8,13 @@ "url": "https://github.com/CTRLRun/ctrlrun", "source": "github" }, - "version": "0.12.1", + "version": "0.12.2", "packages": [ { "registryType": "pypi", "registryBaseUrl": "https://pypi.org", "identifier": "ctrlrun", - "version": "0.12.1", + "version": "0.12.2", "transport": { "type": "streamable-http", "url": "http://127.0.0.1:8901/mcp"