BioLedger ToolSpec — API Reference

Auto-generated from bioledger_toolspec_schema.models at build time — do not hand-edit.

ExecutionSpec

Layer 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.

ToolInput

A 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.

ToolOutput

A 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.

ToolParameter

A 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.

InterfaceSpec

Layer 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.