Skip to main content
A ToolSet can be exported as a ZIP archive and imported again, either into an existing ToolSet or as a brand-new one. Use it to back up a ToolSet, copy it to another organization, or write tools in your own editor and upload them in one step.

Archive Layout

  • The root directory is optional. toolset.yml may sit at the top level of the ZIP instead; the ToolSet slug is then derived from its name. 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.py for Python ToolSets and main.ts for 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:
Input and Output must be pydantic v2 models.
A tool whose schemas cannot be extracted is reported under Failed with the extraction error, and the other tools are still imported.

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.
An import into an existing ToolSet writes tools and environment variables only. The ToolSet’s name, description, language and sandbox provider are left as they are, and the 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. language must be python or typescript.
  • The slug comes from the root directory (or from name when 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