# davidmg5k/totoolmanager architecture

> Architecture diagram of the GitHub repository davidmg5k/totoolmanager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/davidmg5k/totoolmanager
- Repository: https://github.com/davidmg5k/totoolmanager

## Overview

to-tool-manager is a Python library that turns ordinary classes into tools for pydantic-ai Agents. Its main workflow discovers eligible service methods, wraps them as tools, assembles services and optional sub-agent Modules, then builds an Agent; TTMBuilder offers a declarative alternative. Middleware can wrap tool calls or graph-node transitions, and the package also provides human-in-the-loop support and optional MCP export. Relationships for unsampled modules are limited to README statements and SOURCE INDEX references.

Main entry points: [`src/to_tool_manager/core/main/service.py`](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/service.py) (Service), [`src/to_tool_manager/core/main/to_tool_manager.py`](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/to_tool_manager.py) (ToToolManager), [`src/to_tool_manager/core/builder/ttm_builder.py`](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/ttm_builder.py) (TTMBuilder), [`src/to_tool_manager/core/main/module.py`](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/module.py) (Sub-agent Module)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_assembly["Agent assembly"]
  node_module["Sub-agent Module<br/>[module.py]"]
  node_manager["ToToolManager<br/>[to_tool_manager.py]"]
  node_builder["TTMBuilder<br/>[ttm_builder.py]"]
  node_buildmanager["Assembly manager<br/>[manager.py]"]
end

subgraph group_tools["Service tools"]
  node_service["Service<br/>[service.py]"]
  node_discovery["Method discovery<br/>[discover.py]"]
  node_toolfactory["Tool wrappers<br/>[tool_factory.py]"]
  node_dependency["Dynamic dependencies<br/>[dependency.py]"]
end

subgraph group_crosscut["Middleware and HITL"]
  node_toolmiddleware["Tool middleware<br/>[middleware.py]"]
  node_graphrunner["Graph middleware runner<br/>[graph_runner.py]"]
  node_hitlmiddleware["HITL middleware<br/>[hitl.py]"]
  node_hitlprovider["HITL provider"]
end

subgraph group_interfaces["Runtime interfaces"]
  node_agent["pydantic-ai Agent"]
  node_mcp["FastMCP export<br/>[ttm_builder.py]"]
end

node_author(("Service author"))
node_model(("Model provider"))

node_author -->|"wraps class"| node_service
node_service -->|"discovers methods"| node_discovery
node_service -->|"creates wrappers"| node_toolfactory
node_service -->|"registers instance"| node_dependency
node_service -->|"wraps calls"| node_toolmiddleware
node_module -->|"builds services"| node_service
node_module -->|"shares dependencies"| node_dependency
node_manager -->|"assembles modules"| node_module
node_manager -->|"registers services"| node_service
node_manager -->|"builds Agent"| node_agent
node_builder -->|"registers resources"| node_buildmanager
node_buildmanager -->|"builds capability"| node_service
node_builder -->|"builds Agent"| node_agent
node_model -.->|"supplies model"| node_agent
node_graphrunner -->|"uses middleware"| node_toolmiddleware
node_hitlmiddleware -->|"uses HITL flow"| node_hitlprovider
node_builder -->|"exports tools"| node_mcp

