Generated banner for Boltz Check Status
Generated logo for Boltz Check Status

Boltz Check Status

OpenAIOfficialCreated by BoltzDistributed by OpenAI

  • Skill
  • Tool integration
  • Science and research
  • MIT
  • No issues found

From the author

Boltz job status and result recovery. Use when listing jobs, checking progress, resuming downloads, recovering results, or downloading an existing job ID. Not for starting new jobs.
— the description by Boltz

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The boltz-check-status skill provides a standardized interface for interacting with the Boltz API to track, inspect, and download results from previously submitted jobs. It is designed for post-submission workflows, allowing users to resume interrupted downloads, check the status of ongoing predictions, and retrieve data from various Boltz resources including structure-and-binding, ADME, and library screening tasks. The skill emphasizes local state inspection and efficient remote retrieval without re-initiating jobs.

What it does

  • Lists recent jobs across all six Boltz resource types.
  • Retrieves detailed job records using job IDs.
  • Checks local progress and checkpoint status for existing runs.
  • Resumes interrupted result downloads for pipeline jobs.
  • Maps job ID prefixes to the correct API resources for accurate retrieval.
  • Provides structured output for job status and progress monitoring.

When to use it

  • When you need to check the status of a previously submitted Boltz job.
  • When a download was interrupted and needs to be resumed.
  • When you need to inspect the results of a completed job.
  • When you have a job ID but are unsure which resource it belongs to.
  • When you want to verify local checkpoint state before querying the remote API.

Advantages

  • Prevents accidental re-submission of existing jobs.
  • Provides a unified interface for all Boltz resource types.
  • Supports efficient local state inspection to minimize unnecessary API calls.
  • Handles job ID prefix routing automatically.
  • Enables robust recovery of large datasets through managed download resumption.

Usage examples

“Check the status of my recent Boltz jobs.”
The agent will list recent jobs across all six resources, sorted by creation time, and present them in a table.
“Resume the download for job ID sab_pred_12345 named my-protein-run.”
The agent will initiate the download-results command using the provided ID and run name to resume the local data recovery.
“What is the status of my local run in /home/user/boltz-experiments/test-run?”
The agent will run download-status to inspect the local checkpoint state without making remote API calls.
“Get details for job ID prot_des_98765.”
The agent will identify the correct resource and run the retrieve command to fetch the full job record.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/openai/boltz-check-status/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip boltz-check-status.zip -d .agents/skills

Documentation by Boltz

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:

  1. Local progress: if the user knows the run name / run dir, prefer download-status before remote API calls.

  2. List recent jobs: enumerate all six resources, merge, and sort by created_at descending.

  3. Retrieve one job: use the job ID prefix when known; otherwise probe resources until one succeeds.

  4. Resume/download results: run download-results with the original run name when possible. Never run start again 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 before recovering a dropped session, mapping job ID prefixes, or choosing a run name for download-results. Read references/api.md for per-resource list columns, retrieve fields, and result semantics.

Command Pattern

# Replace placeholders with concrete absolute paths before running.

# Local helper: inspect local checkpoint state without API calls.
boltz-api --format json download-status \
  --name "<run-name>" \
  --root-dir "/absolute/path/boltz-experiments"

# Mode 1: list recent jobs across all 6 resources.
# Note: the CLI emits one JSON object per record (streamed, no {data:[]} wrapper).
# --limit is per-page and the CLI auto-paginates, so cap each explicit command with head.
boltz-api predictions:structure-and-binding list --limit 20 --format jsonl | head -20
boltz-api predictions:adme list --limit 20 --format jsonl | head -20
boltz-api small-molecule:library-screen list --limit 20 --format jsonl | head -20
boltz-api small-molecule:design list --limit 20 --format jsonl | head -20
boltz-api protein:library-screen list --limit 20 --format jsonl | head -20
boltz-api protein:design list --limit 20 --format jsonl | head -20

