Skip to content

Oaklight/ToolRegistry

Repository files navigation

ToolRegistry

PyPI version GitHub release CI License: MIT Ask DeepWiki

English Version | 中文版

A protocol-agnostic tool management library for function-calling LLMs.

Documentation · arXiv Paper

Ecosystem

Package Description PyPI Docs
toolregistry Core library — tool registration, schema generation, execution PyPI Docs
toolregistry-server Server adapters — expose tools via OpenAPI & MCP PyPI Docs
toolregistry-hub Ready-to-use tools — calculator, web search, file ops, etc. PyPI Docs
toolregistry (core)
       ↓
toolregistry-server (tool server)
       ↓
toolregistry-hub (tool collection + server config)

Features

  • Protocol-agnostic — register tools from native Python functions/classes, MCP servers, OpenAPI specs, or LangChain tools through a unified interface
  • Multi-provider schemas — generate tool schemas for OpenAI, Anthropic, and Gemini via llm-rosetta
  • Concurrent execution — thread and process pool backends with per-tool timeout and concurrency control
  • Permission system — tag-based policies (READ_ONLY, DESTRUCTIVE, NETWORK, etc.) with allow/deny/ask rules
  • Tool metadata & tags — classify tools with ToolTag, ToolMetadata, namespace support, and source tracking
  • Admin panel — built-in Web UI for monitoring tools, permissions, and runtime config (i18n: EN/ZH)
  • Think-augmented calling — inject chain-of-thought reasoning into tool calls (arXiv:2601.18282)
  • Declarative config — load tool sources from JSONC/YAML config files
  • Zero-dependency core — HTTP client, YAML parser, JSON Schema resolver all vendored; only pydantic and llm-rosetta as runtime deps

Quick Start

from toolregistry import ToolRegistry

registry = ToolRegistry()

@registry.register
def add(a: float, b: float) -> float:
    """Add two numbers together."""
    return a + b

# Use with any LLM provider
schemas = registry.get_schemas(api_format="openai-chat")  # or "anthropic", "gemini"
result = registry["add"](1, 2)  # 3.0

See the Usage Guide for MCP, OpenAPI, LangChain integrations and more.

Installation

Requires Python >= 3.10.

pip install toolregistry                   # core
pip install toolregistry[mcp]              # + MCP support
pip install toolregistry[langchain]        # + LangChain support
pip install toolregistry-hub               # ready-to-use tools (separate package)

Citation

@software{toolregistry2025,
  title={ToolRegistry: A Protocol-Agnostic Tool Management Library for OpenAI-Compatible LLM Applications},
  author={Peng Ding},
  year={2025},
  url={https://github.com/Oaklight/ToolRegistry},
  note={A Python library for unified tool registration, execution, and management across multiple protocols in OpenAI-compatible LLM applications}
}

@article{ding2025toolregistry,
  title={ToolRegistry: A Protocol-Agnostic Tool Management Library for Function-Calling LLMs},
  author={Ding, Peng},
  journal={arXiv preprint arXiv:2507.10593},
  year={2025}
}

License

MIT — see LICENSE for details.

About

ToolRegistry: A Protocol-Agnostic Tool Management Library for Function-Calling LLMs (OpenAI, Anthropic, Gemini, LangChain, MCP)

Topics

Resources

License

Stars

Watchers

Forks

Contributors