Skip to content

fix(catalog): give HTTP connectors a real tool source (openApiUrl or MCP)#368

Open
neubig wants to merge 1 commit into
mainfrom
fix/catalog-http-connectors-tool-source
Open

fix(catalog): give HTTP connectors a real tool source (openApiUrl or MCP)#368
neubig wants to merge 1 commit into
mainfrom
fix/catalog-http-connectors-tool-source

Conversation

@neubig

@neubig neubig commented Jun 27, 2026

Copy link
Copy Markdown
Member

Summary

Closes #366.

44 catalog connectors were defined as provider: "http" with a hand-authored
defaultTool and no openApiUrl on their first connection option. The
defaultTool is a single hardcoded request template that only ever exposes
one tool per provider, under-represents the API, and can drift from the real
API surface. This PR gives every affected connector a real, machine-readable
tool source and removes the obsolete defaultTool.

For each affected connector, the first connection option now either:

  1. keeps provider: "http" and gains an http.openApiUrl pointing at the
    provider's published OpenAPI / Google Discovery / API-spec document so the
    full tool set can be generated from the schema (preferred when the provider
    publishes a machine-readable spec), or
  2. migrates to provider: "mcp" with a transport.url pointing at the
    provider's official hosted MCP server (Streamable HTTP) so tools are
    discovered live via tools/list (used when the provider has an official
    hosted MCP server and no convenient OpenAPI document).

In both cases the now-obsolete http.defaultTool field is removed.

github is handled separately: its mcp connection option carried a dead
defaultTool (MCP discovers tools live, so the field was harmless but
inconsistent). That field is removed; github's provider/transport are
unchanged.

notion and elevenlabs already had an openApiUrl and are not touched.

