Repository navigation
Home
Brian Weisberg edited this page Feb 17, 2026
·
4 revisions
The agent-native CLI framework for Python.
Write one function, get a CLI, an MCP tool, and a self-documenting schema.
- Architecture — Three-layer design, dual pipeline, output system
- Roadmap — Phase 1/2/3 implementation plan and progress
- Error Handling — ToolError hierarchy, exit codes, structured errors
- Output System — Modes, envelope format, global flags
- MCP Integration — Serving Tooli apps as MCP tool servers
- Contributing — Development setup, testing, style guide
Current version: 5.0.0 — The Universal Agent Tool Interface
| Phase | Description | Status |
|---|---|---|
| Phase 1 | Core Foundation (MVP) | Complete |
| Phase 2 | Agent Differentiation | Complete |
| Phase 3 | Advanced Features | Complete |
| v4.0 | Agent Skill Platform | Complete |
| v4.1 | Caller-Aware Agent Runtime | Complete |
| v5.0 | Universal Agent Tool Interface | Complete |
See the Roadmap for detailed progress.
Tooli extends Typer to produce CLI tools that are simultaneously human-friendly and machine-consumable by AI agents. The core insight: no existing project auto-generates AI tool schemas from typed CLI command definitions.
One decorated Python function produces:
- A Unix CLI command for humans and scripts
- A JSON Schema for agent discoverability
- An MCP tool definition for protocol-level integration
- SKILL.md documentation always in sync with code
- An optional HTTP API with OpenAPI spec
Tooli is a library, not a framework. Typer is an implementation detail — the public API is Tooli-native. Users import Tooli, Argument, Option, and Annotated from the tooli package.
from tooli import Tooli, Annotated, Option, Argument
app = Tooli(name="my-tool", version="1.0.0")
@app.command()
def greet(name: Annotated[str, Argument(help="Who to greet")]) -> dict:
return {"message": f"Hello {name}"}