CLI¶
The toolschema command-line tool inspects, compares, and exports schemas.
pip install toolschema
toolschema --help
inspect¶
Print tool JSON for a single function.
toolschema inspect myapp.tools:search_github
toolschema inspect myapp.tools:search_github --format mcp
toolschema inspect myapp.tools:search_github --format openai,mcp,anthropic
Target syntax¶
| Format | Example |
|---|---|
| Module function | mypackage.tools:add |
| Nested attribute | mypackage.registry:TOOLS.search |
Formats¶
--format value |
Output |
|---|---|
canonical |
ToolDefinition.to_json_schema() (default) |
openai |
OpenAI function tool |
openai-strict |
OpenAI with strict=True |
anthropic |
Anthropic tool |
mcp |
MCP tools/list entry |
gemini |
Gemini FunctionDeclaration |
Multiple formats: comma-separated, no spaces (or spaces trimmed).
diff¶
Compare adapter outputs for the same function.
toolschema diff myapp.tools:add --targets openai,mcp
toolschema diff myapp.tools:add --targets openai,openai-strict,mcp,anthropic
Prints JSON with equal flags and key paths for each pair.
export¶
Export schemas for all callables in a module.
toolschema export myapp.tools
toolschema export myapp.tools --output tools.json
Skips objects where schema() raises TypeError or ValueError.
Output shape:
{
"module": "myapp.tools",
"tools": [
{ "name": "...", "description": "...", "parameters": {...}, "_source": "myapp.tools:add" }
]
}
init¶
Scaffold a new MCP server project.
toolschema init my-mcp-server
toolschema init my-mcp-server --path /tmp
Creates:
my-mcp-server/
├── pyproject.toml
├── README.md
├── claude_desktop_config.example.json
└── src/my_mcp_server/
├── tools.py
└── __main__.py
Next steps printed by CLI:
cd my-mcp-server
uv sync
uv run python -m my_mcp_server --check
uv run python -m my_mcp_server
Exit codes¶
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Runtime error (import failure, bad target, etc.) |
2 |
Argument error |
Run as module¶
python -m toolschema inspect myapp.tools:add --format mcp