@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
@@ -0,0 +1,86 @@
1
+ {
2
+ "id": "quickbooks",
3
+ "name": "QuickBooks",
4
+ "description": "Accounting, invoices, customers, and financial operations via the QuickBooks Online MCP server.",
5
+ "categories": [
6
+ "Finance",
7
+ "Accounting"
8
+ ],
9
+ "appUrl": "https://quickbooks.intuit.com",
10
+ "docsUrl": "https://github.com/intuit/quickbooks-online-mcp-server",
11
+ "notes": "Official Intuit QuickBooks Online MCP server runs locally over stdio after a one-time OAuth handshake.",
12
+ "popularityRank": 47,
13
+ "iconBg": "#2CA01C",
14
+ "logoUrl": "https://cdn.simpleicons.org/quickbooks/FFFFFF",
15
+ "keywords": [
16
+ "accounting",
17
+ "finance",
18
+ "invoices",
19
+ "qbo"
20
+ ],
21
+ "installHint": "Create an app on the Intuit Developer Portal (developer.intuit.com), complete the one-time OAuth handshake (clone intuit/quickbooks-online-mcp-server, npm install, npm run build, npm run auth), then provide your Client ID/Secret, Refresh Token, and Realm ID. The server runs over stdio via npx from the official GitHub repo.",
22
+ "connectionOptions": [
23
+ {
24
+ "id": "api",
25
+ "provider": "mcp",
26
+ "transport": {
27
+ "kind": "stdio",
28
+ "serverName": "quickbooks-online",
29
+ "command": "npx",
30
+ "args": [
31
+ "-y",
32
+ "github:intuit/quickbooks-online-mcp-server"
33
+ ],
34
+ "envFields": [
35
+ {
36
+ "key": "QUICKBOOKS_CLIENT_ID",
37
+ "label": "QuickBooks OAuth Client ID",
38
+ "type": "text",
39
+ "placeholder": "your-intuit-app-client-id",
40
+ "required": true,
41
+ "helperText": "From the Intuit Developer Portal app you created.",
42
+ "helperLink": "https://developer.intuit.com/"
43
+ },
44
+ {
45
+ "key": "QUICKBOOKS_CLIENT_SECRET",
46
+ "label": "QuickBooks OAuth Client Secret",
47
+ "type": "password",
48
+ "placeholder": "your-intuit-app-client-secret",
49
+ "required": true,
50
+ "helperText": "From the Intuit Developer Portal app. Stored as a secret.",
51
+ "helperLink": "https://developer.intuit.com/"
52
+ },
53
+ {
54
+ "key": "QUICKBOOKS_REFRESH_TOKEN",
55
+ "label": "QuickBooks Refresh Token",
56
+ "type": "password",
57
+ "placeholder": "your-refresh-token",
58
+ "required": true,
59
+ "helperText": "Obtained after the one-time OAuth handshake (npm run auth). Auto-rotates; stored as a secret.",
60
+ "helperLink": "https://github.com/intuit/quickbooks-online-mcp-server#authentication"
61
+ },
62
+ {
63
+ "key": "QUICKBOOKS_REALM_ID",
64
+ "label": "QuickBooks Company (Realm) ID",
65
+ "type": "text",
66
+ "placeholder": "your-company-id",
67
+ "required": true,
68
+ "helperText": "The QBO company ID to connect to.",
69
+ "helperLink": "https://github.com/intuit/quickbooks-online-mcp-server#authentication"
70
+ },
71
+ {
72
+ "key": "QUICKBOOKS_ENVIRONMENT",
73
+ "label": "Environment",
74
+ "type": "text",
75
+ "placeholder": "sandbox",
76
+ "required": false,
77
+ "helperText": "sandbox or production (default: sandbox)."
78
+ }
79
+ ]
80
+ },
81
+ "auth": {
82
+ "strategy": "none"
83
+ }
84
+ }
85
+ ]
86
+ }
@@ -4,14 +4,12 @@
4
4
  "description": "Get, set, scan, and inspect data on a Redis or Redis-compatible instance.",
5
5
  "docsUrl": "https://github.com/redis/mcp-redis",
6
6
  "iconBg": "#DC382D",
7
+ "logoUrl": "https://cdn.simpleicons.org/redis/FFFFFF",
7
8
  "keywords": [
8
9
  "cache",
9
10
  "kv",
10
11
  "database"
11
12
  ],
