Workflow
If boltz-api is missing from PATH, use boltz-cli-setup for install/update guidance before retrying.
If a command reports missing or expired authentication, use boltz-cli-setup to start boltz-api auth login --device-code before retrying; do not ask permission first.
If the agent host sandbox blocks boltz-api install/auth/API calls, use boltz-cli-setup to request the host sandbox bypass/escalation needed for user-wide CLI install, browser login, credential storage, temp files, or API access before retrying.
Use this skill to recover state across sessions and to inspect or download results for prior Boltz jobs. No payload authoring — this skill only calls list / retrieve / download-results / download-status.
Use four modes:
- Local progress: if the user knows the run name / run dir, prefer
download-statusbefore remote API calls. - List recent jobs: enumerate all six resources, merge, and sort by
created_atdescending. - Retrieve one job: use the job ID prefix when known; otherwise probe resources until one succeeds.
- Resume/download results: run
download-resultswith the original run name when possible. Never runstartagain to resume.
ADME jobs use the prefix adme_pred_* and show up in Modes 1-2 (list / retrieve) like the others. ADME has no download-results/archive step, so Modes 3-4 don't apply — recover its scores by re-running retrieve (read output.molecules[]) or from the local run.json.
Read references/resume.md [blocked] before recovering a dropped session, mapping job ID prefixes, or choosing a run name for download-results. Read references/api.md [blocked] for per-resource list columns, retrieve fields, and result semantics.
Command Pattern
Always Do This
- If the user has a run name / slug or run dir and only wants local downloader state, prefer
download-statusbeforeretrieve. - Use an absolute output root and keep passing it through
--root-dir. Do notcdinto the run directory; that makes later relative paths point at the run directory instead of the user's workspace. - On an unfamiliar job ID, run Mode 2 (retrieve) before Mode 3 (download) so you capture
idempotency_key. - Prefer the original run-name slug over the job ID as
--name— it resumes into the existing dir with cursor. - In permission-gated runtimes, keep each Boltz call as a top-level command that starts with
boltz-api. Prefer running the sixlist/retrievecommands explicitly over generating them from a shell loop; a fixed| head -20cap is okay when listing to avoid runaway streamed output. - Run
download-resultsthrough the runtime's long-running or non-blocking command facility, using the mechanism the runtime documents rather than tool arguments you assume exist. Do not detach it with shell&ornohupunless the runtime documents shell backgrounding as its supported mode; some tool runners reap shell-backgrounded children before.boltz-run.jsonis written. If unsure how this runtime handles long-running commands, consultboltz-cli-setup. - After the download starts, do not manually wait on it or run ad hoc polling loops. If the runtime can schedule follow-up checks (a heartbeat, scheduled task, or reminder), schedule one that runs
download-statusperiodically, posts only material status changes or terminal completion/failure, and stops once terminal. If it cannot, do not claim an automatic next check; report the job ID, run name, output directory, and the command needed to checkdownload-status. download-resultsnow emits machine-readable JSONL progress on stderr by default. Add--progress-format text --verboseonly when you explicitly want human-readable logs.- Prefer
download-statusfor local checkpoint state. Use it for any scheduled follow-up, and poll a saved session handle only for interactive, user-requested progress checks. Don't loopretrieveunless the user wants fresh remote status. - If
retrievesurfaces only{"code":"VALIDATION_ERROR","message":"Request validation failed"}with nodetails, that's expected forpredictions:structure-and-bindingfailures — other endpoints include field paths. - Never run
startagain on a failed or interrupted job. Fix the payload and submit with a newidempotency-key, or just resume withdownload-results.
Escape Hatch
- Python SDK reference (per-resource
list/retrievemethods): https://api.boltz.bio/docs/api/python - CLI flag names:
boltz-api <resource> list --help,boltz-api <resource> retrieve --help,boltz-api download-results --help,boltz-api download-status --help
Outputs
- Local helper / Mode 1 / Mode 2 print structured data to stdout; present as a table.
- Mode 3 writes recovered artifacts under
<output-root>/<run-name>/— same layout as a fresh run. Read references/resume.md [blocked] for resume behavior.


