@openhands/extensions 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/.github/workflows/pypi-publish.yml +104 -0
  2. package/.github/workflows/tests.yml +6 -0
  3. package/.release-please-manifest.json +1 -1
  4. package/AGENTS.md +1 -1
  5. package/README.md +34 -4
  6. package/integrations/README.md +25 -9
  7. package/integrations/catalog/airtable.json +16 -10
  8. package/integrations/catalog/apify.json +0 -2
  9. package/integrations/catalog/asana.json +33 -0
  10. package/integrations/catalog/atlassian.json +5 -8
  11. package/integrations/catalog/bitbucket.json +34 -0
  12. package/integrations/catalog/box.json +34 -0
  13. package/integrations/catalog/brave-search.json +1 -2
  14. package/integrations/catalog/browser-mcp.json +0 -3
  15. package/integrations/catalog/canva.json +31 -0
  16. package/integrations/catalog/clickhouse.json +1 -2
  17. package/integrations/catalog/cloudflare-bindings.json +5 -8
  18. package/integrations/catalog/cloudflare-browser-rendering.json +5 -8
  19. package/integrations/catalog/cloudflare-builds.json +6 -9
  20. package/integrations/catalog/cloudflare-docs.json +4 -7
  21. package/integrations/catalog/cloudflare-observability.json +5 -8
  22. package/integrations/catalog/confluence.json +33 -0
  23. package/integrations/catalog/datadog.json +34 -0
  24. package/integrations/catalog/deepwiki.json +3 -7
  25. package/integrations/catalog/discord.json +34 -0
  26. package/integrations/catalog/elevenlabs.json +27 -28
  27. package/integrations/catalog/everything.json +0 -2
  28. package/integrations/catalog/exa.json +0 -2
  29. package/integrations/catalog/fetch.json +0 -2
  30. package/integrations/catalog/figma.json +35 -9
  31. package/integrations/catalog/filesystem.json +0 -3
  32. package/integrations/catalog/firecrawl.json +0 -2
  33. package/integrations/catalog/git.json +0 -3
  34. package/integrations/catalog/github.json +34 -10
  35. package/integrations/catalog/gmail.json +33 -0
  36. package/integrations/catalog/google-calendar.json +33 -0
  37. package/integrations/catalog/google-docs.json +33 -0
  38. package/integrations/catalog/google-drive.json +33 -0
  39. package/integrations/catalog/google-sheets.json +33 -0
  40. package/integrations/catalog/hubspot.json +34 -0
  41. package/integrations/catalog/huggingface.json +1 -2
  42. package/integrations/catalog/intercom.json +34 -0
  43. package/integrations/catalog/jira.json +33 -0
  44. package/integrations/catalog/kagi.json +2 -3
  45. package/integrations/catalog/linear.json +24 -16
  46. package/integrations/catalog/memory.json +0 -2
  47. package/integrations/catalog/microsoft-outlook.json +33 -0
  48. package/integrations/catalog/microsoft-teams.json +33 -0
  49. package/integrations/catalog/miro.json +42 -0
  50. package/integrations/catalog/monday.json +42 -0
  51. package/integrations/catalog/mongodb.json +1 -2
  52. package/integrations/catalog/neon.json +0 -2
  53. package/integrations/catalog/netlify.json +33 -0
  54. package/integrations/catalog/notion.json +30 -10
  55. package/integrations/catalog/obsidian.json +1 -3
  56. package/integrations/catalog/okta.json +33 -0
  57. package/integrations/catalog/onedrive.json +33 -0
  58. package/integrations/catalog/ordinal.json +33 -0
  59. package/integrations/catalog/paypal.json +5 -8
  60. package/integrations/catalog/playwright.json +0 -2
  61. package/integrations/catalog/posthog.json +38 -0
  62. package/integrations/catalog/quickbooks.json +86 -0
  63. package/integrations/catalog/redis.json +1 -3
  64. package/integrations/catalog/resend.json +1 -2
  65. package/integrations/catalog/salesforce.json +44 -0
  66. package/integrations/catalog/sentry.json +47 -14
  67. package/integrations/catalog/sequential-thinking.json +0 -2
  68. package/integrations/catalog/sharepoint.json +33 -0
  69. package/integrations/catalog/slack.json +49 -10
  70. package/integrations/catalog/stripe.json +39 -14
  71. package/integrations/catalog/supabase.json +31 -9
  72. package/integrations/catalog/tavily.json +0 -2
  73. package/integrations/catalog/time.json +0 -2
  74. package/integrations/catalog/trello.json +34 -0
  75. package/integrations/catalog/vercel.json +33 -0
  76. package/integrations/catalog/webflow.json +34 -0
  77. package/integrations/catalog/xero.json +33 -0
  78. package/integrations/catalog/zoom.json +33 -0
  79. package/integrations/catalog-index.js +151 -0
  80. package/integrations/catalog.schema.json +255 -0
  81. package/integrations/index.d.ts +49 -69
  82. package/integrations/index.js +36 -206
  83. package/marketplaces/openhands-extensions.json +40 -2
  84. package/package.json +4 -7
  85. package/plugins/cobol-modernization/README.md +3 -3
  86. package/plugins/cobol-modernization/skills/{cobol-modernization-overview → cobol-modernization}/SKILL.md +1 -1
  87. package/plugins/magic-test/skills/magic-word/SKILL.md +1 -0
  88. package/plugins/migration-scoring/README.md +1 -1
  89. package/plugins/pr-review/scripts/prompt.py +1 -1
  90. package/pyproject.toml +18 -3
  91. package/python/openhands_extensions/__init__.py +24 -0
  92. package/python/openhands_extensions/_version.py +25 -0
  93. package/python/openhands_extensions/integrations.py +92 -0
  94. package/release-please-config.json +2 -1
  95. package/scripts/build-integration-catalog.mjs +45 -0
  96. package/skills/agent-canvas-environment/.plugin/plugin.json +19 -0
  97. package/skills/agent-canvas-environment/README.md +5 -0
  98. package/skills/agent-canvas-environment/SKILL.md +202 -0
  99. package/skills/bitbucket/README.md +23 -40
  100. package/skills/bitbucket/SKILL.md +43 -31
  101. package/skills/bitbucket-cloud/.plugin/plugin.json +18 -0
  102. package/skills/bitbucket-cloud/README.md +15 -0
  103. package/skills/bitbucket-cloud/SKILL.md +46 -0
  104. package/skills/bitbucket-data-center/.plugin/plugin.json +19 -0
  105. package/skills/bitbucket-data-center/README.md +20 -0
  106. package/skills/bitbucket-data-center/SKILL.md +53 -0
  107. package/skills/code-review/SKILL.md +1 -1
  108. package/skills/code-review/references/supply-chain-security.md +2 -2
  109. package/skills/github-pr-reviewer/references/state-schema.md +18 -4
  110. package/skills/github-pr-reviewer/scripts/main.py +66 -12
  111. package/skills/github-repo-monitor/references/state-schema.md +11 -4
  112. package/skills/github-repo-monitor/scripts/main.py +67 -19
  113. package/skills/github-repo-monitor/tests/test_main.py +67 -8
  114. package/skills/index.js +34 -8
  115. package/skills/openhands-api/README.md +5 -1
  116. package/skills/openhands-api/SKILL.md +74 -5
  117. package/skills/openhands-automation/SKILL.md +3 -1
  118. package/skills/openhands-automation/references/custom-automation.md +166 -0
  119. package/skills/openhands-sdk/SKILL.md +8 -3
  120. package/skills/slack-channel-monitor/README.md +3 -3
  121. package/skills/slack-channel-monitor/SKILL.md +3 -2
  122. package/skills/slack-channel-monitor/references/state-schema.md +11 -4
  123. package/skills/slack-channel-monitor/scripts/main.py +111 -41
  124. package/tests/test_catalog_schema.py +47 -0
  125. package/tests/test_catalogs.py +47 -3
  126. package/tests/test_integration_catalog_in_sync.py +252 -0
  127. package/tests/test_slack_channel_monitor.py +142 -0
  128. package/tests/test_version_alignment.py +64 -0
  129. package/integrations/logos.d.ts +0 -5
  130. package/integrations/logos.js +0 -94
  131. package/integrations/oauth-provider-catalog.js +0 -553
  132. package/integrations/oauth-provider-registration-defaults.js +0 -610
  133. /package/plugins/cobol-modernization/skills/{mainfraime-removal → mainframe-removal}/SKILL.md +0 -0
  134. /package/plugins/cobol-modernization/skills/{mainfraime-removal → mainframe-removal}/references/cics-transformation-examples.md +0 -0
  135. /package/plugins/migration-scoring/skills/{migration-scoring-overview → migration-scoring}/SKILL.md +0 -0
