Skip to content

feat: integration tools visibility, channel connected status, and connect CTA fixes#674

Open
AggManik wants to merge 1 commit intomainfrom
manik/feat/ui-toolkit
Open

feat: integration tools visibility, channel connected status, and connect CTA fixes#674
AggManik wants to merge 1 commit intomainfrom
manik/feat/ui-toolkit

Conversation

@AggManik
Copy link
Contributor

Summary

Addresses issues #567 and #581 — improving integration discoverability and connection status visibility across the UI.

What was done and why

1. MCP Tools grid on integration detail pages (#567)

Users opening an integration page (e.g. /home/integration/slack) had no visibility into what the integration could actually do. Added a "Tools (N)" grid below the Connected Accounts section that lists every available MCP tool with its name and description.

Key decision: tools are loaded via IntegrationRunner.getTools() which only needs the integration definition (not a connected account), so the grid shows for all integrations whether connected or not — giving users a reason to connect in the first place.

2. Connected status badges on Connect page (#581, part 1)

The Connect page (/home/agent/connect) showed channels and AI providers with no indication of which ones were already set up. Added green "Connected" badges:

  • Messaging channels (Slack, Email, WhatsApp): derived from existing connectedChannels loader data
  • AI providers (Claude Code, Cursor, Windsurf, etc.): derived from active MCPSession records — the source field matches the ?source= param each tool uses when connecting

Also suppressed the "Available" badge when a channel is already connected to avoid redundant status labels.

3. Slack "View Docs" → "Connect" CTA (#581, part 2)

The Slack card on the Connect page showed a "View Docs" button that opened external docs in a new tab. Users had no direct path to actually connect Slack from this page. Changed it to a "Connect" button that navigates to /home/integration/slack — the actual integration setup page.

4. Conversation list crash guard (bug fix)

Fixed a crash in ConversationList where fetcher.data.conversations could be undefined when the conversations API returns a 500, causing the entire page to error out. Added a ?? [] guard so the app degrades gracefully.

Files changed

  • apps/webapp/app/routes/home.integration.$slug.tsx — loader fetches tools via IntegrationRunner.getTools; component renders Tools grid
  • apps/webapp/app/routes/home.agent.connect.tsx — Connected badges for channels and providers; Slack CTA fix; active MCP session lookup in loader
  • apps/webapp/app/components/conversation/conversation-list.tsx — null guard on conversations array

Test plan

  • Open any integration page — Tools grid appears below connected accounts (works even when not connected)
  • On Connect page, Slack card shows "Connect" button → clicks through to /home/integration/slack
  • On Connect page, connected Slack/Email channels show green "Connected" badge
  • On Connect page, AI providers with active MCP sessions show "Connected" badge
  • App loads without crash even when conversations API returns 500

🤖 Generated with Claude Code

…nect CTA fixes

- Show MCP tools grid on every integration detail page (no account required)
- Show Connected badge for messaging channels and AI providers on Connect page
- Fix Slack CTA from "View Docs" to "Connect" linking to /home/integration/slack
- Guard conversation list against undefined when API returns 500

Closes #567, #581

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant