# OneTool

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

OneTool reduces tool-definition context overhead by exposing tools as Python APIs.

## Quick Start

```bash
uv tool install 'onetool-mcp[all]'
onetool init -c ~/.onetool
onetool --config ~/.onetool/onetool.yaml --secrets ~/.onetool/secrets.yaml
```

## Invocation

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

## Packs

Source of truth: `src/ot/config/global_templates/prompts.yaml` (`prompts.packs`).

<!-- BEGIN GENERATED:PACK_SUMMARY -->
| Pack | Extra | Description |
|---|---|---|
| `ot` | `core` | ** Discover tools, packs. Get the help you need to call them correctly. The BEST PLACE to start. ** |
| `aws` | `[dev]` | Manage AWS resources — dynamically enable any of their 50+ dedicated MCP tools |
| `brave` | `[util]` | Search the web, news, and images — fast, private, with batch support |
| `chrome_util` | `[dev]` | Annotate and highlight page elements via Chrome DevTools |
| `context7` | `[dev]` | Pull up-to-date docs for any library — React, FastAPI, etc. |
| `convert` | `[util]` | Turn PDF, Word, Excel, and PowerPoint files into clean markdown |
| `db` | `[dev]` | Explore and query databases — list tables, inspect schema, run SQL |
| `diagram` | `[dev]` | Create diagrams — Mermaid, Graphviz, PlantUML, D2, Excalidraw [experimental] |
| `excel` | `[util]` | Work with Excel files — read, write, search, pivot, and set formulas |
| `file` | `[util]` | Read, write, edit, copy, move, and delete files; browse directory trees |
| `ground` | `[util]` | Research any topic with Google AI-grounded search and source citations |
| `mem` | `[util]` | Persistent topic-based memory — write, search, grep, slice, and organise |
| `ot_context` | `core` | Smart context store — write, search, grep, and navigate large tool outputs without filling context window |
| `ot_forge` | `core` | Scaffold and generate code from templates |
| `ot_image` | `core` | Vision analysis via dedicated model — load images, ask questions, get summaries; zero tokens to host session |
| `ot_llm` | `core` | Run any text through an LLM — summarise, extract, reformat, translate |
| `ot_secrets` | `core` | Store and retrieve API keys and secrets for OneTool services |
| `ot_timer` | `core` | Time tool calls and report performance |
| `package` | `[dev]` | Look up PyPI and npm packages, audit deps, find the latest AI models |
| `play_util` | `[dev]` | Annotate and highlight page elements via Playwright |
| `ripgrep` | `[dev]` | Search code and text at speed — regex, globs, file types, context lines |
| `tavily` | `[util]` | Search the web with Tavily AI — clean results, answer summaries, URL extraction |
| `webfetch` | `[dev]` | Fetch any URL and extract clean, readable content |
| `whiteboard` | `[dev]` | Live whiteboard using Excalidraw — you can **draw** diagrams with a powerful DSL, assisted by AI |
| `worktree` | `[dev]` | Manage git worktrees — create, switch, merge, diff, and clean up [experimental] |
<!-- END GENERATED:PACK_SUMMARY -->

## Documentation

- Learn: `docs/learn/`
- Extending: `docs/learn/extending/`
- Tool Reference: `docs/reference/tools/`
- CLI Reference: `docs/reference/cli/`
- Server Reference: `docs/reference/servers/`

## Adding Tools

Create a new extension module (example path):

```python
# src/mytool.py
from ot.decorators import tool

pack = "mytool"

@tool
def hello(*, name: str) -> str:
    """Return a greeting."""
    return f"Hello, {name}!"
```

Then include it in your config `tools_dir` glob.

## Repository

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

## License

GPLv3
