@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,697 +0,0 @@
|
|
|
1
|
-
import { skill } from "./skill.generated.js";
|
|
2
|
-
import { remoteMcp, withCredentialDefaults } from "../../connectors/remote-mcp.js";
|
|
3
|
-
import { reviewedCatalog } from "../../catalog-drift.js";
|
|
4
|
-
import { optionsOf } from "../../config-schema.js";
|
|
5
|
-
import { PROVIDER_COMMON, REMOTE_MCP_AUTH } from "../../connectors/option-shapes.js";
|
|
6
|
-
import { defineProvider } from "../../provider.js";
|
|
7
|
-
/** RevenueCat publishes one hosted MCP endpoint, streamable HTTP. */
|
|
8
|
-
export const REVENUECAT_MCP_ENDPOINT = "https://mcp.revenuecat.ai/mcp";
|
|
9
|
-
/**
|
|
10
|
-
* Re-reviewed 2026-10-19 against RevenueCat's MCP reference and API v2 docs (#343, #703).
|
|
11
|
-
* This is a superset of permission-gated live catalogs, not a tool allowlist.
|
|
12
|
-
* Four reviewed schemas are pinned from live discovery; uncaptured schemas stay unpinned.
|
|
13
|
-
* Tools are optional in drift comparisons: permissions, project scope, and
|
|
14
|
-
* read-only keys can expose a subset of the reviewed inventory.
|
|
15
|
-
*/
|
|
16
|
-
const REVENUECAT_CLASSIFICATION = {
|
|
17
|
-
tools: {
|
|
18
|
-
"get-account-billing": {
|
|
19
|
-
"verdict": "read",
|
|
20
|
-
optional: true,
|
|
21
|
-
"reason": "Retrieves RevenueCat account billing information without changing vendor state.",
|
|
22
|
-
},
|
|
23
|
-
"get-app": {
|
|
24
|
-
"verdict": "read",
|
|
25
|
-
optional: true,
|
|
26
|
-
"reason": "Retrieves RevenueCat app information without changing vendor state.",
|
|
27
|
-
},
|
|
28
|
-
"get-project-ui-config": {
|
|
29
|
-
"verdict": "read",
|
|
30
|
-
optional: true,
|
|
31
|
-
"reason": "Retrieves RevenueCat project ui config information without changing vendor state.",
|
|
32
|
-
},
|
|
33
|
-
"list-account-billing-invoices": {
|
|
34
|
-
"verdict": "read",
|
|
35
|
-
optional: true,
|
|
36
|
-
"reason": "Retrieves RevenueCat account billing invoices information without changing vendor state.",
|
|
37
|
-
},
|
|
38
|
-
"list-app-public-api-keys": {
|
|
39
|
-
"verdict": "read",
|
|
40
|
-
optional: true,
|
|
41
|
-
"reason": "Retrieves RevenueCat app public api keys information without changing vendor state.",
|
|
42
|
-
},
|
|
43
|
-
"list-app-subscription-groups": {
|
|
44
|
-
"verdict": "read",
|
|
45
|
-
optional: true,
|
|
46
|
-
"reason": "Lists App Store Connect subscription groups and products without changing vendor state; official MCP reference and live annotation agree.",
|
|
47
|
-
"schemaDigest": "sha256:8474bdced405e279ee56a36da289d26e8526ee8dec870aa731a9cc1fa14474c4",
|
|
48
|
-
},
|
|
49
|
-
"list-apps": {
|
|
50
|
-
"verdict": "read",
|
|
51
|
-
optional: true,
|
|
52
|
-
"reason": "Retrieves RevenueCat apps information without changing vendor state.",
|
|
53
|
-
},
|
|
54
|
-
"list-audit-logs": {
|
|
55
|
-
"verdict": "read",
|
|
56
|
-
optional: true,
|
|
57
|
-
"reason": "Retrieves RevenueCat audit logs information without changing vendor state.",
|
|
58
|
-
},
|
|
59
|
-
"list-collaborators": {
|
|
60
|
-
"verdict": "read",
|
|
61
|
-
optional: true,
|
|
62
|
-
"reason": "Retrieves RevenueCat collaborators information without changing vendor state.",
|
|
63
|
-
},
|
|
64
|
-
"list-projects": {
|
|
65
|
-
"verdict": "read",
|
|
66
|
-
optional: true,
|
|
67
|
-
"reason": "Retrieves RevenueCat projects information without changing vendor state.",
|
|
68
|
-
},
|
|
69
|
-
"get-product": {
|
|
70
|
-
"verdict": "read",
|
|
71
|
-
optional: true,
|
|
72
|
-
"reason": "Retrieves RevenueCat product information without changing vendor state.",
|
|
73
|
-
},
|
|
74
|
-
"get-product-store-state": {
|
|
75
|
-
"verdict": "read",
|
|
76
|
-
optional: true,
|
|
77
|
-
"reason": "Retrieves RevenueCat product store state information without changing vendor state.",
|
|
78
|
-
},
|
|
79
|
-
"get-product-store-state-operation": {
|
|
80
|
-
"verdict": "read",
|
|
81
|
-
optional: true,
|
|
82
|
-
"reason": "Retrieves RevenueCat product store state operation information without changing vendor state.",
|
|
83
|
-
},
|
|
84
|
-
"get-product-store-state-plan": {
|
|
85
|
-
"verdict": "read",
|
|
86
|
-
optional: true,
|
|
87
|
-
"reason": "Retrieves RevenueCat product store state plan information without changing vendor state.",
|
|
88
|
-
},
|
|
89
|
-
"list-product-store-state-plans": {
|
|
90
|
-
"verdict": "read",
|
|
91
|
-
optional: true,
|
|
92
|
-
"reason": "Retrieves RevenueCat product store state plans information without changing vendor state.",
|
|
93
|
-
},
|
|
94
|
-
"list-products": {
|
|
95
|
-
"verdict": "read",
|
|
96
|
-
optional: true,
|
|
97
|
-
"reason": "Retrieves RevenueCat products information without changing vendor state.",
|
|
98
|
-
},
|
|
99
|
-
"get-entitlement": {
|
|
100
|
-
"verdict": "read",
|
|
101
|
-
optional: true,
|
|
102
|
-
"reason": "Retrieves RevenueCat entitlement information without changing vendor state.",
|
|
103
|
-
},
|
|
104
|
-
"get-products-from-entitlement": {
|
|
105
|
-
"verdict": "read",
|
|
106
|
-
optional: true,
|
|
107
|
-
"reason": "Retrieves RevenueCat products from entitlement information without changing vendor state.",
|
|
108
|
-
},
|
|
109
|
-
"list-entitlements": {
|
|
110
|
-
"verdict": "read",
|
|
111
|
-
optional: true,
|
|
112
|
-
"reason": "Retrieves RevenueCat entitlements information without changing vendor state.",
|
|
113
|
-
},
|
|
114
|
-
"get-offering": {
|
|
115
|
-
"verdict": "read",
|
|
116
|
-
optional: true,
|
|
117
|
-
"reason": "Retrieves RevenueCat offering information without changing vendor state.",
|
|
118
|
-
},
|
|
119
|
-
"get-offering-prices": {
|
|
120
|
-
"verdict": "read",
|
|
121
|
-
optional: true,
|
|
122
|
-
"reason": "Retrieves RevenueCat offering prices information without changing vendor state.",
|
|
123
|
-
},
|
|
124
|
-
"list-offerings": {
|
|
125
|
-
"verdict": "read",
|
|
126
|
-
optional: true,
|
|
127
|
-
"reason": "Retrieves RevenueCat offerings information without changing vendor state.",
|
|
128
|
-
},
|
|
129
|
-
"list-packages": {
|
|
130
|
-
"verdict": "read",
|
|
131
|
-
optional: true,
|
|
132
|
-
"reason": "Retrieves RevenueCat packages information without changing vendor state.",
|
|
133
|
-
},
|
|
134
|
-
"get-audience": {
|
|
135
|
-
"verdict": "read",
|
|
136
|
-
optional: true,
|
|
137
|
-
"reason": "Retrieves RevenueCat audience information without changing vendor state.",
|
|
138
|
-
},
|
|
139
|
-
"get-audience-filter-options": {
|
|
140
|
-
"verdict": "read",
|
|
141
|
-
optional: true,
|
|
142
|
-
"reason": "Retrieves RevenueCat audience filter options information without changing vendor state.",
|
|
143
|
-
},
|
|
144
|
-
"get-targeting-rule": {
|
|
145
|
-
"verdict": "read",
|
|
146
|
-
optional: true,
|
|
147
|
-
"reason": "Retrieves RevenueCat targeting rule information without changing vendor state.",
|
|
148
|
-
},
|
|
149
|
-
"list-audiences": {
|
|
150
|
-
"verdict": "read",
|
|
151
|
-
optional: true,
|
|
152
|
-
"reason": "Retrieves RevenueCat audiences information without changing vendor state.",
|
|
153
|
-
},
|
|
154
|
-
"list-targeting-rules": {
|
|
155
|
-
"verdict": "read",
|
|
156
|
-
optional: true,
|
|
157
|
-
"reason": "Retrieves RevenueCat targeting rules information without changing vendor state.",
|
|
158
|
-
},
|
|
159
|
-
"preview-audience": {
|
|
160
|
-
"verdict": "read",
|
|
161
|
-
optional: true,
|
|
162
|
-
"reason": "Observational POST: previews matching customers without creating an audience; API v2 requires audiences:audiences:read and the live annotation agrees.",
|
|
163
|
-
"schemaDigest": "sha256:75d926cdc6a2b92ece3b2d8b2fdd21831deed71464024d0004da3d2bde769682",
|
|
164
|
-
},
|
|
165
|
-
"render-paywall-screenshot": {
|
|
166
|
-
"verdict": "read",
|
|
167
|
-
optional: true,
|
|
168
|
-
"reason": "Renders a paywall preview without publishing or editing it; the current official reference explicitly says Read and the live annotation agrees.",
|
|
169
|
-
"schemaDigest": "sha256:abb9d0e0e8674371fff7503b7c5f215ddbca9ebed12325c5d8b376eec7252294",
|
|
170
|
-
},
|
|
171
|
-
"get-paywall": {
|
|
172
|
-
"verdict": "read",
|
|
173
|
-
optional: true,
|
|
174
|
-
"reason": "Retrieves RevenueCat paywall information without changing vendor state.",
|
|
175
|
-
},
|
|
176
|
-
"list-paywalls": {
|
|
177
|
-
"verdict": "read",
|
|
178
|
-
optional: true,
|
|
179
|
-
"reason": "Retrieves RevenueCat paywalls information without changing vendor state.",
|
|
180
|
-
},
|
|
181
|
-
"get-customer": {
|
|
182
|
-
"verdict": "read",
|
|
183
|
-
optional: true,
|
|
184
|
-
"reason": "Retrieves RevenueCat customer information without changing vendor state.",
|
|
185
|
-
},
|
|
186
|
-
"get-customer-center-config": {
|
|
187
|
-
"verdict": "read",
|
|
188
|
-
optional: true,
|
|
189
|
-
"reason": "Retrieves RevenueCat customer center config information without changing vendor state.",
|
|
190
|
-
},
|
|
191
|
-
"get-refund-request-preferences": {
|
|
192
|
-
"verdict": "read",
|
|
193
|
-
optional: true,
|
|
194
|
-
"reason": "Retrieves RevenueCat refund request preferences information without changing vendor state.",
|
|
195
|
-
},
|
|
196
|
-
"get-subscription": {
|
|
197
|
-
"verdict": "read",
|
|
198
|
-
optional: true,
|
|
199
|
-
"reason": "Retrieves RevenueCat subscription information without changing vendor state.",
|
|
200
|
-
},
|
|
201
|
-
"list-customer-events": {
|
|
202
|
-
"verdict": "read",
|
|
203
|
-
optional: true,
|
|
204
|
-
"reason": "Retrieves RevenueCat customer events information without changing vendor state.",
|
|
205
|
-
},
|
|
206
|
-
"list-customers": {
|
|
207
|
-
"verdict": "read",
|
|
208
|
-
optional: true,
|
|
209
|
-
"reason": "Retrieves RevenueCat customers information without changing vendor state.",
|
|
210
|
-
},
|
|
211
|
-
"list-purchases": {
|
|
212
|
-
"verdict": "read",
|
|
213
|
-
optional: true,
|
|
214
|
-
"reason": "Retrieves RevenueCat purchases information without changing vendor state.",
|
|
215
|
-
},
|
|
216
|
-
"list-subscriptions": {
|
|
217
|
-
"verdict": "read",
|
|
218
|
-
optional: true,
|
|
219
|
-
"reason": "Retrieves RevenueCat subscriptions information without changing vendor state.",
|
|
220
|
-
},
|
|
221
|
-
"list-virtual-currencies-balances": {
|
|
222
|
-
"verdict": "read",
|
|
223
|
-
optional: true,
|
|
224
|
-
"reason": "Retrieves RevenueCat virtual currencies balances information without changing vendor state.",
|
|
225
|
-
},
|
|
226
|
-
"get-virtual-currency": {
|
|
227
|
-
"verdict": "read",
|
|
228
|
-
optional: true,
|
|
229
|
-
"reason": "Retrieves RevenueCat virtual currency information without changing vendor state.",
|
|
230
|
-
},
|
|
231
|
-
"list-virtual-currencies": {
|
|
232
|
-
"verdict": "read",
|
|
233
|
-
optional: true,
|
|
234
|
-
"reason": "Retrieves RevenueCat virtual currencies information without changing vendor state.",
|
|
235
|
-
},
|
|
236
|
-
"get-benchmarks": {
|
|
237
|
-
"verdict": "read",
|
|
238
|
-
optional: true,
|
|
239
|
-
"reason": "Retrieves RevenueCat benchmarks information without changing vendor state.",
|
|
240
|
-
},
|
|
241
|
-
"get-chart-data": {
|
|
242
|
-
"verdict": "read",
|
|
243
|
-
optional: true,
|
|
244
|
-
"reason": "Retrieves RevenueCat chart data information without changing vendor state.",
|
|
245
|
-
},
|
|
246
|
-
"get-chart-options-schema": {
|
|
247
|
-
"verdict": "read",
|
|
248
|
-
optional: true,
|
|
249
|
-
"reason": "Retrieves RevenueCat chart options schema information without changing vendor state.",
|
|
250
|
-
},
|
|
251
|
-
"get-experiment": {
|
|
252
|
-
"verdict": "read",
|
|
253
|
-
optional: true,
|
|
254
|
-
"reason": "Retrieves RevenueCat experiment information without changing vendor state.",
|
|
255
|
-
},
|
|
256
|
-
"get-experiment-results": {
|
|
257
|
-
"verdict": "read",
|
|
258
|
-
optional: true,
|
|
259
|
-
"reason": "Retrieves RevenueCat experiment results information without changing vendor state.",
|
|
260
|
-
},
|
|
261
|
-
"get-overview-metrics": {
|
|
262
|
-
"verdict": "read",
|
|
263
|
-
optional: true,
|
|
264
|
-
"reason": "Retrieves RevenueCat overview metrics information without changing vendor state.",
|
|
265
|
-
},
|
|
266
|
-
"get-revenue-metric": {
|
|
267
|
-
"verdict": "read",
|
|
268
|
-
optional: true,
|
|
269
|
-
"reason": "Retrieves RevenueCat revenue metric information without changing vendor state.",
|
|
270
|
-
},
|
|
271
|
-
"list-experiments": {
|
|
272
|
-
"verdict": "read",
|
|
273
|
-
optional: true,
|
|
274
|
-
"reason": "Retrieves RevenueCat experiments information without changing vendor state.",
|
|
275
|
-
},
|
|
276
|
-
"get-webhook-integration": {
|
|
277
|
-
"verdict": "read",
|
|
278
|
-
optional: true,
|
|
279
|
-
"reason": "Retrieves RevenueCat webhook integration information without changing vendor state.",
|
|
280
|
-
},
|
|
281
|
-
"list-webhook-integrations": {
|
|
282
|
-
"verdict": "read",
|
|
283
|
-
optional: true,
|
|
284
|
-
"reason": "Retrieves RevenueCat webhook integrations information without changing vendor state.",
|
|
285
|
-
},
|
|
286
|
-
"list-sdk-feature-gates": {
|
|
287
|
-
"verdict": "read",
|
|
288
|
-
optional: true,
|
|
289
|
-
"reason": "Retrieves RevenueCat sdk feature gates information without changing vendor state.",
|
|
290
|
-
},
|
|
291
|
-
"list-sdk-versions": {
|
|
292
|
-
"verdict": "read",
|
|
293
|
-
optional: true,
|
|
294
|
-
"reason": "Retrieves RevenueCat sdk versions information without changing vendor state.",
|
|
295
|
-
},
|
|
296
|
-
"get-paywall-ai-task": {
|
|
297
|
-
"verdict": "read",
|
|
298
|
-
optional: true,
|
|
299
|
-
"reason": "Retrieves RevenueCat paywall ai task information without changing vendor state.",
|
|
300
|
-
},
|
|
301
|
-
"create-app": {
|
|
302
|
-
"verdict": "write",
|
|
303
|
-
optional: true,
|
|
304
|
-
"reason": "create app creates or appends RevenueCat state; it has side effects.",
|
|
305
|
-
},
|
|
306
|
-
"create-project": {
|
|
307
|
-
"verdict": "write",
|
|
308
|
-
optional: true,
|
|
309
|
-
"reason": "create project creates or appends RevenueCat state; it has side effects.",
|
|
310
|
-
},
|
|
311
|
-
"update-app": {
|
|
312
|
-
"verdict": "destructive",
|
|
313
|
-
optional: true,
|
|
314
|
-
"reason": "update app changes existing RevenueCat state or removes it.",
|
|
315
|
-
},
|
|
316
|
-
"update-project-ui-config": {
|
|
317
|
-
"verdict": "destructive",
|
|
318
|
-
optional: true,
|
|
319
|
-
"reason": "update project ui config changes existing RevenueCat state or removes it.",
|
|
320
|
-
},
|
|
321
|
-
"validate-app-credentials": {
|
|
322
|
-
"verdict": "write",
|
|
323
|
-
optional: true,
|
|
324
|
-
"reason": "Kept write conservatively: the MCP reference says Read and promises credentials are unchanged, but the live readOnlyHint is false and API v2 app docs do not establish whether validation results/status persist. No claim that validation mutates credentials.",
|
|
325
|
-
"schemaDigest": "sha256:680c861273535483ea19c032b4430b7f085fb89d6240853c15ed9284e50672c6",
|
|
326
|
-
},
|
|
327
|
-
"archive-product": {
|
|
328
|
-
"verdict": "destructive",
|
|
329
|
-
optional: true,
|
|
330
|
-
"reason": "archive product changes existing RevenueCat state or removes it.",
|
|
331
|
-
},
|
|
332
|
-
"create-product": {
|
|
333
|
-
"verdict": "write",
|
|
334
|
-
optional: true,
|
|
335
|
-
"reason": "create product creates or appends RevenueCat state; it has side effects.",
|
|
336
|
-
},
|
|
337
|
-
"create-product-prices": {
|
|
338
|
-
"verdict": "destructive",
|
|
339
|
-
optional: true,
|
|
340
|
-
"reason": "create product prices changes existing RevenueCat state or removes it.",
|
|
341
|
-
},
|
|
342
|
-
"equalize-subscription-prices": {
|
|
343
|
-
"verdict": "write",
|
|
344
|
-
optional: true,
|
|
345
|
-
"reason": "equalize subscription prices creates or appends RevenueCat state; it has side effects.",
|
|
346
|
-
},
|
|
347
|
-
"set-product-store-state": {
|
|
348
|
-
"verdict": "destructive",
|
|
349
|
-
optional: true,
|
|
350
|
-
"reason": "set product store state changes existing RevenueCat state or removes it.",
|
|
351
|
-
},
|
|
352
|
-
"submit-products-to-store": {
|
|
353
|
-
"verdict": "destructive",
|
|
354
|
-
optional: true,
|
|
355
|
-
"reason": "submit products to store changes existing RevenueCat state or removes it.",
|
|
356
|
-
},
|
|
357
|
-
"unarchive-product": {
|
|
358
|
-
"verdict": "destructive",
|
|
359
|
-
optional: true,
|
|
360
|
-
"reason": "unarchive product changes existing RevenueCat state or removes it.",
|
|
361
|
-
},
|
|
362
|
-
"update-product": {
|
|
363
|
-
"verdict": "destructive",
|
|
364
|
-
optional: true,
|
|
365
|
-
"reason": "update product changes existing RevenueCat state or removes it.",
|
|
366
|
-
},
|
|
367
|
-
"upload-product-store-state-screenshot": {
|
|
368
|
-
"verdict": "write",
|
|
369
|
-
optional: true,
|
|
370
|
-
"reason": "upload product store state screenshot creates or appends RevenueCat state; it has side effects.",
|
|
371
|
-
},
|
|
372
|
-
"create-product-store-state-plan": {
|
|
373
|
-
"verdict": "write",
|
|
374
|
-
optional: true,
|
|
375
|
-
"reason": "create product store state plan creates or appends RevenueCat state; it has side effects.",
|
|
376
|
-
},
|
|
377
|
-
"plan-product-store-state-plan": {
|
|
378
|
-
"verdict": "destructive",
|
|
379
|
-
optional: true,
|
|
380
|
-
"reason": "Advances a store-state plan workflow and can create asynchronous task state.",
|
|
381
|
-
},
|
|
382
|
-
"apply-product-store-state-plan": {
|
|
383
|
-
"verdict": "destructive",
|
|
384
|
-
optional: true,
|
|
385
|
-
"reason": "Applies a plan to store configuration and can change existing products.",
|
|
386
|
-
},
|
|
387
|
-
"update-product-store-state-plan": {
|
|
388
|
-
"verdict": "destructive",
|
|
389
|
-
optional: true,
|
|
390
|
-
"reason": "update product store state plan changes existing RevenueCat state or removes it.",
|
|
391
|
-
},
|
|
392
|
-
"discard-product-store-state-plan": {
|
|
393
|
-
"verdict": "destructive",
|
|
394
|
-
optional: true,
|
|
395
|
-
"reason": "discard product store state plan changes existing RevenueCat state or removes it.",
|
|
396
|
-
},
|
|
397
|
-
"archive-entitlement": {
|
|
398
|
-
"verdict": "destructive",
|
|
399
|
-
optional: true,
|
|
400
|
-
"reason": "archive entitlement changes existing RevenueCat state or removes it.",
|
|
401
|
-
},
|
|
402
|
-
"attach-products-to-entitlement": {
|
|
403
|
-
"verdict": "write",
|
|
404
|
-
optional: true,
|
|
405
|
-
"reason": "attach products to entitlement creates or appends RevenueCat state; it has side effects.",
|
|
406
|
-
},
|
|
407
|
-
"create-entitlement": {
|
|
408
|
-
"verdict": "write",
|
|
409
|
-
optional: true,
|
|
410
|
-
"reason": "create entitlement creates or appends RevenueCat state; it has side effects.",
|
|
411
|
-
},
|
|
412
|
-
"detach-products-from-entitlement": {
|
|
413
|
-
"verdict": "destructive",
|
|
414
|
-
optional: true,
|
|
415
|
-
"reason": "detach products from entitlement changes existing RevenueCat state or removes it.",
|
|
416
|
-
},
|
|
417
|
-
"unarchive-entitlement": {
|
|
418
|
-
"verdict": "destructive",
|
|
419
|
-
optional: true,
|
|
420
|
-
"reason": "unarchive entitlement changes existing RevenueCat state or removes it.",
|
|
421
|
-
},
|
|
422
|
-
"update-entitlement": {
|
|
423
|
-
"verdict": "destructive",
|
|
424
|
-
optional: true,
|
|
425
|
-
"reason": "update entitlement changes existing RevenueCat state or removes it.",
|
|
426
|
-
},
|
|
427
|
-
"archive-offering": {
|
|
428
|
-
"verdict": "destructive",
|
|
429
|
-
optional: true,
|
|
430
|
-
"reason": "archive offering changes existing RevenueCat state or removes it.",
|
|
431
|
-
},
|
|
432
|
-
"attach-products-to-package": {
|
|
433
|
-
"verdict": "write",
|
|
434
|
-
optional: true,
|
|
435
|
-
"reason": "attach products to package creates or appends RevenueCat state; it has side effects.",
|
|
436
|
-
},
|
|
437
|
-
"create-offering": {
|
|
438
|
-
"verdict": "write",
|
|
439
|
-
optional: true,
|
|
440
|
-
"reason": "create offering creates or appends RevenueCat state; it has side effects.",
|
|
441
|
-
},
|
|
442
|
-
"create-packages": {
|
|
443
|
-
"verdict": "write",
|
|
444
|
-
optional: true,
|
|
445
|
-
"reason": "create packages creates or appends RevenueCat state; it has side effects.",
|
|
446
|
-
},
|
|
447
|
-
"delete-package-from-offering": {
|
|
448
|
-
"verdict": "destructive",
|
|
449
|
-
optional: true,
|
|
450
|
-
"reason": "delete package from offering changes existing RevenueCat state or removes it.",
|
|
451
|
-
},
|
|
452
|
-
"detach-products-from-package": {
|
|
453
|
-
"verdict": "destructive",
|
|
454
|
-
optional: true,
|
|
455
|
-
"reason": "detach products from package changes existing RevenueCat state or removes it.",
|
|
456
|
-
},
|
|
457
|
-
"unarchive-offering": {
|
|
458
|
-
"verdict": "destructive",
|
|
459
|
-
optional: true,
|
|
460
|
-
"reason": "unarchive offering changes existing RevenueCat state or removes it.",
|
|
461
|
-
},
|
|
462
|
-
"update-offering": {
|
|
463
|
-
"verdict": "destructive",
|
|
464
|
-
optional: true,
|
|
465
|
-
"reason": "update offering changes existing RevenueCat state or removes it.",
|
|
466
|
-
},
|
|
467
|
-
"create-audience": {
|
|
468
|
-
"verdict": "write",
|
|
469
|
-
optional: true,
|
|
470
|
-
"reason": "create audience creates or appends RevenueCat state; it has side effects.",
|
|
471
|
-
},
|
|
472
|
-
"update-audience": {
|
|
473
|
-
"verdict": "destructive",
|
|
474
|
-
optional: true,
|
|
475
|
-
"reason": "update audience changes existing RevenueCat state or removes it.",
|
|
476
|
-
},
|
|
477
|
-
"create-targeting-rule": {
|
|
478
|
-
"verdict": "write",
|
|
479
|
-
optional: true,
|
|
480
|
-
"reason": "create targeting rule creates or appends RevenueCat state; it has side effects.",
|
|
481
|
-
},
|
|
482
|
-
"update-targeting-rule": {
|
|
483
|
-
"verdict": "destructive",
|
|
484
|
-
optional: true,
|
|
485
|
-
"reason": "update targeting rule changes existing RevenueCat state or removes it.",
|
|
486
|
-
},
|
|
487
|
-
"delete-targeting-rule": {
|
|
488
|
-
"verdict": "destructive",
|
|
489
|
-
optional: true,
|
|
490
|
-
"reason": "delete targeting rule changes existing RevenueCat state or removes it.",
|
|
491
|
-
},
|
|
492
|
-
"attach-offering-to-paywall": {
|
|
493
|
-
"verdict": "destructive",
|
|
494
|
-
optional: true,
|
|
495
|
-
"reason": "attach offering to paywall changes existing RevenueCat state or removes it.",
|
|
496
|
-
},
|
|
497
|
-
"detach-offering-from-paywall": {
|
|
498
|
-
"verdict": "destructive",
|
|
499
|
-
optional: true,
|
|
500
|
-
"reason": "detach offering from paywall changes existing RevenueCat state or removes it.",
|
|
501
|
-
},
|
|
502
|
-
"duplicate-paywall": {
|
|
503
|
-
"verdict": "write",
|
|
504
|
-
optional: true,
|
|
505
|
-
"reason": "duplicate paywall creates or appends RevenueCat state; it has side effects.",
|
|
506
|
-
},
|
|
507
|
-
"publish-paywall": {
|
|
508
|
-
"verdict": "destructive",
|
|
509
|
-
optional: true,
|
|
510
|
-
"reason": "publish paywall changes existing RevenueCat state or removes it.",
|
|
511
|
-
},
|
|
512
|
-
"unpublish-paywall": {
|
|
513
|
-
"verdict": "destructive",
|
|
514
|
-
optional: true,
|
|
515
|
-
"reason": "unpublish paywall changes existing RevenueCat state or removes it.",
|
|
516
|
-
},
|
|
517
|
-
"duplicate-offering": {
|
|
518
|
-
"verdict": "write",
|
|
519
|
-
optional: true,
|
|
520
|
-
"reason": "duplicate offering creates or appends RevenueCat state; it has side effects.",
|
|
521
|
-
},
|
|
522
|
-
"create-experiment": {
|
|
523
|
-
"verdict": "write",
|
|
524
|
-
optional: true,
|
|
525
|
-
"reason": "create experiment creates or appends RevenueCat state; it has side effects.",
|
|
526
|
-
},
|
|
527
|
-
"pause-experiment": {
|
|
528
|
-
"verdict": "destructive",
|
|
529
|
-
optional: true,
|
|
530
|
-
"reason": "pause experiment changes existing RevenueCat state or removes it.",
|
|
531
|
-
},
|
|
532
|
-
"resume-experiment": {
|
|
533
|
-
"verdict": "destructive",
|
|
534
|
-
optional: true,
|
|
535
|
-
"reason": "resume experiment changes existing RevenueCat state or removes it.",
|
|
536
|
-
},
|
|
537
|
-
"start-experiment": {
|
|
538
|
-
"verdict": "destructive",
|
|
539
|
-
optional: true,
|
|
540
|
-
"reason": "start experiment changes existing RevenueCat state or removes it.",
|
|
541
|
-
},
|
|
542
|
-
"stop-experiment": {
|
|
543
|
-
"verdict": "destructive",
|
|
544
|
-
optional: true,
|
|
545
|
-
"reason": "stop experiment changes existing RevenueCat state or removes it.",
|
|
546
|
-
},
|
|
547
|
-
"update-experiment": {
|
|
548
|
-
"verdict": "destructive",
|
|
549
|
-
optional: true,
|
|
550
|
-
"reason": "update experiment changes existing RevenueCat state or removes it.",
|
|
551
|
-
},
|
|
552
|
-
"assign-customer-offering": {
|
|
553
|
-
"verdict": "destructive",
|
|
554
|
-
optional: true,
|
|
555
|
-
"reason": "assign customer offering changes existing RevenueCat state or removes it.",
|
|
556
|
-
},
|
|
557
|
-
"grant-customer-entitlement": {
|
|
558
|
-
"verdict": "destructive",
|
|
559
|
-
optional: true,
|
|
560
|
-
"reason": "grant customer entitlement changes existing RevenueCat state or removes it.",
|
|
561
|
-
},
|
|
562
|
-
"archive-virtual-currency": {
|
|
563
|
-
"verdict": "destructive",
|
|
564
|
-
optional: true,
|
|
565
|
-
"reason": "archive virtual currency changes existing RevenueCat state or removes it.",
|
|
566
|
-
},
|
|
567
|
-
"create-virtual-currency": {
|
|
568
|
-
"verdict": "write",
|
|
569
|
-
optional: true,
|
|
570
|
-
"reason": "create virtual currency creates or appends RevenueCat state; it has side effects.",
|
|
571
|
-
},
|
|
572
|
-
"unarchive-virtual-currency": {
|
|
573
|
-
"verdict": "destructive",
|
|
574
|
-
optional: true,
|
|
575
|
-
"reason": "unarchive virtual currency changes existing RevenueCat state or removes it.",
|
|
576
|
-
},
|
|
577
|
-
"update-virtual-currency": {
|
|
578
|
-
"verdict": "destructive",
|
|
579
|
-
optional: true,
|
|
580
|
-
"reason": "update virtual currency changes existing RevenueCat state or removes it.",
|
|
581
|
-
},
|
|
582
|
-
"create-webhook-integration": {
|
|
583
|
-
"verdict": "destructive",
|
|
584
|
-
optional: true,
|
|
585
|
-
"reason": "Starts delivering customer events to a caller-supplied URL; omitted filters deliver every customer event in the project. Destructive by consequence even though it creates a new integration.",
|
|
586
|
-
},
|
|
587
|
-
"delete-webhook-integration": {
|
|
588
|
-
"verdict": "destructive",
|
|
589
|
-
optional: true,
|
|
590
|
-
"reason": "delete webhook integration changes existing RevenueCat state or removes it.",
|
|
591
|
-
},
|
|
592
|
-
"update-webhook-integration": {
|
|
593
|
-
"verdict": "destructive",
|
|
594
|
-
optional: true,
|
|
595
|
-
"reason": "update webhook integration changes existing RevenueCat state or removes it.",
|
|
596
|
-
},
|
|
597
|
-
"create-paywall-ai": {
|
|
598
|
-
"verdict": "write",
|
|
599
|
-
optional: true,
|
|
600
|
-
"reason": "create paywall ai creates or appends RevenueCat state; it has side effects.",
|
|
601
|
-
},
|
|
602
|
-
"edit-paywall-ai": {
|
|
603
|
-
"verdict": "destructive",
|
|
604
|
-
optional: true,
|
|
605
|
-
"reason": "edit paywall ai changes existing RevenueCat state or removes it.",
|
|
606
|
-
},
|
|
607
|
-
},
|
|
608
|
-
};
|
|
609
|
-
/** The catalog's summary bound; a longer declared value throws (`src/registry.ts`). */
|
|
610
|
-
const SUMMARY_BUDGET = 120;
|
|
611
|
-
/**
|
|
612
|
-
* Fit a purpose-bearing summary inside the catalog's bound.
|
|
613
|
-
*
|
|
614
|
-
* Stripe and Mixpanel declare static summaries because their routing fact is
|
|
615
|
-
* an enumerable variant. RevenueCat's is not: two `sk_` connectors have the
|
|
616
|
-
* same title, the same endpoint, and the same catalog, and differ only by the
|
|
617
|
-
* project the operator says each key reaches. So the summary carries that, and
|
|
618
|
-
* clipping is this function's job rather than the operator's.
|
|
619
|
-
*/
|
|
620
|
-
function boundedSummary(prefix, purpose) {
|
|
621
|
-
const full = `${prefix}${purpose}`;
|
|
622
|
-
if (full.length <= SUMMARY_BUDGET)
|
|
623
|
-
return full;
|
|
624
|
-
return `${full.slice(0, SUMMARY_BUDGET - 1).trimEnd()}…`;
|
|
625
|
-
}
|
|
626
|
-
function sharedUsageGuide() {
|
|
627
|
-
return skill.fragments.guide_0;
|
|
628
|
-
}
|
|
629
|
-
function oauthUsageGuide(purpose, instructions) {
|
|
630
|
-
const projectInstructions = instructions?.trim();
|
|
631
|
-
return `${skill.fragments.guide_1}${purpose}${skill.fragments.guide_2}${sharedUsageGuide()}${projectInstructions ? `\n## ${skill.instructionsHeading}\n\n${projectInstructions}\n` : ""}`;
|
|
632
|
-
}
|
|
633
|
-
function keyUsageGuide(purpose, instructions) {
|
|
634
|
-
const projectInstructions = instructions?.trim();
|
|
635
|
-
return `# RevenueCat usage
|
|
636
|
-
|
|
637
|
-
Single-project connection: ${purpose}${skill.fragments.guide_3}${sharedUsageGuide()}${projectInstructions ? `\n## ${skill.instructionsHeading}\n\n${projectInstructions}\n` : ""}`;
|
|
638
|
-
}
|
|
639
|
-
/** The closed options revenuecat() accepts; see `assertKnownOptions`. */
|
|
640
|
-
const REVENUECAT_OPTIONS = optionsOf()({ ...PROVIDER_COMMON, auth: REMOTE_MCP_AUTH });
|
|
641
|
-
/** A maintained RevenueCat hosted-MCP connection. */
|
|
642
|
-
export const revenuecat = defineProvider({
|
|
643
|
-
name: "revenuecat",
|
|
644
|
-
title: "RevenueCat",
|
|
645
|
-
kind: "mcp",
|
|
646
|
-
readme: "RevenueCat",
|
|
647
|
-
bundle: { "baselineGzip": 128548, "maxGzip": 188548 },
|
|
648
|
-
skill,
|
|
649
|
-
options: REVENUECAT_OPTIONS,
|
|
650
|
-
classify: REVENUECAT_CLASSIFICATION,
|
|
651
|
-
create: revenuecatConnector,
|
|
652
|
-
});
|
|
653
|
-
function revenuecatConnector(id, options, provider) {
|
|
654
|
-
const purpose = options.purpose.trim();
|
|
655
|
-
const auth = withCredentialDefaults(options.auth ?? { type: "oauth" }, {
|
|
656
|
-
credential: {
|
|
657
|
-
label: "API v2 secret key",
|
|
658
|
-
description: "A RevenueCat API v2 secret key. It reaches exactly one project, which is why two projects are two connectors; it is stored encrypted and never displayed.",
|
|
659
|
-
placeholder: "sk_…",
|
|
660
|
-
},
|
|
661
|
-
});
|
|
662
|
-
// Both static shapes reach one project. Where the key came from — the
|
|
663
|
-
// deployment file or the operator page — changes nothing an agent must know
|
|
664
|
-
// about scope, so the title, description, and guide follow the scope alone.
|
|
665
|
-
const scoped = auth.type !== "oauth";
|
|
666
|
-
const connector = remoteMcp(id, {
|
|
667
|
-
url: REVENUECAT_MCP_ENDPOINT,
|
|
668
|
-
...provider.connectorOptions,
|
|
669
|
-
// The scope shape rides the title because browse-time discovery renders
|
|
670
|
-
// the title and the guide summary and nothing else, and reaching one
|
|
671
|
-
// project versus every project the account has is the fact an agent must
|
|
672
|
-
// not get wrong between two RevenueCat connections.
|
|
673
|
-
title: options.title ?? (scoped ? "RevenueCat (single project)" : "RevenueCat"),
|
|
674
|
-
description: scoped
|
|
675
|
-
? `RevenueCat subscriptions and revenue (one project, static key) — ${purpose}`
|
|
676
|
-
: `RevenueCat subscriptions and revenue (every project the account can reach) — ${purpose}`,
|
|
677
|
-
auth,
|
|
678
|
-
requireHttps: true,
|
|
679
|
-
classify: provider.classify,
|
|
680
|
-
usageGuide: {
|
|
681
|
-
content: scoped ? keyUsageGuide(purpose, options.instructions) : oauthUsageGuide(purpose, options.instructions),
|
|
682
|
-
// Explicit rather than derived, and purpose-bearing rather than static:
|
|
683
|
-
// the derived summary would cut the scoping sentence mid-clause at 120
|
|
684
|
-
// characters, and two static summaries would leave two `sk_` connectors
|
|
685
|
-
// indistinguishable in the one field search returns (P3).
|
|
686
|
-
summary: scoped
|
|
687
|
-
? boundedSummary("One project only: ", purpose)
|
|
688
|
-
: boundedSummary("All account projects; list-projects first: ", purpose),
|
|
689
|
-
// Not `required`. RevenueCat's own schemas describe each call; the guide
|
|
690
|
-
// carries the project-resolution sequence, which is worth reading before
|
|
691
|
-
// a run rather than before every call.
|
|
692
|
-
},
|
|
693
|
-
});
|
|
694
|
-
return connector;
|
|
695
|
-
}
|
|
696
|
-
/** @deprecated Read `revenuecat.definition.classify` instead. Kept for existing imports. */
|
|
697
|
-
export const REVENUECAT_VETTED_CATALOG = reviewedCatalog(revenuecat.definition.classify, 'defineProvider("revenuecat")');
|