Spaces:
Runtime error
title: AgentToolStore Registry
emoji: π οΈ
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
π οΈ 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:
| Type | toolset.py |
doc.md |
Example |
|---|---|---|---|
| Code toolset | Real @tool functions |
Full docs | xlsx-toolkit, file-verify |
| Doc-only toolset | Minimal module, no @tool |
Full skill doc | stuck-toolkit |
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
| Toolset | Functions | Deps |
|---|---|---|
| xlsx-toolkit | xlsx_read, xlsx_sheets, xlsx_to_csv, xlsx_create |
openpyxl |
| pdf-toolkit | pdf_extract, pdf_meta, pdf_merge, pdf_form_fields |
pdfplumber, PyPDF2 |
| docx-toolkit | docx_read, docx_info, docx_extract_tables, docx_create |
python-docx |
| pptx-toolkit | pptx_read, pptx_info, pptx_create |
python-pptx |
π§ Utility
| Toolset | Functions | Deps |
|---|---|---|
| text-transform | text_diff, regex_extract, markdown_table, text_stats |
stdlib |
| file-verify | check_json, check_yaml, check_csv, file_hash, detect_encoding |
chardet (opt) |
| calc-toolkit | eval_expression, convert_unit, basic_stats |
stdlib |
| text-gen | lorem_words, lorem_paragraphs, generate_sentences, generate_data |
stdlib |
| batch-ops | batch_rename, batch_find_replace, batch_stats, batch_copy |
stdlib |
π§ Guidance & Diagnostics
| Toolset | Functions | Deps |
|---|---|---|
| debug-toolkit | analyze_error, extract_log_patterns |
stdlib |
| webapp-testing | check_url, extract_urls |
stdlib |
| doc-coauthoring | document_outline, markdown_template |
stdlib |
| internal-comms | comms_template, format_bullets |
stdlib |
| stuck-toolkit | doc-only β no code bindings | β |
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-toolkit
Write 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.json
Change 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