Skip to main content

A platform and CLI for building benchmarks for agentic tools and harnesses.

Project description

toolbench

toolbench is a platform and CLI for building benchmarks for agentic tools and harnesses. Compose a benchmark (a task + a grading rubric) with a harness (the agent runtime), a loadout (the tools the agent is given), and a variant (the prompt + sandbox), run N trials per cell against a model, and get reach / pass@k / pass^k metrics with plots.

It is the benchmarking sibling of toolbase — the package manager and runtime for agent tools. toolbase serves the tools; toolbench measures how well an agent uses them. Together they close the loop for agentic tool and harness development.

Install

pip install toolbench                 # core framework
pip install 'toolbench[toolbase]'     # + resolve tools from toolbase profiles

Requires Python ≥ 3.12. The CLI is available as both toolbench and the short alias tbe.

Quickstart

The example geometry benchmark (Euclidean distance + midpoint between two 2-D points) is a self-contained, dependency-free example that exercises the whole framework.

# Validate the wiring with no LLM calls or cost:
toolbench run --benchmark examples/geometry --model stub \
    --loadouts full_local --n 1 --max-cost-usd 0 --dry-run

# A real run (a few cheap trials):
toolbench run --benchmark examples/geometry --model claude-haiku-4-5 \
    --loadouts core_only,full_local --n 3 --max-cost-usd 0.50

Each run writes a directory under runs/<run_id>/ with a manifest.json, per-trial transcripts and artifacts, an aggregated summary.json / summary.txt, and headline plots (k-sweep, parallel-coordinates, per-stage breakdown).

Concepts

A benchmark lives in examples/<name>/ and is composed from four declarative axes — vary any of them on the command line to run an ablation:

Concept What it is Where it lives
Benchmark The task + grading rubric + ground truth. benchmark.yaml
Harness The agent runtime, provider, core tools, and loop policy. harnesses/*.yaml
Loadout The domain tools the agent gets (beyond the harness core). loadouts/*.yaml
Variant The prompt + sandbox seed (scaffolding axis), orthogonal to tools. variants/<name>/
Rubric Ordered, weighted stages of checks; trial score = prefix product. inside benchmark.yaml

A loadout source is one of:

  • python: — import a module exposing TOOLS / make_tools() (the no-dependency escape hatch),

  • toolbase: — resolve tools from a toolbase profile, in-process (requires toolbench[toolbase]); served toolkit versions are recorded in the run manifest as reproducibility provenance, or

  • mcp: — serve any MCP server's tools, stdio or HTTP (requires toolbench[mcp]):

    tools:
      sources:
        - toolbase: { profile: my-profile }
          select: [calculator__add]          # optional: ablate within the profile
        - mcp: { url: "https://host/mcp", headers: { Authorization: "Bearer ${TOK}" } }
    

Metrics

For each (model × condition) cell over k trials:

  • reach̄ₖ — mean rubric-weighted reach (how far through the staged pipeline the agent gets).
  • pass@k — probability at least one of k trials passes every stage (best-of-k).
  • pass^k — probability all k trials pass (worst-of-k).

with bootstrap 95% confidence intervals and a metric-correlation matrix.

Commands

Command What it does
toolbench run Run a benchmark across the harness × loadout × variant × model grid.
toolbench resume Resume an interrupted run; run only the seeds not yet completed.
toolbench regrade Re-judge a finished run's preserved artifacts after a rubric change.

Run toolbench --help (or tbe --help) for the full reference.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

toolbench-0.1.0.tar.gz (156.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

toolbench-0.1.0-py3-none-any.whl (114.2 kB view details)

Uploaded Python 3

File details

Details for the file toolbench-0.1.0.tar.gz.

File metadata

  • Download URL: toolbench-0.1.0.tar.gz
  • Upload date:
  • Size: 156.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for toolbench-0.1.0.tar.gz
Algorithm Hash digest
SHA256 964bc36d0a3c101d7fcc5c1df02b22354afc84ceafd6771f8f631f8ae3e2fe4c
MD5 8411844a40975301a595ed2f8ac99737
BLAKE2b-256 fa2c40a70902f1e1d3540b3e4fcef77d2878f8185a42b59eb9b87a05666c1873

See more details on using hashes here.

File details

Details for the file toolbench-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: toolbench-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 114.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for toolbench-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f168f371c63d3bf13fce396ce05ff76e2016392c6bb43b8173544ed77df72d2
MD5 18d0319af11b6fc7e104ab7c6237d656
BLAKE2b-256 f4bb6a514c436ee328d78574c1f447ecd06eca4eb5a7404eec19895b0a572038

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page