# Mode 2: retrieve by ID. Pick the resource from the ID prefix in the workflow
# notes above. If the prefix is unknown, run these one at a time until one succeeds.
boltz-api predictions:structure-and-binding retrieve --id "<job-id>" --format json
boltz-api predictions:adme retrieve --id "<job-id>" --format json
boltz-api small-molecule:library-screen retrieve --id "<job-id>" --format json
boltz-api small-molecule:design retrieve --id "<job-id>" --format json
boltz-api protein:library-screen retrieve --id "<job-id>" --format json
boltz-api protein:design retrieve --id "<job-id>" --format json

# Mode 3: resume download. Use the agent runtime's managed long-running command mode.
boltz-api download-results \
  --id "<job-id>" --name "<run-name>" \
  --root-dir "/absolute/path/boltz-experiments" \
  --poll-interval-seconds 30

Always Do This

  • If the user has a run name / slug or run dir and only wants local downloader state, prefer download-status before retrieve.

  • Use an absolute output root and keep passing it through --root-dir. Do not cd into 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 agents such as Claude Code, keep each Boltz call as a top-level command that starts with boltz-api. Prefer running the six list / retrieve commands explicitly over generating them from a shell loop; a fixed | head -20 cap is okay when listing to avoid runaway streamed output.

  • Prefer the agent runtime's background/non-blocking command mode for download-results. In Codex specifically, keep download-results in the foreground and set the shell tool yield to 1000 ms; Codex will return a session_id if the command is still running. Do not append & or use nohup in Codex because the tool runner may clean up shell-backgrounded descendants before .boltz-run.json is fully written.

  • After the background/session starts, do not manually wait on it or run ad hoc polling loops. In Codex app/desktop runtimes with same-thread heartbeat automation support, schedule a heartbeat that checks download-status periodically, posts only material status changes or terminal completion/failure, and stops once terminal. If the current host has no heartbeat automation support, do not claim an automatic next check; report the job ID, run name, output directory, and the command needed to check download-status.

  • download-results now emits machine-readable JSONL progress on stderr by default. Add --progress-format text --verbose only when you explicitly want human-readable logs.

  • Prefer download-status for local checkpoint state. In Codex hosts with heartbeat automation support, use it for automatic follow-up and poll the saved session with an empty write_stdin only for interactive, user-requested progress checks. Don't loop retrieve unless the user wants fresh remote status.

  • If retrieve surfaces only {"code":"VALIDATION_ERROR","message":"Request validation failed"} with no details, that's expected for predictions:structure-and-binding failures — other endpoints include field paths.

  • Never run start again on a failed or interrupted job. Fix the payload and submit with a new idempotency-key, or just resume with download-results.

Escape Hatch

  • Python SDK reference (per-resource list / retrieve methods): 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 for resume behavior.

Files

references/api.md

Check Status — Reference

This skill covers all six Boltz resources via list and retrieve; the five non-ADME resources also support download-results:

  • predictions:structure-and-binding

  • predictions:adme — list / retrieve only (no download-results; results in output.molecules[])

  • small-molecule:library-screen

  • small-molecule:design

  • protein:library-screen

  • protein:design

This reference tracks the current CLI surface: unified --id, merged-input design/screen commands, download-results, and download-status. Treat boltz-api --version and the CLI's own help as the source of truth for command/flag specifics.

Contents

  • list mode

  • retrieve mode

  • list-results mode (pipeline endpoints only)

  • download-status mode

  • download-results resume semantics

  • Common recovery recipes

  • Escape hatch

list mode

boltz-api <resource> list --limit 20 --format json

