@openhands/extensions 0.6.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 (74) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/README.md +8 -6
  3. package/integrations/README.md +8 -2
  4. package/integrations/catalog/airtable.json +0 -24
  5. package/integrations/catalog/asana.json +1 -6
  6. package/integrations/catalog/bitbucket.json +1 -6
  7. package/integrations/catalog/box.json +1 -6
  8. package/integrations/catalog/canva.json +3 -7
  9. package/integrations/catalog/confluence.json +1 -6
  10. package/integrations/catalog/discord.json +1 -6
  11. package/integrations/catalog/figma.json +21 -27
  12. package/integrations/catalog/github.json +0 -9
  13. package/integrations/catalog/gmail.json +1 -6
  14. package/integrations/catalog/google-calendar.json +1 -6
  15. package/integrations/catalog/google-docs.json +1 -6
  16. package/integrations/catalog/google-drive.json +1 -6
  17. package/integrations/catalog/google-sheets.json +1 -6
  18. package/integrations/catalog/intercom.json +1 -6
  19. package/integrations/catalog/jira.json +1 -6
  20. package/integrations/catalog/linear.json +1 -24
  21. package/integrations/catalog/microsoft-outlook.json +1 -6
  22. package/integrations/catalog/microsoft-teams.json +1 -6
  23. package/integrations/catalog/miro.json +14 -10
  24. package/integrations/catalog/monday.json +14 -10
  25. package/integrations/catalog/netlify.json +1 -6
  26. package/integrations/catalog/notion.json +16 -23
  27. package/integrations/catalog/okta.json +1 -6
  28. package/integrations/catalog/onedrive.json +1 -6
  29. package/integrations/catalog/posthog.json +20 -20
  30. package/integrations/catalog/quickbooks.json +70 -22
  31. package/integrations/catalog/salesforce.json +18 -12
  32. package/integrations/catalog/sentry.json +12 -17
  33. package/integrations/catalog/sharepoint.json +1 -6
  34. package/integrations/catalog/stripe.json +15 -20
  35. package/integrations/catalog/supabase.json +16 -21
  36. package/integrations/catalog/trello.json +11 -8
  37. package/integrations/catalog/vercel.json +1 -6
  38. package/integrations/catalog/xero.json +1 -6
  39. package/integrations/catalog/zoom.json +1 -6
  40. package/integrations/catalog-index.js +64 -84
  41. package/integrations/catalog.schema.json +255 -0
  42. package/integrations/index.d.ts +26 -10
  43. package/integrations/index.js +18 -10
  44. package/marketplaces/openhands-extensions.json +26 -1
  45. package/package.json +1 -1
  46. package/plugins/pr-review/scripts/prompt.py +1 -1
  47. package/pyproject.toml +2 -1
  48. package/python/openhands_extensions/_version.py +2 -1
  49. package/skills/agent-canvas-environment/SKILL.md +74 -13
  50. package/skills/bitbucket/README.md +23 -40
  51. package/skills/bitbucket/SKILL.md +43 -31
  52. package/skills/bitbucket-cloud/.plugin/plugin.json +18 -0
  53. package/skills/bitbucket-cloud/README.md +15 -0
  54. package/skills/bitbucket-cloud/SKILL.md +46 -0
  55. package/skills/bitbucket-data-center/.plugin/plugin.json +19 -0
  56. package/skills/bitbucket-data-center/README.md +20 -0
  57. package/skills/bitbucket-data-center/SKILL.md +53 -0
  58. package/skills/code-review/SKILL.md +1 -1
  59. package/skills/code-review/references/supply-chain-security.md +2 -2
  60. package/skills/index.js +17 -5
  61. package/skills/openhands-sdk/SKILL.md +0 -1
  62. package/tests/test_catalog_schema.py +47 -0
  63. package/tests/test_catalogs.py +26 -0
  64. package/tests/test_integration_catalog_in_sync.py +73 -25
  65. package/integrations/catalog/clickup.json +0 -36
  66. package/integrations/catalog/dropbox.json +0 -38
  67. package/integrations/catalog/freshdesk.json +0 -38
  68. package/integrations/catalog/gitlab.json +0 -38
  69. package/integrations/catalog/mailchimp.json +0 -38
  70. package/integrations/catalog/pipedrive.json +0 -39
  71. package/integrations/catalog/plaid.json +0 -31
  72. package/integrations/catalog/servicenow.json +0 -39
  73. package/integrations/catalog/shopify.json +0 -38
  74. package/integrations/catalog/zendesk.json +0 -38
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.6.0"
2
+ ".": "0.7.0"
3
3
  }
