Archive Layout
- The root directory is optional.
toolset.ymlmay sit at the top level of the ZIP instead; the ToolSet slug is then derived from itsname. When a root directory is present, its name becomes the slug. - Each tool lives in its own folder under
tools/. The folder name is the tool slug. Folders whose name starts with.are ignored. - The code file is
main.pyfor Python ToolSets andmain.tsfor TypeScript ToolSets.
File Formats
toolset.yml
An
env entry without environmentSlug belongs to the default environment profile. An environmentSlug that does not exist yet is created during import, with the slug as its name. See Managing Environment Variables for how profiles work.
tool.yml
Code File
Input and output schemas are not stored in the archive. They are extracted from the code when the archive is imported, so the code has to follow the same conventions as in the editor:- Python (main.py)
- TypeScript (main.ts)
Input and Output must be pydantic v2 models.Exporting
Click Export in the ToolSet header to download{slug}.zip with the draft state of every tool. The button is disabled while the ToolSet has no tools.
Individual published versions can be exported from the Versions tab instead. A version archive is named {slug}-{version}.zip, contains the tools and packages exactly as they were published, and omits environment variables, which belong to the ToolSet rather than to a version. Its root directory is still {slug}, so it imports like any other archive.
Secret environment variables are exported with their encrypted value, not as plaintext, and are written back unchanged on import. They can therefore only be re-imported into the same Jinba Toolbox deployment; after moving an archive elsewhere, re-enter the secret values in the console. Non-secret variables are exported in plaintext.
Importing into an Existing ToolSet
1
Open the Import dialog
On the ToolSet detail page, click Import in the header. The Import Tools dialog opens.
2
Decide about overwriting
Turn on Overwrite existing tools with same slug to replace tools that already exist in the ToolSet. With the option off, those tools are reported under Failed with
Tool "<slug>" already exists (enable overwrite). The same switch decides whether environment variables that already exist are updated or skipped. Decide this first: the option disappears once a source has been chosen (use Back to change it).3
Choose the source
Click Select Folder to pick a local folder whose root contains
toolset.yml, or Select ZIP to pick an archive. If the folder has no toolset.yml at its root, the dialog shows “The selected folder does not contain a toolset.yml at its root.”4
Confirm
The dialog asks “Import this file?” and, when overwriting is on, warns that existing tools with the same slug will be overwritten. Click Import. The dialog shows Importing… and then the counts of tools Created, Updated and Failed; it closes by itself a couple of seconds after a successful import.
packages list in toolset.yml is ignored. Because schema extraction runs each tool’s code in the ToolSet’s sandbox with its current packages, add any packages the archive needs on the Packages tab before importing; a tool whose imports fail lands under Failed and can be imported again once the packages are in place.
Importing as a New ToolSet
The Import button on the ToolSets list page creates a new ToolSet from an archive. The dialog is the same, minus the overwrite option.- The name, description, language, packages and environment variables come from
toolset.yml.languagemust bepythonortypescript. - The slug comes from the root directory (or from
namewhen the archive has no root directory). If a ToolSet with that slug already exists in the organization, a-1,-2, … suffix is appended. - The sandbox provider is E2B.
Errors
Related
- ToolSet Management — packages, environment profiles and the ToolSet header
- Tool Development — the code conventions the schema extraction relies on
- REST API — the import and export routes for automation