@@ -4,26 +4,23 @@
4
4
  "description": "Search and reference Cloudflare's developer documentation directly from the agent.",
5
5
  "docsUrl": "https://developers.cloudflare.com/agents/model-context-protocol/",
6
6
  "iconBg": "#F38020",
7
+ "logoUrl": "https://cdn.simpleicons.org/cloudflare/FFFFFF",
7
8
  "keywords": [
8
9
  "cloudflare",
9
10
  "docs",
10
11
  "reference",
11
12
  "workers"
12
13
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "none",
15
14
  "connectionOptions": [
16
15
  {
17
16
  "id": "none",
18
17
  "provider": "mcp",
19
18
  "transport": {
20
- "kind": "sse",
21
- "url": "https://docs.mcp.cloudflare.com/sse",
22
- "apiKeyOptional": true
19
+ "kind": "shttp",
20
+ "url": "https://docs.mcp.cloudflare.com/mcp"
23
21
  },
24
22
  "auth": {
25
- "strategy": "none",
26
- "apiKeyOptional": true
23
+ "strategy": "none"
27
24
  }
28
25
  }
29
26
  ]
@@ -4,6 +4,7 @@
4
4
  "description": "Tail Workers logs and query observability data from your Cloudflare account.",
5
5
  "docsUrl": "https://developers.cloudflare.com/agents/model-context-protocol/",
6
6
  "iconBg": "#F38020",
7
+ "logoUrl": "https://cdn.simpleicons.org/cloudflare/FFFFFF",
7
8
  "keywords": [
8
9
  "cloudflare",
9
10
  "logs",
@@ -11,20 +12,16 @@
11
12
  "observability",
12
13
  "workers"
13
14
  ],
14
- "kind": "mcp",
15
- "defaultConnectionOptionId": "none",
16
15
  "connectionOptions": [
17
16
  {
18
- "id": "none",
17
+ "id": "oauth",
19
18
  "provider": "mcp",
20
19
  "transport": {
21
- "kind": "sse",
22
- "url": "https://observability.mcp.cloudflare.com/sse",
23
- "apiKeyOptional": true
20
+ "kind": "shttp",
21
+ "url": "https://observability.mcp.cloudflare.com/mcp"
24
22
  },
25
23
  "auth": {
26
- "strategy": "none",
27
- "apiKeyOptional": true
24
+ "strategy": "oauth2"
28
25
  }
29
26
  }
30
27
  ]
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "confluence",
3
+ "name": "Confluence",
4
+ "description": "Wiki pages, spaces, and internal documentation search.",
5
+ "categories": [
6
+ "Documentation",
7
+ "Knowledge base"
8
+ ],
9
+ "appUrl": "https://www.atlassian.com/software/confluence",
10
+ "docsUrl": "https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/",
11
+ "notes": "Natural companion to Jira for software teams.",
12
+ "popularityRank": 11,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://auth.atlassian.com/authorize",
21
+ "tokenUrl": "https://auth.atlassian.com/oauth/token",
22
+ "scopes": [
23
+ "read:page:confluence"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://api.atlassian.com/ex/confluence/{cloudId}",
29
+ "openApiUrl": "https://developer.atlassian.com/cloud/confluence/swagger.v3.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "datadog",
3
+ "name": "Datadog",
4
+ "description": "Logs, metrics, monitors, incidents, and observability workflows.",
5
+ "categories": [
6
+ "Observability",
7
+ "Operations"
8
+ ],
9
+ "appUrl": "https://www.datadoghq.com",
10
+ "docsUrl": "https://docs.datadoghq.com/bits_ai/mcp_server/setup/",
11
+ "notes": "Uses Datadog's official hosted MCP server. The default registration targets the US1 endpoint and can be edited for other Datadog sites.",
12
+ "popularityRank": 35,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "mcp",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://app.datadoghq.com/oauth2/v1/authorize",
21
+ "tokenUrl": "https://api.datadoghq.com/oauth2/v1/token",
22
+ "scopes": [
23
+ "dashboards_read",
24
+ "monitors_read"
25
+ ]
26
+ }
27
+ },
28
+ "transport": {
29
+ "kind": "shttp",
30
+ "url": "https://mcp.datadoghq.com/api/unstable/mcp-server/mcp"
31
+ }
32
+ }
33
+ ]
34
+ }
@@ -12,20 +12,16 @@
12
12
  "docs",