package/README.md CHANGED
@@ -59,9 +59,9 @@ See [`integrations/README.md`](integrations/README.md), [`automations/README.md`
59
59
 
60
60
  ### Python Package
61
61
 
62
- The integration catalog is also published as a Python package (`openhands-extensions`) so Python services read the same catalog data as JS consumers. The single source of truth is the hand-authored JSON asset `integrations/integration-catalog.json` (NOT generated from any `.mjs`/`.js` source). Each per-integration entry also exists as `integrations/catalog/<id>.json`; a CI parity test asserts the two never drift. Both the JS package (`@openhands/extensions/integrations`) and the Python package read that same JSON asset at runtime, so the two language bindings can never drift.
62
+ The integration catalog is also published as a Python package (`openhands-extensions`) so Python services read the same catalog data as JS consumers. The single source of truth is the hand-authored JSON directory `integrations/catalog/<id>.json`; there is no separate provider file and no aggregate catalog JSON to maintain. Both the JS package (`@openhands/extensions/integrations`) and the Python package read those same per-integration JSON files and expose parallel read functions.
63
63
 
64
- The catalog is one array where each entry can carry oauth and/or mcp/http `connectionOptions`. `supportsOauth` / `supportsMcp` flags are derived at runtime. Use `listIntegrationCatalog({ mcp, oauth })` (JS) or `list_integration_catalog(mcp=, oauth=)` (Python) to filter by connector type - for example only integrations that support an oauth connector.
64
+ Each catalog entry can carry oauth and/or mcp/http `connectionOptions`. `supportsOauth` / `supportsMcp` flags are derived at runtime. Use `listIntegrationCatalog({ mcp, oauth })` (JS) or `list_integration_catalog(mcp=, oauth=)` (Python) to filter by connector type - for example only integrations that support an oauth connector.
65
65
 
66
66
  ```python
67
67
  from openhands_extensions import (
@@ -73,7 +73,7 @@ from openhands_extensions import (
73
73
  all_integrations = list_integration_catalog()
74
74
  oauth_integrations = list_integration_catalog(oauth=True) # only entries with an oauth connector
75
75
  mcp_integrations = list_integration_catalog(mcp=True) # only entries with an mcp connector
76
- hubspot = get_integration_catalog_entry("hubspot")
76
+ sample = get_integration_catalog_entry(all_integrations[0]["id"])
77
77
  ```
78
78
 
79
79
  Install from git (the hub backend consumes it this way):
@@ -87,7 +87,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
87
87
  ## Extensions Catalog
88
88
 
89
89
  <!-- BEGIN AUTO-GENERATED CATALOG -->
90
- This repository contains **2 marketplace(s)** with **58 extensions** (48 skills, 10 plugins).
90
+ This repository contains **2 marketplace(s)** with **60 extensions** (50 skills, 10 plugins).
91
91
 
92
92
  ### large-codebase
93
93
 
@@ -106,7 +106,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
106
106
 
107
107
  Official skills and plugins for OpenHands — the open-source AI software engineer.
108
108
 
109
- **54 extensions** (46 skills, 8 plugins)
109
+ **56 extensions** (48 skills, 8 plugins)
110
110
 
111
111
  | Name | Type | Description | Commands |
112
112
  |------|------|-------------|----------|
@@ -116,7 +116,9 @@ Official skills and plugins for OpenHands — the open-source AI software engine
116
116
  | agent-memory | skill | Persist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important informa... | `/remember` |
117
117
  | agent-sdk-builder | skill | Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a n... | `/agent-builder` |
118
118
  | azure-devops | skill | Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. U... | — |
119
- | bitbucket | skill | Interact with Bitbucket repositories and pull requests using the BITBUCKET_TOKEN environment variable. Use when worki... | — |
119
+ | bitbucket | skill | Bitbucket integration hub. Detects whether the repository is on Bitbucket Cloud or Bitbucket Data Center and directs ... | — |
120
+ | bitbucket-cloud | skill | Bitbucket Cloud (bitbucket.org) specifics — authenticate with BITBUCKET_TOKEN, use the REST API v2, workspace/repo_sl... | — |
121
+ | bitbucket-data-center | skill | Bitbucket Data Center (self-hosted Bitbucket Server) specifics — authenticate with BITBUCKET_DATA_CENTER_TOKEN, use t... | — |
120
122
  | city-weather | plugin | Get current weather, time, and precipitation forecast for any city using the free Open-Meteo API. Provides slash comm... | — |
121
123
  | code-review | skill | Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provi... | `/codereview`, `/codereview-roasted` |
122
124
  | code-simplifier | skill | Simplifies and refines code across three dimensions - code reuse, code quality, and efficiency - while preserving all... | `/simplify` |
@@ -18,10 +18,16 @@ integrations so clients can consume one source of truth.
18
18
  Each integration carries its OAuth/MCP connection data directly. Do not add a
19
19
  separate provider catalog or per-language provider data.
20
20
 
21
- Consumers can import the package export:
21
+ Consumers should use the read functions exported by the package:
22
22
 
23
23
  ```js
24
- import { INTEGRATION_CATALOG } from "@openhands/extensions/integrations";
24
+ import {
25
+ getIntegrationCatalogEntry,
26
+ listIntegrationCatalog,
27
+ } from "@openhands/extensions/integrations";
28
+
29
+ const catalog = listIntegrationCatalog();
30
+ const entry = getIntegrationCatalogEntry(catalog[0].id);
25
31
  ```
26
32
 
27
33
  ## Migration from the MCP catalog
@@ -11,30 +11,6 @@
11
11
  "notes": "Very common internal-tools and operations automation surface.",
12
12
  "popularityRank": 17,
13
13
  "connectionOptions": [
14
- {
15
- "id": "oauth",
16
- "provider": "http",
17
- "auth": {
18
- "strategy": "oauth2",
19
- "oauth": {
20
- "authorizationUrl": "https://airtable.com/oauth2/v1/authorize",
21
- "tokenUrl": "https://airtable.com/oauth2/v1/token",
22
- "scopes": [
23
- "schema.bases:read",
24
- "data.records:read"
25
- ]
26
- }
27
- },
28
- "http": {
29
- "apiBaseUrl": "https://api.airtable.com/v0",
30
- "defaultTool": {
31
- "name": "list_bases",
32
- "description": "List Airtable bases the connected user granted access to.",
33
- "method": "GET",
34
- "path": "/meta/bases"
35
- }
36
- }
37
- },
38
14
  {
39
15
  "id": "api",
40
16
  "provider": "mcp",
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://app.asana.com/api/1.0",
29
- "defaultTool": {
30
- "name": "list_tasks",
31
- "description": "List tasks visible to the connected Asana user.",
32
- "method": "GET",
33
- "path": "/tasks"
34
- }
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/asana.com/1.0/openapi.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -27,12 +27,7 @@
27
27
  },
28
28
  "http": {
29
29
  "apiBaseUrl": "https://api.bitbucket.org/2.0",
30
- "defaultTool": {
31
- "name": "get_current_user",
32
- "description": "Fetch the authenticated Bitbucket user profile.",
33
- "method": "GET",
34
- "path": "/user"
35
- }
30
+ "openApiUrl": "https://developer.atlassian.com/cloud/bitbucket/swagger.v3.json"
36
31
  }
37
32
  }
38
33
  ]
