python
1from dataclasses import dataclass
2from typing import Any, Callable
3
4@dataclass
5class ToolSpec:
6 name: str
7 description: str
8 handler: Callable[[dict[str, Any]], dict[str, Any]]
9
10class ToolRegistry:
11 def __init__(self) -> None:
12 self.tools: dict[str, ToolSpec] = {}
13
14 def register(self, spec: ToolSpec) -> None:
15 if spec.name in self.tools:
16 raise ValueError(f"duplicate tool: {spec.name}")
17 self.tools[spec.name] = spec
18
19 def call(self, name: str, payload: dict[str, Any]) -> dict[str, Any]:
20 return self.tools[name].handler(payload)
21
22registry = ToolRegistry()
23registry.register(ToolSpec("healthcheck", "Return service health", lambda _: {"ok": True}))
24print(registry.call("healthcheck", {}))