Implementation:CrewAIInc CrewAI Tool Specs JSON
| Knowledge Sources | |
|---|---|
| Domains | Configuration, Tool Discovery, Schema |
| Last Updated | 2026-02-11 00:00 GMT |
Overview
tool.specs.json is a generated JSON specification file that comprehensively describes all available tools in the crewai-tools package, including their schemas, parameters, dependencies, and environment variable requirements.
Description
This file serves as a machine-readable catalog of the entire crewai-tools ecosystem. At over 26,000 lines, it covers every tool in the package with full schema information. The file is generated (not hand-written) by the generate_tool_specs.py utility.
The top-level structure is a JSON object with a single tools array. Each entry in the array is a tool specification object containing:
- name -- The class name (e.g., "AIMindTool", "SerperDevTool", "CodeInterpreterTool").
- humanized_name -- A display-friendly name (e.g., "AIMind Tool", "Serper Dev Tool").
- description -- Detailed description of the tool's purpose and capabilities.
- env_vars -- Array of environment variable definitions, each with name, description, required (boolean), and default (string or null).
- init_params_schema -- A JSON Schema / Pydantic schema for the constructor parameters, including type definitions, defaults, and descriptions.
- run_params_schema -- A JSON Schema for runtime execution parameters accepted by the _run method.
- package_dependencies -- Array of pip package names required by the tool (e.g., ["databricks-sdk"], ["stagehand<=0.5.9"]).
Usage
Use this file when building UI tooling, documentation generators, or platform features that need to dynamically discover and configure CrewAI tools without inspecting source code. It is also useful for validating tool configurations and generating type-safe API clients.
Code Reference
Source Location
- Repository: CrewAI
- File: lib/crewai-tools/tool.specs.json
- Lines: 1-26161
Structure
{
"tools": [
{
"name": "AIMindTool",
"humanized_name": "AIMind Tool",
"description": "A wrapper around AI-Minds...",
"env_vars": [
{
"name": "MINDS_API_KEY",
"description": "API key for AI-Minds",
"required": true,
"default": null
}
],
"init_params_schema": {
"properties": {
"api_key": { "type": "string" },
"datasources": { "type": "array" },
"mind_name": { "type": "string" }
}
},
"run_params_schema": {
"properties": {
"query": { "type": "string", "description": "..." }
},
"required": ["query"]
},
"package_dependencies": ["minds-sdk"]
}
]
}
I/O Contract
Tool Specification Fields
| Field | Type | Description |
|---|---|---|
| name | string | Python class name of the tool |
| humanized_name | string | Human-readable display name |
| description | string | Full description of the tool's purpose |
| env_vars | array | Environment variables required or optional for the tool |
| init_params_schema | object | JSON Schema for constructor parameters |
| run_params_schema | object | JSON Schema for runtime execution parameters |
| package_dependencies | array | List of pip package names required by the tool |
Environment Variable Fields
| Field | Type | Description |
|---|---|---|
| name | string | Environment variable name (e.g., "SERPER_API_KEY") |
| description | string | Human-readable description of the variable's purpose |
| required | boolean | Whether the variable is mandatory for tool operation |
| default | string or null | Default value if not set in the environment |
Usage Examples
Reading Tool Specs Programmatically
import json
with open("lib/crewai-tools/tool.specs.json") as f:
specs = json.load(f)
# List all available tools
for tool in specs["tools"]:
print(f"{tool['humanized_name']}: {tool['description'][:80]}...")
# Find tools requiring a specific environment variable
serper_tools = [
t for t in specs["tools"]
if any(ev["name"] == "SERPER_API_KEY" for ev in t.get("env_vars", []))
]
# Get init parameters for a specific tool
tool_spec = next(t for t in specs["tools"] if t["name"] == "CodeInterpreterTool")
print(json.dumps(tool_spec["init_params_schema"], indent=2))