Impact: Medium (correctness + performance)
`server/config.py:10-24, 116-130`:
- `ServiceConfig` is hand-rolled (not Pydantic); malformed YAML raises a raw `KeyError` on `svc["name"]`.
- No duplicate-service-name check — duplicates silently share the `service` payload namespace.
- `load_services()` re-parses the YAML file on every call. It is invoked in ~6 places, including per-request tool paths (`server/tools/search.py:189`, `admin.py:47`, and both pipelines).
Recommended change
Make `ServiceConfig` a validated Pydantic model (with a duplicate-name check) and cache the parsed result.
Impact: Medium (correctness + performance)
`server/config.py:10-24, 116-130`:
Recommended change
Make `ServiceConfig` a validated Pydantic model (with a duplicate-name check) and cache the parsed result.