Mrw33554432/AgentToolStore
<p align="center"> <img src="https://img.shields.io/badge/toolsets-14-blue" alt="14 toolsets"> <img src="https://img.shields.io/badge/functions-40%2B-green" alt="40+ functions"> <img src="https://img.shields.io/badge/license-MIT-purple" alt="MIT"> <img src="https://img.shields.io/badge/registry-live-brightgreen" alt="live"> </p>
π οΈ AgentToolStore
The shared index that turns a scattered collection of tools into a unified, searchable, versioned ecosystem. Same role PyPI plays for Python packages, npm for JavaScript β but for agent-callable toolsets.
Live registry: mrw33554432-agenttoolstore.hf.space β browse, search, and publish toolsets.
What's a Toolset?
A toolset is a directory containing:
my-toolkit/
βββ toolset.py β @tool functions (code bindings)
βββ doc.md β guidance, process, best practices (the skill)Two kinds exist:
Every function decorated with @tool becomes a callable binding that agents discover and execute. The doc.md serves as both human documentation and agent guidance β the same content a skill would provide, now paired with code.
Toolsets Catalog
π Documents
π§ Utility
π§ Guidance & Diagnostics
Quick Start
Use toolsets (as an agent)
toolstore update # pull registry index
toolstore use text-transform \
--function text_stats \
text="The quick brown fox..."Publish a toolset
toolstore login --username <user> --password <pass>
toolstore toolset publish ./toolsets/my-toolkitWrite a toolset
# toolsets/my-toolkit/toolset.py
from toolstore.toolset import tool
@tool
def my_function(*, input: str, count: int = 1) -> dict:
"""Do something useful.
Args:
input: The input text.
count: How many times.
"""
return {"result": input * count}The @tool decorator auto-generates the OpenAI function-calling schema from type hints and docstrings β no manual JSON needed.
Architecture
ββββββββββββββββ publish ββββββββββββββββββββ
β toolset.py β ββββββββββββββββββ ToolStore β
β + doc.md β β Registry (HF) β
ββββββββββββββββ ββββββββββ¬ββββββββββ
β
ββββββββββββ toolstore update β
β Agent β ββββββββββββββββββββββββββ
β β
β tool_ β execute ββββββββββββββββ
β store() β βββββββββββββββββββββββββ temp dir β
β β β + pip deps β
ββββββββββββ β + import β
β + call fn β
ββββββββββββββββToolsets execute inβprocess β no Docker, no sandbox. Code is fetched from the registry on demand, written to a temp directory, dependencies installed (explicitly, not automatically), then imported and called.
Safety model: same as skills. All code is visible in the registry. Dependencies are never autoβinstalled β the agent sees what's needed and decides whether to install.
Development
Setup
git clone https://github.com/Mrw33554432/AgentToolStore.git
cd AgentToolStore
pip install -e client/Run tests
# Test a toolset locally
python3 -c "
import importlib.util
spec = importlib.util.spec_from_file_location('ts', 'toolsets/text-transform/toolset.py')
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
print(mod.text_stats(text='Hello world.'))
"
# Test via CLI
toolstore use text-transform --function text_stats text="Hello world."Registry
The default registry is the public HF Space:
https://mrw33554432-agenttoolstore.hf.space/index.jsonChange it via settings or TOOLSTORE_REGISTRY_URL env var.
Contributing
- Write a toolset:
toolsets/<name>/toolset.py+doc.md - Use
@tooldecorator on every callable function - Never add placeholder functions β code or nothing
- Test via
toolstore usebefore submitting - PR against
main
License
MIT β see LICENSE
