name | yes | string | — | — | Identifier for this hook. |
event | yes | enum | one of on_user_message, pre_query, post_query, on_error, pre_tool_call, post_tool_call, on_handoff, on_alert, on_conversation_start, on_conversation_end, on_rate_limit, on_handoff_resolved, on_goal_complete, on_payment, on_inbound, on_schedule_run, on_feed_match | — | When the hook fires. |
enabled | no | boolean | — | — | When false, the hook is registered but will not fire. |
collapsed | no | boolean | — | — | UI hint — start this entry collapsed in the dashboard. |
filter | no | object | — | — | Optional predicate object (e.g. match a tool name). |
action | yes | object | — | — | HTTP callback configuration fired when the hook matches. Contains url (required), method, headers, timeout_ms, and blocking flag. The webhook receives an event payload and can return verdicts to block/modify the chat flow. Item fields below. |
tool_selection | no | object | — | — | Optional tool-list narrowing applied for this hook’s invocation. Item fields below. |