Public: records explicit free-text user feedback about the Blueprint, this tool surface, or a specific principle/example. Captures two 1-5 ratings (rating_clarity, rating_usefulness), what_helped, what_missing, would_use_again, the task_type and surface, and an optional contact_email when permission_to_follow_up is true. WHEN TO CALL: ONLY when the user explicitly says they want to give feedback (e.g. 'can you log this as feedback', 'file this critique', 'send a bug report'). Use signals.report instead for value-moment metrics (rating validate's output 1-5). WHEN NOT TO CALL: proactively, silently, or to substitute for signals.report. Never harvest contact info without explicit permission_to_follow_up=true. BEHAVIOR: write-only, no auth required (open to all callers). Stores one feedback record, at rest in the UK. contact_email is stored ONLY when permission_to_follow_up=true, and that fact is confirmed back in the response so the user can see the privacy boundary. When permission_to_follow_up=true AND a valid contact_email is given, and only then, it also opens a support inbox item so a human can reply, and the free-text fields are sent to OpenAI for triage (severity and a short summary). The contact_email field is never part of that request, so keep personal data out of the free text. Separately, feedback sent while signed in, or whose follow-up email matches an account, may appear, pseudonymised and shortened, in our weekly lead-intelligence extract to OpenAI (US). private_session does not apply to this tool: it runs only when the user chooses to give feedback. REJECTION CODES (invalid_request): a call with no rating, no what_helped or what_missing comment and no would_use_again answer (task_type, surface and contact_email alone are not feedback); a rating outside 1-5; a contact_email that is not one plain address.