@zackbart/connecta 0.34.0 → 0.35.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.
- package/CHANGELOG.md +393 -0
- package/README.md +62 -105
- package/SECURITY.md +3 -2
- package/bin/connecta.mjs +41 -16
- package/bin/version.mjs +1 -1
- package/dist/access-tokens.d.ts +2 -1
- package/dist/access-tokens.js +66 -30
- package/dist/activity.d.ts +1 -1
- package/dist/activity.js +2 -0
- package/dist/agent-config.d.ts +23 -0
- package/dist/agent-config.js +59 -0
- package/dist/agent-description.js +16 -0
- package/dist/agent-identity.js +4 -4
- package/dist/agent-observation.js +39 -0
- package/dist/auth/clerk-sdk/client.d.ts +2 -0
- package/dist/auth/clerk-sdk/generated.js +554 -563
- package/dist/auth/clerk-transport.js +70 -3
- package/dist/auth/clerk.d.ts +13 -0
- package/dist/auth/clerk.js +653 -246
- package/dist/auth/cloudflare-access.js +46 -42
- package/dist/auth/downstream-client-metadata.js +2 -2
- package/dist/auth/downstream-oauth.js +2051 -1160
- package/dist/auth/downstream-revocation.js +88 -88
- package/dist/auth/native-call.js +20 -0
- package/dist/auth/native.js +184 -0
- package/dist/auth/oauth-start-reset.js +11 -5
- package/dist/auth/oauth-token-response.js +121 -102
- package/dist/auth/oauth-v2-migration.js +97 -78
- package/dist/auth/renewable-grant.js +10 -0
- package/dist/auth/static-oauth.js +663 -271
- package/dist/auth/vercel-agent.js +266 -0
- package/dist/auth-admission.js +204 -0
- package/dist/auth-elicitation.js +350 -241
- package/dist/authorization-handoff.js +164 -90
- package/dist/call-admission-context.js +3 -10
- package/dist/call-admission.js +2 -0
- package/dist/call-classification.js +9 -0
- package/dist/call-recovery.js +32 -13
- package/dist/canonical-json.js +8 -0
- package/dist/catalog-cache.js +369 -213
- package/dist/catalog-service.js +659 -530
- package/dist/catalog.js +5 -1
- package/dist/concurrency.js +0 -25
- package/dist/config-defaults.d.ts +1 -0
- package/dist/config-defaults.js +1 -0
- package/dist/config-schema.d.ts +3 -1
- package/dist/config-schema.js +13 -3
- package/dist/config.d.ts +40 -6
- package/dist/config.js +40 -26
- package/dist/connector-caller.d.ts +4 -0
- package/dist/connector-caller.js +17 -4
- package/dist/connectors/api-connector.d.ts +15 -7
- package/dist/connectors/api-connector.js +147 -57
- package/dist/connectors/guarded-fetch.d.ts +51 -17
- package/dist/connectors/guarded-fetch.js +215 -121
- package/dist/connectors/negotiation-cache.js +20 -10
- package/dist/connectors/option-shapes.js +1 -1
- package/dist/connectors/remote-mcp.d.ts +12 -30
- package/dist/connectors/remote-mcp.js +960 -564
- package/dist/d1.js +10 -243
- package/dist/derived-context.js +5 -0
- package/dist/describe-config.d.ts +5 -1
- package/dist/describe-config.js +3 -0
- package/dist/downstream-input.js +347 -260
- package/dist/errors.d.ts +87 -6
- package/dist/errors.js +114 -4
- package/dist/execute.js +87 -50
- package/dist/executor-admission.js +3 -0
- package/dist/executors/quickjs.js +163 -112
- package/dist/guarded-transport.js +50 -0
- package/dist/guest-runtime.js +1 -1
- package/dist/http/client.js +439 -0
- package/dist/http/errors.js +558 -0
- package/dist/http/fields.js +49 -0
- package/dist/http/hatch-paging.js +318 -0
- package/dist/http/hatch.js +1279 -0
- package/dist/http/json-schema.js +267 -0
- package/dist/http/node-transport.js +241 -0
- package/dist/http/oauth.js +162 -0
- package/dist/http/paging.js +228 -0
- package/dist/http/provider.js +221 -0
- package/dist/http/safety.js +82 -0
- package/dist/http/services.js +79 -0
- package/dist/http/tools.js +383 -0
- package/dist/http/vendor-index.js +138 -0
- package/dist/http/vendor.js +448 -0
- package/dist/http/write-request.js +66 -0
- package/dist/http-policy.d.ts +11 -0
- package/dist/http-policy.js +45 -0
- package/dist/inbound-credential.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -0
- package/dist/invocation-auth.js +30 -19
- package/dist/invocation.js +221 -87
- package/dist/mcp-result.js +0 -4
- package/dist/membership.d.ts +4 -0
- package/dist/meta-output.js +1 -1
- package/dist/meta-tools.js +534 -408
- package/dist/native-recovery.js +52 -0
- package/dist/native-tools.js +382 -0
- package/dist/node.d.ts +4 -3
- package/dist/node.js +45 -8
- package/dist/oauth-handoff.js +177 -104
- package/dist/oauth-partition.js +6 -20
- package/dist/oauth-sealing.js +6 -7
- package/dist/operation-vocabulary.js +101 -0
- package/dist/operator-record.d.ts +2 -2
- package/dist/operator-record.js +17 -4
- package/dist/operator-ui/agents.d.ts +5 -4
- package/dist/operator-ui/agents.js +17 -7
- package/dist/operator-ui/config-summary.js +8 -4
- package/dist/operator-ui/connection-map.js +9 -6
- package/dist/operator-ui/contract.d.ts +7 -3
- package/dist/operator-ui/endpoints.js +5 -14
- package/dist/operator-ui/fix-prompts.d.ts +1 -1
- package/dist/operator-ui/fix-prompts.js +0 -8
- package/dist/operator-ui/generated.js +3 -3
- package/dist/operator-ui/health.js +52 -0
- package/dist/operator-ui/model.d.ts +2 -3
- package/dist/operator-ui/overview.js +11 -19
- package/dist/operator-ui/setup-commands.js +0 -4
- package/dist/operator-ui/view.d.ts +5 -29
- package/dist/operator-ui/view.js +3 -59
- package/dist/program-writes.js +47 -26
- package/dist/provider-call-facts.d.ts +115 -0
- package/dist/provider-call-facts.js +182 -0
- package/dist/provider-call.d.ts +112 -0
- package/dist/provider-call.js +271 -0
- package/dist/provider.d.ts +71 -32
- package/dist/provider.js +134 -40
- package/dist/providers/_shared/google/hatch.js +91 -0
- package/dist/providers/_shared/google/kit.js +537 -0
- package/dist/providers/_shared/google/result-size.js +15 -2
- package/dist/providers/_shared/google/service-account.d.ts +2 -1
- package/dist/providers/_shared/google/service-account.js +8 -4
- package/dist/providers/_shared/google/workspace.d.ts +8 -209
- package/dist/providers/_shared/google/workspace.js +7 -426
- package/dist/providers/_shared/rest/compact-index.js +86 -0
- package/dist/providers/_shared/rest/dispatch.js +3 -23
- package/dist/providers/_shared/rest/kit.js +546 -0
- package/dist/providers/_shared/rest/operation-index.js +230 -14
- package/dist/providers/_shared/rest/response-media.js +11 -0
- package/dist/providers/_shared/rest/tools.js +101 -78
- package/dist/providers/_shared/rest/value-safety.js +353 -195
- package/dist/providers/_shared/sensitive-fields.js +27 -0
- package/dist/providers/breeze/api.js +584 -0
- package/dist/providers/breeze/index.d.ts +3 -3
- package/dist/providers/breeze/index.js +67 -1420
- package/dist/providers/breeze/openapi.generated.js +60 -0
- package/dist/providers/breeze/skill.generated.js +2 -6
- package/dist/providers/breeze/tools.js +696 -0
- package/dist/providers/ccb/api.js +496 -0
- package/dist/providers/ccb/index.d.ts +17 -37
- package/dist/providers/ccb/index.js +77 -1702
- package/dist/providers/ccb/lib/constants.d.ts +34 -0
- package/dist/providers/ccb/lib/constants.js +74 -0
- package/dist/providers/ccb/lib/guide.js +9 -0
- package/dist/providers/ccb/lib/verdicts.js +387 -0
- package/dist/providers/ccb/openapi.generated.js +397 -0
- package/dist/providers/ccb/safety.js +295 -0
- package/dist/providers/ccb/skill.generated.js +2 -6
- package/dist/providers/ccb/tools.js +853 -0
- package/dist/providers/cloudflare/api.js +1066 -0
- package/dist/providers/cloudflare/index.d.ts +7 -22
- package/dist/providers/cloudflare/index.js +80 -194
- package/dist/providers/cloudflare/lib/config.d.ts +16 -0
- package/dist/providers/cloudflare/lib/config.js +2 -0
- package/dist/providers/cloudflare/lib/discovery.js +29 -0
- package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
- package/dist/providers/cloudflare/lib/hatch.js +103 -0
- package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
- package/dist/providers/cloudflare/lib/response-media.js +75 -0
- package/dist/providers/cloudflare/openapi.generated.js +3299 -3208
- package/dist/providers/cloudflare/{value-safety.js → safety.js} +538 -18
- package/dist/providers/cloudflare/skill.generated.js +2 -10
- package/dist/providers/cloudflare/tools.js +360 -0
- package/dist/providers/docs/api.js +51 -0
- package/dist/providers/docs/index.d.ts +1 -12
- package/dist/providers/docs/index.js +53 -1165
- package/dist/providers/docs/lib/constants.d.ts +18 -0
- package/dist/providers/docs/lib/constants.js +18 -0
- package/dist/providers/docs/lib/discovery.js +26 -0
- package/dist/providers/docs/lib/requests.js +48 -0
- package/dist/providers/docs/lib/schemas.js +168 -0
- package/dist/providers/docs/openapi.generated.js +16 -0
- package/dist/providers/docs/safety.js +54 -0
- package/dist/providers/docs/skill.generated.js +2 -6
- package/dist/providers/docs/tools.js +802 -0
- package/dist/providers/drive/api.js +177 -0
- package/dist/providers/drive/index.d.ts +1 -12
- package/dist/providers/drive/index.js +38 -1448
- package/dist/providers/drive/lib/constants.d.ts +6 -0
- package/dist/providers/drive/lib/constants.js +6 -0
- package/dist/providers/drive/lib/contracts.js +532 -0
- package/dist/providers/drive/lib/hatch.js +197 -0
- package/dist/providers/drive/openapi.generated.js +77 -0
- package/dist/providers/drive/safety.js +90 -0
- package/dist/providers/drive/skill.generated.js +2 -6
- package/dist/providers/drive/tools.js +1290 -0
- package/dist/providers/forms/api.js +71 -0
- package/dist/providers/forms/index.d.ts +1 -12
- package/dist/providers/forms/index.js +49 -1145
- package/dist/providers/forms/lib/constants.d.ts +14 -0
- package/dist/providers/forms/lib/constants.js +19 -0
- package/dist/providers/forms/lib/hatch.js +72 -0
- package/dist/providers/forms/openapi.generated.js +23 -0
- package/dist/providers/forms/safety.js +34 -0
- package/dist/providers/forms/skill.generated.js +2 -8
- package/dist/providers/forms/tools.js +1024 -0
- package/dist/providers/github/api.js +150 -0
- package/dist/providers/github/index.d.ts +4 -5
- package/dist/providers/github/index.js +30 -87
- package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
- package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
- package/dist/providers/github/lib/discovery.js +132 -0
- package/dist/providers/github/lib/operations.js +58 -0
- package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
- package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
- package/dist/providers/github/openapi.generated.js +1216 -0
- package/dist/providers/github/safety.js +216 -0
- package/dist/providers/github/skill.generated.js +2 -5
- package/dist/providers/github/tools.js +506 -0
- package/dist/providers/gmail/api.js +114 -0
- package/dist/providers/gmail/index.d.ts +1 -12
- package/dist/providers/gmail/index.js +73 -1621
- package/dist/providers/gmail/lib/constants.d.ts +13 -0
- package/dist/providers/gmail/lib/constants.js +16 -0
- package/dist/providers/gmail/lib/index.js +173 -0
- package/dist/providers/gmail/lib/schemas.js +176 -0
- package/dist/providers/gmail/lib/threading.js +120 -0
- package/dist/providers/gmail/openapi.generated.js +92 -0
- package/dist/providers/gmail/safety.js +21 -0
- package/dist/providers/gmail/skill.generated.js +2 -6
- package/dist/providers/gmail/tools.js +1435 -0
- package/dist/providers/overflow/api.js +1008 -0
- package/dist/providers/overflow/index.d.ts +3 -17
- package/dist/providers/overflow/index.js +60 -1488
- package/dist/providers/overflow/skill.generated.js +2 -5
- package/dist/providers/overflow/tools.js +873 -0
- package/dist/providers/planning-center/api.js +467 -0
- package/dist/providers/planning-center/index.d.ts +6 -35
- package/dist/providers/planning-center/index.js +69 -2445
- package/dist/providers/planning-center/lib/constants.d.ts +58 -0
- package/dist/providers/planning-center/lib/constants.js +83 -0
- package/dist/providers/planning-center/lib/discovery.js +40 -0
- package/dist/providers/planning-center/lib/guide.js +39 -0
- package/dist/providers/planning-center/lib/json-api.js +83 -0
- package/dist/providers/planning-center/lib/verdicts.js +1758 -0
- package/dist/providers/planning-center/openapi.generated.js +1764 -0
- package/dist/providers/planning-center/safety.js +188 -0
- package/dist/providers/planning-center/skill.generated.js +2 -27
- package/dist/providers/planning-center/tools.js +1010 -0
- package/dist/providers/sheets/api.js +133 -0
- package/dist/providers/sheets/index.d.ts +4 -16
- package/dist/providers/sheets/index.js +61 -1172
- package/dist/providers/sheets/lib/constants.d.ts +14 -0
- package/dist/providers/sheets/lib/constants.js +14 -0
- package/dist/providers/sheets/lib/hatch.js +163 -0
- package/dist/providers/sheets/lib/requests.js +105 -0
- package/dist/providers/sheets/lib/schemas.js +138 -0
- package/dist/providers/sheets/openapi.generated.js +30 -0
- package/dist/providers/sheets/safety.js +27 -0
- package/dist/providers/sheets/skill.generated.js +2 -7
- package/dist/providers/sheets/tools.js +734 -0
- package/dist/providers/slides/api.js +147 -0
- package/dist/providers/slides/index.d.ts +2 -10
- package/dist/providers/slides/index.js +48 -2555
- package/dist/providers/slides/lib/constants.d.ts +11 -0
- package/dist/providers/slides/lib/constants.js +11 -0
- package/dist/providers/slides/lib/requests.js +60 -0
- package/dist/providers/slides/lib/schemas.js +565 -0
- package/dist/providers/slides/openapi.generated.js +18 -0
- package/dist/providers/slides/skill.generated.js +2 -6
- package/dist/providers/slides/tools.js +1968 -0
- package/dist/providers/stripe/api.js +401 -0
- package/dist/providers/stripe/index.d.ts +7 -27
- package/dist/providers/stripe/index.js +75 -191
- package/dist/providers/stripe/lib/config.d.ts +4 -0
- package/dist/providers/stripe/lib/config.js +2 -0
- package/dist/providers/stripe/openapi.generated.js +4 -3
- package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
- package/dist/providers/stripe/skill.generated.js +2 -10
- package/dist/providers/stripe/tools.js +77 -0
- package/dist/providers/tithely/api.js +531 -0
- package/dist/providers/tithely/index.d.ts +19 -0
- package/dist/providers/tithely/index.js +86 -965
- package/dist/providers/tithely/skill.generated.js +2 -5
- package/dist/providers/tithely/tools.js +426 -0
- package/dist/providers/vercel/api.js +551 -0
- package/dist/providers/vercel/index.d.ts +11 -25
- package/dist/providers/vercel/index.js +67 -261
- package/dist/providers/vercel/lib/config.d.ts +2 -0
- package/dist/providers/vercel/lib/config.js +2 -0
- package/dist/providers/vercel/lib/index.js +117 -0
- package/dist/providers/vercel/lib/logs.js +100 -0
- package/dist/providers/vercel/lib/pin.js +270 -0
- package/dist/providers/vercel/openapi.generated.js +398 -376
- package/dist/providers/vercel/{value-safety.js → safety.js} +261 -42
- package/dist/providers/vercel/skill.generated.js +2 -7
- package/dist/providers/vercel/tools.js +642 -0
- package/dist/redaction-identity.js +47 -0
- package/dist/redaction-marker.js +125 -0
- package/dist/registry.d.ts +30 -28
- package/dist/registry.js +446 -413
- package/dist/routes/access-tokens.js +1 -1
- package/dist/routes/actor-labels.js +1 -1
- package/dist/routes/connect.js +1 -1
- package/dist/routes/dispatch.js +103 -0
- package/dist/routes/mcp.js +170 -79
- package/dist/routes/oauth.js +3 -1
- package/dist/routes/operator.js +2 -2
- package/dist/routes/shared.d.ts +5 -4
- package/dist/routes/shared.js +244 -177
- package/dist/routes/skills.js +10 -8
- package/dist/routes/ui-config.js +27 -3
- package/dist/routes/ui-data.js +29 -22
- package/dist/routes/ui.js +1 -1
- package/dist/runtime/call-admission.js +0 -26
- package/dist/runtime/call-entry.js +30 -0
- package/dist/runtime/call.js +556 -0
- package/dist/runtime/connector-scope.js +7 -0
- package/dist/runtime/credential-probe.js +34 -0
- package/dist/runtime/executor.js +40 -0
- package/dist/runtime/native-storage.js +63 -0
- package/dist/runtime/registry.js +27 -0
- package/dist/runtime/request-scope.js +72 -0
- package/dist/runtime/run.js +15 -7
- package/dist/runtime/shared-read.js +34 -5
- package/dist/runtime/storage.js +34 -21
- package/dist/sent-secrets.d.ts +194 -37
- package/dist/sent-secrets.js +1743 -340
- package/dist/server.js +5 -56
- package/dist/skills.js +330 -224
- package/dist/sqlite.js +15 -14
- package/dist/storage/d1-copy.js +255 -0
- package/dist/storage/d1-driver.js +15 -0
- package/dist/storage/keys.js +28 -0
- package/dist/storage/sql-driver.js +88 -0
- package/dist/storage/sql-native.js +544 -0
- package/dist/storage/sql-schema.d.ts +6 -0
- package/dist/storage/sql-schema.js +15 -0
- package/dist/storage/sql.d.ts +14 -20
- package/dist/storage/sql.js +29 -535
- package/dist/timeout.js +0 -26
- package/dist/tool-safety.js +20 -10
- package/dist/types.d.ts +11 -99
- package/dist/upward.js +3 -0
- package/dist/usage-guide.js +3 -1
- package/dist/validate.d.ts +4 -2
- package/dist/validate.js +86 -9
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker.js +312 -292
- package/dist/workspace-subject.js +5 -1
- package/dist/write-outcome.js +454 -34
- package/documentation/README.md +27 -7
- package/documentation/architecture.md +2550 -186
- package/documentation/auth.md +821 -98
- package/documentation/code-mode.md +56 -21
- package/documentation/deploying.md +164 -20
- package/documentation/hosted-mcp-migration.md +460 -0
- package/documentation/integrating.md +144 -105
- package/documentation/meta-tools.md +411 -34
- package/documentation/operating.md +28 -4
- package/documentation/operator-tests.md +11 -2
- package/documentation/operator-ui.md +103 -33
- package/documentation/provider-auth-migration.md +38 -63
- package/documentation/provider-migration-0.29.md +10 -5
- package/documentation/provider-migration-0.35.md +975 -0
- package/documentation/providers.md +965 -0
- package/examples/worker/AGENTS.md +23 -9
- package/examples/worker/README.md +254 -135
- package/examples/worker/alchemy.run.ts +116 -0
- package/examples/worker/gitignore +10 -0
- package/examples/worker/src/connecta.config.ts +23 -21
- package/examples/worker/wrangler.jsonc +14 -5
- package/guides/connecting-agents.md +157 -0
- package/guides/how-it-works.md +156 -0
- package/guides/safety-and-trust.md +153 -0
- package/package.json +27 -42
- package/templates/node/.env.example +3 -0
- package/templates/node/README.md +22 -2
- package/templates/node/docker-compose.yml +1 -0
- package/templates/node/package.json +3 -2
- package/templates/node/src/connecta.config.ts +8 -0
- package/dist/catalog-drift.d.ts +0 -134
- package/dist/catalog-drift.js +0 -493
- package/dist/providers/_shared/request-token.js +0 -83
- package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
- package/dist/providers/_shared/rest/tools.d.ts +0 -141
- package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
- package/dist/providers/basecamp/index.d.ts +0 -43
- package/dist/providers/basecamp/index.js +0 -997
- package/dist/providers/basecamp/skill.generated.js +0 -9
- package/dist/providers/cloudflare/rest.d.ts +0 -37
- package/dist/providers/cloudflare/rest.js +0 -1078
- package/dist/providers/github/hosted.js +0 -218
- package/dist/providers/github/rest.js +0 -321
- package/dist/providers/infisical/index.d.ts +0 -7
- package/dist/providers/infisical/index.js +0 -713
- package/dist/providers/infisical/skill.generated.js +0 -8
- package/dist/providers/linear/index.d.ts +0 -55
- package/dist/providers/linear/index.js +0 -352
- package/dist/providers/linear/skill.generated.js +0 -8
- package/dist/providers/mixpanel/index.d.ts +0 -57
- package/dist/providers/mixpanel/index.js +0 -468
- package/dist/providers/mixpanel/operations.js +0 -20
- package/dist/providers/mixpanel/rest.js +0 -603
- package/dist/providers/mixpanel/skill.generated.js +0 -10
- package/dist/providers/mixpanel/value-safety.js +0 -16
- package/dist/providers/notion/index.d.ts +0 -65
- package/dist/providers/notion/index.js +0 -368
- package/dist/providers/notion/openapi.generated.js +0 -75
- package/dist/providers/notion/rest.d.ts +0 -24
- package/dist/providers/notion/rest.js +0 -1226
- package/dist/providers/notion/skill.generated.js +0 -11
- package/dist/providers/notion/value-safety.js +0 -56
- package/dist/providers/revenuecat/index.d.ts +0 -49
- package/dist/providers/revenuecat/index.js +0 -557
- package/dist/providers/revenuecat/skill.generated.js +0 -11
- package/dist/providers/stripe/rest.d.ts +0 -14
- package/dist/providers/stripe/rest.js +0 -402
- package/dist/providers/vercel/rest.d.ts +0 -20
- package/dist/providers/vercel/rest.js +0 -1020
- package/dist/providers/wispr-flow/index.d.ts +0 -14
- package/dist/providers/wispr-flow/index.js +0 -117
- package/dist/providers/wispr-flow/skill.generated.js +0 -8
- /package/dist/providers/github/{key.js → lib/key.js} +0 -0
|
@@ -7,7 +7,12 @@ and credentials are the deployment operator's responsibility; use
|
|
|
7
7
|
|
|
8
8
|
## Choose the call path
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
A [native pool](./meta-tools.md#native-tool-surface) lists individual operations.
|
|
11
|
+
Use your host's tool search, call a known operation directly, and follow its
|
|
12
|
+
repair or authorization handoff. Use `execute_code` for combined work when
|
|
13
|
+
listed; without code, page results through the listed `read_result` tool.
|
|
14
|
+
|
|
15
|
+
Meta endpoints expose six top-level tools. Read [the tool table](./meta-tools.md#the-six-tools)
|
|
11
16
|
for exact arguments and result envelopes. Follow the endpoint's supplied
|
|
12
17
|
instructions and `skills` usage guide for deployment-specific context.
|
|
13
18
|
|
|
@@ -24,7 +29,7 @@ descriptions. On a writable endpoint, programs and `call_destructive_tool` may
|
|
|
24
29
|
write within the caller's grants, and `execute_code` is annotated as a write;
|
|
25
30
|
the client controls approval. On a read-only endpoint, search and describe omit
|
|
26
31
|
write tools and every write call is refused with `read_only_endpoint`, even one
|
|
27
|
-
a connector guide names; tell the user rather than looking for another route. Never change pool, identity, or `readOnly` to work
|
|
32
|
+
a connector guide names; tell the user rather than looking for another route. A connector marked Read-only serves only read-classified tools even on a writable endpoint; writes and unclassified tools are omitted from search/describe and refused on every call path. Endpoint and connector restrictions compose by OR. Never change pool, identity, or `readOnly` to work
|
|
28
33
|
around a refusal.
|
|
29
34
|
[Routing between the call surfaces](./meta-tools.md#routing-between-the-call-surfaces)
|
|
30
35
|
owns the full decision rules.
|
|
@@ -100,6 +105,12 @@ values. Treat it as evidence, not a provider contract; handle missing fields.
|
|
|
100
105
|
|
|
101
106
|
## Large results and resources
|
|
102
107
|
|
|
108
|
+
MCP request bodies default to a 4 MiB limit on every endpoint. Deployment code
|
|
109
|
+
can set `admission.requests.maxBodyBytes`; `describeConfig()` reports its value
|
|
110
|
+
and source. An oversized body returns 413 before tool dispatch. See
|
|
111
|
+
[request admission and body limits](./architecture.md#admission-in-two-places)
|
|
112
|
+
for Node's separate pre-auth buffer and the listen-classification bound.
|
|
113
|
+
|
|
103
114
|
Direct calls may return a preview and a result handle. Page the handle through
|
|
104
115
|
`connecta.result` in a program using the returned offset and byte limits, or
|
|
105
116
|
reduce the data in the original program. Handles are short-lived and bound to
|
|
@@ -122,10 +133,23 @@ and status do not begin consent on their own. Follow
|
|
|
122
133
|
[argument recovery](./meta-tools.md#argument-recovery) for the specific failure.
|
|
123
134
|
|
|
124
135
|
A dispatched write is never automatically replayed. An ambiguous timeout may
|
|
125
|
-
mean the provider applied it; inspect state
|
|
126
|
-
before
|
|
136
|
+
mean the provider applied it; inspect state to check whether it took effect, or
|
|
137
|
+
ask for the missing decision, before any fresh call. [Retry semantics](./code-mode.md#retry-semantics) and
|
|
127
138
|
[writes](./code-mode.md#writes) describe program outcomes and write accounting.
|
|
128
139
|
|
|
140
|
+
## Read failure records
|
|
141
|
+
|
|
142
|
+
Failure logs and connector status report checked facts without downstream
|
|
143
|
+
error text. A failure record can include `httpStatus`, an integer from 100
|
|
144
|
+
through 599; status messages can include `with HTTP <status>`. Recorded status
|
|
145
|
+
is retained when a write's 401 had no mapped authorization verdict, when a Google write reports
|
|
146
|
+
an unknown outcome, and when a response exceeds the connector's byte ceiling.
|
|
147
|
+
If no answer was recorded, the field is absent. The status alone does not
|
|
148
|
+
prove whether a write took effect or permit replaying it.
|
|
149
|
+
|
|
150
|
+
For example, a `crm` write answered HTTP 503 can log `httpStatus: 503` while
|
|
151
|
+
its outcome stays unknown. Inspect the target before repeating the call.
|
|
152
|
+
|
|
129
153
|
## Contributor reference
|
|
130
154
|
|
|
131
155
|
### Implementation and evidence
|
|
@@ -61,7 +61,7 @@ pool member, who gets the member page, with no tabs, on every path.
|
|
|
61
61
|
| Activity | No calls | Activity | Member page, no activity request |
|
|
62
62
|
| Settings | Snapshot without connectors or pools | Config | Member page, no configuration facts |
|
|
63
63
|
|
|
64
|
-
Populated Overview has a failing connector,
|
|
64
|
+
Populated Overview has a failing connector, auth and credential problems
|
|
65
65
|
and a tokenless agent in its attention list. Populated Endpoints shows who can use each endpoint; populated Tokens has one
|
|
66
66
|
agent per slot state, with pools and last seen.
|
|
67
67
|
|
|
@@ -102,7 +102,13 @@ empty catalog counts zero.
|
|
|
102
102
|
`test/browser/operator-overview.spec.ts` covers the Overview on the frozen v2
|
|
103
103
|
fixtures: the status pill, stat labels and numbers, map columns, dashed read-only grants and dotted
|
|
104
104
|
tokenless access; attention rows with their fix links, a copied fix prompt equal
|
|
105
|
-
to the catalogue's text
|
|
105
|
+
to the catalogue's text, config order through a staggered full refresh, prototype-named
|
|
106
|
+
connector IDs during loading and failure, and stable single-card height when
|
|
107
|
+
its catalog empties. A single long-id, long-title card at 320, 390, 1024 and
|
|
108
|
+
1440px covers all eight status labels, both auth scopes, with and without the
|
|
109
|
+
Read-only badge, tools and an action. Text rows stay single-line, full text
|
|
110
|
+
remains accessible, links stay focusable, and the detail header and Overview
|
|
111
|
+
attention rows retain their height; the hover
|
|
106
112
|
sentence replacing the legend, and dimming; keyboard focus in column order with each node's sentence
|
|
107
113
|
as its accessible name, Enter opening an endpoint's row and a connector; the
|
|
108
114
|
narrow list, whose caller chips link where their map nodes do; an empty deployment; and a member at `/` getting the member page
|
|
@@ -169,6 +175,9 @@ updates run only through `workflow_dispatch`.
|
|
|
169
175
|
On a matching Linux runner, `pnpm install --frozen-lockfile`, install Chromium with the command above,
|
|
170
176
|
then run `pnpm run test:browser:snapshots`. The normal command is
|
|
171
177
|
`pnpm run test:browser`. Missing baselines fail CI; retries cannot bless them.
|
|
178
|
+
Visual comparisons run in their own Playwright project without retries, so a
|
|
179
|
+
mismatch fails on its first attempt. When any attempt fails, CI uploads
|
|
180
|
+
the HTML report, actual/expected/diff images and traces as `playwright-report`.
|
|
172
181
|
Set `OPERATOR_VISUAL_INSPECT=1` to retain local screenshots under ignored
|
|
173
182
|
`test-results/` for inspection, without updating committed baselines.
|
|
174
183
|
|
|
@@ -42,15 +42,15 @@ No select menu displays configuration. Copy is short labels; a failure names
|
|
|
42
42
|
what to do next in one or two sentences and never quotes a route's or
|
|
43
43
|
downstream's text.
|
|
44
44
|
|
|
45
|
-
| Path | Page
|
|
46
|
-
| ------------------ |
|
|
47
|
-
| `/` | Overview (a member gets the member page)
|
|
48
|
-
| `/endpoints` | Endpoints; `#mcp/<pool>` opens that row
|
|
49
|
-
| `/connectors` | Connectors list; `?view=matrix` for the matrix
|
|
50
|
-
| `/connectors/<id>` | Connector detail; `#tools`, `#connection`, `#activity`
|
|
51
|
-
| `/activity` | Activity
|
|
52
|
-
| `/tokens` | Tokens, when token management is open
|
|
53
|
-
| `/settings` | Settings
|
|
45
|
+
| Path | Page | Who |
|
|
46
|
+
| ------------------ | ------------------------------------------------------------ | ---------- |
|
|
47
|
+
| `/` | Overview (a member gets the member page) | Maintainer |
|
|
48
|
+
| `/endpoints` | Endpoints; `#mcp/<pool>` opens that row | Maintainer |
|
|
49
|
+
| `/connectors` | Connectors list; `?view=matrix` for the matrix | Maintainer |
|
|
50
|
+
| `/connectors/<id>` | Connector detail; `#tools`, `#connection`, `#activity` | Maintainer |
|
|
51
|
+
| `/activity` | Activity | Maintainer |
|
|
52
|
+
| `/tokens` | Tokens, when agents are declared or token management is open | Maintainer |
|
|
53
|
+
| `/settings` | Settings | Maintainer |
|
|
54
54
|
|
|
55
55
|
`/access` redirects to `/endpoints`, `/tools` to `/connectors`, and `/config`
|
|
56
56
|
to `/settings`, replacing the history entry. Connector hashes `#config`,
|
|
@@ -68,15 +68,16 @@ parameters such as signed handoffs. A pool member sees the
|
|
|
68
68
|
marks; a tokenless agent's mark is hollow). A dot legend counts each segment
|
|
69
69
|
kind; the first two tiles link to their pages. At 760px and below the tiles
|
|
70
70
|
sit two up, with People · Agents as one row across both.
|
|
71
|
-
- **Needs attention.** One row per connector whose health is not ok,
|
|
72
|
-
|
|
71
|
+
- **Needs attention.** One row per connector whose health is not ok, in
|
|
72
|
+
configuration order, then one per agent in a pool whose token is missing or revoked. A
|
|
73
73
|
row names the problem ("crm needs authorization"), the endpoints it
|
|
74
74
|
affects ("Affects /mcp and /mcp/team") or the agent URL it can't connect at,
|
|
75
|
-
and links to the existing fix: Connect, Replace key
|
|
75
|
+
and links to the existing fix: Connect, Replace key or Inspect on
|
|
76
76
|
the connector's Connection tab, or Issue token on Tokens. A row with a
|
|
77
|
-
problem code
|
|
77
|
+
problem code also has Copy fix prompt. A problem keeps its row and
|
|
78
78
|
prompt when the connector's detail read failed, prefixed "Details didn't
|
|
79
|
-
load".
|
|
79
|
+
load". Surviving connector rows retain their order as individual reads settle,
|
|
80
|
+
even when their severity changes. With no rows it reads "All clear".
|
|
80
81
|
- **Who reaches what.** The [connection map](#connection-map).
|
|
81
82
|
|
|
82
83
|
### Connection map
|
|
@@ -108,6 +109,10 @@ instead of "0 tools".
|
|
|
108
109
|
|
|
109
110
|
### Endpoints
|
|
110
111
|
|
|
112
|
+
Pool endpoint rows show the effective surface (`meta` or `native`) and whether
|
|
113
|
+
code is on. These are read-only facts from deployment configuration; change
|
|
114
|
+
`surface` and `executeCode` in deployment code.
|
|
115
|
+
|
|
111
116
|
One row each for `/mcp` and every pool: the path, a read-only pill on a
|
|
112
117
|
read-only endpoint, a copyable URL, who can use it, its connectors as colored
|
|
113
118
|
monograms (four, then "+N"), its tool count over a read and write bar, and a
|
|
@@ -134,15 +139,37 @@ cells for the root), guarded grants' live verdicts, and read-only mode.
|
|
|
134
139
|
### Connectors
|
|
135
140
|
|
|
136
141
|
One card per connector: title and id, one status pill, a Shared or Per person
|
|
137
|
-
badge, its tool count over a read and write bar, and when it was last called.
|
|
142
|
+
badge, a Read-only badge when connector `readOnly` is enabled, its tool count over a read and write bar, and when it was last called.
|
|
138
143
|
All, Needs attention and Healthy filter the cards, with counts, beside a
|
|
139
144
|
search field. A connector that is not fine adds one action (Connect, Replace
|
|
140
|
-
key
|
|
145
|
+
key or Inspect) that opens its Connection tab.
|
|
141
146
|
|
|
142
147
|
Every view shares one verdict per connector: the server's problem code first
|
|
143
148
|
(a failed catalog reads "Catalog failed", never "Connected"), then a failed
|
|
144
|
-
detail read ("Couldn't load", with no fix prompt), then a non-ok status
|
|
145
|
-
|
|
149
|
+
detail read ("Couldn't load", with no fix prompt), then a non-ok status.
|
|
150
|
+
Catalog drift is informational: it stays in the connector's Connection panel
|
|
151
|
+
with its fix prompt and in Activity, and never affects health or attention.
|
|
152
|
+
|
|
153
|
+
Health does not bounce while details load. A connector whose detail read is
|
|
154
|
+
in flight (its `/ui/data` row is `loading`, during sign-in, Retry or a
|
|
155
|
+
connector's Refresh) keeps the verdict the page last showed for it on every
|
|
156
|
+
view (cards, filter counts, the Overview headline, bar, attention list and map,
|
|
157
|
+
Endpoints and the connector page) until that read settles, never "Loading
|
|
158
|
+
details" or an in-between verdict. A connector with no earlier verdict shows
|
|
159
|
+
its contract status. Each connector changes only when its own read settles,
|
|
160
|
+
so one slow read never holds back the others and no row moves for an
|
|
161
|
+
in-between verdict. A new signed-in identity starts fresh. Cards reserve the action footer
|
|
162
|
+
even when no action is needed and the tool bar row even when the catalog is
|
|
163
|
+
empty. Each card header keeps its title, status and id/scope badges on single
|
|
164
|
+
lines; long text truncates with ellipsis and retains its full value on hover
|
|
165
|
+
and for screen readers. The connector detail header and Overview attention
|
|
166
|
+
text follow the same rule, and truncated links remain keyboard focusable.
|
|
167
|
+
Wider status labels never change the card height.
|
|
168
|
+
|
|
169
|
+
The top bar uses an icon-only Search button (⌘K or Ctrl+K opens the palette).
|
|
170
|
+
Deployment names stay on one line with ellipsis and their full name on hover;
|
|
171
|
+
a name matching the product label is omitted. Tabs scroll horizontally when
|
|
172
|
+
needed, moving to a second row on narrow screens.
|
|
146
173
|
|
|
147
174
|
A List / Matrix toggle (`?view=matrix`) switches to a table of connectors by
|
|
148
175
|
endpoint, `/mcp` first. A row header is the connector's monogram and name, plus
|
|
@@ -169,7 +196,7 @@ tabs:
|
|
|
169
196
|
- **Connection.** An Authentication card (mode, OAuth client mechanism, who
|
|
170
197
|
manages it, OAuth actions, and the credential card with masked last four,
|
|
171
198
|
field states, and Replace, Test and Remove); a Diagnostics card of tiles
|
|
172
|
-
(catalog age
|
|
199
|
+
(catalog age and last call) with a fix prompt beside each
|
|
173
200
|
problem; and a Configuration card. Its badges name the kind (Remote MCP,
|
|
174
201
|
HTTP API or Custom), provider, auth scope, endpoint host and usage guide.
|
|
175
202
|
The auth row names the mode and draws each auth fact as a mono badge
|
|
@@ -181,6 +208,13 @@ tabs:
|
|
|
181
208
|
- **Activity.** The [Activity](#activity) page for that connector, without
|
|
182
209
|
connector chips or monograms.
|
|
183
210
|
|
|
211
|
+
#### Read catalog changes
|
|
212
|
+
|
|
213
|
+
Catalog refresh activity reports added, removed, and changed tool counts within
|
|
214
|
+
its identity partition. The UI no longer compares tools with a release-reviewed
|
|
215
|
+
manifest or shows schema-pin coverage. Check live annotations and deployment
|
|
216
|
+
classification in the catalog when reviewing exposure.
|
|
217
|
+
|
|
184
218
|
### Settings
|
|
185
219
|
|
|
186
220
|
The configuration snapshot as tiles, tagged "Defined in code", with no
|
|
@@ -213,9 +247,13 @@ editing controls. An empty section is not drawn.
|
|
|
213
247
|
|
|
214
248
|
### Tokens
|
|
215
249
|
|
|
216
|
-
One row per agent declared in code,
|
|
217
|
-
mark and name,
|
|
218
|
-
|
|
250
|
+
One row per agent declared in code, including OIDC-only agents when the token
|
|
251
|
+
module is absent: agent mark and name, supported credentials (Agent token,
|
|
252
|
+
Vercel OIDC, or both), pools as chips, a token state pill (Not configured, No
|
|
253
|
+
token, Issued or Revoked), the issue or revoke date, and last seen ("never"
|
|
254
|
+
when unknown). Not configured means the managed token module is absent and
|
|
255
|
+
has no token controls; No token means that module has an unissued slot.
|
|
256
|
+
An OIDC binding works independently of the token's state. The heading note
|
|
219
257
|
reads "Declared in code"; nothing creates or renames an agent. Narrow screens
|
|
220
258
|
stack each row into a card.
|
|
221
259
|
|
|
@@ -264,13 +302,13 @@ red when the calls span more than a minute.
|
|
|
264
302
|
|
|
265
303
|
The top bar is one row: the mark, branding and deployment name, the section
|
|
266
304
|
links (Overview, Endpoints, Connectors, Activity, Tokens, Settings), then
|
|
267
|
-
Search (the command palette, also ⌘K or Ctrl+K), Appearance, and Account
|
|
305
|
+
icon-only Search (the command palette, also ⌘K or Ctrl+K), Appearance, and Account
|
|
268
306
|
(the signed-in account with Sign out or Change token). The mark is connecta's
|
|
269
307
|
drawn "C" only when no product name, owner or favicon is configured; with
|
|
270
308
|
`branding.favicon.svg` it is that SVG; otherwise there is none. The sign-in
|
|
271
309
|
gate shows the same mark above "Sign in". Below 820px the section links move
|
|
272
310
|
to a second row that scrolls sideways and keeps the current section in view,
|
|
273
|
-
|
|
311
|
+
with Search remaining an icon. A member's top bar has only branding and
|
|
274
312
|
Account. The command palette searches visible pages, connectors and tools,
|
|
275
313
|
opening connector results on Tools.
|
|
276
314
|
|
|
@@ -365,18 +403,36 @@ The maintainer view carries:
|
|
|
365
403
|
code or credential material.
|
|
366
404
|
- `root`: plain `/mcp`, its `readOnly`, and its `maintainers`, people only.
|
|
367
405
|
- `pools`: every declared pool with `humanPath` (`/mcp/<name>`), `agentPath`
|
|
368
|
-
(`/agent/<name>`), `readOnly`, `
|
|
406
|
+
(`/agent/<name>`), `readOnly`, effective `surface` (`meta` or `native`),
|
|
407
|
+
`executeCode` (whether code is enabled), `owner` (the Workspace address its agents act
|
|
369
408
|
as), its declared `tools` (never intersected; no `requireReadOnly` is ever
|
|
370
409
|
true), and its `members`, agents as `{ kind: "agent", name }`. Every listed
|
|
371
410
|
person carries a `label` from the same directory lookup activity actor
|
|
372
411
|
labels use, on an interactive read only, and `null` without a directory
|
|
373
412
|
(Cloudflare Access) or an entry. An open deployment's anonymous maintainer
|
|
374
413
|
reads every `owner` as `null`.
|
|
375
|
-
- `agents`: every agent declared in code,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
414
|
+
- `agents`: every agent declared in code, in deployment order, with its pools
|
|
415
|
+
and `credentialTypes` (`access_token`, `vercel_oidc`, or both). These are
|
|
416
|
+
immutable deployment descriptions: the token kind requires the managed
|
|
417
|
+
access-token module, and OIDC requires that agent's own workload binding.
|
|
418
|
+
They grant nothing. `token` is `null` when the token module is absent;
|
|
419
|
+
otherwise its slot (`state`, `issuedAt`, `revokedAt`, `revision`) is exactly
|
|
420
|
+
what `GET /ui/access-tokens` lists, including an unissued `state: "none"`.
|
|
421
|
+
A failed or incomplete slot read answers 503 rather than drop agents.
|
|
422
|
+
`lastSeenAt` is the newest sampled successful agent-endpoint admission or
|
|
423
|
+
visible historical activity timestamp, or `null` when unknown or withheld.
|
|
424
|
+
Admission means credential verification and membership in that declared pool
|
|
425
|
+
succeeded; it does not promise a completed call. Invalid credentials,
|
|
426
|
+
refused/undeclared pools and human routes record nothing. The observation
|
|
427
|
+
stores only the declared name and timestamp, independently of activity.
|
|
428
|
+
Admission observations sample at most once per minute: a valid stored time
|
|
429
|
+
less than 60 seconds behind the candidate skips the write, and an older
|
|
430
|
+
candidate never moves the time backwards. This is minute-level admission
|
|
431
|
+
evidence, not an exact timestamp for every request. Each observation uses at
|
|
432
|
+
most two atomic storage attempts under the smaller of the configured probe
|
|
433
|
+
deadline and 500 ms, within the request lifetime. Failure, timeout or
|
|
434
|
+
contention can lose a sample; a later eligible admission can try again.
|
|
435
|
+
Observation never refuses admission or retries MCP or tool work.
|
|
380
436
|
- `matrix`: a cell per connector for plain `/mcp` (`pool: null`) and for each
|
|
381
437
|
pool that serves it, with that endpoint's tool names or `"all"` and
|
|
382
438
|
`runsAs`. A Workspace connector with a subject mapping is
|
|
@@ -400,10 +456,12 @@ The maintainer view carries:
|
|
|
400
456
|
mechanism when known. Static and unobserved catalogs have a null age;
|
|
401
457
|
persisted catalogs retain their original fetch time.
|
|
402
458
|
- `live.activity`: available, unconfigured, forbidden, or unavailable history.
|
|
403
|
-
|
|
459
|
+
Historical last-call and last-seen lookups need the activity permission and read gate,
|
|
404
460
|
scan up to 1,000 recent rows, filter connector/tool grants, restrict personal
|
|
405
461
|
connectors to the caller's activity identity, and copy a validated timestamp
|
|
406
|
-
and outcome only.
|
|
462
|
+
and outcome only. Admission last-seen reads require a maintainer and honor
|
|
463
|
+
the configured activity read gate, including when history is unavailable;
|
|
464
|
+
they work with no activity module. A null means unknown or withheld.
|
|
407
465
|
- `connectors: []`.
|
|
408
466
|
|
|
409
467
|
The member view is exactly that member's projection: `config`,
|
|
@@ -497,7 +555,14 @@ duplicate summary, token, config, detail or body reads. The passive retry schedu
|
|
|
497
555
|
stays bounded and does not reset its budget on a deadline. Retry remains available
|
|
498
556
|
during recovery configuration loading and supersedes and aborts the old cycle;
|
|
499
557
|
identity changes, navigation and connector-page unmount also cancel it. Navigation
|
|
500
|
-
that cancels pending data schedules a bounded reread for the destination.
|
|
558
|
+
that cancels pending data schedules a bounded reread for the destination. A scoped OAuth poll publishes only its connector's detail and live row. It does
|
|
559
|
+
not supersede a pending full admission or catalog/auth cycle, release its
|
|
560
|
+
recovery guard, or clear its deadline. That full cycle still publishes other
|
|
561
|
+
connectors as they settle and decides recovery, retaining the newer polled row
|
|
562
|
+
even when its summary was pending or its deadline exposed Retry. Only a newer
|
|
563
|
+
full cycle, mutation, identity change, or sign-out fences older work. Owed
|
|
564
|
+
publication neither spends nor resets the failed-read retry budget and adds no
|
|
565
|
+
timer. Failed reads retry after
|
|
501
566
|
2, 2, 4, and 8 seconds. Refusals preserve the throttle and retry budget. After
|
|
502
567
|
those four automatic retries, a focus return can request one more read after
|
|
503
568
|
the eight-second backoff, without replenishing the automatic budget. Retry
|
|
@@ -554,6 +619,11 @@ names, descriptions or schemas enter the event. Private catalog changes require
|
|
|
554
619
|
a matching principal owner even when the connector uses shared auth. Empty credential declarations
|
|
555
620
|
report `credential_required` before running a connector status or catalog probe.
|
|
556
621
|
|
|
622
|
+
Activity label resolvers receive an optional `AbortSignal`. Pass it to user-directory
|
|
623
|
+
fetches and stop work when it aborts: the reader has left or the label lookup
|
|
624
|
+
budget has expired. Clerk label lookups follow the same lifetime and discard
|
|
625
|
+
late answers after cancellation.
|
|
626
|
+
|
|
557
627
|
## Contributor reference
|
|
558
628
|
|
|
559
629
|
### Source and tests
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Provider auth migration
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Hosted selections described in this historical migration are now removed.
|
|
4
|
+
For Stripe, Vercel, Cloudflare, Notion, Mixpanel, and GitHub hosted connections,
|
|
5
|
+
use the [current hosted MCP migration guide](./hosted-mcp-migration.md).
|
|
6
|
+
The API migrations below remain applicable.
|
|
7
|
+
|
|
8
|
+
Use this upgrade guide when moving a Stripe, Vercel, or Cloudflare
|
|
4
9
|
deployment from 0.30 to 0.31, where `auth` selects each provider's
|
|
5
10
|
implementation.
|
|
6
11
|
[Deployment upgrades](./deploying.md#upgrade-an-existing-deployment) cover other
|
|
@@ -13,6 +18,31 @@ uses one implementation: configure two ids for both.
|
|
|
13
18
|
|
|
14
19
|
## Stripe
|
|
15
20
|
|
|
21
|
+
For current API-key setup, use [Maintained provider setup](./providers.md#stripe).
|
|
22
|
+
For the 0.35 argument and paging changes, use [Stripe surface migration](./provider-migration-0.35.md#stripe).
|
|
23
|
+
|
|
24
|
+
## Choose OAuth or an API key
|
|
25
|
+
|
|
26
|
+
Import `stripe` from `@zackbart/connecta/providers/stripe`. Choose one of two setup paths:
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
// OAuth: Stripe's hosted MCP. Authorize the connection with Stripe.
|
|
30
|
+
stripe("billing", { purpose: "Payments", auth: { type: "oauth" } });
|
|
31
|
+
stripe("billing", { purpose: "Revenue reports", auth: { type: "oauth" }, readOnly: true });
|
|
32
|
+
|
|
33
|
+
// API key: Connecta's REST connector. Paste the key into this connection in the operator UI.
|
|
34
|
+
stripe("billing", { purpose: "Payments", auth: { type: "apiKey" }, mode: "production" });
|
|
35
|
+
stripe("billing", { purpose: "Revenue reports", auth: { type: "apiKey" }, mode: "production", readOnly: true });
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For an API key, set `mode` to `"production"` or `"sandbox"` to match the key.
|
|
39
|
+
Use a secret (`sk_`) or restricted (`rk_`) key. For read-only access, prefer a
|
|
40
|
+
restricted `rk_` key configured with only read permissions: Stripe enforces
|
|
41
|
+
those permissions too. Connecta's `readOnly: true` omits non-read tools and
|
|
42
|
+
refuses their calls on every endpoint. Omit it for the default writable connector;
|
|
43
|
+
endpoint restrictions still apply. OAuth needs no `mode` and can reach both live
|
|
44
|
+
and sandbox accounts through Stripe's account selectors.
|
|
45
|
+
|
|
16
46
|
Stripe's hosted MCP server stops accepting secret keys and untagged
|
|
17
47
|
restricted keys on 2026-10-31; Stripe still documents agent-tagged restricted
|
|
18
48
|
keys for it. Connecta's hosted Stripe connection is OAuth only either way, and
|
|
@@ -62,7 +92,8 @@ or a generated one as `Idempotency-Key` and return it (DELETE sends none).
|
|
|
62
92
|
Caller-supplied keys may contain up to 255 characters. An ambiguous POST write
|
|
63
93
|
also returns the key in `uncertainCall.recovery.idempotencyKey`, including when
|
|
64
94
|
the call deadline interrupts it. See [argument recovery](./meta-tools.md#argument-recovery)
|
|
65
|
-
before retrying
|
|
95
|
+
before retrying: a custom connector that wraps or composes Stripe calls gets
|
|
96
|
+
the key as a diagnostic only, never advice to reuse it.
|
|
66
97
|
Every request, v1 and v2, sends `Stripe-Version: 2026-09-30.endive`, the
|
|
67
98
|
version of the pinned index, whatever the account's default API version, so
|
|
68
99
|
response shapes and accepted parameters follow that version. Check fields
|
|
@@ -78,56 +109,9 @@ connector need an OAuth connector beside it. Read the connector runtime guide wi
|
|
|
78
109
|
|
|
79
110
|
## Notion
|
|
80
111
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
```ts
|
|
85
|
-
connectors: [
|
|
86
|
-
notion("notion", { purpose: "Workspace content as the signed-in user", auth: { type: "oauth" } }),
|
|
87
|
-
notion("notion_bot", { purpose: "Internal integration content", auth: { type: "token" } }),
|
|
88
|
-
]
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
| 0.30 configuration | Now |
|
|
92
|
-
| ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
93
|
-
| No `surface`, or `surface: "mcp"` | `auth: { type: "oauth" }`. Same endpoint, reviewed catalog, grant, and optional `callAdmission`. |
|
|
94
|
-
| `surface: "api"` | `auth: { type: "token" }`. The integration token stored for the same connector id carries over; run its Test action. |
|
|
95
|
-
| `credentialLabel` or `defaultPageSize` | Token only, as before. Under OAuth they are refused by name at construction. |
|
|
96
|
-
| `integration_search`, `_get_page`, `_get_page_content`, `_get_data_source_schema`, `_query_data_source`, `_create_page`, `_append_blocks` | Unchanged names and contracts. `integration_append_blocks` also takes `checklist`. |
|
|
97
|
-
| `integration_get_database` | `notion_api_read` `GET /v1/databases/{database_id}`. |
|
|
98
|
-
| `integration_get_page_property` | `notion_api_read` `GET /v1/pages/{page_id}/properties/{property_id}`; `truncated_properties` names it. |
|
|
99
|
-
| `integration_list_users`, `integration_get_self` | `notion_api_read` `GET /v1/users` or `GET /v1/users/me`. |
|
|
100
|
-
| `integration_list_comments`, `integration_add_comment` | `notion_api_read` `GET /v1/comments`; `notion_api_write` `POST /v1/comments`. |
|
|
101
|
-
| `integration_update_page_properties`, `integration_trash_page` | `notion_api_write` `PATCH /v1/pages/{page_id}` with `properties`, or `in_trash` to trash or restore. |
|
|
102
|
-
|
|
103
|
-
Both auth variants accept optional `callAdmission`. On a token connector it
|
|
104
|
-
replaces the whole default policy of 180 calls per minute and 3 concurrent
|
|
105
|
-
per runtime. Malformed policies throw at construction. Notion's
|
|
106
|
-
[request limits](https://developers.notion.com/reference/request-limits) allow
|
|
107
|
-
600 requests per minute per connection on Business and Enterprise and 180 on
|
|
108
|
-
other plans, with a separate workspace-wide limit shared by all connections.
|
|
109
|
-
Account for other runtimes and tools that make multiple HTTP requests when
|
|
110
|
-
choosing an override.
|
|
111
|
-
|
|
112
|
-
The token connector gains Connecta's generic REST tools over Notion's pinned
|
|
113
|
-
API index (`notion_api_search`, `notion_api_details`, `notion_api_read`,
|
|
114
|
-
`notion_api_write`), so every public operation is reachable with the bot's
|
|
115
|
-
token: views, page moves and Markdown, meeting notes, custom agents and
|
|
116
|
-
sessions, file uploads by `external_url`, and data source changes. Every call
|
|
117
|
-
is checked against the index before it is sent, and results arrive as
|
|
118
|
-
`{ status, data, page? }`. The read-only POST queries (search, data source,
|
|
119
|
-
meeting notes, agents, sessions, and session events) use `notion_api_read`;
|
|
120
|
-
`page.in: "body"` says their cursor goes back in the body. Notion's OAuth token
|
|
121
|
-
endpoints and multipart file sends are refused. The 0.29 reconciliation table
|
|
122
|
-
and the `surface: "api"` complement rules no longer apply to Notion.
|
|
123
|
-
|
|
124
|
-
Lost per mode. A token connector acts as the integration bot, never as a
|
|
125
|
-
person, and has none of the hosted MCP's search across connected apps, page
|
|
126
|
-
duplication, team and skill search, attachment downloads, or page-to-skill
|
|
127
|
-
conversion. An OAuth connector acts as the user, and has none of the generic
|
|
128
|
-
REST tools or the `integration_*` projections and authoring helpers. Configure
|
|
129
|
-
both ids when a deployment needs both; a failed call is never retried on the
|
|
130
|
-
other. Read the connector runtime guide with `connecta.skill("connector:<id>")` in `execute_code` for its usage conventions.
|
|
112
|
+
The maintained Notion API provider is removed in 0.35. See the
|
|
113
|
+
[provider removal migration](./provider-migration-0.35.md#remove-infisical-notion-and-mixpanel)
|
|
114
|
+
and use generic `remoteMcp()` for the hosted server.
|
|
131
115
|
|
|
132
116
|
## Vercel
|
|
133
117
|
|
|
@@ -292,16 +276,7 @@ one; read or rotate withheld secrets in the vendor's dashboard.
|
|
|
292
276
|
Failures of credential-bearing operations keep Stripe's type, code, and
|
|
293
277
|
param but not its message. Create client-side sessions and links from your
|
|
294
278
|
own server code.
|
|
295
|
-
|
|
296
|
-
fragment of canonical Notion file links, including links embedded in
|
|
297
|
-
Markdown and async task results. External proxy URLs keep their bytes;
|
|
298
|
-
AWS and Google signing-parameter values are withheld at any host. Writes
|
|
299
|
-
carrying the plain or encoded `[redacted]` placeholder in a Notion file
|
|
300
|
-
link's own query or fragment are refused before dispatch. See the
|
|
301
|
-
connector runtime guide through `connecta.skill("connector:<id>")` in `execute_code` for recognized hosts and scanning limits. Credential-named fields,
|
|
302
|
-
including database properties named like credentials, read as
|
|
303
|
-
`"[redacted]"`. Failures of the OAuth, file upload, bot user, and agent
|
|
304
|
-
operations keep Notion's code but not its message.
|
|
279
|
+
|
|
305
280
|
- **Vercel** replaces environment values with `"[redacted]"` instead of
|
|
306
281
|
dropping the field, and withholds Vercel's error text for every reviewed
|
|
307
282
|
operation and every operation whose request takes a credential-named
|
|
@@ -319,4 +294,4 @@ one; read or rotate withheld secrets in the vendor's dashboard.
|
|
|
319
294
|
[Decision 0005](https://github.com/zackbart/connecta/blob/main/decisions/0005-auth-selects-implementation.md)
|
|
320
295
|
explains why auth selects the implementation. Maintained provider source
|
|
321
296
|
skills and review tables live under `src/providers/` in the repository;
|
|
322
|
-
`src/providers/vercel/
|
|
297
|
+
`src/providers/vercel/safety.ts` owns Vercel's reviewed table.
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
# Notion, Vercel and Cloudflare migration for 0.29
|
|
2
2
|
|
|
3
|
+
Hosted selections described in this historical migration are now removed.
|
|
4
|
+
For Stripe, Vercel, Cloudflare, Notion, Mixpanel, and GitHub hosted connections,
|
|
5
|
+
use the [current hosted MCP migration guide](./hosted-mcp-migration.md).
|
|
6
|
+
The API migrations below remain applicable.
|
|
7
|
+
|
|
3
8
|
Use this upgrade guide for an existing deployment.
|
|
4
9
|
[Deployment upgrades](./deploying.md#upgrade-an-existing-deployment) cover other
|
|
5
10
|
version changes; [integrating services](./integrating.md) covers new connectors.
|
|
6
11
|
[The agent index](./README.md) routes package maintenance separately.
|
|
7
12
|
|
|
8
|
-
This
|
|
9
|
-
|
|
13
|
+
This was the Phase 1 item 5d migration input for [Phase 5 release #709](https://github.com/zackbart/connecta/issues/709),
|
|
14
|
+
which shipped as 0.29.0.
|
|
10
15
|
Deployments that use Notion or Cloudflare must check their actual grants and
|
|
11
16
|
connector ids in deployment configuration before that release.
|
|
12
17
|
The provider audit establishes available auth modes, not production OAuth grants.
|
|
@@ -14,7 +19,7 @@ The provider audit establishes available auth modes, not production OAuth grants
|
|
|
14
19
|
Cloudflare's part of this guide is superseded: `cloudflare()` now selects its
|
|
15
20
|
implementation by `auth` and its key connector is complete on its own. Follow
|
|
16
21
|
the [provider auth migration](./provider-auth-migration.md#cloudflare) for
|
|
17
|
-
Cloudflare; the Cloudflare lines below record the 0.29
|
|
22
|
+
Cloudflare; the Cloudflare lines below record the transition shipped in 0.29.0 only.
|
|
18
23
|
|
|
19
24
|
All three providers now default to hosted MCP. `surface: "api"` explicitly
|
|
20
25
|
selects a REST complement and accepts only its API-specific options. The old
|
|
@@ -36,7 +41,7 @@ Notion has since moved to auth-selected implementations: `surface` is gone,
|
|
|
36
41
|
and `auth: { type: "oauth" }` or `{ type: "token" }` selects hosted MCP or the
|
|
37
42
|
REST connector. Upgrade with the
|
|
38
43
|
[provider auth migration](./provider-auth-migration.md#notion); the rest of
|
|
39
|
-
this paragraph records the 0.29
|
|
44
|
+
this paragraph records the rules shipped in 0.29.0.
|
|
40
45
|
Notion preserves headless/internal-integration capabilities. Add explicit
|
|
41
46
|
`surface: "api"` to retain that identity and migrate old REST names to
|
|
42
47
|
`integration_*`, for example `search` to `integration_search`, `create_page`
|
|
@@ -62,7 +67,7 @@ Writable endpoints may run `execute`; `readOnly` endpoints refuse it.
|
|
|
62
67
|
|
|
63
68
|
Vercel's `surface` and ownership rules were later replaced: `auth` now selects
|
|
64
69
|
the implementation. See the [provider auth migration](./provider-auth-migration.md#vercel).
|
|
65
|
-
The 0.29
|
|
70
|
+
The Vercel guidance shipped in 0.29.0 follows for history. For Vercel, authorize the owning teams in hosted OAuth, migrate discovery/logs,
|
|
66
71
|
domain listing/adding, deployment cancellation and file uploads to live MCP
|
|
67
72
|
schemas, and keep the independently authorized REST complement for value-safe
|
|
68
73
|
project environment variables (including `upsert: false` create-only writes), domain verification/removal and deployment
|