agent-tool-store 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,537 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-tool-store
3
+ Version: 2.0.0
4
+ Summary: Universal tool platform for AI agents — 14+ toolsets, MCP, YAML workflows, provider adapters (OpenAI/Anthropic/LangChain)
5
+ Author: ToolStore Team
6
+ License-Expression: MIT
7
+ Keywords: agent,ai,anthropic,function-calling,langchain,mcp,openai,tool,tool-use,workflow
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
+ Requires-Python: >=3.9
18
+ Requires-Dist: httpx>=0.25.0
19
+ Requires-Dist: pydantic>=2.5.0
20
+ Requires-Dist: pyyaml>=6.0
21
+ Requires-Dist: rich>=13.6.0
22
+ Requires-Dist: typer[all]>=0.9.0
23
+ Description-Content-Type: text/markdown
24
+
25
+ ---
26
+ title: AgentToolStore Registry
27
+ emoji: 🛠️
28
+ colorFrom: blue
29
+ colorTo: purple
30
+ sdk: docker
31
+ app_port: 7860
32
+ pinned: false
33
+ ---
34
+
35
+ <p align="center">
36
+ <img src="https://img.shields.io/badge/toolsets-14-blue" alt="14 toolsets">
37
+ <img src="https://img.shields.io/badge/functions-46-brightgreen" alt="46 functions">
38
+ <img src="https://img.shields.io/badge/license-MIT-purple" alt="MIT">
39
+ <img src="https://img.shields.io/badge/package-toolstore-orange" alt="toolstore">
40
+ <img src="https://img.shields.io/badge/registry-live-brightgreen" alt="live">
41
+ </p>
42
+
43
+ # AgentToolStore
44
+
45
+ **A package index for agent tools.** PyPI for Python packages, npm for
46
+ JavaScript — ToolStore does the same for agent-callable toolsets. Agents
47
+ discover tools through a single `tool_store` function instead of wiring up
48
+ dozens of tools by hand.
49
+
50
+ → **[Client SDK docs](client/README.md)** — installing, integrating into agents, CLI, MCP bridge, skills
51
+ → **[Registry server docs](server/README.md)** — API endpoints, running locally, deploying on HF Spaces
52
+
53
+ > **Live registry:** [mrw33554432-agenttoolstore.hf.space](https://mrw33554432-agenttoolstore.hf.space)
54
+
55
+ ---
56
+
57
+ ## How it works
58
+
59
+ ```
60
+ toolstore update ← downloads index.json from registry
61
+
62
+
63
+ ┌─────────────────────────┐
64
+ │ Local index cache │ ← search and info read from here (no network)
65
+ └─────────────────────────┘
66
+
67
+
68
+ ┌─────────────────────────┐
69
+ │ tool_store(execute) │ ← fetches code from registry on demand
70
+ │ → temp dir → import │ runs in-process, no Docker
71
+ │ → call function → JSON │
72
+ └─────────────────────────┘
73
+ ```
74
+
75
+ 1. **`toolstore update`** pulls the registry index and caches it locally
76
+ 2. **`search` / `info`** read from the local cache — instant, no network
77
+ 3. **`execute`** fetches code from the registry, installs deps explicitly,
78
+ runs in-process, returns JSON
79
+
80
+ ---
81
+
82
+ ## Installation
83
+
84
+ ```bash
85
+ pip install toolstore
86
+ ```
87
+
88
+ Or from source:
89
+
90
+ ```bash
91
+ git clone https://github.com/Mrw33554432/AgentToolStore.git
92
+ cd AgentToolStore/client
93
+ pip install -e .
94
+ ```
95
+
96
+ Requirements: Python ≥3.10, `httpx`, `pydantic`, `rich`, `typer`.
97
+
98
+ ---
99
+
100
+ ## Adding to Your Agent
101
+
102
+ Add one tool definition and one handler. The agent discovers every published
103
+ toolset through a single `tool_store` call.
104
+
105
+ ### How it fits into an agent loop
106
+
107
+ ```
108
+ System prompt Tool call loop
109
+ ───────────────────────────────── ─────────────────────────────────
110
+ "Tool store includes but not 1. Agent calls tool_store(search)
111
+ limited to: Echo Service, → discovers xlsx-toolkit
112
+ calculator, weather, ..."
113
+ 2. Agent calls tool_store(info)
114
+ → gets xlsx_read params + docs
115
+
116
+ 3. Agent calls tool_store(execute)
117
+ → runs xlsx_read, gets result
118
+
119
+ 4. Agent calls tool_store(close)
120
+ → frees context space
121
+ ```
122
+
123
+ ### 1. Tool definition
124
+
125
+ Register this in your agent's function-calling tool list:
126
+
127
+ ```python
128
+ TOOL_STORE_SCHEMA = {
129
+ "type": "function",
130
+ "function": {
131
+ "name": "tool_store",
132
+ "description": (
133
+ "A universal tool manager that lets you search, inspect, "
134
+ "and execute thousands of tools and local utilities."
135
+ ),
136
+ "parameters": {
137
+ "type": "object",
138
+ "properties": {
139
+ "action": {
140
+ "type": "string",
141
+ "enum": ["search", "execute", "info", "close"],
142
+ "description": (
143
+ "The action to perform: 'search' finds tools "
144
+ "matching a query; 'execute' runs a tool; "
145
+ "'info' adds a tool to your context so you can "
146
+ "see its parameters; 'close' removes it."
147
+ ),
148
+ },
149
+ "query": {
150
+ "type": "string",
151
+ "description": "Search query string (for action='search')",
152
+ },
153
+ "tool_name": {
154
+ "type": "string",
155
+ "description": (
156
+ "Name of the tool to inspect, execute, or close "
157
+ "(required for action='info', 'execute', or 'close')"
158
+ ),
159
+ },
160
+ "arguments": {
161
+ "type": "object",
162
+ "description": (
163
+ "Arguments for the tool execution "
164
+ "(required for action='execute')"
165
+ ),
166
+ },
167
+ },
168
+ "required": ["action"],
169
+ },
170
+ },
171
+ }
172
+ ```
173
+
174
+ ### 2. Handler
175
+
176
+ Wire the native function into your tool-call router. The native function
177
+ handles `search`, `info`, and `execute` — add a small shim for `close`:
178
+
179
+ ```python
180
+ from toolstore.native_tool import tool_store_tool
181
+
182
+ def handle_tool_store(action: str, **kwargs) -> str:
183
+ if action == "close":
184
+ return f"Closed tool '{kwargs.get('tool_name', '')}'."
185
+ return tool_store_tool(action=action, **kwargs)
186
+ ```
187
+
188
+ ### 3. Secondary tools prompt
189
+
190
+ Most tools are `exposure: secondary` — too many to list in every system
191
+ message. Inject a compact listing into the system prompt instead. Call
192
+ `get_secondary_tool_names()` then `info` with `format="secondary"`:
193
+
194
+ ```python
195
+ from toolstore.native_tool import get_secondary_tool_names, tool_store_tool
196
+
197
+ names = get_secondary_tool_names()
198
+ listing = tool_store_tool(action="info", tool_names=names, format="secondary")
199
+ system_prompt += f"\n\n{listing}"
200
+ ```
201
+
202
+ Produces:
203
+
204
+ ```
205
+ Tool store includes but is not limited to the following tools:
206
+ - Echo Service
207
+ - calculator
208
+ - weather
209
+ - skill:algorithmic-art
210
+ ...
211
+ ```
212
+
213
+ The agent sees names; when it needs a tool it calls `info` again (without
214
+ `format="secondary"`) for the full schema, then `execute`.
215
+
216
+ ### 4. Agent conversation example
217
+
218
+ ```
219
+ Agent: tool_store(action="search", query="read Excel files")
220
+ → Found: xlsx-toolkit — Read, create, and manipulate Excel files
221
+
222
+ Agent: tool_store(action="info", tool_name="xlsx-toolkit")
223
+ → Returns bindings for xlsx_read, xlsx_sheets, xlsx_to_csv, xlsx_create
224
+ with parameter types and docstrings for each
225
+
226
+ Agent: tool_store(action="execute", tool_name="xlsx-toolkit",
227
+ arguments={"function": "xlsx_read",
228
+ "filepath": "/workspace/report.xlsx"})
229
+ → {"sheets": ["Sheet1"], "data": {"Sheet1": [[...], ...]}}
230
+
231
+ Agent: tool_store(action="close", tool_name="xlsx-toolkit")
232
+ → Closed tool 'xlsx-toolkit'.
233
+ ```
234
+
235
+ ### 5. Execution model
236
+
237
+ | Property | Behaviour |
238
+ |----------|-----------|
239
+ | **Runtime** | In-process — no Docker, no sandbox |
240
+ | **Code origin** | Fetched from registry, cached after first download |
241
+ | **Dependencies** | Never auto-installed; agent gets a clear error listing what's needed |
242
+ | **Isolation** | Each toolset runs in its own temp directory |
243
+ | **Safety** | All code is visible in the registry; deps are explicit; agent decides what to install |
244
+
245
+ ### 6. Local execution (no registry)
246
+
247
+ Skip the registry entirely and call toolsets from a local directory:
248
+
249
+ ```python
250
+ from toolstore.exec_tools import _execute_toolset_local
251
+
252
+ result = _execute_toolset_local(
253
+ toolset_path="./toolsets/xlsx-toolkit",
254
+ function_name="xlsx_read",
255
+ filepath="/workspace/data.xlsx",
256
+ )
257
+ ```
258
+
259
+ ---
260
+
261
+ ## CLI Usage
262
+
263
+ ```bash
264
+ # Pull the latest index from the registry
265
+ toolstore update
266
+
267
+ # Search for tools
268
+ toolstore search "spreadsheet"
269
+
270
+ # Inspect a toolset
271
+ toolstore info xlsx-toolkit
272
+
273
+ # Execute a function
274
+ toolstore use text-transform --function text_stats text="Hello world."
275
+
276
+ # Publish your own toolset
277
+ toolstore login --username <user> --password <pass>
278
+ toolstore toolset publish ./toolsets/my-toolkit
279
+
280
+ # Delete a toolset
281
+ toolstore delete my-toolkit
282
+
283
+ # Run ToolStore as an MCP server (stdio or SSE)
284
+ toolstore serve
285
+
286
+ # Export the tool_store schema for use with OpenAI / vLLM
287
+ toolstore export
288
+
289
+ # Manage skills
290
+ toolstore skill discover /path/to/skills
291
+ toolstore skill list-dirs
292
+ ```
293
+
294
+ Full command reference:
295
+
296
+ | Command | Description |
297
+ |---------|-------------|
298
+ | `update` | Pull the latest registry index and scan local MCP servers |
299
+ | `search` | Search for tools by name, description, or tags |
300
+ | `use` | Execute a tool function immediately |
301
+ | `info` | Show detailed schema and documentation for a tool |
302
+ | `login` | Authenticate with the registry to publish |
303
+ | `publish` | Publish a new tool or update an existing one |
304
+ | `delete` | Remove a tool from the registry |
305
+ | `export` | Export the meta-tool schema (OpenAI / vLLM formats) |
306
+ | `serve` | Run ToolStore as an MCP server (stdio or SSE) |
307
+ | `skill` | Manage Agent Skills (scan, discover, publish, …) |
308
+ | `toolset` | Manage toolsets (scan, list, publish, …) |
309
+ | `mcp-server` | Register and manage MCP servers |
310
+ | `docker` | Configure Docker execution permissions |
311
+
312
+ ---
313
+
314
+ ## Writing a Toolset
315
+
316
+ A toolset is a directory with two files:
317
+
318
+ ```
319
+ my-toolkit/
320
+ ├── toolset.py # @tool functions (code bindings)
321
+ └── doc.md # human + agent guidance
322
+ ```
323
+
324
+ ### toolset.py
325
+
326
+ Every function decorated with `@tool` becomes a callable binding. The decorator
327
+ auto-generates an OpenAI function-calling schema from type hints and docstrings:
328
+
329
+ ```python
330
+ from toolstore.toolset import tool
331
+
332
+ @tool
333
+ def my_function(*, input: str, count: int = 1) -> dict:
334
+ """Do something useful.
335
+
336
+ Args:
337
+ input: The input text.
338
+ count: How many times to repeat.
339
+ """
340
+ return {"result": input * count}
341
+ ```
342
+
343
+ Rules:
344
+ - Use **keyword-only arguments** (`*,`)
345
+ - Annotate every parameter with a **type hint**
346
+ - Write a **Google-style docstring** with an `Args:` section
347
+ - Return a **JSON-serializable dict**
348
+
349
+ ### Two kinds of toolsets
350
+
351
+ | Type | `toolset.py` | `doc.md` | Example |
352
+ |------|-------------|----------|---------|
353
+ | **Code** | Real `@tool` functions | Full docs | `xlsx-toolkit`, `file-verify` |
354
+ | **Doc-only** | Minimal empty module | Full guidance | `stuck-toolkit` |
355
+
356
+ Doc-only toolsets are valid — they carry skill content without code bindings.
357
+ No placeholder functions allowed. Code or nothing.
358
+
359
+ ---
360
+
361
+ ## Registry API
362
+
363
+ The registry is a FastAPI server backed by SQLite, hosted on Hugging Face
364
+ Spaces. All endpoints are public except auth and publish.
365
+
366
+ | Endpoint | Method | Auth | Description |
367
+ |----------|--------|------|-------------|
368
+ | `/` | GET | No | Browse page (HTML) — dark-themed cards showing all published toolsets |
369
+ | `/api` | GET | No | API root |
370
+ | `/health` | GET | No | Health check — database connectivity status |
371
+ | `/index.json` | GET | No | Full index — every toolset with metadata, bindings, and full source code |
372
+ | `/auth/register` | POST | No | Register a new user account |
373
+ | `/auth/token` | POST | No | Login — returns JWT access token (OAuth2 password flow) |
374
+ | `/publish` | POST | JWT | Publish a new toolset or update an existing one |
375
+ | `/tools/{name}` | DELETE | JWT | Delete a toolset |
376
+
377
+ ### Running your own registry
378
+
379
+ ```bash
380
+ cd server
381
+ pip install -r requirements.txt
382
+ python init_db.py # create SQLite database
383
+ uvicorn app.main:app --port 8000
384
+ ```
385
+
386
+ Set `TOOLSTORE_REGISTRY_URL=http://localhost:8000/index.json` to point the
387
+ CLI at a local registry. The default is:
388
+
389
+ https://mrw33554432-agenttoolstore.hf.space/index.json
390
+
391
+ ---
392
+
393
+ ## Toolsets Catalog
394
+
395
+ All 14 toolsets published on the live registry.
396
+
397
+ ### Document processing
398
+
399
+ | Toolset | Functions | Dependencies |
400
+ |---------|-----------|-------------|
401
+ | **xlsx-toolkit** | `xlsx_read` · `xlsx_sheets` · `xlsx_to_csv` · `xlsx_create` | `openpyxl` |
402
+ | **pdf-toolkit** | `pdf_extract` · `pdf_meta` · `pdf_merge` · `pdf_form_fields` | `pdfplumber`, `PyPDF2` |
403
+ | **docx-toolkit** | `docx_read` · `docx_info` · `docx_extract_tables` · `docx_create` | `python-docx` |
404
+ | **pptx-toolkit** | `pptx_read` · `pptx_info` · `pptx_create` | `python-pptx` |
405
+
406
+ ### Utility
407
+
408
+ | Toolset | Functions | Dependencies |
409
+ |---------|-----------|-------------|
410
+ | **text-transform** | `text_diff` · `regex_extract` · `markdown_table` · `text_stats` | stdlib |
411
+ | **file-verify** | `check_json` · `check_yaml` · `check_csv` · `file_hash` · `detect_encoding` | `PyYAML`, `chardet` (optional) |
412
+ | **calc-toolkit** | `eval_expression` · `convert_unit` · `basic_stats` | stdlib |
413
+ | **text-gen** | `lorem_words` · `lorem_paragraphs` · `generate_sentences` · `generate_data` | stdlib |
414
+ | **batch-ops** | `batch_rename` · `batch_find_replace` · `batch_stats` · `batch_copy` | stdlib |
415
+
416
+ ### Guidance & diagnostics
417
+
418
+ | Toolset | Functions | Dependencies |
419
+ |---------|-----------|-------------|
420
+ | **debug-toolkit** | `analyze_error` · `extract_log_patterns` | stdlib |
421
+ | **webapp-testing-toolkit** | `check_url` · `extract_urls` | stdlib |
422
+ | **doc-coauthoring-toolkit** | `document_outline` · `markdown_template` | stdlib |
423
+ | **internal-comms-toolkit** | `comms_template` · `format_bullets` | stdlib |
424
+ | **stuck-toolkit** | doc-only — no code bindings | — |
425
+
426
+ ---
427
+
428
+ ## Project Structure
429
+
430
+ ```
431
+ AgentToolStore/
432
+ ├── client/ # Python SDK (pip install toolstore)
433
+ │ ├── pyproject.toml
434
+ │ └── src/toolstore/
435
+ │ ├── cli.py # Typer CLI (update, search, use, publish, …)
436
+ │ ├── native_tool.py # tool_store_tool() — the agent-facing entry point
437
+ │ ├── toolset.py # @tool decorator + schema generation
438
+ │ ├── toolset_manager.py # AST-based toolset discovery & publishing
439
+ │ ├── exec_tools.py # Local + remote toolset execution
440
+ │ ├── config_manager.py # Settings, registry URL, env-var overrides
441
+ │ ├── mcp_client.py # MCP client (stdio / SSE transport)
442
+ │ ├── mcp_server.py # MCP server — expose ToolStore via MCP
443
+ │ ├── index_manager.py # Local index cache
444
+ │ ├── transport.py # stdio / SSE / streamable-http transports
445
+ │ ├── skill_manager.py # Agent Skills loader + discovery
446
+ │ ├── skill_discovery.py # Skill directory scanner
447
+ │ ├── schema_converter.py # Convert ToolStore schemas to OpenAI format
448
+ │ ├── management/ # Management server + SPA (custom HTTP server)
449
+ │ │ ├── server.py
450
+ │ │ ├── api_helpers.py
451
+ │ │ ├── api_mcp.py
452
+ │ │ ├── api_skills.py
453
+ │ │ └── static/
454
+ │ │ └── app.js
455
+ │ └── docker_pool.py # Docker container pool (optional)
456
+
457
+ ├── server/ # Registry server (FastAPI + SQLite)
458
+ │ ├── Dockerfile # HF Spaces deployment
459
+ │ ├── requirements.txt
460
+ │ ├── init_db.py
461
+ │ └── app/
462
+ │ ├── main.py # FastAPI app — browse page, API, auth
463
+ │ ├── models.py # Pydantic models (ToolSet, Binding, …)
464
+ │ ├── database.py # SQLite with HF Storage Bucket
465
+ │ ├── db.py # Connection helper
466
+ │ └── auth.py # JWT auth + user management
467
+
468
+ ├── toolsets/ # All 14 published toolsets
469
+ │ ├── xlsx-toolkit/
470
+ │ ├── pdf-toolkit/
471
+ │ ├── docx-toolkit/
472
+ │ ├── pptx-toolkit/
473
+ │ ├── text-transform/
474
+ │ ├── file-verify/
475
+ │ ├── calc-toolkit/
476
+ │ ├── text-gen/
477
+ │ ├── batch-ops/
478
+ │ ├── debug-toolkit/
479
+ │ ├── webapp-testing-toolkit/
480
+ │ ├── doc-coauthoring-toolkit/
481
+ │ ├── internal-comms-toolkit/
482
+ │ └── stuck-toolkit/
483
+
484
+ ├── Dockerfile # Root Dockerfile (HF Spaces entry point)
485
+ ├── _publish_toolsets.py # Utility: batch-publish all toolsets
486
+ ├── LICENSE # MIT
487
+ └── README.md
488
+ ```
489
+
490
+ ---
491
+
492
+ ## Development
493
+
494
+ ```bash
495
+ git clone https://github.com/Mrw33554432/AgentToolStore.git
496
+ cd AgentToolStore
497
+ pip install -e client/
498
+
499
+ # Run a local registry for testing
500
+ cd server && pip install -r requirements.txt && python init_db.py
501
+ uvicorn app.main:app --port 8000 &
502
+
503
+ # Point the CLI at your local registry
504
+ export TOOLSTORE_REGISTRY_URL=http://localhost:8000/index.json
505
+
506
+ # Test a toolset
507
+ toolstore use text-transform --function text_stats text="Hello world."
508
+ ```
509
+
510
+ ---
511
+
512
+ ## Contributing
513
+
514
+ 1. Write a toolset (`toolsets/<name>/toolset.py` + `doc.md`)
515
+ 2. Decorate every callable function with `@tool`
516
+ 3. Use keyword-only arguments with type hints and Google-style docstrings
517
+ 4. Keep imports inside each function so they fail cleanly at call time
518
+ 5. Test with `toolstore use <name> --function <fn> <args>`
519
+ 6. Open a PR against `main`
520
+
521
+ ---
522
+
523
+ ## Remaining Work
524
+
525
+ - **xlsx / pdf / docx / pptx testing** — these toolsets need `openpyxl`,
526
+ `pdfplumber`, `python-docx`, and `python-pptx` installed in the test
527
+ environment for full integration tests
528
+ - **Rate limiting** — the registry server has no rate limiting on public
529
+ endpoints
530
+ - **Large payload handling** — docx/pptx toolset bindings can be large;
531
+ better error handling for oversized publishes
532
+
533
+ ---
534
+
535
+ ## License
536
+
537
+ MIT — see [LICENSE](LICENSE)
@@ -0,0 +1,32 @@
1
+ toolstore/__init__.py,sha256=xyrGXt1_dm8jvdPwhVdium5-_120ZEap8o9mCPU4qxk,977
2
+ toolstore/adapters.py,sha256=K5kkeq52h2wKXtubAtzgUrcM6EyGSZ42y3vPFCE9K4A,8371
3
+ toolstore/cli.py,sha256=yEyjUlvz5DM8RnQaZ3TiFuuTXGYJ4dJeo-mgSk77gwM,64125
4
+ toolstore/config_manager.py,sha256=hVFDcvNzfhLKjQHvZHlUGIiGr01Of9wQ-f2QQLpqq_U,7316
5
+ toolstore/docker_pool.py,sha256=TuxnSK_5d6y2h3eSFMoq7acHGSG7cMq58X97RqaOZGI,12364
6
+ toolstore/exec_tools.py,sha256=NZyPtYcrbNIeVute9FUoJz-L0wa0VIBptecBNLXt0rc,9513
7
+ toolstore/index_manager.py,sha256=p4q6aMTqRcK1h5KpkLBuNQyC5BNF1XYqqa1zi9nkrEg,9516
8
+ toolstore/mcp_client.py,sha256=Ei1k-qqIzlmNEdgCp3qFWy0I-E6hUHRNPcnEmt5vtIs,11751
9
+ toolstore/mcp_server.py,sha256=Jl1wph7CjGBoRL2V2LCiz2aBDfuvYLcxNXJeim208zk,14219
10
+ toolstore/native_tool.py,sha256=911ImoAd5mBeB0ihjLVHAZE5tE1-x6kuuvVyodjMlMw,22320
11
+ toolstore/remote_runner.py,sha256=GGemkCBePHVx-AOZ1x266dH4SaVm8GARRMcSEX0tMGA,8708
12
+ toolstore/schema_converter.py,sha256=tqyFZpkiAzIgt20_EmKs0_YmYSVEWUI2BJ-2MUMIa1U,6399
13
+ toolstore/schemas.py,sha256=Fzf7nRanqDDdXs9gjIJ3PysMfG2-uVvUueHVRULi_0I,5311
14
+ toolstore/skill_discovery.py,sha256=LDDfrSyHK1t0ndBKKzYB0v6nXpHMnuKRreVcC-_PhjA,9339
15
+ toolstore/skill_manager.py,sha256=sepMgcJd3XlWifx7QQA6jH1ArzwovUOY1RTveAm2KCs,19321
16
+ toolstore/toolset.py,sha256=uBbJf-3RSPAidJ2BJxf-fHpnD336NVe73mEOuQA48i8,9544
17
+ toolstore/toolset_manager.py,sha256=YWYHD0MNo4rXT7gBI7OcjHiOR_bKZulimhVtuWylHMc,13349
18
+ toolstore/transport.py,sha256=BlXvZKeYbFQrfwfeEtQOiWAAIrG9Cn8YYATZpMqrwvI,13148
19
+ toolstore/workflow.py,sha256=Et5y-ktaY6lro1PHhsVaeLB-jkmz6jQV4ebaiv69VyU,14677
20
+ toolstore/management/__init__.py,sha256=vP9B1Zh_tSoA7yABRXiXj6sTF-mhjQzOXIAr7n3rwZk,60
21
+ toolstore/management/api_helpers.py,sha256=06fvuGy43KhpsjN-xa6_iBEVoKbxBOlRyobDXGMo_rQ,4739
22
+ toolstore/management/api_mcp.py,sha256=1t6sfgDN07gF-t0YhHlYUHTvh7aJmyfiZpcWUCl3rWc,6943
23
+ toolstore/management/api_skills.py,sha256=UKSzw8JBQKeOAwUX8fwoNCWlk0m1tFnb8E9Taz6uQAs,6689
24
+ toolstore/management/server.py,sha256=jEB9hCs1SI3dhTrP5cZhR8TrngX0y3NfEUvHXZ4z8N8,31989
25
+ toolstore/management/static/app.css,sha256=WHV6m18hLeA3VasPAdyFGPSncjkqHKI3m_hlzUpky8A,24362
26
+ toolstore/management/static/app.js,sha256=lcb-fHXMR6uiwWApcP_oBCBuIrs0OdzirpSaC14gjnQ,41976
27
+ toolstore/management/static/index.html,sha256=MnXu2a9p2lVE7Yat-Pd3K-ffVom9NuB72d5SzS_tMoQ,18175
28
+ toolstore/management/static/tab_mcp.js,sha256=tSKmwHBiXn2Ax_ec_dS43FkfjQjt7njPWFslB9NHtAk,20208
29
+ agent_tool_store-2.0.0.dist-info/METADATA,sha256=-YpznfNgD2_GOUd1bZ6CwTzMRMtBV5mx9XUA3Qb9XD4,18864
30
+ agent_tool_store-2.0.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
31
+ agent_tool_store-2.0.0.dist-info/entry_points.txt,sha256=7AcR3aZC12pCboQKRPuiJRmZ5A5hSWM_CcUtEF5OP7Y,48
32
+ agent_tool_store-2.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ toolstore = toolstore.cli:app
toolstore/__init__.py ADDED
@@ -0,0 +1,43 @@
1
+ """ToolStore — universal tool platform for AI agents.
2
+
3
+ ``pip install agent-tool-store``
4
+ """
5
+
6
+ __version__ = "2.0.0"
7
+
8
+ from .management.server import ManagementServer
9
+ from .native_tool import get_secondary_tool_names
10
+ from .toolset import tool, get_tool, get_tool_names, clear_registry
11
+ from .toolset_manager import ToolsetManager, ToolsetDefinition, get_toolset_manager
12
+
13
+ # Provider adapters (zero-dependency, lightweight)
14
+ from .adapters import (
15
+ to_openai,
16
+ to_anthropic,
17
+ to_langchain,
18
+ to_openai_batch,
19
+ to_anthropic_batch,
20
+ from_openai,
21
+ from_anthropic,
22
+ )
23
+
24
+ __all__ = [
25
+ "ManagementServer",
26
+ "tool",
27
+ "get_tool",
28
+ "get_tool_names",
29
+ "clear_registry",
30
+ "ToolsetManager",
31
+ "ToolsetDefinition",
32
+ "get_toolset_manager",
33
+ "get_secondary_tool_names",
34
+ # Adapters
35
+ "to_openai",
36
+ "to_anthropic",
37
+ "to_langchain",
38
+ "to_openai_batch",
39
+ "to_anthropic_batch",
40
+ "from_openai",
41
+ "from_anthropic",
42
+ "__version__",
43
+ ]