12
- "kind": "mcp",
13
- "runtimeAvailability": "local",
14
- "defaultConnectionOptionId": "api",
15
13
  "connectionOptions": [
16
14
  {
17
15
  "id": "api",
@@ -4,13 +4,12 @@
4
4
  "description": "Send transactional and marketing emails via the Resend API.",
5
5
  "docsUrl": "https://resend.com/docs/mcp",
6
6
  "iconBg": "var(--oh-surface-deep)",
7
+ "logoUrl": "https://cdn.simpleicons.org/resend/FFFFFF",
7
8
  "keywords": [
8
9
  "email",
9
10
  "transactional",
10
11
  "smtp"
11
12
  ],
12
- "kind": "mcp",
13
- "defaultConnectionOptionId": "api",
14
13
  "connectionOptions": [
15
14
  {
16
15
  "id": "api",
@@ -0,0 +1,44 @@
1
+ {
2
+ "id": "salesforce",
3
+ "name": "Salesforce",
4
+ "description": "CRM records, accounts, opportunities, and sales operations.",
5
+ "categories": [
6
+ "CRM",
7
+ "Sales"
8
+ ],
9
+ "appUrl": "https://www.salesforce.com",
10
+ "docsUrl": "https://developer.salesforce.com/docs/platform/hosted-mcp-servers",
11
+ "notes": "Very common enterprise CRM and agent-assist target.",
12
+ "popularityRank": 24,
13
+ "iconBg": "#00A1E0",
14
+ "logoUrl": "https://cdn.simpleicons.org/salesforce/FFFFFF",
15
+ "keywords": [
16
+ "crm",
17
+ "sales",
18
+ "records",
19
+ "enterprise"
20
+ ],
21
+ "installHint": "Activate an MCP server in Salesforce Setup (API Catalog → MCP Servers), create an External Client App, then connect. Edit the URL to match your server and org (e.g. /sandbox/ for sandboxes).",
22
+ "connectionOptions": [
23
+ {
24
+ "id": "oauth",
25
+ "provider": "mcp",
26
+ "auth": {
27
+ "strategy": "oauth2",
28
+ "oauth": {
29
+ "authorizationUrl": "https://login.salesforce.com/services/oauth2/authorize",
30
+ "tokenUrl": "https://login.salesforce.com/services/oauth2/token",
31
+ "scopes": [
32
+ "refresh_token"
33
+ ],
34
+ "pkce": true
35
+ }
36
+ },
37
+ "transport": {
38
+ "kind": "shttp",
39
+ "url": "https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads",
40
+ "urlEditable": true
41
+ }
42
+ }
43
+ ]
44
+ }
@@ -2,29 +2,62 @@
2
2
  "id": "sentry",
3
3
  "name": "Sentry",
4
4
  "description": "Triage issues, inspect events, and run Seer fixes against your Sentry org.",
5
- "docsUrl": "https://docs.sentry.io/product/sentry-mcp/",
6
- "iconBg": "#362D59",
7
- "keywords": [
8
- "errors",
9
- "observability",
10
- "monitoring",
11
- "crash"
5
+ "categories": [
6
+ "Observability",
7
+ "Engineering"
12
8
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "none",
9
+ "appUrl": "https://sentry.io",
10
+ "docsUrl": "https://docs.sentry.io/product/sentry-mcp/",
11
+ "notes": "Natural target for engineering support agents.",
12
+ "popularityRank": 36,
15
13
  "connectionOptions": [
16
14
  {
17
- "id": "none",
15
+ "id": "oauth-mcp",
18
16
  "provider": "mcp",
19
17
  "transport": {
20
18
  "kind": "shttp",
21
- "url": "https://mcp.sentry.dev/mcp",
22
- "apiKeyOptional": true
19
+ "url": "https://mcp.sentry.dev/mcp"
23
20
  },
24
21
  "auth": {
25
- "strategy": "none",
26
- "apiKeyOptional": true
22
+ "strategy": "oauth2",
23
+ "oauth": {
24
+ "authorizationUrl": "https://sentry.io/oauth/authorize",
25
+ "tokenUrl": "https://sentry.io/oauth/token",
26
+ "scopes": [
27
+ "project:read",
28
+ "event:read",
29
+ "org:read"
30
+ ]
31
+ }
32
+ }
33
+ },
34
+ {
35
+ "id": "oauth",
36
+ "provider": "http",
37
+ "auth": {
38
+ "strategy": "oauth2",
39
+ "oauth": {
40
+ "authorizationUrl": "https://sentry.io/oauth/authorize",
41
+ "tokenUrl": "https://sentry.io/oauth/token",
42
+ "scopes": [
43
+ "project:read",
44
+ "event:read",
45
+ "org:read"
46
+ ]
47
+ }
48
+ },
49
+ "http": {
50
+ "apiBaseUrl": "https://sentry.io/api/0",
51
+ "openApiUrl": "https://raw.githubusercontent.com/getsentry/sentry/master/api-docs/openapi.json"
27
52
  }
28
53
  }
54
+ ],
55
+ "iconBg": "#362D59",
56
+ "logoUrl": "https://cdn.simpleicons.org/sentry/FFFFFF",
57
+ "keywords": [
58
+ "errors",
59
+ "observability",
60
+ "monitoring",
61
+ "crash"
29
62
  ]
30
63
  }
@@ -9,8 +9,6 @@
9
9
  "planning",
10
10
  "thoughts"
11
11
  ],
12
- "kind": "mcp",
13
- "defaultConnectionOptionId": "none",
14
12
  "connectionOptions": [
15
13
  {
16
14
  "id": "none",
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "sharepoint",
3
+ "name": "SharePoint",
4
+ "description": "Sites, document libraries, lists, and intranet content.",
5
+ "categories": [
6
+ "Knowledge base",
7
+ "Enterprise"
8
+ ],
9
+ "appUrl": "https://www.microsoft.com/microsoft-365/sharepoint/collaboration",
10
+ "docsUrl": "https://learn.microsoft.com/graph/auth-v2-user",
11
+ "notes": "Frequently requested for enterprise knowledge retrieval.",
12
+ "popularityRank": 23,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
21
+ "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
22
+ "scopes": [
23
+ "Sites.Read.All"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://graph.microsoft.com/v1.0",
29
+ "openApiUrl": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -2,18 +2,49 @@
2
2
  "id": "slack",
3
3
  "name": "Slack",
4
4
  "description": "Read channels, post messages, and search workspace history from your agent.",
5
- "docsUrl": "https://github.com/zencoderai/slack-mcp-server",
6
- "iconBg": "#4A154B",
7
- "keywords": [
8
- "chat",
9
- "messaging",
10
- "team"
5
+ "categories": [
6
+ "Communication",
7
+ "Operations"
11
8
  ],
9
+ "appUrl": "https://slack.com",
10
+ "docsUrl": "https://github.com/zencoderai/slack-mcp-server",
11
+ "notes": "Uses Slack's official hosted MCP server with confidential OAuth user-token auth.",
12
12
  "popularityRank": 95,
13
- "installHint": "Create a Slack app with the required scopes, then paste its bot token below.",
14
- "kind": "mcp",
15
- "defaultConnectionOptionId": "api",
16
13
  "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "mcp",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://slack.com/oauth/v2_user/authorize",
21
+ "tokenUrl": "https://slack.com/api/oauth.v2.user.access",
22
+ "scopes": [
23
+ "search:read.public",
24
+ "search:read.private",
25
+ "search:read.mpim",
26
+ "search:read.im",
27
+ "search:read.files",
28
+ "search:read.users",
29
+ "chat:write",
30
+ "channels:history",
31
+ "groups:history",
32
+ "mpim:history",
33
+ "im:history",
34
+ "canvases:read",
35
+ "canvases:write",
36
+ "users:read",
37
+ "users:read.email"
38
+ ],
39
+ "pkce": true,
40
+ "clientAuthentication": "body"
41
+ }
42
+ },
43
+ "transport": {
44
+ "kind": "shttp",
45
+ "url": "https://mcp.slack.com/mcp"
46
+ }
47
+ },
17
48
  {
18
49
  "id": "api",
19
50
  "provider": "mcp",
@@ -48,5 +79,13 @@
48
79
  "strategy": "api_key"
49
80
  }
50
81
  }
51
- ]
82
+ ],
83
+ "iconBg": "#4A154B",
84
+ "logoUrl": "https://cdn.simpleicons.org/slack/FFFFFF",
85
+ "keywords": [
86
+ "chat",
87
+ "messaging",
88
+ "team"
89
+ ],
90
+ "installHint": "Create a Slack app with the required scopes, then paste its bot token below."
52
91
  }
@@ -2,29 +2,54 @@
2
2
  "id": "stripe",
3
3
  "name": "Stripe",
4
4
  "description": "Query customers, payments, subscriptions, and invoices via Stripe's hosted MCP server.",
5
- "docsUrl": "https://stripe.com/docs/mcp",
6
- "iconBg": "#635BFF",
7
- "keywords": [
8
- "payments",
9
- "billing",
10
- "subscriptions",
11
- "finance"
5
+ "categories": [
6
+ "Payments",
7
+ "Finance"
12
8
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "none",
9
+ "appUrl": "https://stripe.com",
10
+ "docsUrl": "https://stripe.com/docs/mcp",
11
+ "notes": "High-value fintech automation target with mature OAuth patterns.",
12
+ "popularityRank": 28,
15
13
  "connectionOptions": [
16
14
  {
17
- "id": "none",
15
+ "id": "api",
18
16
  "provider": "mcp",
19
17
  "transport": {
20
18
  "kind": "shttp",
21
- "url": "https://mcp.stripe.com/",
22
- "apiKeyOptional": true
19
+ "url": "https://mcp.stripe.com/"
23
20
  },
24
21
  "auth": {
25
- "strategy": "none",
26
- "apiKeyOptional": true
22
+ "strategy": "bearer",
23
+ "credentialLabel": "Stripe restricted key",
24
+ "credentialPlaceholder": "rk_live_...",
25
+ "credentialHelp": "Create a Stripe restricted key for MCP access and paste it here."
26
+ }
27
+ },
28
+ {
29
+ "id": "oauth",
30
+ "provider": "http",
31
+ "auth": {
32
+ "strategy": "oauth2",
33
+ "oauth": {
34
+ "authorizationUrl": "https://connect.stripe.com/oauth/authorize",
35
+ "tokenUrl": "https://connect.stripe.com/oauth/token",
36
+ "scopes": [
37
+ "read_only"
38
+ ]
39
+ }
40
+ },
41
+ "http": {
42
+ "apiBaseUrl": "https://api.stripe.com/v1",
43
+ "openApiUrl": "https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json"
27
44
  }
28
45
  }
46
+ ],
47
+ "iconBg": "#635BFF",
48
+ "logoUrl": "https://cdn.simpleicons.org/stripe/FFFFFF",
49
+ "keywords": [
50
+ "payments",
51
+ "billing",
52
+ "subscriptions",
53
+ "finance"
29
54
  ]
30
55
  }
@@ -2,16 +2,14 @@
2
2
  "id": "supabase",
3
3
  "name": "Supabase",
4
4
  "description": "Query and manage your Supabase project, including database, auth, and storage.",
5
- "docsUrl": "https://supabase.com/docs/guides/getting-started/mcp",
6
- "iconBg": "#3ECF8E",
7
- "keywords": [
8
- "database",
9
- "auth",
10
- "storage",
11
- "postgres"
5
+ "categories": [
6
+ "Database",
7
+ "Developer tools"
12
8
  ],
13
- "kind": "mcp",
14
- "defaultConnectionOptionId": "api",
9
+ "appUrl": "https://supabase.com",
10
+ "docsUrl": "https://supabase.com/docs/guides/getting-started/mcp",
11
+ "notes": "Popular developer platform with broad automation value and a documented management-API OAuth integration flow.",
12
+ "popularityRank": 38,
15
13
  "connectionOptions": [
16
14
  {
17
15
  "id": "api",
@@ -38,6 +36,30 @@
38
36
  "auth": {
39
37
  "strategy": "api_key"
40
38
  }
39
+ },
40
+ {
41
+ "id": "oauth",
42
+ "provider": "http",
43
+ "auth": {
44
+ "strategy": "oauth2",
45
+ "oauth": {
46
+ "authorizationUrl": "https://api.supabase.com/v1/oauth/authorize",
47
+ "tokenUrl": "https://api.supabase.com/v1/oauth/token",
48
+ "scopes": []
49
+ }
50
+ },
51
+ "http": {
52
+ "apiBaseUrl": "https://api.supabase.com/v1",
53
+ "openApiUrl": "https://raw.githubusercontent.com/supabase/supabase/master/apps/docs/spec/api_v1_openapi.json"
54
+ }
41
55
  }
56
+ ],
57
+ "iconBg": "#3ECF8E",
58
+ "logoUrl": "https://cdn.simpleicons.org/supabase/FFFFFF",
59
+ "keywords": [
60
+ "database",
61
+ "auth",
62
+ "storage",
63
+ "postgres"
42
64
  ]
43
65
  }
@@ -12,8 +12,6 @@
12
12
  ],
13
13
  "popularityRank": 90,
14
14
  "installHint": "Paste your Tavily API key - the official tavily-mcp package runs via npx.",
15
- "kind": "mcp",
16
- "defaultConnectionOptionId": "api",
17
15
  "connectionOptions": [
18
16
  {
19
17
  "id": "api",
@@ -9,8 +9,6 @@
9
9
  "timezone",
10
10
  "date"
11
11
  ],
12
- "kind": "mcp",
13
- "defaultConnectionOptionId": "none",
14
12
  "connectionOptions": [
15
13
  {
16
14
  "id": "none",
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "trello",
3
+ "name": "Trello",
4
+ "description": "Boards, cards, checklists, and lightweight project planning.",
5
+ "categories": [
6
+ "Project management",
7
+ "Operations"
8
+ ],
9
+ "appUrl": "https://trello.com",
10
+ "docsUrl": "https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/",
11
+ "notes": "Trello now uses Atlassian OAuth2 (auth.atlassian.com) for API authorization.",
12
+ "popularityRank": 14,
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://api.atlassian.com/oauth/token",
22
+ "scopes": [
23
+ "read",
24
+ "write"
25
+ ]
26
+ }
27
+ },
28
+ "http": {
29
+ "apiBaseUrl": "https://api.trello.com/1",
30
+ "openApiUrl": "https://developer.atlassian.com/cloud/trello/swagger.v3.json"
31
+ }
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "vercel",
3
+ "name": "Vercel",
4
+ "description": "Deployments, projects, domains, and preview environment workflows.",
5
+ "categories": [
6
+ "Developer tools",
7
+ "Deployment"
8
+ ],
9
+ "appUrl": "https://vercel.com",
10
+ "docsUrl": "https://vercel.com/docs/rest-api#oauth-apps",
11
+ "notes": "Especially relevant to this repo's deployment model.",
12
+ "popularityRank": 39,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://vercel.com/oauth/authorize",
21
+ "tokenUrl": "https://api.vercel.com/v2/oauth/access_token",
22
+ "scopes": [
23
+ "project:read"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://api.vercel.com",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/vercel.com/0.0.1/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "webflow",
3
+ "name": "Webflow",
4
+ "description": "CMS items, sites, and web publishing workflows.",
5
+ "categories": [
6
+ "CMS",
7
+ "Marketing"
8
+ ],
9
+ "appUrl": "https://webflow.com",
10
+ "docsUrl": "https://developers.webflow.com/mcp/reference/getting-started",
11
+ "notes": "Uses Webflow's official hosted MCP server and deployment-scoped MCP OAuth registration so each user can authorize their own sites and workspaces.",
12
+ "popularityRank": 32,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "mcp",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://mcp.webflow.com/oauth/authorize",
21
+ "tokenUrl": "https://mcp.webflow.com/oauth/token",
22
+ "scopes": [],
23
+ "pkce": true,
24
+ "clientAuthentication": "none",
25
+ "registrationUrl": "https://mcp.webflow.com/oauth/register"
26
+ }
27
+ },
28
+ "transport": {
29
+ "kind": "shttp",
30
+ "url": "https://mcp.webflow.com/mcp"
31
+ }
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "xero",
3
+ "name": "Xero",
4
+ "description": "Accounting, contacts, invoices, and bookkeeping workflows.",
5
+ "categories": [
6
+ "Finance",
7
+ "Accounting"
8
+ ],
9
+ "appUrl": "https://www.xero.com",
10
+ "docsUrl": "https://developer.xero.com/documentation/guides/oauth2/overview/",
11
+ "notes": "Important accounting platform in many regions.",
12
+ "popularityRank": 48,
13
+ "connectionOptions": [
14
+ {
15
+ "id": "oauth",
16
+ "provider": "http",
17
+ "auth": {
18
+ "strategy": "oauth2",
19
+ "oauth": {
20
+ "authorizationUrl": "https://login.xero.com/identity/connect/authorize",
21
+ "tokenUrl": "https://identity.xero.com/connect/token",
22
+ "scopes": [
23
+ "accounting.contacts.read"
24
+ ]
25
+ }
26
+ },
27
+ "http": {
28
+ "apiBaseUrl": "https://api.xero.com/api.xro/2.0",
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/xero.com/xero_accounting/2.9.4/openapi.json"
30
+ }
31
+ }
32
+ ]
33
+ }