A call_tool result gives the consumer no structured way to know which backend tool was actually dispatched: result deltas carry no arguments, so a consumer that wants to attribute the result (e.g. show "ran mcp-kubernetes list_pods" in a chat UI) has to remember the call's {"name": ...} argument keyed by CallID and join it back when the result arrives.
Ask: echo the resolved inner tool identity (tool name, ideally backend/server name too) in the call_tool result, either as structured content or _meta. One field deletes the CallID-to-name bookkeeping in every consumer.
Concrete consumer: giantswarm/klaus-gateway keeps a callToolInner map in its Slack stream layer purely for this.
A
call_toolresult gives the consumer no structured way to know which backend tool was actually dispatched: result deltas carry no arguments, so a consumer that wants to attribute the result (e.g. show "ran mcp-kubernetes list_pods" in a chat UI) has to remember the call's{"name": ...}argument keyed by CallID and join it back when the result arrives.Ask: echo the resolved inner tool identity (tool name, ideally backend/server name too) in the
call_toolresult, either as structured content or_meta. One field deletes the CallID-to-name bookkeeping in every consumer.Concrete consumer: giantswarm/klaus-gateway keeps a
callToolInnermap in its Slack stream layer purely for this.