@@ -27,12 +27,7 @@
27
27
  },
28
28
  "http": {
29
29
  "apiBaseUrl": "https://api.box.com/2.0",
30
- "defaultTool": {
31
- "name": "list_root_items",
32
- "description": "List files and folders in the Box root folder.",
33
- "method": "GET",
34
- "path": "/folders/0/items"
35
- }
30
+ "openApiUrl": "https://raw.githubusercontent.com/box/box-openapi/main/openapi.json"
36
31
  }
37
32
  }
38
33
  ]
@@ -18,17 +18,13 @@
18
18
  "strategy": "oauth2",
19
19
  "oauth": {
20
20
  "tokenUrl": "https://api.canva.com/rest/v1/oauth/token",
21
- "scopes": []
21
+ "scopes": [],
22
+ "authorizationUrl": "https://www.canva.com/api/oauth/authorize"
22
23
  }
23
24
  },
24
25
  "http": {
25
26
  "apiBaseUrl": "https://api.canva.com/rest/v1",
26
- "defaultTool": {
27
- "name": "list_designs",
28
- "description": "List Canva designs available to the connected user.",
29
- "method": "GET",
30
- "path": "/designs"
31
- }
27
+ "openApiUrl": "https://raw.githubusercontent.com/canva-sdks/canva-connect-api-starter-kit/main/openapi/spec.yml"
32
28
  }