Only integrations/catalog/*.json files are modified (40 files). All other
fields (OAuth URLs, scopes, auth strategy, categories, logos, keywords, etc.)
are preserved. JSON formatting (2-space indent, trailing newline) matches the
existing files.

Per-connector resolution

Option 1 — openApiUrl added (kept provider: "http")

Connector Spec URL
asana https://raw.githubusercontent.com/Asana/openapi/master/defs/asana_oas.yaml (OpenAPI 3.0, official Asana/openapi)
bitbucket https://developer.atlassian.com/cloud/bitbucket/swagger.json (Swagger 2.0, Atlassian developer docs)
box https://raw.githubusercontent.com/box/box-openapi/main/openapi.json (OpenAPI 3.0.2, official box/box-openapi)
canva https://raw.githubusercontent.com/canva-sdks/canva-connect-api-starter-kit/main/openapi/spec.yml (official Canva Connect SDK repo)
confluence https://developer.atlassian.com/cloud/confluence/swagger.json (OpenAPI 3.0.1, Atlassian developer docs)
discord https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json (official discord/discord-api-spec)
figma https://raw.githubusercontent.com/figma/rest-api-spec/main/openapi/openapi.yaml (OpenAPI 3.1, official figma/rest-api-spec)
gitlab https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/openapi/openapi_v3.yaml (OpenAPI 3.0, official GitLab repo)
gmail https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest (Google Discovery)
google-calendar https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest (Google Discovery)
google-docs https://www.googleapis.com/discovery/v1/apis/docs/v1/rest (Google Discovery)
google-drive https://www.googleapis.com/discovery/v1/apis/drive/v3/rest (Google Discovery)
google-sheets https://www.googleapis.com/discovery/v1/apis/sheets/v4/rest (Google Discovery)
intercom https://raw.githubusercontent.com/intercom/Intercom-OpenAPI/main/descriptions/0/api.intercom.io.yaml (official intercom/Intercom-OpenAPI)
jira https://developer.atlassian.com/cloud/jira/platform/swagger.json (OpenAPI, Atlassian Jira platform docs)
mailchimp https://raw.githubusercontent.com/mailchimp/mailchimp-client-lib-codegen/main/spec/marketing.json (official Mailchimp client-lib codegen spec)
microsoft-outlook https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml (Microsoft Graph OpenAPI 3.0.4)
microsoft-teams https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml (Microsoft Graph OpenAPI 3.0.4)
netlify https://raw.githubusercontent.com/netlify/open-api/master/swagger.yml (Swagger 2.0, official netlify/open-api)
okta https://raw.githubusercontent.com/okta/okta-management-openapi-spec/master/dist/current/management-minimal.yaml (OpenAPI 3.0.3, official Okta management spec)
onedrive https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml (Microsoft Graph OpenAPI 3.0.4)
pipedrive https://developers.pipedrive.com/docs/api/v1/openapi.json (Pipedrive developer docs)
plaid https://raw.githubusercontent.com/plaid/plaid-openapi/master/2020-09-14.yml (OpenAPI 3.0.0, official plaid/plaid-openapi)
sentry https://raw.githubusercontent.com/getsentry/sentry-api-schema/main/openapi-derefed.json (OpenAPI 3.0.3, official getsentry/sentry-api-schema)
sharepoint https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml (Microsoft Graph OpenAPI 3.0.4)
stripe https://raw.githubusercontent.com/stripe/openapi/master/latest/openapi.spec3.json (OpenAPI 3.0.0, official stripe/openapi)
trello https://developer.atlassian.com/cloud/trello/swagger.json (Swagger 2.0, Atlassian developer docs)
vercel https://openapi.vercel.sh/ (OpenAPI 3.0.3, Vercel's own hosted spec)
xero https://raw.githubusercontent.com/XeroAPI/Xero-OpenAPI/master/xero_accounting.yaml (OpenAPI 3.0.0, official XeroAPI/Xero-OpenAPI)
zoom https://raw.githubusercontent.com/zoom/api/master/openapi.v2.json (Swagger 2.0, official zoom/api)

Option 2 — migrated to provider: "mcp" (official hosted MCP server)

Connector MCP server URL
airtable https://mcp.airtable.com/mcp
clickup https://mcp.clickup.com/mcp
dropbox https://mcp.dropbox.com/mcp
freshdesk https://mcp.freshdesk.com/mcp
linear https://mcp.linear.app/mcp
miro https://mcp.miro.com/mcp
monday https://mcp.monday.com/mcp
posthog https://mcp.posthog.com/mcp
supabase https://mcp.supabase.com/mcp

All MCP URLs were verified to respond with 401/405 (i.e. a live
authenticated MCP endpoint) rather than a 404/redirect, and each is documented
by the provider as their official hosted MCP server (Streamable HTTP).

github

Only the dead defaultTool was removed from its mcp option.
provider/transport/http.apiBaseUrl are unchanged.

Could not resolve (left unchanged — need a human)

These connectors publish no public machine-readable OpenAPI and have no
official hosted MCP server
. Per the issue instructions they are left
unchanged (their defaultTool remains) and listed here for a human to decide:

Connector Why unresolved
quickbooks Intuit publishes no machine-readable OpenAPI for the QuickBooks V3 REST API (the developer portal is an SPA returning HTML); no official hosted MCP server exists.
salesforce Salesforce's hosted MCP (Agentforce) is org-specific — the URL is configured per-org in Setup and there is no single public endpoint; no public OpenAPI for the Salesforce REST API.
servicenow ServiceNow OpenAPI is only exportable from within a given instance (instance-specific URLs); no public hosted spec or official MCP server.
shopify Shopify's only official MCP offering is the stdio @shopify/dev-mcp (docs search, not the Admin REST API); no clean public OpenAPI for the Admin REST API and no hosted HTTP MCP server.
zendesk mcp.zendesk.com redirects to the help center (no MCP); Zendesk publishes no public machine-readable OpenAPI spec for its REST API.

Verification

A Python scan (/tmp/verify_catalog_366.py, not committed) over
integrations/catalog/*.json asserts:

  • No http connection option has a defaultTool without an openApiUrl
    (except the 5 unresolved connectors above, which are intentionally left
    unchanged and listed).
  • github's mcp option has no defaultTool.
  • Every formerly-affected connector either has an openApiUrl or is
    provider: "mcp" with a transport.url.

Result:

PASS
Remaining defaultTool entries in catalog: ['notion#0', 'quickbooks#0', 'salesforce#0', 'servicenow#0', 'shopify#0', 'zendesk#0']
  notion#0 is expected (notion already had openApiUrl, unchanged).
  Unresolved (left unchanged, listed in PR): ['quickbooks', 'salesforce', 'servicenow', 'shopify', 'zendesk']
Affected connectors resolved: 39

(notion#0 keeps its defaultTool because it already had an openApiUrl and
is explicitly out of scope per the issue.)

The repo's existing test suite passes unchanged (no test referenced
defaultTool):

uv run --group test python -m pytest -q  →  364 passed

git status -sb shows only the 40 catalog JSON files modified.


This PR was created by an AI agent (OpenHands) on behalf of @neubig.

…MCP)

For each catalog connector whose first connection option was `provider: "http"`
with a hand-authored `defaultTool` and no `openApiUrl`, give it a real
machine-readable tool source so the full tool set can be generated/discovered
instead of a single hardcoded request template:

- When the provider publishes an OpenAPI / Google Discovery / API-spec
  document, add `http.openApiUrl` pointing at it (preferred).
- When the provider has an official hosted MCP server and no convenient
  OpenAPI document, migrate the option to `provider: "mcp"` with a
  `transport.url` (Streamable HTTP) so tools are discovered live via
  `tools/list`.

In both cases the now-obsolete `http.defaultTool` field is removed.

Also remove the dead `defaultTool` from `github`'s `mcp` connection option
(MCP discovers tools live; the field was harmless but inconsistent).

Connectors that publish no public machine-readable OpenAPI and have no
official hosted MCP server are left unchanged and listed in the PR for a
human to decide: quickbooks, salesforce, servicenow, shopify, zendesk.

Closes #366

Co-authored-by: openhands <openhands@all-hands.dev>
@github-actions github-actions Bot added the type: fix A bug fix label Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: fix A bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Catalog: HTTP connectors ship a defaultTool but no openApiUrl, so they have no real tool source

1 participant