Skip to main content

ToolCallBench

Find out which local language model calls tools reliably on your own machine.

ToolCallBench gives a model six tools (read, list, search, edit, patch, run a command) and 20 small tasks on a sample Python project. It checks the results with plain code, not with another model, and writes a report that compares models and quantization levels.

It is tuned for a MacBook M4 with 16 GB of memory running Ollama, and works with any OpenAI-compatible local server (llama.cpp, LM Studio, vLLM).

Install and run

pip install toolcallbench

mkdir my-bench && cd my-bench
toolcallbench init                                  # creates configs/ with example settings

Edit configs/my-models.yaml and list the models you have pulled in Ollama, then:

toolcallbench doctor --probe --config configs/my-models.yaml   # check Ollama, models, tool calling
toolcallbench run --config configs/my-models.yaml              # run the 20 tasks
toolcallbench sessions                                         # list past runs
toolcallbench report --session <id>                            # Markdown + HTML report in ./results/reports

Every setting can also be given as an argument, and arguments override the config file:

toolcallbench run --model qwen3:8b --model gemma4:e4b --repeats 3 --num-ctx 16384 --groups read,edit
toolcallbench run --help

Other commands: toolcallbench list-tasks, toolcallbench validate-tasks, toolcallbench init --with-tasks (copies the tasks and sample repo so you can edit them; a folder with its own tasks/ and fixtures/repo/ uses them instead of the built-in ones). Results are written to ./results.

No model yet? toolcallbench run --backend scripted --repeats 1 runs the whole pipeline without one.

Ollama must be running (ollama serve) with the models pulled (ollama pull qwen3:8b). On a 16 GB Mac, start from the m4-16gb.yaml example config. See docs/USER_GUIDE.md.

Develop

git clone <repo> && cd toolcallbench
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest

What a report tells you

  • Pass rate overall and for read, edit, run, chain and failure tasks
  • Why runs failed (13 failure types, such as invalid_json, text_tool_call, patch_failed)
  • Tokens per second, seconds per task, and calls compared with a reference solution
  • Every setting that affects the result (context length, seed, KV cache type, versions)

Status

Version 1.0.0. The harness, tasks, scoring, backends (checked against mock servers) and reports are covered by automated tests. No real model has been benchmarked yet; run it on your Mac to get the first numbers (docs/TEST_PLAN.md lists exactly what was and was not tested).

Documentation

Document Purpose
BUILD_FROM_SCRATCH.md Day-by-day guide to build this project yourself, with all code
docs/PRD.md Why it exists, who it is for, requirements
docs/TECH_SPEC.md Exact behavior: tools, scoring, config, storage
docs/ARCHITECTURE.md Diagrams: context, components, data flow, sequence, states, storage
docs/TEST_PLAN.md What is tested and how requirements map to tests
docs/SECURITY.md What protects you and what does not
docs/DECISIONS.md Why it is built this way
docs/USER_GUIDE.md Install, run, read the report, troubleshoot
docs/CLI_REFERENCE.md Every command, option and config key
docs/MODEL_GUIDE_M4_16GB.md Memory budget and model choices for 16 GB
docs/TASK_CATALOG.md All 20 tasks (generated)
docs/ROADMAP.md, CHANGELOG.md, CONTRIBUTING.md Project housekeeping

License

MIT

Metadata

Release files for toolcallbench 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for toolcallbench 1.0.1
File Size Uploaded Provenance
toolcallbench-1.0.1.tar.gz 50.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for toolcallbench 1.0.1
File Interpreter ABI Platform
toolcallbench-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 108.4 kB

Release files / toolcallbench-1.0.1.tar.gz

Download URL toolcallbench-1.0.1.tar.gz
Size 50.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4c8a5d298ac2d8c9d47a9d54fb203fc645f53dea9ea778bbf29ced5dd7156d01
BLAKE2b-256 checksum
How to use checksums
158addd0f774c5c8bf42dac97568827dbd9ab3eec910a9a0a0a50f2eef16e2ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / toolcallbench-1.0.1-py3-none-any.whl

Download URL toolcallbench-1.0.1-py3-none-any.whl
Size 58.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06ef20776c90bd3d80c1e31cb28f2124f946d100f6be65bf5c669ebf2d2c061b
BLAKE2b-256 checksum
How to use checksums
a954844105899e114e4e3188b086a1923a698387d63e0f280e35c41cdd337f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Security for toolcallbench 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page