33
29
  }
34
30
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://api.atlassian.com/ex/confluence/{cloudId}",
29
- "defaultTool": {
30
- "name": "list_spaces",
31
- "description": "List Confluence spaces available to the connected user.",
32
- "method": "GET",
33
- "path": "/wiki/api/v2/spaces"
34
- }
29
+ "openApiUrl": "https://developer.atlassian.com/cloud/confluence/swagger.v3.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -27,12 +27,7 @@
27
27
  },
28
28
  "http": {
29
29
  "apiBaseUrl": "https://discord.com/api/v10",
30
- "defaultTool": {
31
- "name": "list_guilds",
32
- "description": "List Discord guilds available to the connected user.",
33
- "method": "GET",
34
- "path": "/users/@me/guilds"
35
- }
30
+ "openApiUrl": "https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json"
36
31
  }
37
32
  }
38
33
  ]
@@ -8,35 +8,8 @@
8
8
  ],
9
9
  "appUrl": "https://www.figma.com",
10
10
  "docsUrl": "https://github.com/GLips/Figma-Context-MCP",
11
- "notes": "",
12
11
  "popularityRank": 5,
13
12
  "connectionOptions": [
14
- {
15
- "id": "oauth",
16
- "provider": "http",
17
- "auth": {
18
- "strategy": "oauth2",
19
- "oauth": {
20
- "authorizationUrl": "https://www.figma.com/oauth",
21
- "tokenUrl": "https://api.figma.com/v1/oauth/token",
22
- "scopes": [
23
- "current_user:read",
24
- "file_content:read",
25
- "file_metadata:read",
26
- "projects:read"
27
- ]
28
- }
29
- },
30
- "http": {
31
- "apiBaseUrl": "https://api.figma.com",
32
- "defaultTool": {
33
- "name": "get_file",
34
- "description": "Fetch a Figma file by key.",
35
- "method": "GET",
36
- "path": "/v1/files/{fileKey}"
37
- }
38
- }
39
- },
40
13
  {
41
14
  "id": "api",
42
15
  "provider": "mcp",
@@ -63,6 +36,27 @@
63
36
  "auth": {
64
37
  "strategy": "api_key"
65
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
+ }
66
60
  }
67
61
  ],
