@zackbart/connecta 0.34.1 → 0.36.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 +418 -0
- package/README.md +65 -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 +2044 -1161
- 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 +751 -281
- 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 +29 -7
- package/dist/connectors/api-connector.js +145 -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/remote-mcp.d.ts +10 -30
- package/dist/connectors/remote-mcp.js +955 -563
- package/dist/d1.js +10 -243
- package/dist/derived-context.js +5 -0
- package/dist/describe-config.d.ts +3 -1
- package/dist/describe-config.js +2 -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 +227 -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 +379 -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 +218 -85
- 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 +531 -406
- 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/contract.d.ts +8 -3
- package/dist/operator-ui/generated.js +4 -4
- package/dist/operator-ui/model.d.ts +2 -3
- 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 +65 -31
- package/dist/provider.js +116 -39
- package/dist/providers/_shared/google/hatch.js +91 -0
- package/dist/providers/_shared/google/kit.js +427 -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 +6 -210
- package/dist/providers/_shared/google/workspace.js +6 -425
- package/dist/providers/_shared/rest/compact-index.js +86 -0
- package/dist/providers/_shared/rest/kit.js +146 -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/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 +1 -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 +15 -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 +5 -22
- package/dist/providers/cloudflare/index.js +79 -197
- 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 +4 -3
- package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
- 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 +801 -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 +1023 -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 +1 -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 +4 -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/quickbooks/api.js +299 -0
- package/dist/providers/quickbooks/index.d.ts +13 -0
- package/dist/providers/quickbooks/index.js +93 -0
- package/dist/providers/quickbooks/lib/query.js +118 -0
- package/dist/providers/quickbooks/lib/writes.js +168 -0
- package/dist/providers/quickbooks/safety.js +222 -0
- package/dist/providers/quickbooks/skill.generated.js +5 -0
- package/dist/providers/quickbooks/tools.js +117 -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 +733 -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 +5 -27
- package/dist/providers/stripe/index.js +74 -210
- 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 -11
- package/dist/providers/stripe/tools.js +77 -0
- package/dist/providers/tithely/api.js +531 -0
- package/dist/providers/tithely/index.d.ts +17 -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 +9 -25
- package/dist/providers/vercel/index.js +65 -260
- 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 +10 -5
- package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
- 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 +21 -15
- package/dist/registry.js +409 -376
- 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 +6 -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 +21 -20
- 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 +552 -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 +322 -223
- 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 +9 -109
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +0 -1
- 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 +28 -7
- package/documentation/architecture.md +2409 -255
- package/documentation/auth.md +867 -114
- package/documentation/code-mode.md +49 -16
- package/documentation/deploying.md +164 -20
- package/documentation/hosted-mcp-migration.md +460 -0
- package/documentation/integrating.md +129 -144
- package/documentation/meta-tools.md +409 -32
- package/documentation/operating.md +27 -3
- package/documentation/operator-tests.md +3 -0
- package/documentation/operator-ui.md +84 -48
- package/documentation/provider-auth-migration.md +16 -63
- package/documentation/provider-migration-0.29.md +10 -5
- package/documentation/provider-migration-0.35.md +975 -0
- package/documentation/providers.md +1347 -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 +30 -50
- 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 -138
- package/dist/catalog-drift.js +0 -578
- package/dist/operator-ui/agents.d.ts +0 -74
- package/dist/operator-ui/agents.js +0 -104
- package/dist/operator-ui/config-summary.js +0 -565
- package/dist/operator-ui/connection-map.js +0 -376
- package/dist/operator-ui/endpoints.js +0 -221
- package/dist/operator-ui/fix-prompts.d.ts +0 -18
- package/dist/operator-ui/fix-prompts.js +0 -87
- package/dist/operator-ui/health.js +0 -52
- package/dist/operator-ui/member-page.js +0 -97
- package/dist/operator-ui/overview.js +0 -123
- package/dist/operator-ui/setup-commands.js +0 -51
- package/dist/operator-ui/view.d.ts +0 -401
- package/dist/operator-ui/view.js +0 -705
- package/dist/providers/_shared/request-token.js +0 -83
- package/dist/providers/_shared/rest/dispatch.js +0 -41
- 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/tools.js +0 -569
- package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
- package/dist/providers/basecamp/index.d.ts +0 -45
- 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 -1097
- 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/intercom/index.d.ts +0 -24
- package/dist/providers/intercom/index.js +0 -121
- package/dist/providers/intercom/skill.generated.js +0 -8
- package/dist/providers/linear/index.d.ts +0 -55
- package/dist/providers/linear/index.js +0 -537
- package/dist/providers/linear/skill.generated.js +0 -8
- package/dist/providers/mixpanel/index.d.ts +0 -59
- package/dist/providers/mixpanel/index.js +0 -472
- 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 -67
- 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 -51
- package/dist/providers/revenuecat/index.js +0 -697
- 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
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { skill } from "./skill.generated.js";
|
|
2
|
-
import { apiConnector } from "../../connectors/api-connector.js";
|
|
3
|
-
import { reviewedCatalog } from "../../catalog-drift.js";
|
|
4
1
|
import { keys, optionsOf, variants } from "../../config-schema.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export const STRIPE_MCP_ENDPOINT = "https://mcp.stripe.com/";
|
|
2
|
+
import { defineApiProvider } from "../../http/provider.js";
|
|
3
|
+
import { authenticate, connectedAccount, MAX_RESPONSE_BYTES, READ_CAP_MS, MODE_COPY, probe, safety, stripeErrors, StripeApi, stripeIndex, stripeBinding, STRIPE_PAGES, STRIPE_VERDICTS, } from "./api.js";
|
|
4
|
+
import { stripeTools } from "./tools.js";
|
|
5
|
+
import { skill } from "./skill.generated.js";
|
|
6
|
+
import { STRIPE_API_BASE_URL } from "./lib/config.js";
|
|
7
|
+
export { STRIPE_API_BASE_URL } from "./lib/config.js";
|
|
12
8
|
/**
|
|
13
9
|
* Stripe documents no MCP-specific limit, so these transcribe the account limit
|
|
14
10
|
* every request spends: 100 requests per second live, 25 in a sandbox. OAuth
|
|
@@ -39,221 +35,89 @@ const STRIPE_ADMISSION = {
|
|
|
39
35
|
],
|
|
40
36
|
},
|
|
41
37
|
};
|
|
42
|
-
/**
|
|
43
|
-
* Re-reviewed for #343 against the hosted OAuth catalog and official MCP and
|
|
44
|
-
* analytics docs on 2026-10-19 (#703). Digests cover the complete describe
|
|
45
|
-
* schemas captured in fixtures.ts, not inferred result shapes. The documented
|
|
46
|
-
* get_stripe_account_info remains reviewed without an uncaptured digest.
|
|
47
|
-
* This review applies only to hosted OAuth; REST annotates its own tools.
|
|
48
|
-
*/
|
|
49
|
-
const STRIPE_CLASSIFICATION = {
|
|
50
|
-
"tools": {
|
|
51
|
-
"stripe_api_search": {
|
|
52
|
-
"verdict": "read",
|
|
53
|
-
"reason": "Searches API method contracts and object records; it does not invoke mutating methods.",
|
|
54
|
-
"schemaDigest": "sha256:1fdb44c12347b21b3896250e2a3c88763b54f4cdfe4fff27f7067d004e3097e4",
|
|
55
|
-
},
|
|
56
|
-
"stripe_api_details": {
|
|
57
|
-
"verdict": "read",
|
|
58
|
-
"reason": "Reads the parameter contract for an API method; it does not execute that method.",
|
|
59
|
-
"schemaDigest": "sha256:a80bf5b685eba9b0cb91df7fa36afac04bcb97a7dcadb3c07bd22f0a4fcc7771",
|
|
60
|
-
},
|
|
61
|
-
"stripe_api_read": {
|
|
62
|
-
"verdict": "read",
|
|
63
|
-
"reason": "The vendor restricts this generic tool to HTTP GET; all mutating methods use stripe_api_write.",
|
|
64
|
-
"schemaDigest": "sha256:90b15c317384e244a19472d2bffcc0da73a1174f16fd89a7562134a3da5d0d53",
|
|
65
|
-
},
|
|
66
|
-
"get_stripe_account_info": {
|
|
67
|
-
"verdict": "read",
|
|
68
|
-
"reason": "Reads metadata for the selected Stripe account; still documented although absent from the observed hosted catalog.",
|
|
69
|
-
},
|
|
70
|
-
"get_balance_summary": {
|
|
71
|
-
"verdict": "read",
|
|
72
|
-
"reason": "Retrieves Stripe balance summary information without changing vendor state.",
|
|
73
|
-
"schemaDigest": "sha256:857973344e59ca7199bc65e62d5e7198332542339f387b7363626ad752437a11",
|
|
74
|
-
},
|
|
75
|
-
"list_available_accounts_or_orgs": {
|
|
76
|
-
"verdict": "read",
|
|
77
|
-
"reason": "Lists accessible accounts with stripe_context and livemode without changing vendor state; verified in the hosted catalog despite omission from public docs.",
|
|
78
|
-
"schemaDigest": "sha256:5ed608b204ddf3e117f419a0443db5bdc28783133476e953338f525489dd5626",
|
|
79
|
-
},
|
|
80
|
-
"manage_stripe_accounts": {
|
|
81
|
-
"verdict": "read",
|
|
82
|
-
"reason": "Returns a Dashboard reconsent URL; the tool itself does not add accounts, remove accounts, or change permissions.",
|
|
83
|
-
"schemaDigest": "sha256:abb66368ed8d461b1106eb2257235a5d836f76906674c44be9ac816b6d509cd4",
|
|
84
|
-
},
|
|
85
|
-
"search_stripe_documentation": {
|
|
86
|
-
"verdict": "read",
|
|
87
|
-
"reason": "Searches Stripe reference documentation without accessing payment mutations.",
|
|
88
|
-
"schemaDigest": "sha256:18b5d9f565d28bc4786ba1f657a2c291c43f4c9137e4c5ca5fbbf5dd114eae67",
|
|
89
|
-
},
|
|
90
|
-
"stripe_api_write": {
|
|
91
|
-
"verdict": "destructive",
|
|
92
|
-
"reason": "Can dispatch POST, PATCH, PUT, or DELETE across the Stripe API, including edits and cancellations.",
|
|
93
|
-
"schemaDigest": "sha256:61d1bdc4e6862989c46250bdbea3adfc6169c24dbf6e8b20fc4251108da5c4e7",
|
|
94
|
-
},
|
|
95
|
-
"convert_currency": {
|
|
96
|
-
"verdict": "destructive",
|
|
97
|
-
"reason": "Converts existing funds between currencies in a Financial Account, changing balances.",
|
|
98
|
-
"schemaDigest": "sha256:5a861f71e41b6c680452a5817d7c67c4a708796a4e0dcf7adbd8c4f89c6c99f8",
|
|
99
|
-
},
|
|
100
|
-
"send_money": {
|
|
101
|
-
"verdict": "destructive",
|
|
102
|
-
"reason": "Sends funds to a third-party recipient through an outbound payment or payout link.",
|
|
103
|
-
"schemaDigest": "sha256:5415856ee7e5073f3e6ea3280c5f17289449ded3dbb92d4a4ab9b52af1ed3049",
|
|
104
|
-
},
|
|
105
|
-
"setup_recipient": {
|
|
106
|
-
"verdict": "destructive",
|
|
107
|
-
"reason": "Creates a recipient account for outbound payments; retain the upstream destructive hint rather than treating setup as a read.",
|
|
108
|
-
"schemaDigest": "sha256:75e0bb1003a3a74badab81d4fb76f4a8481b186f7755b0a7ee73f1623b163457",
|
|
109
|
-
},
|
|
110
|
-
"transfer_money": {
|
|
111
|
-
"verdict": "destructive",
|
|
112
|
-
"reason": "Moves existing funds between Stripe balances or Financial Accounts.",
|
|
113
|
-
"schemaDigest": "sha256:e75be95113883df72577127387cf2a11fae51d2cc01df80a085f4b276bd362d8",
|
|
114
|
-
},
|
|
115
|
-
"atlas_company_formation": {
|
|
116
|
-
"verdict": "destructive",
|
|
117
|
-
"reason": "Creates or advances company formation state; list and retrieve actions share this mutating tool boundary.",
|
|
118
|
-
"schemaDigest": "sha256:648e1faca5f5ac3dc7018890a336081135842d9418ee6df94dcbd81b7d861694",
|
|
119
|
-
},
|
|
120
|
-
"stripe_implementation_planner": {
|
|
121
|
-
"verdict": "write",
|
|
122
|
-
"reason": "Creates or continues provider-side planning state.",
|
|
123
|
-
"schemaDigest": "sha256:284dce4e701ab4cb9b9c9fbf61104cae2eab0b9eef1b986f128fc1bbc42ef185",
|
|
124
|
-
},
|
|
125
|
-
"stripe_analytics": {
|
|
126
|
-
"verdict": "write",
|
|
127
|
-
"reason": "The hosted schema includes execute_query_run and execute_query_template alongside retrieval; asynchronous query-run creation makes the whole tool a write even though it analyzes existing data.",
|
|
128
|
-
"schemaDigest": "sha256:c6b22ff19b5fe2d359b20f99b67591ba74cf504870123711579556b6937916b9",
|
|
129
|
-
},
|
|
130
|
-
"send_stripe_feedback": {
|
|
131
|
-
"verdict": "write",
|
|
132
|
-
"reason": "Submits feedback to Stripe, creating provider-side state; replaces send_stripe_mcp_feedback.",
|
|
133
|
-
"schemaDigest": "sha256:4ac352f04a8d974bdb56503f4826e7fbc19458e0f0d0c369f17e82d5fb6a7a86",
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
function instructionsSection(instructions) {
|
|
138
|
-
const text = instructions?.trim();
|
|
139
|
-
return text ? `\n## ${skill.instructionsHeading}\n\n${text}\n` : "";
|
|
140
|
-
}
|
|
141
|
-
function oauthUsageGuide(purpose, instructions) {
|
|
142
|
-
const { oauth, shared, oauth_limits } = skill.fragments;
|
|
143
|
-
return `# Stripe usage
|
|
144
|
-
|
|
145
|
-
Scope: live and sandbox accounts. Connector purpose: ${purpose}${oauth}${shared}${oauth_limits}
|
|
146
|
-
${instructionsSection(instructions)}`;
|
|
147
|
-
}
|
|
148
|
-
const MODE_COPY = {
|
|
149
|
-
production: {
|
|
150
|
-
title: "Stripe (production)",
|
|
151
|
-
blurb: "production — live money and real customers",
|
|
152
|
-
warning: "This is a PRODUCTION Stripe connection. Every write moves real money against real customers, and a refund cannot be undone. If a request could plausibly be a rehearsal, route it to a sandbox connector instead.",
|
|
153
|
-
rate: "100 requests per second",
|
|
154
|
-
},
|
|
155
|
-
sandbox: {
|
|
156
|
-
title: "Stripe (sandbox)",
|
|
157
|
-
blurb: "sandbox — test data, no real money",
|
|
158
|
-
warning: "This is a SANDBOX Stripe connection. Nothing here is real money and none of these objects exist in production, so never answer a question about live revenue, payouts, or a named customer from this connector.",
|
|
159
|
-
rate: "25 requests per second",
|
|
160
|
-
},
|
|
161
|
-
};
|
|
162
|
-
function keyUsageGuide(mode, purpose, connectedAccount, instructions) {
|
|
163
|
-
const copy = MODE_COPY[mode];
|
|
164
|
-
const { key, shared, key_limits, key_tail } = skill.fragments;
|
|
165
|
-
const connect = connectedAccount
|
|
166
|
-
? `\n\nConnected account: \`${connectedAccount}\`. Every call acts as this Connect account; the platform account's own objects are out of reach here.`
|
|
167
|
-
: "";
|
|
168
|
-
return `# Stripe usage
|
|
169
|
-
|
|
170
|
-
Mode: ${mode}. Connector purpose: ${purpose}
|
|
171
|
-
|
|
172
|
-
${copy.warning}${connect}${key}${shared}${key_limits}${copy.rate}${key_tail}
|
|
173
|
-
${instructionsSection(instructions)}`;
|
|
174
|
-
}
|
|
175
38
|
const COMMON = keys("title", "authScope", "purpose", "instructions", "maxResultBytes", "readOnly");
|
|
176
39
|
/** The closed options stripe() accepts, selected by `auth.type`; see `assertKnownOptions`. */
|
|
177
40
|
const STRIPE_OPTIONS = variants(["auth", "type"], {
|
|
178
41
|
// The never-typed keys stay out of the shape, so the walk refuses them by name.
|
|
179
|
-
oauth: optionsOf()(
|
|
180
|
-
...COMMON,
|
|
181
|
-
auth: optionsOf()(keys("type")),
|
|
182
|
-
}).shape,
|
|
42
|
+
oauth: { ...COMMON, auth: optionsOf()(keys("type")) },
|
|
183
43
|
apiKey: optionsOf()({
|
|
184
44
|
...COMMON,
|
|
185
45
|
...keys("mode", "connectedAccount"),
|
|
186
46
|
auth: optionsOf()(keys("type")),
|
|
187
47
|
}).shape,
|
|
188
|
-
});
|
|
189
|
-
function
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
if (!/^acct_[A-Za-z0-9]+$/.test(connectedAccount)) {
|
|
211
|
-
throw new Error(`stripe("${id}") connectedAccount must be a Stripe account id ("acct_...").`);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
const copy = MODE_COPY[mode];
|
|
215
|
-
const live = mode === "production" ? "live" : "test";
|
|
216
|
-
const rest = stripeRest(mode, connectedAccount);
|
|
217
|
-
return apiConnector(id, {
|
|
218
|
-
...provider.connectorOptions,
|
|
219
|
-
title: options.title ?? copy.title,
|
|
220
|
-
description: `Stripe payments (${copy.blurb}) — ${options.purpose}`,
|
|
221
|
-
credential: {
|
|
222
|
-
label: `Stripe ${live}-mode secret or restricted key`,
|
|
223
|
-
description: `A ${live}-mode secret (sk_${live}_…) or restricted (rk_${live}_…) key; prefer a restricted key with only the permissions this connector needs. It is sent only to api.stripe.com and files.stripe.com, stored encrypted, and never displayed.`,
|
|
224
|
-
placeholder: `rk_${live}_…`,
|
|
225
|
-
},
|
|
226
|
-
testCredential: rest.testCredential,
|
|
227
|
-
callAdmission: STRIPE_ADMISSION[mode],
|
|
228
|
-
usageGuide: {
|
|
229
|
-
content: keyUsageGuide(mode, options.purpose, connectedAccount, options.instructions),
|
|
230
|
-
// Explicit rather than derived: a key connector must lead with its one mode.
|
|
231
|
-
summary: mode === "production"
|
|
232
|
-
? "PRODUCTION: real money. One live-mode key over REST; search operations, read details, then read or write."
|
|
233
|
-
: "Sandbox: test data only. One test-mode key over REST; search operations, read details, then read or write.",
|
|
234
|
-
},
|
|
235
|
-
tools: [...restTools(rest.vendor), ...rest.tools],
|
|
236
|
-
});
|
|
48
|
+
}, undefined, ["oauth"]);
|
|
49
|
+
function usageGuide(options) {
|
|
50
|
+
const copy = MODE_COPY[options.mode];
|
|
51
|
+
const account = connectedAccount(options);
|
|
52
|
+
return {
|
|
53
|
+
heading: "Stripe usage",
|
|
54
|
+
summary: options.mode === "production"
|
|
55
|
+
? "PRODUCTION: real money. One configured live-mode key over REST; resolve ids before acting."
|
|
56
|
+
: "Sandbox: test data only. One configured test-mode key over REST; resolve ids before acting.",
|
|
57
|
+
context: [
|
|
58
|
+
`Mode: ${options.mode}. Connector purpose: ${options.purpose}`,
|
|
59
|
+
copy.warning,
|
|
60
|
+
"This connection's key is already configured and reaches exactly one Stripe account in this mode; there is no account selection or sign-in step.",
|
|
61
|
+
...(account
|
|
62
|
+
? [
|
|
63
|
+
`Connected account: ${account}. Every call acts as this Connect account; the platform account's own objects are out of reach here.`,
|
|
64
|
+
]
|
|
65
|
+
: []),
|
|
66
|
+
...(options.readOnly === true ? ["This connection is read-only: every write is refused."] : []),
|
|
67
|
+
],
|
|
68
|
+
required: true,
|
|
69
|
+
};
|
|
237
70
|
}
|
|
238
|
-
|
|
239
|
-
* A maintained Stripe connection. `auth` selects the implementation: OAuth
|
|
240
|
-
* reaches Stripe's hosted MCP server; an API key reaches Connecta's REST
|
|
241
|
-
* connector to `api.stripe.com`.
|
|
242
|
-
*/
|
|
243
|
-
export const stripe = defineProvider({
|
|
71
|
+
export const stripe = defineApiProvider({
|
|
244
72
|
name: "stripe",
|
|
245
73
|
title: "Stripe",
|
|
246
|
-
kind: "dual",
|
|
247
74
|
readme: "Stripe",
|
|
248
75
|
bundle: {
|
|
249
|
-
|
|
250
|
-
"
|
|
251
|
-
"note": "./providers/stripe remeasures at 232,089 B gzip (#801), from 170,771 B on main: auth now selects the implementation, so the entry carries the hosted MCP client and Connecta's REST connector (api(), the schema validator, guarded transport, the shared REST module) plus the pinned Stripe operation index (638 operations; request details to depth 2, without descriptions or enums over 50 values; 37,918 B gzip as source). Details were shrunk before the cap moved: the first full index measured 81 KB gzip. The cap uses the existing baseline + 60,000 B policy.",
|
|
76
|
+
baselineGzip: 379663,
|
|
77
|
+
note: "./providers/stripe measures 379,663 B gzip standalone in F3 (#703), Node 22 CI static at 9420933711af5e42bf9d134d1b73bed114a48fa0 (run 39997464724, Run pnpm run check:build). This entry includes the shared Effect provider kit, paid once per deployment; standalone provider sizes are not additive. Provider entries are reported, not capped (#899).",
|
|
252
78
|
},
|
|
253
79
|
skill,
|
|
254
80
|
options: STRIPE_OPTIONS,
|
|
255
|
-
|
|
256
|
-
|
|
81
|
+
vendor: StripeApi,
|
|
82
|
+
baseUrl: (options) => {
|
|
83
|
+
connectedAccount(options);
|
|
84
|
+
return STRIPE_API_BASE_URL;
|
|
85
|
+
},
|
|
86
|
+
displayTitle: (options) => MODE_COPY[options.mode].title,
|
|
87
|
+
description: (options) => `Stripe payments (${MODE_COPY[options.mode].blurb}) — ${options.purpose}`,
|
|
88
|
+
maxResponseBytes: MAX_RESPONSE_BYTES,
|
|
89
|
+
idempotencyKey: true,
|
|
90
|
+
timeoutMs: READ_CAP_MS,
|
|
91
|
+
headers: { "Stripe-Version": stripeIndex.version },
|
|
92
|
+
defaultCallAdmission: (options) => STRIPE_ADMISSION[options.mode],
|
|
93
|
+
credential: (options) => {
|
|
94
|
+
const live = options.mode === "production" ? "live" : "test";
|
|
95
|
+
return {
|
|
96
|
+
label: `Stripe ${live}-mode secret or restricted key`,
|
|
97
|
+
description: `A ${live}-mode secret (sk_${live}_…) or restricted (rk_${live}_…) key; prefer a restricted key with only the permissions this connector needs. It is sent only to api.stripe.com and files.stripe.com, stored encrypted, and never displayed.`,
|
|
98
|
+
placeholder: `rk_${live}_…`,
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
authenticate,
|
|
102
|
+
safety,
|
|
103
|
+
errors: stripeErrors,
|
|
104
|
+
probe,
|
|
105
|
+
guide: usageGuide,
|
|
106
|
+
hatch: {
|
|
107
|
+
name: "stripe",
|
|
108
|
+
title: "Stripe",
|
|
109
|
+
index: stripeIndex,
|
|
110
|
+
verdicts: STRIPE_VERDICTS,
|
|
111
|
+
named: { "GET /v1/account": "get_stripe_account_info", "GET /v1/balance": "get_balance_summary" },
|
|
112
|
+
pathExample: "/v1/customers/cus_123",
|
|
113
|
+
pages: STRIPE_PAGES,
|
|
114
|
+
pageCursor: "argument",
|
|
115
|
+
binding: stripeBinding,
|
|
116
|
+
idempotency: { header: "Idempotency-Key", methods: ["POST"] },
|
|
117
|
+
notes: () => ({
|
|
118
|
+
read: "Pass page.nextCursor as cursor; starting_after or ending_before record-id anchors are allowed only on the first request, without cursor. v1 parameters use bracketed form encoding; v2 bodies are JSON. Quote PDFs use the confined files origin.",
|
|
119
|
+
write: "POST sends an Idempotency-Key; DELETE sends none. v1 bodies are form-encoded, including nested fields; v2 bodies are JSON. Upload files in the Stripe Dashboard.",
|
|
120
|
+
}),
|
|
121
|
+
},
|
|
122
|
+
tools: stripeTools,
|
|
257
123
|
});
|
|
258
|
-
/** @deprecated Read `stripe.definition.classify` instead. Kept for existing imports. */
|
|
259
|
-
export const STRIPE_VETTED_CATALOG = reviewedCatalog(stripe.definition.classify, 'defineProvider("stripe")');
|