Skip to content

Rename Gateway MCP product tools to a gateway_ prefix (major) #352

Description

@leggetter

Why

The Event Gateway MCP server names its tools hookdeck_connections, hookdeck_sources, hookdeck_events and so on. These are Gateway resources wearing a platform prefix.

That was fine when there was one MCP server. There are now two, and the naming no longer distinguishes what it needs to:

  • outpost_tenants — an Outpost resource, correctly prefixed
  • hookdeck_connections — a Gateway resource, prefixed as though it were platform-level

Configure both servers in one client, or build the top-level server in #351, and an agent cannot tell from the name which product a tool belongs to.

Proposal

Rename Gateway's product tools to a gateway_ prefix:

hookdeck_connections     -> gateway_connections
hookdeck_sources         -> gateway_sources
hookdeck_destinations    -> gateway_destinations
hookdeck_transformations -> gateway_transformations
hookdeck_requests        -> gateway_requests
hookdeck_events          -> gateway_events
hookdeck_attempts        -> gateway_attempts
hookdeck_issues          -> gateway_issues
hookdeck_metrics         -> gateway_metrics
hookdeck_help            -> gateway_help

Platform tools keep the hookdeck_ prefix in every server, because that is what they are — you log into Hookdeck and switch Hookdeck projects, not Outpost or Gateway ones:

hookdeck_login     (unchanged in Gateway; Outpost renamed to match)
hookdeck_projects  (unchanged in Gateway; Outpost renamed to match)

The rule: product tools take the product prefix, platform tools take hookdeck_.

Version impact: MAJOR

This is a MAJOR bump under the SemVer table in .agents/skills/hookdeck-cli-release/SKILL.md ("requires users to change scripts, configs, or habits").

It is worth being precise about how it does and does not break, because an MCP contract is not an API contract:

Does not break: tool discovery is entirely runtime. Agents call tools/list and use what is there. There is no pinned client library and no compile-time binding, so nothing stops working the way a removed HTTP endpoint would. Hookdeck's own published agent skills reference zero MCP tool names, so they are unaffected.

Does break, and this is the sharp edge: clients grant permissions per tool name. Claude Desktop remembers approvals per tool; Claude Code has --allowedTools. After a rename, existing approvals do not carry — at best the user is re-prompted, at worst a strict allowlist silently omits the tool. Silent unavailability is the failure worth warning about.

Degrades softly: stored prompts, CLAUDE.md files and team runbooks that name tools. Models adapt, but quality dips.

Release notes must call out that per-tool approvals and any allowedTools config need updating.

Shares a major with

  • #340 — errors move from stdout to stderr
  • #347 — removing the JSON form of gateway --config

Three contract changes now queued for the same major, which makes a single v3.0.0 "contract release" worth planning rather than three independent deferrals that each drift.

Related

  • #351 — the top-level server, where prefixes become load-bearing

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions