Skip to content

v0.9.0 — credential administration

Choose a tag to compare

@kurtseifried kurtseifried released this 28 Aug 06:31
· 22 commits to main since this release
4adbca4

Credential administration — the first work past parity.

Skilljar's official MCP server ships the tool that mints an OAuth credential and withholds every tool that audits or remediates one. Through it you can create a client, then cannot list what exists, see what it may do, narrow it, rotate a leaked secret, or turn it off.

This release is that second half: list_oauth_clients, get_oauth_client, list_oauth_scopes, create_oauth_client, update_oauth_client, deactivate_oauth_client, rotate_oauth_client_secret, revoke_refresh_token.

All eight are gated by the admin capability profile — including the reads. Enumerating an organization's credentials is the reconnaissance step, so listing is gated exactly as hard as rotation.

Two things worth knowing

There are now two ways to create a client, and one silently does not work. create_oauth_client is authenticated and bound to your organization. The official server's register_oauth_client uses RFC 7591 dynamic registration, which binds no organization — that client authenticates fine and then reads nothing, forever, with no error saying why. The tool descriptions say so at length.

A revocation cannot be confirmed. RFC 7009 §2.2 requires the endpoint to answer success whether or not the token existed, so a typo and a real revocation are indistinguishable. revoke_refresh_token reports that revocation was requested, never confirmed.

Also

The release workflow now runs its checks before asking for approval. It was one gated job, so a reviewer was asked to approve a publish before any test had run. Split into build (every check, ungated) and publish (upload only, gated), with the artifact handed between them — so the approval is informed, and publish cannot build something different from what passed.

84 tools, 1000 tests. Python 3.10–3.14, Apache-2.0.