Files
python-sdk/pkg/hanzo-tools/pyproject.toml
T
zeekay 85bf05c796 feat(mcp): native MCP ImageContent — tools return images the client can SEE
HIP-0300 tools serialize results to JSON text, which flattened images into
useless base64-in-text. Add a ToolImage value type + one converter in
BaseTool.register: any ToolImage anywhere in a result becomes a real
mcp.types.ImageContent block; text-only results stay byte-for-byte JSON.
Emitters wired: fs read of image files, browser screenshots (bidi+playwright).
This gives hanzo-mcp vision parity with zai-mcp — an agent with native vision
(Claude) sees pixels directly, no per-task vision tool needed.

Also decomplect the core-package collision that caused this class of bug:
hanzo-tools-core shipped a DUPLICATE hanzo_tools/core/ that nondeterministically
shadowed canonical hanzo-tools (dropping ToolImage, the sophisticated register,
etc. — same shadow class as the 0.3.0 error-reexport gap). Finish the
'merge core into hanzo-tools' refactor: move id_tool into hanzo-tools, make
hanzo-tools-core a pure empty metapackage. Now ONE package owns hanzo_tools.core.

Versions: hanzo-tools 0.3.2, -core 0.3.1 (shim), -browser 0.5.9, -fs 0.3.4,
hanzo-mcp 0.15.12 (floors bumped). Verified: fs read PNG -> [text, image];
fs stat -> [text]; 29 tools intact; 9 tests pass.
2026-07-03 00:45:49 -07:00

101 lines
2.8 KiB
TOML

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "hanzo-tools"
version = "0.3.2"
description = "Hanzo AI tools - core infrastructure and tool bundles"
readme = "README.md"
requires-python = ">=3.12"
license = { text = "MIT" }
authors = [{ name = "Hanzo Industries Inc", email = "[email protected]" }]
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
keywords = ["hanzo", "tools", "mcp", "ai", "agent"]
# Core dependencies (merged from hanzo-tools-core)
dependencies = [
"mcp>=1.25.0",
"fastmcp>=2.14.1",
"pydantic>=2.12.5",
"typing-extensions>=4.13.0",
"aiofiles>=24.1.0",
]
[project.optional-dependencies]
# Individual tool packages
filesystem = ["hanzo-tools-fs>=0.1.0"]
shell = ["hanzo-tools-shell>=0.5.4"]
browser = ["hanzo-tools-browser>=0.1.0"]
llm = ["hanzo-tools-llm>=0.1.0"]
database = ["hanzo-tools-database>=0.1.0"]
memory = ["hanzo-tools-memory>=0.1.0"]
agent = ["hanzo-tools-agent>=0.1.0"]
editor = ["hanzo-tools-editor>=0.1.0"]
jupyter = ["hanzo-tools-jupyter>=0.1.0"]
lsp = ["hanzo-tools-lsp>=0.1.0"]
refactor = ["hanzo-tools-refactor>=0.1.0"]
vector = ["hanzo-tools-vector>=0.1.0"]
todo = ["hanzo-tools-todo>=0.1.0"]
config = ["hanzo-tools-config>=0.1.0"]
mcp_tools = ["hanzo-tools-mcp>=0.1.0"]
reasoning = ["hanzo-tools-reasoning>=0.1.0"]
computer = ["hanzo-tools-computer>=0.1.0"]
code = ["hanzo-tools-code>=0.1.0"]
vcs = ["hanzo-tools-vcs>=0.1.0"]
net = ["hanzo-tools-net>=0.1.0"]
# Bundles
dev = [
"hanzo-tools-fs>=0.1.0",
"hanzo-tools-shell>=0.5.4",
"hanzo-tools-todo>=0.1.0",
"hanzo-tools-reasoning>=0.1.0",
"hanzo-tools-config>=0.1.0",
"hanzo-tools-editor>=0.1.0",
"hanzo-tools-lsp>=0.1.0",
"hanzo-tools-refactor>=0.1.0",
]
ai = [
"hanzo-tools-llm>=0.1.0",
"hanzo-tools-agent>=0.1.0",
"hanzo-tools-memory>=0.1.0",
]
all = [
"hanzo-tools-fs>=0.1.0",
"hanzo-tools-shell>=0.5.4",
"hanzo-tools-browser>=0.1.0",
"hanzo-tools-llm>=0.1.0",
"hanzo-tools-database>=0.1.0",
"hanzo-tools-memory>=0.1.0",
"hanzo-tools-agent>=0.1.0",
"hanzo-tools-editor>=0.1.0",
"hanzo-tools-jupyter>=0.1.0",
"hanzo-tools-lsp>=0.1.0",
"hanzo-tools-refactor>=0.1.0",
"hanzo-tools-vector>=0.1.0",
"hanzo-tools-todo>=0.1.0",
"hanzo-tools-reasoning>=0.1.0",
"hanzo-tools-config>=0.1.0",
"hanzo-tools-mcp>=0.1.0",
"hanzo-tools-computer>=0.1.0",
"hanzo-tools-code>=0.1.0",
"hanzo-tools-vcs>=0.1.0",
"hanzo-tools-net>=0.1.0",
]
[project.urls]
"Homepage" = "https://github.com/hanzoai/python-sdk"
"Bug Tracker" = "https://github.com/hanzoai/python-sdk/issues"
[tool.setuptools.packages.find]
where = ["."]
include = ["hanzo_tools*"]
[tool.setuptools.package-data]
hanzo_tools = ["py.typed"]