13
13
  "qa"
14
14
  ],
15
- "kind": "mcp",
16
- "defaultConnectionOptionId": "none",
17
15
  "connectionOptions": [
18
16
  {
19
17
  "id": "none",
20
18
  "provider": "mcp",
21
19
  "transport": {
22
- "kind": "sse",
23
- "url": "https://mcp.deepwiki.com/sse",
24
- "apiKeyOptional": true
20
+ "kind": "shttp",
21
+ "url": "https://mcp.deepwiki.com/mcp"
25
22
  },
26
23
  "auth": {
27
- "strategy": "none",
28
- "apiKeyOptional": true
24
+ "strategy": "none"
29
25
  }
30
26
  }
31
27
  ]
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "discord",
3
+ "name": "Discord",
4
+ "description": "Guilds, channels, messages, and community operations.",
5
+ "categories": [
6
+ "Communication",
7
+ "Community"
8
+ ],
9
+ "appUrl": "https://discord.com",
10
+ "docsUrl": "https://discord.com/developers/docs/topics/oauth2",
11
+ "notes": "Useful for community automation and bot-assisted workflows.",
12
+ "popularityRank": 30,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://discord.com/oauth2/authorize",
21
+ "tokenUrl": "https://discord.com/api/oauth2/token",
22
+ "scopes": [
23
+ "identify",
24
+ "guilds"
25
+ ]
26
+ }
27
+ },
28
+ "http": {
29
+ "apiBaseUrl": "https://discord.com/api/v10",
30
+ "openApiUrl": "https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json"
31
+ }
32
+ }
33
+ ]
34
+ }
@@ -2,41 +2,40 @@
2
2
  "id": "elevenlabs",
