# Garden Layer Garden-domain helpers and plugin tools for `virtuoso_mcp`. ## Current role - Provides domain workflows (cycles, clones, seedlings). - Keeps domain logic separate from generic Virtuoso MCP tools. - Registers `garden_*` plugin tools into `virtuoso_mcp` via `register_layer(...)`. ## Current garden tool surface (trimmed) Only domain-unique prefixed tools are exposed: - `garden_add_seedling` - `garden_cycle_plants` - `garden_latest_cycle_by_dates` - `garden_clone_to` - `garden_cycle_list_detailed` - `garden_reassign_cycle` Redundant prefixed aliases of generic tools were intentionally removed. ## Runtime coupling - Default endpoint for direct helper calls: `GARDEN_MCP_URL=http://127.0.0.1:8501/rpc` - This uses the compatibility router in `virtuoso_mcp` for simple tool invocation during migration. ## Structure - `src/garden_layer/domain_tools.py` — domain-native logic - `src/garden_layer/__init__.py` — plugin registration and schemas - `src/garden_layer/helpers.py` — convenience class for direct usage - `test_garden_layer.py` — integration-style tests against running `virtuoso_mcp` ## Tests ```bash ./test.sh ``` `test.sh` is self-contained: - activates local `.venv` when present - installs missing test deps if needed - runs pytest with `PYTHONPATH=src` Expected result depends on fixture availability; current baseline is passing core domain/plugin checks with optional data-dependent skips. ## Install (plugin host) ```bash pip install --upgrade git+https://repo.home.world.eu.org/lucky/garden_layer.git ``` Then in `virtuoso_mcp` set: ```bash DOMAIN_LAYERS=garden_layer.plugin ``` and restart the server.