Catalog provider
connectors-catalog-provider loads a digest-verified bundle built from a pinned API document and
exposes a reviewed selection of its operations through the local CLI, with no Rust per endpoint.
Reads are one bound GET; writes are one bound POST, PUT, PATCH or DELETE under the host's
approval, audit and attempt controls, with an optional guard declared as data.
The catalog provider explains the model, and
Build a catalog bundle builds one.
Providersโ
| Provider | Operations | Authentication | Verified against | Guide |
|---|---|---|---|---|
| GitLab | 18 reads, 4 approved writes, the merge-request feed | personal access token in a header | a live GitLab | GitLab |
| Jira Cloud | issue search by JQL, one issue, comments, changelogs, transitions, creatable issue types, user search, attachment content; a guarded transition run | HTTP basic, profile atlassian.basic | a live Jira through the API gateway (search); local fixtures (the rest) | Jira guide |
| Confluence Cloud | pages changed since a cutoff, a space's pages, one page with its body, a page's comments | HTTP basic, profile atlassian.basic | local fixtures | Confluence guide |
| HubSpot CRM | one object type's records, paged, and one record by id | private-app access token | local fixtures | HubSpot guide |
| Zendesk Support | tickets, users and organizations changed since a start time, one of each by id, a ticket's comments | OAuth client credentials (zendesk.oauth) or an API token (zendesk.basic) | a live account | Zendesk guide |
| Google Drive | files, export and changes; guarded metadata writes | OAuth refresh token from browser consent | local fixtures | Drive guide |
| Google Slides | presentations and pages; guarded batchUpdate | OAuth refresh token | local fixtures | Slides guide |
| Google Calendar | calendar lists and events; guarded event writes | OAuth refresh token | local fixtures | Calendar guide |
| Gmail | messages, threads, history and labels; guarded drafts, no direct messages.send | OAuth refresh token | local fixtures | Gmail guide |
| Runpod | pod.create, pods.list, pod.terminate | API key as a bearer token; the identity is the configured connection | a local fixture | Runpod guide |
| Slack | conversations, users, the workspace, custom emoji and the token's identity; files and their content; posting a message and opening a direct message under approval; on a second connection with a user token, the conversations, history and threads that user can read, the users and message search | bot token as a bearer token, identity from auth.test; a user token for the user-token reads and search | a local fixture | docs/catalog-slack.md in the repository |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Google consent and the shared OAuth client setup are in the Google OAuth guide. Jira and Confluence share one Atlassian profile, so one account and API token serve both.
Provider notesโ
- Zendesk authenticates with an OAuth client's credentials, which needs no refresh; the API token as HTTP basic remains until Zendesk retires API tokens on 2027-04-30. Its pinned document is redacted of example credentials and contact data. Lists return one page per call.
- HubSpot has no updated-since filter yet.
- Runpod writes are unguarded required-approval mutations. A create without a definite answer
is
unknownand is never sent again.pod.createadmits fifteen body keys, among themdockerStartCmd,dockerEntrypointandnetworkVolumeId(since 0.37.0); any other key is refused asinvalid_inputbefore a request. - Slack answers most failures with HTTP 200 and
"ok": false, which is returned as a successful invocation. Each list returns one page per call and ends on an emptyresponse_metadata.next_cursor. Its pinned Swagger 2.0 document is projected to OpenAPI 3.1.0 byconnectors-build swagger, and the document'stokenquery parameter is withheld.file.downloadreads a file'surl_privateonhttps://files.slack.com, which the connection must admit with the credential in itshosts.chat.postMessageandconversations.openare writes under approval, sent as a JSON body after the token'sauth.testread answers"ok": true; a write Slack answers with"ok": falseisunknown, never applied, and is not sent again. - Binary reads. A selection can read an answer as bytes: the result carries the media type,
length, SHA-256 and the bytes in base64, at most 2 MiB, refused as
capacityabove that and never truncated. A redirect is followed at most three times, only to an origin the selection names and the connection admits inhosts; anything else is refused asforbiddenwith nothing sent there. Slack's file download and Jira'sattachment.contentuse it. Jira's redirect target,https://api.media.atlassian.com, is inferred and not verified against a live site; without that host admitted, sendredirectasfalse. Uploads are not served. - A connection follows a rebuilt bundle or selection on its next
connections revalidatewithout credential re-entry, when its provider authority, profile and identity are unchanged. A profile can declare anaccessread that validation makes, so a credential that identifies its holder but cannot read is refused asinsufficient_scope; Confluence declares one.
Contractsโ
The provider realizes the shared catalog contract's generic HTTP profile. Its native feed binding is the GitLab feed profile. The catalog index service, which would list and locate precompiled bundles, is specified and not implemented; directly configured providers need no index, and catalog information grants no installation or execution authority.