diff --git a/internal/agent/tools/mcp/tools.go b/internal/agent/tools/mcp/tools.go index 561783e6f7986a772b2d1deb9bcdd6dac2bf8f34..96aa54117a30cec6c85c07e2533bdfa77fb39e66 100644 --- a/internal/agent/tools/mcp/tools.go +++ b/internal/agent/tools/mcp/tools.go @@ -74,9 +74,9 @@ func RefreshTools(ctx context.Context, name string) { } func getTools(ctx context.Context, session *mcp.ClientSession) ([]*Tool, error) { - if session.InitializeResult().Capabilities.Tools == nil { - return nil, nil - } + // Always call ListTools to get the actual available tools. + // The InitializeResult Capabilities.Tools field may be an empty object {}, + // which is valid per MCP spec, but we still need to call ListTools to discover tools. result, err := session.ListTools(ctx, &mcp.ListToolsParams{}) if err != nil { return nil, err