Documentation source
Documentation source
Documentation source
Durable build, demand-gated, already-covered, low-value, and no-port dispositions for long-tail integration providers.
## Honest current state
**This catalog ships zero managed ConnectorSpecs.** It adds credential presets
for three providers — GitHub, Vercel, and Supabase Management — but it does not
seed or register a connector, does not declare tenant entity types, and does
not ingest provider data.
That boundary is deliberate. GitHub requires response-`Link` pagination,
Notion search requires a JSON POST body with `start_cursor`, and Linear requires
a GraphQL JSON POST body with cursor variables. The current declarative request
contract cannot express those protocols accurately. Tenant declarations also
have no source-controlled `integration_connectors` seed kind. Adding either
capability is platform work and is outside this zero-platform-code lane.
The three shipped presets are encrypted credential setup for tenant-authored
sources, not a promise of turnkey syncing. Each carries a safe read-only `GET`
probe that fails closed on a missing or invalid credential: `/user` (GitHub),
`/v2/user` (Vercel), and `/v1/organizations` (Supabase Management) all answer
non-2xx to unauthenticated requests, so the status-gated connection test cannot
green-light a bad token.
The Notion, Linear, and Slack presets are **deferred**: a truthful generic GET
credential probe is not available for them without provider-specific contracts
— Notion requires a pinned `Notion-Version` request header, Linear only answers
GraphQL JSON POST bodies, and Slack answers HTTP 200 `{"ok": false}` to invalid
tokens. Shipping those presets today would either green-light bad credentials
or smuggle provider-specific probe handling into the shared prober, so they
wait for the probe-contract follow-up. All future managed connectors remain
disabled until tenant demand, least-privilege credentials, and a successful
dry-run.
## Dispositions
| Provider | Intended auth | Durable disposition | Reason and current implementation status |
| ----------------------- | -------------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **GitHub** | Fine-grained PAT (bearer) | **Build candidate — descoped from this lane** | Issues, pull requests, and repositories have genuine tenant value. The `github-api` credential preset ships with a safe `GET /user` probe, but no ConnectorSpec does: required response-`Link` pagination needs platform support. |
| **Notion** | Internal integration token (bearer) | **Build candidate — deferred preset** | Pages and databases have knowledge-base value. No preset ships yet: a truthful credential probe needs Notion's pinned `Notion-Version` header contract, and search/query pagination requires a POST body containing `start_cursor` — provider-specific contracts the current substrate lacks. |
| **Linear** | Personal API key (raw `Authorization` value) | **Build candidate — deferred preset** | Issues have tenant tracking value. No preset ships yet: Linear's API is GraphQL-only, so both credential probing and queries require a JSON POST body the generic GET prober cannot send. (A personal API key is also sent as a raw `Authorization` value, not a `Bearer` prefix.) |
| **Vercel** | Bearer token | **Demand-gated** | The `vercel-api` credential preset ships with a safe `GET /v2/user` probe. No disabled seed is present: the source-controlled seed seam is missing, and deployment pagination uses `until` rather than the puller's fixed `cursor` parameter. The existing deploy webhook remains the live path. |
| **Supabase Management** | Bearer token | **Demand-gated, low priority** | The `supabase-management-api` preset ships with a safe `GET /v1/organizations` probe. No disabled seed is present because the source-controlled connector seed seam is missing; a managed connector waits for a tenant use case. |
| **Slack** | Bot token (bearer) | **Demand-gated, deferred preset** | No preset ships yet: Slack's Web API answers HTTP 200 `{"ok": false}` to missing or invalid tokens, so the status-gated GET prober would report a bad credential as verified; a truthful probe needs envelope handling. Posting stays off; any future source requests only channel/history scopes. |
| **Discord** | Bot token | **No-port** | Personal notification use only, with no demonstrated tenant or product value. No preset, entity type, or connector ships. |
| **Resend** | API key | **Already covered** | Amble's platform email sender in `features/email` owns outbound email. A second connector would create a parallel path. |
| **Canva** | OAuth | **Already covered** | The `canva-design` MCP bridge already owns Canva access. No declarative connector is added. |
| **X / Twitter** | OAuth | **Already covered for publishing** | `social-x` owns publishing. A read connector has low demonstrated tenant value, so no duplicate source ships. |
| **Spotify** | OAuth refresh | **Low value** | Personal listening history only, with no tenant demand. No preset, entity type, or connector ships. |
| **Figma** | Personal access token | **Low value** | No existing integration and no tenant demand. No preset, entity type, or connector ships. |
| **Mempalace** | Unconfirmed | **No-port** | No authoritative provider API documentation could be confirmed. Revisit only when authoritative docs and tenant demand both exist. |
## What is safe to use now
- The `github-api`, `vercel-api`, and `supabase-management-api` presets can
create encrypted, source-only connection records for tenant-authored or
future connector work. Their connection tests are read-only `GET` probes.
- No Sprinter entity types ship from this lane. The intended target schemas and
the GitHub/Notion/Linear mapping fixtures stay reviewable in this PR's
history and `documents/work/2026-07-23-integrations-connector-catalog/`,
because nothing can populate them until the follow-up substrate lands.
- No preset defines a write or post operation for any provider.
## Follow-up substrate
Accurate managed seeds and the deferred presets require reviewed platform
follow-ups:
1. JSON request-body templates for REST/GraphQL POST requests.
2. Configurable cursor destinations and response-header/`Link` pagination.
3. A canonical tenant declaration and `tenant:push` adapter for disabled
`integration_connectors` rows.
4. Per-preset credential-probe contracts — pinned version headers (Notion),
JSON POST probes (Linear), and HTTP-200 `{"ok": false}` failure-envelope
handling (Slack) — so the deferred presets can verify credentials
truthfully.
Until those land, do not copy the test fixtures into a registry, manually insert
database rows, or describe these providers as built.
## Provider references
- [GitHub REST pagination](https://docs.github.com/en/rest/using-the-rest-api/using-pagination-in-the-rest-api)
- [Notion pagination](https://developers.notion.com/reference/intro#pagination)
- [Notion request limits and versioning](https://developers.notion.com/reference/versioning)
- [Linear GraphQL API](https://linear.app/developers/graphql)
- [Linear authentication](https://linear.app/developers/authentication)
- [Slack conversations.history](https://docs.slack.dev/reference/methods/conversations.history)
- [Supabase Management API](https://supabase.com/docs/reference/api/introduction)
- [Vercel REST API](https://vercel.com/docs/rest-api)
## Related
- [Integration Substrate](/docs/integrations/integration-substrate)
- [MCP OAuth](/docs/integrations/mcp-oauth)