Auto-generated from bioledger_toolspec_schema.models at build time — do not hand-edit.
ExecutionSpecLayer 1: the minimal, portable execution contract.
Internal representation uses dict[str, T] keyed by name for O(1) lookup
and tight contracts. For LLM-facing schema generation (which must avoid
additionalProperties), use :class:ExecutionSpecDraft and convert
via :meth:ExecutionSpecDraft.to_execution_spec.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name |
str |
yes | — | Unique tool identifier. Used on the CLI (bioledger tool show <name>) and as the filename. |
version |
str |
no | — | Free-form version label. Does not need to match the container tag. |
description |
str |
no | — | One-sentence summary. Shown to the LLM when it picks tools. |
container |
str |
no | — | Fully qualified Docker image URI (e.g. quay.io/biocontainers/fastqc:0.12.1--hdfd78af_0). Optional when conda_deps is set (for either docker auto-derive or native conda execution) or when executors contains only engine types (nextflow/snakemake/galaxy). Mutually exclusive with conda_deps. |
executors |
list[str] |
no | — | How this tool can be executed. Defaults to ['docker']. At most one engine executor (nextflow/snakemake/galaxy) per toolspec — command syntax is engine-specific. docker/conda may coexist with each other and with one engine executor. |
conda_deps |
list[str] |
no | — | Conda package dependencies (e.g. ['samtools=1.17']). Mutually exclusive with container. When executor='conda', these are used to create a native conda environment (via conda/mamba). When executor='docker' (without explicit container), the container image is auto-derived from these via mulled-hash/biocontainers lookup. |
command |
str |
yes | — | Jinja2 command template. See the Guide for variables. |
inputs |
dict[str, ToolInput] |
no | — | Declared input files/directories, keyed by name. |
outputs |
dict[str, ToolOutput] |
no | — | Declared outputs, keyed by name. |
parameters |
dict[str, ToolParameter] |
no | — | Non-file parameters (threads, flags, options), keyed by name. |
categories |
list[str] |
no | — | Free-form tags used for grouping and LLM hints (e.g. alignment, qc, variant_calling). |
status |
"draft" | "valid" | "enriched" |
no | 'draft' |
Set automatically by validate_spec; do not hand-set. |
suggested_mode |
"blocking" | "async" |
no | 'blocking' |
Default dispatch mode for runs of this tool — a hint, not a constraint. Set to 'async' for long-running tools (hours) so the caller defaults to submit-and-poll instead of blocking. The user/agent invoking the tool may always override this per-run. |
homepage |
str |
no | — | Tool homepage or docs URL. |
citation |
str |
no | — | How to cite (DOI / paper reference). |
license |
str |
no | — | SPDX identifier, e.g. "MIT", "GPL-3.0-or-later". |
contact |
str |
no | — | Maintainer contact. |
ToolInputA typed input to a tool (file or directory).
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name |
str |
no | — | Identifier for this input (used as the dict key internally). |
type |
"file" | "directory" | "string" | "integer" | "float" | "boolean" | "select" |
no | 'file' |
file or directory. |
format |
str |
no | 'any' |
Free-form string, not an enum. any is accepted but triggers a validation warning because it makes tool chaining harder. |
required |
bool |
no | True |
If false, BioLedger may omit this input from the command; the template must handle that (usually via Jinja conditionals). |
description |
str |
no | — | Shown to the LLM and in the UI. |
collection |
bool |
no | False |
If true, this input accepts a collection (glob, manifest, or ledger-sourced file list) instead of a single file. Used by generate() to create scatter channels and by submit_spec() to pass collections directly to workflow toolspecs for native scatter. |
ToolOutputA typed output from a tool.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name |
str |
no | — | Identifier for this output (used as the dict key internally). |
type |
"file" | "directory" | "string" | "integer" | "float" | "boolean" | "select" |
no | 'file' |
file or directory. |
format |
str |
no | 'any' |
Free-form string, not an enum. |
pattern |
str |
no | — | Glob used for documentation/chaining hints (e.g. "*.html"). BioLedger records every file produced in /output, so this is advisory only. |
description |
str |
no | — | Shown to the LLM and in the UI. |
ToolParameterA configurable parameter (not a file).
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name |
str |
no | — | Identifier for this parameter (used as the dict key internally). |
type |
"file" | "directory" | "string" | "integer" | "float" | "boolean" | "select" |
yes | — | One of string, integer, float, boolean, select. file/directory belong under inputs, not parameters. |
default |
str | int | float | bool | None |
no | — | Value used when the caller does not override. |
required |
bool |
no | False |
If true and no default, the CLI/LLM must supply a value. |
description |
str |
no | — | Shown to the LLM and in the UI. |
min |
int | float | None |
no | — | For integer/float. The default value is validated against this. |
max |
int | float | None |
no | — | For integer/float. The default value is validated against this. |
options |
list[str] | None |
no | — | Required when type: select; the allowed choices. |
InterfaceSpecLayer 2: optional UI hints. Completely decoupled from execution.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
hints |
dict[str, InputHint] |
no | — | Per-field UI metadata, keyed by input/parameter name. |
conditionals |
list[Conditional] |
no | — | Show/hide param groups based on a controlling param. |
repeats |
list[RepeatBlock] |
no | — | Allow the user to add N instances of a field group. |
sections |
dict[str, str] |
no | — | Map of section id -> display title. |