3
3
  "name": "ElevenLabs",
4
4
  "description": "Generate speech, clone voices, and transcribe audio via ElevenLabs.",
5
- "docsUrl": "https://elevenlabs.io/docs/api-reference/mcp",
6
- "iconBg": "var(--oh-color-base)",
7
- "keywords": [
8
- "tts",
9
- "speech",
10
- "voice",
11
- "audio"
5
+ "categories": [
6
+ "Audio",
7
+ "AI"
12
8
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "api",
9
+ "appUrl": "https://elevenlabs.io",
10
+ "docsUrl": "https://elevenlabs.io/docs/api-reference/mcp",
11
+ "notes": "Official API-key connector backed by ElevenLabs' published OpenAPI spec.",
12
+ "popularityRank": 51,
15
13
  "connectionOptions": [
16
14
  {
17
15
  "id": "api",
18
- "provider": "mcp",
19
- "transport": {
20
- "kind": "stdio",
21
- "serverName": "elevenlabs",
22
- "command": "uvx",
23
- "args": [
24
- "elevenlabs-mcp"
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "api_key",
19
+ "authModes": [
20
+ "api_key"
25
21
  ],
26
- "envFields": [
27
- {
28
- "key": "ELEVENLABS_API_KEY",
29
- "label": "ElevenLabs API key",
30
- "type": "password",
31
- "required": true,
32
- "helperText": "API key from your ElevenLabs account settings.",
33
- "helperLink": "https://elevenlabs.io/app/settings/api-keys"
34
- }
35
- ]
22
+ "credentialLabel": "ElevenLabs API key",
23
+ "credentialPlaceholder": "Paste your ElevenLabs API key",
24
+ "credentialHelp": "Personal or workspace ElevenLabs API key sent in the xi-api-key header.",
25
+ "apiKeyHeaderName": "xi-api-key"
36
26
  },
37
- "auth": {
38
- "strategy": "api_key"
27
+ "http": {
28
+ "apiBaseUrl": "https://api.elevenlabs.io",
29
+ "openApiUrl": "https://api.elevenlabs.io/openapi.json"
39
30
  }
40
31
  }
32
+ ],
33
+ "iconBg": "var(--oh-color-base)",
34
+ "logoUrl": "https://cdn.simpleicons.org/elevenlabs/FFFFFF",
35
+ "keywords": [
36
+ "tts",
37
+ "speech",
38
+ "voice",
39
+ "audio"
41
40
  ]
42
41
  }
@@ -9,8 +9,6 @@
9
9
  "test",
10
10
  "reference"
11
11
  ],
12
- "kind": "mcp",
13
- "defaultConnectionOptionId": "none",
14
12
  "connectionOptions": [
15
13
  {
16
14
  "id": "none",
@@ -10,8 +10,6 @@
10
10
  "research",
11
11
  "neural"
12
12
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "api",
15
13
  "connectionOptions": [
16
14
  {
17
15
  "id": "api",
@@ -10,8 +10,6 @@
10
10
  "url",
11
11
  "scrape"
12
12
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "none",
15
13
  "connectionOptions": [
16
14
  {
17
15
  "id": "none",
@@ -2,16 +2,13 @@
2
2
  "id": "figma",
3
3
  "name": "Figma",
4
4
  "description": "Read Figma frames, components, and styles to ground UI work in your designs.",
5
- "docsUrl": "https://github.com/GLips/Figma-Context-MCP",
6
- "iconBg": "var(--oh-surface)",
7
- "keywords": [
8
- "design",
9
- "ui",
10
- "frames",
11
- "components"
5
+ "categories": [
6
+ "Design",
7
+ "Frontend"
12
8
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "api",
9
+ "appUrl": "https://www.figma.com",
10
+ "docsUrl": "https://github.com/GLips/Figma-Context-MCP",
11
+ "popularityRank": 5,
15
12
  "connectionOptions": [
16
13
  {
17
14
  "id": "api",
@@ -39,6 +36,35 @@
39
36
  "auth": {
40
37
  "strategy": "api_key"
41
38
  }
39
+ },
40
+ {
41
+ "id": "oauth",
42
+ "provider": "http",
43
+ "auth": {
44
+ "strategy": "oauth2",
45
+ "oauth": {
46
+ "authorizationUrl": "https://www.figma.com/oauth",
47
+ "tokenUrl": "https://api.figma.com/v1/oauth/token",
48
+ "scopes": [
49
+ "current_user:read",
50
+ "file_content:read",
51
+ "file_metadata:read",
52
+ "projects:read"
53
+ ]
54
+ }
55
+ },
56
+ "http": {
57
+ "apiBaseUrl": "https://api.figma.com",
58
+ "openApiUrl": "https://raw.githubusercontent.com/figma/rest-api-spec/main/openapi/openapi.yaml"
59
+ }
42
60
  }
61
+ ],
62
+ "iconBg": "var(--oh-surface)",
63
+ "logoUrl": "https://cdn.simpleicons.org/figma/FFFFFF",
64
+ "keywords": [
65
+ "design",
66
+ "ui",
67
+ "frames",
68
+ "components"
43
69
  ]
44
70
  }
@@ -10,9 +10,6 @@
10
10
  "disk"
11
11
  ],
12
12
  "installHint": "Each path is exposed read/write. Add as many as you need, separated by spaces.",
13
- "kind": "mcp",
14
- "runtimeAvailability": "local",
15
- "defaultConnectionOptionId": "api",
16
13
  "connectionOptions": [
17
14
  {
18
15
  "id": "api",
@@ -10,8 +10,6 @@
10
10
  "web",
11
11
  "markdown"
12
12
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "api",
15
13
  "connectionOptions": [
16
14
  {
17
15
  "id": "api",
@@ -11,9 +11,6 @@
11
11
  "blame"
12
12
  ],
13
13
  "installHint": "Runs the official Python server via uvx — no setup beyond the path.",
14
- "kind": "mcp",
15
- "runtimeAvailability": "local",
16
- "defaultConnectionOptionId": "api",
17
14
  "connectionOptions": [
18
15
  {
19
16
  "id": "api",
@@ -2,19 +2,34 @@
2
2
  "id": "github",
3
3
  "name": "GitHub",
4
4
  "description": "Search code, manage issues and pull requests, and inspect repos via the GitHub API.",
5
- "docsUrl": "https://github.com/github/github-mcp-server",
6
- "iconBg": "var(--oh-surface)",
7
- "keywords": [
8
- "git",
9
- "pr",
10
- "repo",
11
- "issues",
12
- "code"
5
+ "categories": [
6
+ "Engineering",
7
+ "Source control"
13
8
  ],
9
+ "appUrl": "https://github.com",
10
+ "docsUrl": "https://github.com/github/github-mcp-server",
11
+ "notes": "Current managed connector works with bearer tokens today; GitHub OAuth is a strong candidate for a future one-click connect flow.",
14
12
  "popularityRank": 100,
15
- "kind": "mcp",
16
- "defaultConnectionOptionId": "api",
17
13
  "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "mcp",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://github.com/login/oauth/authorize",
21
+ "tokenUrl": "https://github.com/login/oauth/access_token",
22
+ "scopes": [
23
+ "read:user",
24
+ "repo"
25
+ ]
26
+ }
27
+ },
28
+ "transport": {
29
+ "kind": "shttp",
30
+ "url": "https://api.githubcopilot.com/mcp/"
31
+ }
32
+ },
18
33
  {
19
34
  "id": "api",
20
35
  "provider": "mcp",
@@ -31,5 +46,14 @@
31
46
  "saveCredentialAsSecretByDefault": true
32
47
  }
33
48
  }
49
+ ],
50
+ "iconBg": "var(--oh-surface)",
51
+ "logoUrl": "https://cdn.simpleicons.org/github/FFFFFF",
52
+ "keywords": [
53
+ "git",
54
+ "pr",
55
+ "repo",
56
+ "issues",
57
+ "code"
34
58
  ]
35
59
  }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "gmail",
3
+ "name": "Gmail",
4
+ "description": "Mailbox search, drafting, sending, and thread triage.",
5
+ "categories": [
6
+ "Communication",
7
+ "Email"
8
+ ],
9
+ "appUrl": "https://workspace.google.com/products/gmail/",
10
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
11
+ "notes": "Popular agent workflow target for inbox triage and drafting.",
12
+ "popularityRank": 8,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
21
+ "tokenUrl": "https://oauth2.googleapis.com/token",
22
+ "scopes": [
23
+ "https://www.googleapis.com/auth/gmail.readonly"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://gmail.googleapis.com",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/gmail/v1/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "google-calendar",
3
+ "name": "Google Calendar",
4
+ "description": "Calendar search, event scheduling, and meeting coordination.",
5
+ "categories": [
6
+ "Calendar",
7
+ "Scheduling"
8
+ ],
9
+ "appUrl": "https://workspace.google.com/products/calendar/",
10
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
11
+ "notes": "Strong personal productivity use case with mature OAuth flows.",
12
+ "popularityRank": 9,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
21
+ "tokenUrl": "https://oauth2.googleapis.com/token",
22
+ "scopes": [
23
+ "https://www.googleapis.com/auth/calendar.readonly"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://www.googleapis.com/calendar/v3",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/calendar/v3/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "google-docs",
3
+ "name": "Google Docs",
4
+ "description": "Docs authoring and Google Workspace document automation.",
5
+ "categories": [
6
+ "Documents",
7
+ "Knowledge base"
8
+ ],
9
+ "appUrl": "https://workspace.google.com/products/docs/",
10
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
11
+ "notes": "Current managed connector accepts a Google access token manually; a full OAuth connect flow can remove token copy/paste.",
12
+ "popularityRank": 2,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
21
+ "tokenUrl": "https://oauth2.googleapis.com/token",
22
+ "scopes": [
23
+ "https://www.googleapis.com/auth/documents.readonly"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://docs.googleapis.com",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/docs/v1/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "google-drive",
3
+ "name": "Google Drive",
4
+ "description": "File search, metadata, folders, and document discovery.",
5
+ "categories": [
6
+ "Storage",
7
+ "Documents"
8
+ ],
9
+ "appUrl": "https://workspace.google.com/products/drive/",
10
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
11
+ "notes": "Natural expansion of the Google Workspace surface beyond Google Docs.",
12
+ "popularityRank": 6,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
21
+ "tokenUrl": "https://oauth2.googleapis.com/token",
22
+ "scopes": [
23
+ "https://www.googleapis.com/auth/drive.metadata.readonly"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://www.googleapis.com/drive/v3",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/drive/v3/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "google-sheets",
3
+ "name": "Google Sheets",
4
+ "description": "Spreadsheet reads, writes, formulas, and reporting workflows.",
5
+ "categories": [
6
+ "Spreadsheets",
7
+ "Analytics"
8
+ ],
9
+ "appUrl": "https://workspace.google.com/products/sheets/",
10
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
11
+ "notes": "High-value automation surface for agent-driven reporting and structured edits.",
12
+ "popularityRank": 7,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
21
+ "tokenUrl": "https://oauth2.googleapis.com/token",
22
+ "scopes": [
23
+ "https://www.googleapis.com/auth/spreadsheets.readonly"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://sheets.googleapis.com",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/sheets/v4/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "hubspot",
3
+ "name": "HubSpot",
4
+ "description": "CRM, marketing, tickets, and customer lifecycle workflows.",
5
+ "categories": [
6
+ "CRM",
7
+ "Marketing"
8
+ ],
9
+ "appUrl": "https://www.hubspot.com",
10
+ "docsUrl": "https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server",
11
+ "notes": "Uses HubSpot's official remote MCP server plus MCP auth apps with PKCE.",
12
+ "popularityRank": 25,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "mcp",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "credentialHelp": "Use the client ID and secret from a HubSpot MCP auth app (Development → MCP Auth Apps). Standard HubSpot OAuth apps and private apps will not authenticate with mcp.hubspot.com.",
20
+ "oauth": {
21
+ "authorizationUrl": "https://mcp.hubspot.com/oauth/authorize/user",
22
+ "tokenUrl": "https://mcp.hubspot.com/oauth/v3/token",
23
+ "scopes": [],
24
+ "pkce": true,
25
+ "clientAuthentication": "body"
26
+ }
27
+ },
28
+ "transport": {
29
+ "kind": "shttp",
30
+ "url": "https://mcp.hubspot.com"
31
+ }
32
+ }
33
+ ]
34
+ }