68
62
  "iconBg": "var(--oh-surface)",
@@ -28,15 +28,6 @@
28
28
  "transport": {
29
29
  "kind": "shttp",
30
30
  "url": "https://api.githubcopilot.com/mcp/"
31
- },
32
- "http": {
33
- "apiBaseUrl": "https://api.github.com",
34
- "defaultTool": {
35
- "name": "get_authenticated_user",
36
- "description": "Fetch the authenticated GitHub user profile.",
37
- "method": "GET",
38
- "path": "/user"
39
- }
40
31
  }
41
32
  },
42
33
  {
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://gmail.googleapis.com",
29
- "defaultTool": {
30
- "name": "list_messages",
31
- "description": "List Gmail messages for the authenticated user.",
32
- "method": "GET",
33
- "path": "/gmail/v1/users/me/messages"
34
- }
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/gmail/v1/openapi.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://www.googleapis.com/calendar/v3",
29
- "defaultTool": {
30
- "name": "list_events",
31
- "description": "List events from the user's primary Google Calendar.",
32
- "method": "GET",
33
- "path": "/calendars/primary/events"
34
- }
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/calendar/v3/openapi.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://docs.googleapis.com",
29
- "defaultTool": {
30
- "name": "get_document",
31
- "description": "Fetch a Google Docs document by ID.",
32
- "method": "GET",
33
- "path": "/v1/documents/{documentId}"
34
- }
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/docs/v1/openapi.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://www.googleapis.com/drive/v3",
29
- "defaultTool": {
30
- "name": "list_files",
31
- "description": "List Drive files visible to the connected user.",
32
- "method": "GET",
33
- "path": "/files"
34
- }
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/drive/v3/openapi.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://sheets.googleapis.com",
29
- "defaultTool": {
30
- "name": "get_spreadsheet",
31
- "description": "Fetch spreadsheet metadata and sheets by ID.",
32
- "method": "GET",
33
- "path": "/v4/spreadsheets/{spreadsheetId}"
34
- }
29
+ "openApiUrl": "https://api.apis.guru/v2/specs/googleapis.com/sheets/v4/openapi.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -27,12 +27,7 @@
27
27
  },
28
28
  "http": {
29
29
  "apiBaseUrl": "https://api.intercom.io",
30
- "defaultTool": {
31
- "name": "list_contacts",
32
- "description": "List Intercom contacts for the connected workspace.",
33
- "method": "GET",
34
- "path": "/contacts"
35
- }
30
+ "openApiUrl": "https://raw.githubusercontent.com/intercom/Intercom-OpenAPI/main/descriptions/2.15/api.intercom.io.yaml"
36
31
  }
37
32
  }
38
33
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://api.atlassian.com/ex/jira/{cloudId}",
29
- "defaultTool": {
30
- "name": "list_projects",
31
- "description": "List Jira projects available to the connected user.",
32
- "method": "GET",
33
- "path": "/rest/api/3/project/search"
34
- }
29
+ "openApiUrl": "https://developer.atlassian.com/cloud/jira/platform/swagger.v3.json"
35
30
  }
36
31
  }
37
32
  ]
@@ -11,29 +11,6 @@
11
11
  "notes": "Popular among modern product engineering teams and already useful to this repo's users.",
12
12
  "popularityRank": 86,