click node_service "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/service.py"
click node_discovery "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/shared/discover.py"
click node_toolfactory "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/shared/tool_factory.py"
click node_dependency "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/shared/dependency.py"
click node_module "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/module.py"
click node_manager "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/to_tool_manager.py"
click node_builder "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/ttm_builder.py"
click node_buildmanager "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/manager.py"
click node_toolmiddleware "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/middleware/middleware.py"
click node_graphrunner "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/middleware/graph_runner.py"
click node_hitlmiddleware "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/middleware/hitl.py"
click node_hitlprovider "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/provider/human_in_the_loop.py"
click node_mcp "https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/ttm_builder.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_module,node_manager,node_builder,node_buildmanager toneBlue
class node_service,node_discovery,node_toolfactory,node_dependency toneAmber
class node_toolmiddleware,node_graphrunner,node_hitlmiddleware,node_hitlprovider toneMint
class node_agent,node_mcp toneRose
class node_author,node_model toneIndigo
```

## Components

### Agent assembly

- [Sub-agent Module](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/module.py): `src/to_tool_manager/core/main/module.py`
- [ToToolManager](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/to_tool_manager.py): `src/to_tool_manager/core/main/to_tool_manager.py`
- [TTMBuilder](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/ttm_builder.py): `src/to_tool_manager/core/builder/ttm_builder.py`
- [Assembly manager](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/manager.py): `src/to_tool_manager/core/builder/manager.py`

### Service tools

- [Service](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/service.py): `src/to_tool_manager/core/main/service.py`
- [Method discovery](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/shared/discover.py): `src/to_tool_manager/core/main/shared/discover.py`
- [Tool wrappers](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/shared/tool_factory.py): `src/to_tool_manager/core/main/shared/tool_factory.py`
- [Dynamic dependencies](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/main/shared/dependency.py): `src/to_tool_manager/core/main/shared/dependency.py`

### Middleware and HITL

- [Tool middleware](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/middleware/middleware.py): `src/to_tool_manager/core/middleware/middleware.py`
- [Graph middleware runner](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/middleware/graph_runner.py): `src/to_tool_manager/middleware/graph_runner.py`
- [HITL middleware](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/middleware/hitl.py): `src/to_tool_manager/middleware/hitl.py`
- [HITL provider](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/provider/human_in_the_loop.py): `src/to_tool_manager/provider/human_in_the_loop.py`

### Runtime interfaces

- **pydantic-ai Agent**
- [FastMCP export](https://github.com/davidmg5k/totoolmanager/blob/main/src/to_tool_manager/core/builder/ttm_builder.py): `src/to_tool_manager/core/builder/ttm_builder.py`

### Other components

- **Service author**
- **Model provider**

## Connections

- Service author → Service: wraps class (evidence: `README.md`)
- Service → Method discovery: discovers methods (evidence: `src/to_tool_manager/core/main/service.py`)
- Service → Tool wrappers: creates wrappers (evidence: `src/to_tool_manager/core/main/service.py`)
- Service → Dynamic dependencies: registers instance (evidence: `src/to_tool_manager/core/main/service.py`)
- Service → Tool middleware: wraps calls (evidence: `src/to_tool_manager/core/main/service.py`)
- Sub-agent Module → Service: builds services (evidence: `src/to_tool_manager/core/main/module.py`)
- Sub-agent Module → Dynamic dependencies: shares dependencies (evidence: `src/to_tool_manager/core/main/module.py`)
- ToToolManager → Sub-agent Module: assembles modules (evidence: `src/to_tool_manager/core/main/to_tool_manager.py`)
- ToToolManager → Service: registers services (evidence: `src/to_tool_manager/core/main/to_tool_manager.py`)
- ToToolManager → pydantic-ai Agent: builds Agent (evidence: `README.md`)
- TTMBuilder → Assembly manager: registers resources (evidence: `src/to_tool_manager/core/builder/ttm_builder.py`)
- Assembly manager → Service: builds capability (evidence: `src/to_tool_manager/core/builder/manager.py`)
- TTMBuilder → pydantic-ai Agent: builds Agent (evidence: `src/to_tool_manager/core/builder/ttm_builder.py`)
- Model provider → pydantic-ai Agent: supplies model (evidence: `README.md`)
- Graph middleware runner → Tool middleware: uses middleware (evidence: `src/to_tool_manager/middleware/graph_runner.py`)
- HITL middleware → HITL provider: uses HITL flow (evidence: `src/to_tool_manager/middleware/hitl.py`)
- TTMBuilder → FastMCP export: exports tools (evidence: `README.md`)
