diff --git a/backend/apps/tools_lib/tools_lib.py b/backend/apps/tools_lib/tools_lib.py
index 4a6bfdc7..c293d9a9 100644
--- a/backend/apps/tools_lib/tools_lib.py
+++ b/backend/apps/tools_lib/tools_lib.py
@@ -529,6 +529,11 @@ _SERVICE_RULES: list[tuple[list[str], str, str]] = [
(["contact"], "Contacts", "Google"),
(["script", "deployment", "version", "trigger"], "Apps Script", "Google"),
(["search_custom", "search_engine"], "Search", "Google"),
+ # YouTube
+ (["transcript", "caption"], "Transcripts", "YouTube"),
+ (["video_detail", "video_comment", "video_categor", "video_engagement"], "Videos", "YouTube"),
+ (["search_video", "trending_video"], "Search", "YouTube"),
+ (["channel_stat", "channel_top"], "Channels", "YouTube"),
# Reddit (before Twitter so "search_reddit" etc. don't mis-match)
(["subreddit"], "Subreddits", "Reddit"),
(["search_reddit"], "Search", "Reddit"),
diff --git a/electron/package-lock.json b/electron/package-lock.json
index d0016efa..651559dd 100644
--- a/electron/package-lock.json
+++ b/electron/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "openswarm",
- "version": "1.0.20",
+ "version": "1.0.21",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openswarm",
- "version": "1.0.20",
+ "version": "1.0.21",
"hasInstallScript": true,
"dependencies": {
"electron-updater": "^6.3.0",
diff --git a/frontend/src/app/pages/Dashboard/Dashboard.tsx b/frontend/src/app/pages/Dashboard/Dashboard.tsx
index 878bf994..ed495bb0 100644
--- a/frontend/src/app/pages/Dashboard/Dashboard.tsx
+++ b/frontend/src/app/pages/Dashboard/Dashboard.tsx
@@ -438,7 +438,7 @@ const DashboardInner: React.FC = () => {
dispatch(fetchOutputs());
dashboardWs.connect();
const cleanupBrowserHandler = initBrowserCommandHandler();
- return () => { cleanupBrowserHandler(); dashboardWs.disconnect(); };
+ return () => { dispatch(resetLayout()); cleanupBrowserHandler(); dashboardWs.disconnect(); };
}, [dispatch, dashboardId]);
const pendingBrowserUrl = useAppSelector((state) => state.tempState.pendingBrowserUrl);
diff --git a/frontend/src/app/pages/Tools/Tools.tsx b/frontend/src/app/pages/Tools/Tools.tsx
index 9ab4bb14..7b406d2a 100644
--- a/frontend/src/app/pages/Tools/Tools.tsx
+++ b/frontend/src/app/pages/Tools/Tools.tsx
@@ -135,7 +135,7 @@ const INTEGRATIONS: Integration[] = [
description: 'Browse subreddits, search posts, get post details, analyze users. No API keys required.',
mcp_config: { type: 'stdio', command: 'npx', args: ['-y', 'reddit-mcp-buddy'] },
color: '#FF4500',
- website: 'https://github.com/karanb192/reddit-mcp-buddy',
+ website: 'https://www.npmjs.com/package/reddit-mcp-buddy',
icon: (
),
},
+ {
+ id: 'youtube',
+ name: 'YouTube',
+ description: 'Get video transcripts, details, comments, search videos, and channel stats. Transcripts work with no API key.',
+ mcp_config: { type: 'stdio', command: 'npx', args: ['-y', '@kirbah/mcp-youtube'] },
+ color: '#FF0000',
+ website: 'https://www.npmjs.com/package/@kirbah/mcp-youtube',
+ icon: (
+
+ ),
+ },
{
id: 'google-workspace',
name: 'Google Workspace',
@@ -166,7 +180,7 @@ const INTEGRATIONS: Integration[] = [
description: 'Outlook email, Calendar, OneDrive, Excel, OneNote, Tasks, Contacts, Teams, and SharePoint.',
mcp_config: { type: 'stdio', command: 'npx', args: ['-y', '@softeria/ms-365-mcp-server'] },
color: '#0078D4',
- website: 'https://github.com/softeria/ms-365-mcp-server',
+ website: 'https://www.npmjs.com/package/@softeria/ms-365-mcp-server',
icon: (