13
13
  "connectionOptions": [
14
- {
15
- "id": "oauth",
16
- "provider": "http",
17
- "auth": {
18
- "strategy": "oauth2",
19
- "oauth": {
20
- "authorizationUrl": "https://linear.app/oauth/authorize",
21
- "tokenUrl": "https://api.linear.app/oauth/token",
22
- "scopes": [
23
- "read"
24
- ]
25
- }
26
- },
27
- "http": {
28
- "apiBaseUrl": "https://api.linear.app",
29
- "defaultTool": {
30
- "name": "list_issues",
31
- "description": "Query issues from Linear via GraphQL.",
32
- "method": "POST",
33
- "path": "/graphql"
34
- }
35
- }
36
- },
37
14
  {
38
15
  "id": "api-key",
39
16
  "provider": "mcp",
@@ -59,5 +36,5 @@
59
36
  "tasks",
60
37
  "tickets"
61
38
  ],
62
- "installHint": "Authenticate with a Linear API key (Linear \u2192 Settings \u2192 Security & access) \u2014 sent as a Bearer token. Optional when the endpoint accepts your OAuth session."
39
+ "installHint": "Authenticate with a Linear API key (Linear → Settings → Security & access) — sent as a Bearer token. Optional when the endpoint accepts your OAuth session."
63
40
  }
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://graph.microsoft.com/v1.0",
29
- "defaultTool": {
30
- "name": "list_messages",
31
- "description": "List Outlook messages for the signed-in user.",
32
- "method": "GET",
33
- "path": "/me/messages"
34
- }
29
+ "openApiUrl": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml"
35
30
  }
36
31
  }
37
32
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://graph.microsoft.com/v1.0",
29
- "defaultTool": {
30
- "name": "list_teams",
31
- "description": "List Microsoft Teams joined by the signed-in user.",
32
- "method": "GET",
33
- "path": "/me/joinedTeams"
34
- }
29
+ "openApiUrl": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml"
35
30
  }
36
31
  }
37
32
  ]
@@ -7,13 +7,22 @@
7
7
  "Collaboration"
8
8
  ],
9
9
  "appUrl": "https://miro.com",
10
- "docsUrl": "https://developers.miro.com/docs/rest-api-build-your-first-oauth-app",
10
+ "docsUrl": "https://developers.miro.com/docs/mcp-intro",
11
11
  "notes": "Strong visual collaboration target for design and product teams.",
12
12
  "popularityRank": 33,
13
+ "iconBg": "#FFD02F",
14
+ "logoUrl": "https://cdn.simpleicons.org/miro/05003B",
15
+ "keywords": [
16
+ "whiteboard",
17
+ "collaboration",
18
+ "diagrams",
19
+ "visual"
20
+ ],
21
+ "installHint": "Connect Miro's hosted MCP server with OAuth.",
13
22
  "connectionOptions": [
14
23
  {
15
24
  "id": "oauth",
16
- "provider": "http",
25
+ "provider": "mcp",
17
26
  "auth": {
18
27
  "strategy": "oauth2",
19
28
  "oauth": {
@@ -24,14 +33,9 @@
24
33
  ]
25
34
  }
26
35
  },
27
- "http": {
28
- "apiBaseUrl": "https://api.miro.com/v2",
29
- "defaultTool": {
30
- "name": "list_boards",
31
- "description": "List Miro boards available to the connected user.",
32
- "method": "GET",
33
- "path": "/boards"
34
- }
36
+ "transport": {
37
+ "kind": "shttp",
38
+ "url": "https://mcp.miro.com/"
35
39
  }
36
40
  }
37
41
  ]
@@ -7,13 +7,22 @@
7
7
  "Operations"
8
8
  ],
9
9
  "appUrl": "https://monday.com",
10
- "docsUrl": "https://developer.monday.com/apps/docs/oauth",
10
+ "docsUrl": "https://monday.com/w/mcp",
11
11
  "notes": "High-demand operations platform with rich board APIs.",
12
12
  "popularityRank": 16,
