# OneTool

> *One Tool to rule them all, One Tool to find them, One Tool to bring them all and in the development bind them.*

> MCP server exposing a single `run` tool for LLM code execution.

OneTool reduces MCP token usage from ~46K to ~2K (96% reduction, see docs/learn/comparison.md) by presenting tools as code APIs instead of individual tool definitions.

## Quick Start

```bash
uv sync && uv run onetool
```

## Invocation

```python
__ot brave.search(query="AI news")
```

## Tools

- brave: search, news, local, image, video, search_batch, summarize
- web: fetch, fetch_batch
- ground: search, search_batch, dev, docs, reddit
- context7: search, doc
- code: search, search_batch, research, autodoc, status
- ripgrep: search, count, files, types
- llm: transform
- db: tables, schema, query
- excel: create, read, write, formula, info, search, tables (+17 more)
- convert: auto, pdf, word, powerpoint, excel
- package: npm, pypi, audit, version
- file: read, write, edit, info, list, tree, search, copy, move, delete
- diagram: generate_source, render_diagram, list_providers (+8 more)
- firecrawl: scrape, scrape_batch, map_urls, search, crawl, crawl_status, extract, deep_research
- scaffold: create, list_extensions, templates
- ot: tools, packs, aliases, snippets, config, health, help, stats, notify, reload

## Documentation

- Learn: docs/learn/
- Tools Reference: docs/reference/tools/
- CLI Reference: docs/reference/cli/
- Extending: docs/extending/

## Adding Tools

Create `src/ot_tools/mytool.py`:

```python
pack = "mytool"

def my_function(*, arg: str) -> str:
    """Description shown to LLM."""
    return f"Result: {arg}"
```

## Repository

https://github.com/beycom/onetool-mcp

## License

GPLv3
