Overview
Jinba Toolbox uses a semver-based versioning system with immutable snapshots. Each toolset maintains a draft (the editable working copy) and a list of published versions. When you publish, a complete snapshot of the toolset — including all tool code, schemas, and sandbox configuration — is frozen as an immutable version that can never be modified. This design ensures reproducibility: running version1.0.0 always executes the same code, regardless of when or where it is called.
Concepts
Draft vs. Versions
Immutable Snapshots
Each version captures a complete snapshot of the toolset at the time of publishing:- All tool code and entrypoints
- Input and output schemas
- Tool names and descriptions
- Sandbox configuration (provider, language, packages, resources)
Publishing Workflow
1
Edit the draft
Make changes to tools in the draft through the web console or the API, and verify the behavior with the Test panel in the console. The underlying endpoint is
POST /v1/orgs/{orgId}/toolsets/slack-tools/tools/post-message/test with { "input": { ... } }; it requires a signed-in user session, so it cannot be called with an API key.2
Publish a new version
When the draft is ready, publish it with a semver version number and optional release notes (publishing also requires a signed-in session; use the console’s New Version dialog):An API key (
jtb_...) is rejected here with 400 (“User context required”), and the SDK’s publishVersion() sends the API key, so it fails the same way.3
Set the published version
A newly published version automatically becomes the active version of the environment given by The change takes effect immediately. In the console, use Set Active on the Versions tab.
environmentSlug (default default), unless you pass "setAsPublished": false. To activate a different version later — or to activate a version in another environment — set it explicitly:4
Continue developing
The draft remains intact after publishing, so you can keep iterating on the next version without affecting the live published version.
Version Resolution
When a tool is executed via therun endpoint, Jinba Toolbox resolves which version to use:
- If the request body includes a
versionfield, that exact version is used. - Otherwise, the active version of the ToolSet environment is used. The environment comes from the request’s
environmentSlugfield, or else from the environment bound to the API key (defaultfor session requests). - If that environment has no active version, the organization
runand MCP endpoints fall back tolatestVersion; the public endpoints do not and respond with “No published version available”.
Rollback
Rolling back is simply a matter of changing the active version of an environment to a previous one:Version API
Version Data Model
Each published version stores a full snapshot:Usage Tracking
Jinba Toolbox counts the runs of each version over the last 30 days. The console shows this count next to every version on the Versions tab, and the version list endpoint returns it asrunCount. For a complete history, retrieve runs through the API:
Best Practices
- Follow semantic versioning — use major bumps for breaking schema changes, minor bumps for new tools or features, and patch bumps for fixes.
- Write release notes — they help your team understand what changed between versions.
- Test before publishing — use the
testendpoint to validate the draft before creating an immutable version. - Do not skip the publish step for MCP — MCP endpoints serve the published version, not the draft.
- Monitor per-version usage — before deprecating a version, verify that no consumers still depend on it.
Related
- REST API — Full endpoint reference including version routes
- SDK — Programmatic version management
- Security & Access Control — Who can publish versions