2.2 Implement structured error responses for MCP tools

Trả lỗi có cấu trúc để agent biết nên thử lại, đổi cách, hay báo khách — thay vì một câu "Operation failed".

  1. Tool MCP báo lỗi bằng cờ isError (field của MCP; bên Claude API là is_error). Trong nội dung lỗi, tự thêm metadata như errorCategory (transient / validation / permission / business), isRetryable và mô tả dễ hiểu.
  2. Truy vấn thành công nhưng không có kết quả là kết quả hợp lệ, không phải lỗi. Đừng trả nó như lỗi truy cập — và cũng đừng trả lỗi truy cập như "rỗng".
  3. Vi phạm quy tắc nghiệp vụ (vd. quá hạn đổi trả): đánh dấu không retry được và kèm giải thích thân thiện để agent nói lại với khách.
  4. Lỗi tạm thời: subagent tự xử lý tại chỗ (retry) trước; chỉ chuyển lên coordinator lỗi không tự giải quyết được, kèm đã thử gì và kết quả dở dang.