13
+ "iconBg": "#FF3D00",
14
+ "logoUrl": "https://cdn.simpleicons.org/mondaydotcom/FFFFFF",
15
+ "keywords": [
16
+ "project management",
17
+ "boards",
18
+ "work",
19
+ "operations"
20
+ ],
21
+ "installHint": "Connect monday.com's hosted MCP server with OAuth.",
13
22
  "connectionOptions": [
14
23
  {
15
24
  "id": "oauth",
16
- "provider": "http",
25
+ "provider": "mcp",
17
26
  "auth": {
18
27
  "strategy": "oauth2",
19
28
  "oauth": {
@@ -24,14 +33,9 @@
24
33
  ]
25
34
  }
26
35
  },
27
- "http": {
28
- "apiBaseUrl": "https://api.monday.com/v2",
29
- "defaultTool": {
30
- "name": "list_boards",
31
- "description": "Query boards from Monday.com.",
32
- "method": "POST",
33
- "path": "/"
34
- }
36
+ "transport": {
37
+ "kind": "shttp",
38
+ "url": "https://mcp.monday.com/mcp"
35
39
  }
36
40
  }
37
41
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://api.netlify.com/api/v1",
29
- "defaultTool": {
30
- "name": "list_sites",
31
- "description": "List Netlify sites available to the connected user.",
32
- "method": "GET",
33
- "path": "/sites"
34
- }
29
+ "openApiUrl": "https://raw.githubusercontent.com/netlify/open-api/master/swagger.yml"
35
30
  }
36
31
  }
37
32
  ]
@@ -8,31 +8,8 @@
8
8
  ],
9
9
  "appUrl": "https://www.notion.so",
10
10
  "docsUrl": "https://developers.notion.com/docs/mcp",
11
- "notes": "",
12
11
  "popularityRank": 82,
13
12
  "connectionOptions": [
14
- {
15
- "id": "oauth",
16
- "provider": "http",
17
- "auth": {
18
- "strategy": "oauth2",
19
- "oauth": {
20
- "authorizationUrl": "https://api.notion.com/v1/oauth/authorize",
21
- "tokenUrl": "https://api.notion.com/v1/oauth/token",
22
- "scopes": []
23
- }
24
- },
25
- "http": {
26
- "apiBaseUrl": "https://api.notion.com",
27
- "openApiUrl": "https://developers.notion.com/openapi.json",
28
- "defaultTool": {
29
- "name": "post_search",
30
- "description": "Search pages and databases in the connected Notion workspace.",
31
- "method": "POST",
32
- "path": "/v1/search"
33
- }
34
- }
35
- },
36
13
  {
37
14
  "id": "api",
38
15
  "provider": "mcp",
@@ -59,6 +36,22 @@
59
36
  "auth": {
60
37
  "strategy": "api_key"
61
38
  }
39
+ },
40
+ {
41
+ "id": "oauth",
42
+ "provider": "http",
43
+ "auth": {
44
+ "strategy": "oauth2",
45
+ "oauth": {
46
+ "authorizationUrl": "https://api.notion.com/v1/oauth/authorize",
47
+ "tokenUrl": "https://api.notion.com/v1/oauth/token",
48
+ "scopes": []
49
+ }
50
+ },
51
+ "http": {
52
+ "apiBaseUrl": "https://api.notion.com",
53
+ "openApiUrl": "https://developers.notion.com/openapi.json"
54
+ }
62
55
  }
63
56
  ],
64
57
  "iconBg": "#FFFFFF",
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://{yourOktaDomain}/api/v1",
29
- "defaultTool": {
30
- "name": "list_users",
31
- "description": "List Okta users for the connected org.",
32
- "method": "GET",
33
- "path": "/users"
34
- }
29
+ "openApiUrl": "https://raw.githubusercontent.com/okta/okta-sdk-java/master/src/swagger/api.yaml"
35
30
  }
36
31
  }
37
32
  ]
@@ -26,12 +26,7 @@
26
26
  },
27
27
  "http": {
28
28
  "apiBaseUrl": "https://graph.microsoft.com/v1.0",
29
- "defaultTool": {
30
- "name": "list_drive_items",
31
- "description": "List OneDrive items in the root folder.",
32
- "method": "GET",
33
- "path": "/me/drive/root/children"
34
- }
29
+ "openApiUrl": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml"
35
30
  }
36
31
  }
37
32
  ]