Skip to main content

route66 Python SDK

Project description

route66

Intelligent Tool Router for LLM Agents — a catalog-in library that, given a query and a large tool catalog, returns only the relevant tools, deduplicated, in an ordered execution plan, with policy-aware defaults.

Built against the router-testkit hackathon grading contract (single-tool routing, ordered multi-tool plans, near-duplicate resolution, capability-based fallback widening, deprecation policy, out-of-scope refusal, and clarify-on-vague-destructive).

Layout

route66/
├── tool_router/          # The POC library (facade + retrievers + dedup)
├── testkit_adapter.py    # Bridges tool_router to the harness contract
├── demo.py               # Toy 60-tool catalog demo of the POC
├── metrics.py            # Recall/precision/token-savings eval on the toy set
├── router-testkit/       # Hackathon input kit — DO NOT MODIFY
│   ├── catalog/          #   64 mock tools · 13 clusters · dup/version metadata
│   ├── test_cases/       #   29 scored cases across 11 categories
│   ├── registry_guardrail/#  Intake validator fixtures
│   └── harness/          #   run_benchmark.py (scorer) + baseline_router.py
├── bench/                # Additional benchmarks (baseline, mutations, guardrail)
├── specs/                # Spec-driven-development plan (SPEC-001..011)
├── docs/                 # PRDs and the hackathon problem statement
└── tests/                # Unit tests (populated as specs are executed)

Baseline

Router Cases passed Token savings
Testkit reference baseline_router 7 / 29 (24%) 94%
tool_router (this repo, current) 5 / 29 (17%) 90%

The gap is deliberate and mapped in specs/. See specs/README.md for the priority-ordered plan (P0 → P1 → P2) with acceptance criteria pinned to specific TC-* cases. Target after P0: ≥ 20/29. After P1: ≥ 24/29.

Quick start

# Install (uv-managed)
uv sync

# Score the reference baseline
cd router-testkit/harness
python run_benchmark.py --verbose

# Score this project's router
python run_benchmark.py --router testkit_adapter:MyRouter --verbose

The harness has no third-party dependencies; standard-library only. The router itself can run on HashingEmbedder (zero deps) or opt-in SentenceTransformerEmbedder via uv sync --extra semantic.

Where to read next

  1. specs/README.md — the executable plan. Every spec is pickable independently and has acceptance criteria tied to testkit case IDs.
  2. router-testkit/README.md — the grading contract (authoritative).
  3. tool_router/README.md (below tool_router/) — the current POC library docs. Will be reframed in SPEC-011.
  4. docs/hackathon-definition.md — the problem statement.
  5. docs/PRD.md — the initial PRD.

Toolchain

  • Python ≥ 3.14 (pinned in .python-version, managed by uv)
  • Ruff for lint + format
  • Pytest for unit tests (see pyproject.toml's [dev] extra)

Dev

uv run ruff check .
uv run ruff format .
uv run pytest

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

route66-0.1.3.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

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

route66-0.1.3-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file route66-0.1.3.tar.gz.

File metadata

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

File hashes

Hashes for route66-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6d92fe5b86b838d5b11f0d276accf0c906bd52aab7a7c7536801a3c279a4f567
MD5 343069fc4109ea5c99cbae11f0886b95
BLAKE2b-256 8bea6384ef71e04854729d965b7999fde3a59f7d776af5a1094c4196403c8e41

See more details on using hashes here.

File details

Details for the file route66-0.1.3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for route66-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c84561f534ea2523b97be3ef60974891b54c976bac4506f08fb18b17cf58cbe9
MD5 2fb08e528e4b4fba3c6bec89d9251c43
BLAKE2b-256 aab6cf01d86b0a7a7c71e7b04fccbd7d557d2bb737ff43e283b4ab13698557f0

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