MCP: причины ошибок доходят до агента в list-тулах, event_get и send_test_event
Сплошной прогон всех тулов (FastMCP call_tool, SQLite, 62 проверки) нашёл
ещё три дефекта того же класса, что и settings_get, — сырой/нечитаемый
ответ вместо {"error": …, "detail": …}:

- list-тулы (11: sources/keys/types/targets/rules/events/deliveries/
  push_subscriptions/settings_get + my_events/my_push_subscriptions) при
  ошибке возвращали dict, а FastMCP валидирует structured output по
  аннотации list[dict] -> агент видел «1 validation error for ...Output:
  Input should be a valid list», причина терялась. Теперь ошибка уходит
  ToolError-ом с тем же JSON (helper _list_run) — как и было задумано для
  админ-отказа.
- event_get с не-UUID id ронял тул сырым ValueError («badly formed
  hexadecimal UUID string»): _run ловит только HTTPException и
  ValidationError. Теперь 422 с понятным текстом.
- send_test_event при недоступной очереди отдавал текст kombu («Retry limit
  exceeded…»): теперь 503 «очередь недоступна, событие создано, воркеру не
  передано» — контрольный прогон честно не состоялся.

Проверено: 62/62 (админ-набор, личный набор, ролевой гейт 403 у user-ключа,
архив/restore, выдача и отзыв ключей, приём контрольного события и event_get
по нему).
1 parent 5531f71 commit 255078401fe7424b18892d82f0947ab1a491bca3
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 2 days ago
Showing 1 changed file
View
app/mcp/tools.py