Parameters:

  • --limit N — per-page size. The CLI auto-paginates beyond this, so expect the stream to keep going after N records. To cap total output, pipe through head -N.

  • --workspace-id <id> — admin-only.

  • --format json|yaml|pretty|jsonl — serialization. Both json and jsonl emit one record per object with no {data:[]} wrapper.

  • --transform <gjson> — single-field projection per row (don't use #.{a,b} multi-field — it silently returns {}; use jq for that).

Common columns across resources:

  • id — the job ID

  • ID prefixes identify the resource family:

    • sab_pred_* → predictions:structure-and-binding (legacy pred_* IDs are still supported)

    • adme_pred_* → predictions:adme

    • prot_des_* → protein:design

    • prot_scr_* → protein:library-screen

    • sm_des_* → small-molecule:design

    • sm_scr_* → small-molecule:library-screen

  • status — pending / running / succeeded / failed / stopped

  • created_at, started_at, completed_at

  • idempotency_key — captured from start; the slug you can use as --name for resume

  • resource-specific progress counters (see retrieve)

Merge + sort flow:

# Permission-friendly agents should run these as explicit top-level commands
# instead of generating them from a shell loop. CLI output is streamed, so cap
# each resource with head when you only need recent rows.
boltz-api predictions:structure-and-binding list --limit 20 --format jsonl | head -20
boltz-api predictions:adme list --limit 20 --format jsonl | head -20
boltz-api small-molecule:library-screen list --limit 20 --format jsonl | head -20
boltz-api small-molecule:design list --limit 20 --format jsonl | head -20
boltz-api protein:library-screen list --limit 20 --format jsonl | head -20
boltz-api protein:design list --limit 20 --format jsonl | head -20

retrieve mode

boltz-api <resource> retrieve --id "<job-id>" --format json

Returns the full job record. Key fields:

  • id, status, error

  • started_at, completed_at, stopped_at, expires_at, data_deleted_at

  • idempotency_key — capture this for resume (use as --name on download-results)

  • input — the original submitted payload

  • output — full output (SAB and ADME; pipeline endpoints stream per-item via list-results instead)

  • engine — engine metadata

Progress fields by resource
ResourceProgress fields
predictions:structure-and-bindingstatus; no per-item progress
predictions:admestatus; results in output.molecules[] on success (no per-item progress)
small-molecule:library-screennum_molecules_screened, num_molecules_failed, total_molecules_to_screen, optional rejection_summary
small-molecule:designnum_molecules_generated, total_molecules_to_generate
protein:library-screennum_proteins_screened, num_proteins_failed, total_proteins_to_screen
protein:designnum_proteins_generated, total_proteins_to_generate
Route from the ID prefix when possible
# Pick the resource from the ID prefix above, then run one concrete command.
boltz-api protein:design retrieve --id "<job-id>" --format json

# If the prefix is unknown, probe explicitly one command at a time until one succeeds.
boltz-api predictions:structure-and-binding retrieve --id "<job-id>" --format json
boltz-api predictions:adme retrieve --id "<job-id>" --format json
boltz-api small-molecule:library-screen retrieve --id "<job-id>" --format json
boltz-api small-molecule:design retrieve --id "<job-id>" --format json
boltz-api protein:library-screen retrieve --id "<job-id>" --format json
boltz-api protein:design retrieve --id "<job-id>" --format json
predictions:structure-and-binding 400 quirk

Failed SAB jobs may expose only:

{"code": "VALIDATION_ERROR", "message": "Request validation failed"}

with no details. The other endpoints include field paths. If you see the bare message, inspect the input.entities and input.constraints by hand.

list-results mode (pipeline endpoints only)

Applies to the four pipeline resources (not SAB or ADME, which return their full output on retrieve):

boltz-api <resource> list-results --id "<job-id>" --limit 100

Each row:

  • id — server-assigned pres_* result ID

  • external_id — client-supplied id from the original molecules[] / proteins[] entry

  • smiles (SM) or entities (protein)

  • metrics.* — same fields documented in each start-family skill's references/api.md

  • artifacts.structure.url, artifacts.archive.url — presigned, short-lived; refetch via re-retrieve or re-list-results if expired

  • warnings — any per-item server warnings

Pagination:

  • --limit N — per-page size. CLI auto-paginates, streaming records one per object.

  • --after-id <pres_*> / --before-id <pres_*> — cursor.

  • The CLI emits one JSON record per object (no {data:[]} wrapper); --transform applies per-row. Pipe through head -N to cap total.

download-status mode

Use download-status when you want the local checkpoint only, without making an API call:

boltz-api --format json download-status --name "<run-name>" --root-dir "<output-root>"

Selectors:

  • --name <slug> — look up <output-root>/<run-name>/

  • --run-dir <path> — inspect an explicit run directory

  • --name and --run-dir are mutually exclusive

  • --root-dir cannot be used with --run-dir

Structured fields include:

  • run_dir, name, run_type, run_id

  • status, phase, ready

  • pending_kind, pending_count, pending_after_id, pending_page_last_id, pending_result_ids

  • cursor_after_id, latest_result_id

  • started_at, completed_at, stopped_at, error_code

download-results resume semantics

# Launch this command in the agent runtime's background/non-blocking mode.
# Claude Code: Bash with run_in_background=true.
# Codex: foreground shell command with yield_time_ms=1000; keep the returned session_id if one is provided.
# Do not append "&" or use nohup in Codex.
boltz-api download-results \
  --id "<job-id>" --name "<run-name>" \
  --root-dir "<output-root>" \
  --poll-interval-seconds 30

Behavior:

  • download-results itself is a blocking poller. Launch it through the agent runtime's background/non-blocking command facility. In Claude Code, use Bash with run_in_background: true. In Codex, run it as a foreground shell command with yield_time_ms=1000; if Codex returns a session id, save it for optional same-thread polling, but treat download-status plus the run directory as the durable source of truth. In Codex app/desktop runtimes with same-thread heartbeat automation support, schedule a heartbeat that checks download-status periodically, posts only material status changes or terminal completion/failure, and stops once terminal. If the current host has no heartbeat automation support, do not claim an automatic next check; report the job ID, run name, output directory, and download-status command instead.

  • It emits machine-readable JSONL progress events on stderr by default. Use --progress-format text --verbose only when you explicitly want human-readable logs.

  • Writes <output-root>/<run-name>/.boltz-run.json containing the cursor (cursor_after_id), status, idempotency key, and timing.

  • On re-run with the same --root-dir + --name, reuses .boltz-run.json and only pulls results past the recorded cursor. Idempotent.

  • If the run dir exists and .boltz-run.json has the ID, --id can be omitted.

  • If --name is not passed, the CLI generates a randomly named dir — use --name for cross-session resume.

  • Do not use shell &, terminal backgrounding, or nohup as the Codex detach mechanism. Codex may clean up shell-backgrounded descendants when the tool command exits, before .boltz-run.json is fully written. Prefer the managed foreground session with a short yield, or recover later by re-running download-results with the same ID/name/root.

Directory layout
<output-root>/<run-name>/
├── .boltz-run.json                       # cursor, status, idem key, timing
├── outputs/                              # SAB only
│   └── archive.tar.gz                    # unpacks to prediction/{metrics.json, *.cif, *.pae.npz}
└── results/                              # screens and designs only
    ├── pres_55p3z0ew50xt7uitsMnU/
    │   ├── archive.tar.gz
    │   └── files/result/
    │       ├── metrics.json
    │       ├── <pres_*>_predicted.cif
    │       └── pae.npz
    └── pres_...                           # one dir per per-item result, keyed by server ID

Common recovery recipes

"My session died during the download — same slug available"
# just re-run; CLI reads .boltz-run.json and resumes
boltz-api download-results \
  --id "<job-id>" --name "<run-name>" \
  --root-dir "<output-root>"
"My session died — I only have the job ID"
# 1. Use the ID prefix to pick one retrieve endpoint and get idempotency_key.
boltz-api protein:design retrieve --id "<job-id>" --format json

# 2. Resume with the recovered idempotency_key as the run name.
# If idempotency_key is empty, pick a fresh recovery slug.
boltz-api download-results \
  --id "<job-id>" --name "<run-name-or-recovery-slug>" \
  --root-dir "<output-root>"

Escape hatch

Requirements and compatibility

Written for: OpenAI Codex

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Python

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Boltz
Publisher
OpenAI (Official)
Distributed by
OpenAI
Source
openai/plugins · plugins/boltz-api-cli/skills/boltz-check-status · commit d420d13
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from plugins/boltz-api-cli/LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Boltz or OpenAI.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download boltz-check-status.zip