MCP Tools
The AgentiHooks MCP server (hooks-utils) exposes tools across 3 categories. The server runs python -m hooks.mcp and is registered automatically during agentihooks init.
Categories
| Category | Tools |
|---|---|
| Channels | channel_publish, channel_list, channel_acknowledge, channel_clear, brain_refresh, brain_status — fleet-command broadcast + brain adapter |
| Enforcement | enforcement_set, enforcement_list, enforcement_clear — doctrine reminder banners injected at PreToolUse |
| Agent pool | pool_list, pool_status, call_agent — see which fleet agents are live, declare what you are working on, and message one peer directly |
Earlier releases shipped generic cloud-utility categories (aws, email, storage, database, compute, observability, utilities). These were removed; only the two agentihooks-native categories above ship now.
Filtering categories
By default, all categories load. Use MCP_CATEGORIES to restrict:
MCP_CATEGORIES=channels python -m hooks.mcp
Valid values (comma-separated):
channels, enforcement, agent_pool
Setting MCP_CATEGORIES=all (the default) loads every category.
An unknown category is skipped with a warning on stderr; if every requested category is unknown the server starts with zero tools and warns loudly.
Transport
stdio by default: Claude Code spawns one server process per session. Where a policy filters stdio MCP servers out of the client, MCP_TRANSPORT switches hooks-utils to sse or streamable-http and agentihooks init runs it as a daemon instead. See MCP Transport.
Two consequences of one process serving every session:
pool_list,pool_status,call_agentandchannel_acknowledgeneed an explicitsession_id, because no environment lookup can identify the caller. SessionStart names it for each session.MCP_CATEGORIESbecomes machine-wide. Per-profile tool subsetting is stdio-only, since a url entry in~/.claude.jsoncarries noenvblock.