@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,472 +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 { keys, optionsOf, variants } from "../../config-schema.js";
|
|
5
|
-
import { PROVIDER_COMMON, REMOTE_MCP_AUTH } from "../../connectors/option-shapes.js";
|
|
6
|
-
import { defineProvider } from "../../provider.js";
|
|
7
|
-
import { apiConnector } from "../../connectors/api-connector.js";
|
|
8
|
-
import { mixpanelRest, MIXPANEL_API_ADMISSION } from "./rest.js";
|
|
9
|
-
export const MIXPANEL_MCP_ENDPOINTS = {
|
|
10
|
-
us: "https://mcp.mixpanel.com/mcp",
|
|
11
|
-
eu: "https://mcp-eu.mixpanel.com/mcp",
|
|
12
|
-
in: "https://mcp-in.mixpanel.com/mcp",
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Reviewed against https://docs.mixpanel.com/docs/mcp and the 2026-10-19 live
|
|
16
|
-
* US describe schemas (#343, #703). Eleven of the 64 previously pinned tools
|
|
17
|
-
* changed since the 2026-08-30 review (#395, #512); unchanged pins are retained.
|
|
18
|
-
* Get-Audit-Log is documented beta-only: no live schema digest is claimed.
|
|
19
|
-
*/
|
|
20
|
-
const MIXPANEL_CLASSIFICATION = {
|
|
21
|
-
tools: {
|
|
22
|
-
"Run-Query": {
|
|
23
|
-
"verdict": "read",
|
|
24
|
-
"reason": "Runs an observational analytics query; saved reports and dashboard edits use separate write tools.",
|
|
25
|
-
"schemaDigest": "sha256:0eb7d52343f6137275a02c2d7bb02dafdbfd25bd6f9067395eb689492d835466",
|
|
26
|
-
},
|
|
27
|
-
"Get-Query-Schema": {
|
|
28
|
-
"verdict": "read",
|
|
29
|
-
"reason": "Retrieves Mixpanel query schema information without changing vendor state.",
|
|
30
|
-
"schemaDigest": "sha256:8fea929d2ad4f8fed6c47116ff0eaa6f964b3ddd4685e482b68a8dac0231af73",
|
|
31
|
-
},
|
|
32
|
-
"Get-Report": {
|
|
33
|
-
"verdict": "read",
|
|
34
|
-
"reason": "Retrieves Mixpanel report information without changing vendor state.",
|
|
35
|
-
"schemaDigest": "sha256:a99ba2af1ab57c1d5a606dbd7701968aa430ab23f5969f356a4c41f345dba041",
|
|
36
|
-
},
|
|
37
|
-
"Display-Query": {
|
|
38
|
-
"verdict": "read",
|
|
39
|
-
"reason": "Displays existing query results without editing a dashboard or saved report.",
|
|
40
|
-
"schemaDigest": "sha256:d0776167b8a20898c1ff580ca9517da8dea6b827c64e10b9fa01ae1a3c2db95f",
|
|
41
|
-
},
|
|
42
|
-
"List-Dashboards": {
|
|
43
|
-
"verdict": "read",
|
|
44
|
-
"reason": "Retrieves Mixpanel dashboards information without changing vendor state.",
|
|
45
|
-
"schemaDigest": "sha256:994c1c9fc87a4f1f00a677b856a44bad028252d283bd8e647ae157683fc89ea2",
|
|
46
|
-
},
|
|
47
|
-
"Get-Dashboard": {
|
|
48
|
-
"verdict": "read",
|
|
49
|
-
"reason": "Retrieves Mixpanel dashboard information without changing vendor state.",
|
|
50
|
-
"schemaDigest": "sha256:0af78ab95566a20eeba08af6922f2017d98503e2b14dcbe8d7e2ac54eef870d7",
|
|
51
|
-
},
|
|
52
|
-
"Get-Business-Context": {
|
|
53
|
-
"verdict": "read",
|
|
54
|
-
"reason": "Reads existing business context for a project or organization; updates use a separate tool.",
|
|
55
|
-
"schemaDigest": "sha256:309f5ba864c90132061096b4f0ebc1e78544a6486bac3a45bd661d16bcab2b6c",
|
|
56
|
-
},
|
|
57
|
-
"Get-Projects": {
|
|
58
|
-
"verdict": "read",
|
|
59
|
-
"reason": "Retrieves Mixpanel projects information without changing vendor state.",
|
|
60
|
-
"schemaDigest": "sha256:d23d07a777441f04b128f08a2c30a6e8a1573d203f8a1ad7788bc1fd57a9cbbf",
|
|
61
|
-
},
|
|
62
|
-
"List-Organizations": {
|
|
63
|
-
"verdict": "read",
|
|
64
|
-
"reason": "Retrieves Mixpanel organizations information without changing vendor state.",
|
|
65
|
-
"schemaDigest": "sha256:e4c23f123dde073e00038d92ebd53f45157c83a4d3a2ff686ab1b66c859f4a11",
|
|
66
|
-
},
|
|
67
|
-
"Get-Audit-Log": {
|
|
68
|
-
"verdict": "read",
|
|
69
|
-
"reason": "Queries existing organization audit history; limited-access beta requiring organization admin or owner access.",
|
|
70
|
-
},
|
|
71
|
-
"Get-Events": {
|
|
72
|
-
"verdict": "read",
|
|
73
|
-
"reason": "Retrieves Mixpanel events information without changing vendor state.",
|
|
74
|
-
"schemaDigest": "sha256:09d7874b0c60cf790944b8998ee943f200912eac4349dfa80d0f2ae82a7a7998",
|
|
75
|
-
},
|
|
76
|
-
"List-Properties": {
|
|
77
|
-
"verdict": "read",
|
|
78
|
-
"reason": "Retrieves Mixpanel properties information without changing vendor state.",
|
|
79
|
-
"schemaDigest": "sha256:52b38861df076119dfefe0128cf9819868336bf60e090f63c80da734877a69fe",
|
|
80
|
-
},
|
|
81
|
-
"Get-Property-Values": {
|
|
82
|
-
"verdict": "read",
|
|
83
|
-
"reason": "Retrieves Mixpanel property values information without changing vendor state.",
|
|
84
|
-
"schemaDigest": "sha256:0cd487c9b92a187b21f456de3c785bb631aa30cba702785c9ff158608883a6bb",
|
|
85
|
-
},
|
|
86
|
-
"Search-Entities": {
|
|
87
|
-
"verdict": "read",
|
|
88
|
-
"reason": "Retrieves Mixpanel entities information without changing vendor state.",
|
|
89
|
-
"schemaDigest": "sha256:86cfa1d3bf7f17a70ad07264d7b1d16c83480e40996e8d847911fe8bde13e35e",
|
|
90
|
-
},
|
|
91
|
-
"Get-Issues": {
|
|
92
|
-
"verdict": "read",
|
|
93
|
-
"reason": "Retrieves Mixpanel issues information without changing vendor state.",
|
|
94
|
-
"schemaDigest": "sha256:cf172ef18f37504a758c825c7bd4bc23fd98c3421655754dccd8e5ee2d700a10",
|
|
95
|
-
},
|
|
96
|
-
"Get-Lexicon-URL": {
|
|
97
|
-
"verdict": "read",
|
|
98
|
-
"reason": "Retrieves Mixpanel lexicon url information without changing vendor state.",
|
|
99
|
-
"schemaDigest": "sha256:c6456d5c4a38ba069a2caa6cdac651be9d86d47bc6efb3316a893c7336d0e2bc",
|
|
100
|
-
},
|
|
101
|
-
"Find-Duplicate-Groups": {
|
|
102
|
-
"verdict": "read",
|
|
103
|
-
"reason": "Retrieves Mixpanel find duplicate groups information without changing vendor state.",
|
|
104
|
-
"schemaDigest": "sha256:8f944cef9a147eab3c51bfcf1b873cef1409e5a6c21565d34e7ed20d23dcebb7",
|
|
105
|
-
},
|
|
106
|
-
"Get-Custom-Property": {
|
|
107
|
-
"verdict": "read",
|
|
108
|
-
"reason": "Retrieves Mixpanel custom property information without changing vendor state.",
|
|
109
|
-
"schemaDigest": "sha256:d1cbce906cee66d422846c8ef1a745bbeac2c058ecad6b1ee8dcdd2120fa86be",
|
|
110
|
-
},
|
|
111
|
-
"Get-Cohort": {
|
|
112
|
-
"verdict": "read",
|
|
113
|
-
"reason": "Retrieves Mixpanel cohort information without changing vendor state.",
|
|
114
|
-
"schemaDigest": "sha256:e18c500459edd9c2b6a614a3f6c97b668786be9abf72929a0a50086bdadb1dae",
|
|
115
|
-
},
|
|
116
|
-
"List-Cohorts": {
|
|
117
|
-
"verdict": "read",
|
|
118
|
-
"reason": "Retrieves Mixpanel cohorts information without changing vendor state.",
|
|
119
|
-
"schemaDigest": "sha256:505ff07f668186b670bcce28aa339076140b85896eb4f64afad78d963018297a",
|
|
120
|
-
},
|
|
121
|
-
"Describe-Cohort-Schema": {
|
|
122
|
-
"verdict": "read",
|
|
123
|
-
"reason": "Retrieves Mixpanel describe cohort schema information without changing vendor state.",
|
|
124
|
-
"schemaDigest": "sha256:775dbb8bb71ad3fa39ba35ca3a2683dfd88120f7af84a968531609c5a12de537",
|
|
125
|
-
},
|
|
126
|
-
"Get-Lookup-Table": {
|
|
127
|
-
"verdict": "read",
|
|
128
|
-
"reason": "Retrieves Mixpanel lookup table information without changing vendor state.",
|
|
129
|
-
"schemaDigest": "sha256:061602b283461f083bbd74348c264f802cb21c4fe6d961241c7090895a8334ac",
|
|
130
|
-
},
|
|
131
|
-
"Get-Metric": {
|
|
132
|
-
"verdict": "read",
|
|
133
|
-
"reason": "Retrieves Mixpanel metric information without changing vendor state.",
|
|
134
|
-
"schemaDigest": "sha256:451e867abd1162f25bec96f76cb1b1d1d84eb33c04fe4d804e729810d93d26d7",
|
|
135
|
-
},
|
|
136
|
-
"List-Metrics": {
|
|
137
|
-
"verdict": "read",
|
|
138
|
-
"reason": "Retrieves Mixpanel metrics information without changing vendor state.",
|
|
139
|
-
"schemaDigest": "sha256:341710bebabb82112e80eb521d9d5cdb3bca024699b3aa795874d3549a315042",
|
|
140
|
-
},
|
|
141
|
-
"Get-User-Replays-Data": {
|
|
142
|
-
"verdict": "read",
|
|
143
|
-
"reason": "Retrieves Mixpanel user replays data information without changing vendor state.",
|
|
144
|
-
"schemaDigest": "sha256:5df287735478a67489075b0c7c9d8c07097abe67408d06743c7fb9be43c6e024",
|
|
145
|
-
},
|
|
146
|
-
"List-Experiments": {
|
|
147
|
-
"verdict": "read",
|
|
148
|
-
"reason": "Retrieves Mixpanel experiments information without changing vendor state.",
|
|
149
|
-
"schemaDigest": "sha256:26a3f3e0b4e52135d74335dd769103303071fc48c15b1df40efd2dfa5a353848",
|
|
150
|
-
},
|
|
151
|
-
"Get-Experiment": {
|
|
152
|
-
"verdict": "destructive",
|
|
153
|
-
"reason": "Optional compute flags persist refreshed result caches and may auto-conclude an experiment; the full tool can modify existing state.",
|
|
154
|
-
"schemaDigest": "sha256:aebe329b5c5f3a9a465d40f12af1d6336d1304cc949c291eea752a5dd532e6fa",
|
|
155
|
-
},
|
|
156
|
-
"Get-Experiment-Setup-Guidance": {
|
|
157
|
-
"verdict": "read",
|
|
158
|
-
"reason": "Retrieves Mixpanel experiment setup guidance information without changing vendor state.",
|
|
159
|
-
"schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
|
|
160
|
-
},
|
|
161
|
-
"Get-Experiment-Results-Interpretation-Guidance": {
|
|
162
|
-
"verdict": "read",
|
|
163
|
-
"reason": "Retrieves Mixpanel experiment results interpretation guidance information without changing vendor state.",
|
|
164
|
-
"schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
|
|
165
|
-
},
|
|
166
|
-
"Explain-Experiment-Health-Check": {
|
|
167
|
-
"verdict": "read",
|
|
168
|
-
"reason": "Retrieves Mixpanel explain experiment health check information without changing vendor state.",
|
|
169
|
-
"schemaDigest": "sha256:a50b1263247012dc78521bf6c1dd18584a7b08d46221a444b1ca49c81d3286e5",
|
|
170
|
-
},
|
|
171
|
-
"Run-Experiment-Pre-Launch-Checks": {
|
|
172
|
-
"verdict": "read",
|
|
173
|
-
"reason": "Retrieves Mixpanel run experiment pre launch checks information without changing vendor state.",
|
|
174
|
-
"schemaDigest": "sha256:f6b5d85f75450b76fda9c7ef441f190fd45fcaeaff4cc3c30a6d1bee76e4c706",
|
|
175
|
-
},
|
|
176
|
-
"Search-Prior-Experiments": {
|
|
177
|
-
"verdict": "read",
|
|
178
|
-
"reason": "Retrieves Mixpanel prior experiments information without changing vendor state.",
|
|
179
|
-
"schemaDigest": "sha256:847d1dcefaf6dc5e7ea967476f464a4d678a06b5e7d437dfb11ad4af2e56620f",
|
|
180
|
-
},
|
|
181
|
-
"List-Feature-Flags": {
|
|
182
|
-
"verdict": "read",
|
|
183
|
-
"reason": "Retrieves Mixpanel feature flags information without changing vendor state.",
|
|
184
|
-
"schemaDigest": "sha256:75fc1ff14f3d3faedb8e00c6563d151de397d584429764fd0c332f6a84f6993c",
|
|
185
|
-
},
|
|
186
|
-
"Get-Feature-Flag": {
|
|
187
|
-
"verdict": "read",
|
|
188
|
-
"reason": "Retrieves Mixpanel feature flag information without changing vendor state.",
|
|
189
|
-
"schemaDigest": "sha256:129de58b379ffba272bdbcee2b5759262e586dd415edc2067a69e9844d4d0877",
|
|
190
|
-
},
|
|
191
|
-
"Get-Feature-Flag-Setup-Guidance": {
|
|
192
|
-
"verdict": "read",
|
|
193
|
-
"reason": "Retrieves Mixpanel feature flag setup guidance information without changing vendor state.",
|
|
194
|
-
"schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
|
|
195
|
-
},
|
|
196
|
-
"Get-Feature-Flag-Lifecycle-Guidance": {
|
|
197
|
-
"verdict": "read",
|
|
198
|
-
"reason": "Retrieves Mixpanel feature flag lifecycle guidance information without changing vendor state.",
|
|
199
|
-
"schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
|
|
200
|
-
},
|
|
201
|
-
"Create-Dashboard": {
|
|
202
|
-
"verdict": "write",
|
|
203
|
-
"reason": "Create Dashboard creates or appends Mixpanel state; it has side effects.",
|
|
204
|
-
"schemaDigest": "sha256:59fbe58cc8b69b31adfa7015e541d495abc566f56b1320e10ad77288ff9facf0",
|
|
205
|
-
},
|
|
206
|
-
"Update-Dashboard": {
|
|
207
|
-
"verdict": "destructive",
|
|
208
|
-
"reason": "Update Dashboard changes existing Mixpanel state or removes it.",
|
|
209
|
-
"schemaDigest": "sha256:6f2f11e94a13667848bdcb30531a7ff478a8c53460a5e0859f8241b64d0008da",
|
|
210
|
-
},
|
|
211
|
-
"Duplicate-Dashboard": {
|
|
212
|
-
"verdict": "write",
|
|
213
|
-
"reason": "Duplicate Dashboard creates or appends Mixpanel state; it has side effects.",
|
|
214
|
-
"schemaDigest": "sha256:9738db7495d29034df966423df3c9d4b16ac3a8254c8473bf1e85a467fe9cf4e",
|
|
215
|
-
},
|
|
216
|
-
"Delete-Dashboard": {
|
|
217
|
-
"verdict": "destructive",
|
|
218
|
-
"reason": "Delete Dashboard changes existing Mixpanel state or removes it.",
|
|
219
|
-
"schemaDigest": "sha256:3a04594218b491743240e6970f677ed8ed132237d933efe30e97bdc41eb1ab6f",
|
|
220
|
-
},
|
|
221
|
-
"Edit-Event": {
|
|
222
|
-
"verdict": "destructive",
|
|
223
|
-
"reason": "Edit Event changes existing Mixpanel state or removes it.",
|
|
224
|
-
"schemaDigest": "sha256:28c47da0b56f57da0f11eb11435441a39ecd5175600f854442744c66a379ef93",
|
|
225
|
-
},
|
|
226
|
-
"Edit-Property": {
|
|
227
|
-
"verdict": "destructive",
|
|
228
|
-
"reason": "Edit Property changes existing Mixpanel state or removes it.",
|
|
229
|
-
"schemaDigest": "sha256:11975587d2a566edc468db7cb24df70167d12068f30c1fe52c84f543cf4e2399",
|
|
230
|
-
},
|
|
231
|
-
"Bulk-Edit-Events": {
|
|
232
|
-
"verdict": "destructive",
|
|
233
|
-
"reason": "Bulk Edit Events changes existing Mixpanel state or removes it.",
|
|
234
|
-
"schemaDigest": "sha256:94512138df153de95436371f5a313e32b97faffebda3be6c0c69d09d1ff2b340",
|
|
235
|
-
},
|
|
236
|
-
"Bulk-Edit-Properties": {
|
|
237
|
-
"verdict": "destructive",
|
|
238
|
-
"reason": "Bulk Edit Properties changes existing Mixpanel state or removes it.",
|
|
239
|
-
"schemaDigest": "sha256:93481eb896ded45b623c678612e2156439efbaad5b4d660da1f2b087e7409ee3",
|
|
240
|
-
},
|
|
241
|
-
"Create-Tag": {
|
|
242
|
-
"verdict": "write",
|
|
243
|
-
"reason": "Create Tag creates or appends Mixpanel state; it has side effects.",
|
|
244
|
-
"schemaDigest": "sha256:f99b6faad422aa6142d20d0aa4bdec1074e96a8ec45e35573e86d84b01df1d3b",
|
|
245
|
-
},
|
|
246
|
-
"Rename-Tag": {
|
|
247
|
-
"verdict": "destructive",
|
|
248
|
-
"reason": "Rename Tag changes existing Mixpanel state or removes it.",
|
|
249
|
-
"schemaDigest": "sha256:a7e20e79ecd6ca7edca104fa1030e059ffae8962bf084d4a384c012ac9bbf087",
|
|
250
|
-
},
|
|
251
|
-
"Delete-Tag": {
|
|
252
|
-
"verdict": "destructive",
|
|
253
|
-
"reason": "Delete Tag changes existing Mixpanel state or removes it.",
|
|
254
|
-
"schemaDigest": "sha256:5f6cc58ada5d2796f124e15883fe05061d03f9129414f4c8e10a0ec463f17807",
|
|
255
|
-
},
|
|
256
|
-
"Dismiss-Issues": {
|
|
257
|
-
"verdict": "destructive",
|
|
258
|
-
"reason": "Dismiss Issues changes existing Mixpanel state or removes it.",
|
|
259
|
-
"schemaDigest": "sha256:9c1f4901eca53f58d16feee126868d23c6ed1f5fad72344f86ea9965385b8644",
|
|
260
|
-
},
|
|
261
|
-
"Update-Business-Context": {
|
|
262
|
-
"verdict": "destructive",
|
|
263
|
-
"reason": "Update Business Context changes existing Mixpanel state or removes it.",
|
|
264
|
-
"schemaDigest": "sha256:0d21290053b6d532386c3c83d60cd78013a7109492c02ba2e7822716f2cde027",
|
|
265
|
-
},
|
|
266
|
-
"Dismiss-Duplicate-Group": {
|
|
267
|
-
"verdict": "destructive",
|
|
268
|
-
"reason": "Dismiss Duplicate Group changes existing Mixpanel state or removes it.",
|
|
269
|
-
"schemaDigest": "sha256:4e39c6f9bb83ed54020097f6cf34507a5288de2c1ce333456c84682bb5986bc4",
|
|
270
|
-
},
|
|
271
|
-
"Merge-Group": {
|
|
272
|
-
"verdict": "destructive",
|
|
273
|
-
"reason": "Merge Group changes existing Mixpanel state or removes it.",
|
|
274
|
-
"schemaDigest": "sha256:a3b215a5be70305c2f02439513bee76ae3947da14e2a9e5b6ff0afb9ad3d4dcd",
|
|
275
|
-
},
|
|
276
|
-
"Create-Custom-Property": {
|
|
277
|
-
"verdict": "write",
|
|
278
|
-
"reason": "Create Custom Property creates or appends Mixpanel state; it has side effects.",
|
|
279
|
-
"schemaDigest": "sha256:d22818b812f3fd0e785a5bbbee26cf099eaa911d5b6f383f94cf458a2ed26294",
|
|
280
|
-
},
|
|
281
|
-
"Update-Custom-Property": {
|
|
282
|
-
"verdict": "destructive",
|
|
283
|
-
"reason": "Update Custom Property changes existing Mixpanel state or removes it.",
|
|
284
|
-
"schemaDigest": "sha256:781aaaab41c1ab5958062dc393d02b1df2ef2a09a28d3c4f21ae3177f4f53c86",
|
|
285
|
-
},
|
|
286
|
-
"Create-Cohort": {
|
|
287
|
-
"verdict": "write",
|
|
288
|
-
"reason": "Create Cohort creates or appends Mixpanel state; it has side effects.",
|
|
289
|
-
"schemaDigest": "sha256:ea687f4bc607f8bfb5b1949e060239d6f7d629d3ec80fb0b72eae6cc6156ed03",
|
|
290
|
-
},
|
|
291
|
-
"Update-Cohort": {
|
|
292
|
-
"verdict": "destructive",
|
|
293
|
-
"reason": "Update Cohort changes existing Mixpanel state or removes it.",
|
|
294
|
-
"schemaDigest": "sha256:ebe0d5afcc00e23eef55f079cd1816c851c2c647dff9565b7045f1f1615663f2",
|
|
295
|
-
},
|
|
296
|
-
"Delete-Cohort": {
|
|
297
|
-
"verdict": "destructive",
|
|
298
|
-
"reason": "Delete Cohort changes existing Mixpanel state or removes it.",
|
|
299
|
-
"schemaDigest": "sha256:e18c500459edd9c2b6a614a3f6c97b668786be9abf72929a0a50086bdadb1dae",
|
|
300
|
-
},
|
|
301
|
-
"Create-Lookup-Table": {
|
|
302
|
-
"verdict": "write",
|
|
303
|
-
"reason": "Create Lookup Table creates or appends Mixpanel state; it has side effects.",
|
|
304
|
-
"schemaDigest": "sha256:c2fefa33a4f19fc65f394fecdc7126cab0ae874f7c97018cf003d8462a049e4c",
|
|
305
|
-
},
|
|
306
|
-
"Update-Lookup-Table": {
|
|
307
|
-
"verdict": "destructive",
|
|
308
|
-
"reason": "Update Lookup Table changes existing Mixpanel state or removes it.",
|
|
309
|
-
"schemaDigest": "sha256:ef28f1ec9c9484a7a53b5e2b6659e70f79a8e71e55bda17025aa4ab3c23b6a63",
|
|
310
|
-
},
|
|
311
|
-
"Create-Metric": {
|
|
312
|
-
"verdict": "write",
|
|
313
|
-
"reason": "Create Metric creates or appends Mixpanel state; it has side effects.",
|
|
314
|
-
"schemaDigest": "sha256:c10bc660e0664a9aba6450a45b50fb1fbea6a4fac809fd5390616416f72e04d6",
|
|
315
|
-
},
|
|
316
|
-
"Update-Metric": {
|
|
317
|
-
"verdict": "destructive",
|
|
318
|
-
"reason": "Update Metric changes existing Mixpanel state or removes it.",
|
|
319
|
-
"schemaDigest": "sha256:ca03823ea995d0ae53807a60b1dd0d47f1667b28cfd24cdab52a9fc66f0c2834",
|
|
320
|
-
},
|
|
321
|
-
"Create-Experiment": {
|
|
322
|
-
"verdict": "write",
|
|
323
|
-
"reason": "Create Experiment creates or appends Mixpanel state; it has side effects.",
|
|
324
|
-
"schemaDigest": "sha256:ce64eafec7f2490fa3c76030c75340bf5dd282a9d0bfb0c5353bcdc3b50f602d",
|
|
325
|
-
},
|
|
326
|
-
"Update-Experiment": {
|
|
327
|
-
"verdict": "destructive",
|
|
328
|
-
"reason": "Update Experiment changes existing Mixpanel state or removes it.",
|
|
329
|
-
"schemaDigest": "sha256:27c0e2b58fbb1468dda938c4112560e9481f58bc4ddafd4a94bad56666c5b12c",
|
|
330
|
-
},
|
|
331
|
-
"Create-Feature-Flag": {
|
|
332
|
-
"verdict": "write",
|
|
333
|
-
"reason": "Create Feature Flag creates or appends Mixpanel state; it has side effects.",
|
|
334
|
-
"schemaDigest": "sha256:3460d11d726727349cac62db5c19915ab589b7f1d8387042f0a3783356b252c4",
|
|
335
|
-
},
|
|
336
|
-
"Update-Feature-Flag": {
|
|
337
|
-
"verdict": "destructive",
|
|
338
|
-
"reason": "Update Feature Flag changes existing Mixpanel state or removes it.",
|
|
339
|
-
"schemaDigest": "sha256:9b34b19164168938d08a75d268c9becf8d189c85a1789a45061ae304041faf7c",
|
|
340
|
-
},
|
|
341
|
-
"Fill-Event-Metadata": {
|
|
342
|
-
"verdict": "destructive",
|
|
343
|
-
"reason": "Applies generated names and descriptions to existing Lexicon events.",
|
|
344
|
-
"schemaDigest": "sha256:53accc988f216bdd5d7a259d731f6df82549e4e6146b191f1815a0d1a72a1abe",
|
|
345
|
-
},
|
|
346
|
-
},
|
|
347
|
-
};
|
|
348
|
-
const REGION_COPY = {
|
|
349
|
-
us: "US",
|
|
350
|
-
eu: "EU",
|
|
351
|
-
in: "India",
|
|
352
|
-
};
|
|
353
|
-
function usageGuide(purpose, region, instructions) {
|
|
354
|
-
const accountInstructions = instructions?.trim();
|
|
355
|
-
// Leads the guide because discovery summarizes a connector by its first
|
|
356
|
-
// content line. A project lives in exactly one residency, so a question
|
|
357
|
-
// pointed at the wrong region does not return fewer rows — it returns
|
|
358
|
-
// nothing, and reads as the project having no data.
|
|
359
|
-
const regionNote = `${REGION_COPY[region]}-residency connection: bound to Mixpanel's ${region}${skill.fragments.guide_0}`;
|
|
360
|
-
return `# Mixpanel usage
|
|
361
|
-
|
|
362
|
-
${regionNote}
|
|
363
|
-
|
|
364
|
-
Account purpose: ${purpose}${skill.fragments.guide_1}${accountInstructions ? `\n## ${skill.instructionsHeading}\n\n${accountInstructions}\n` : ""}`;
|
|
365
|
-
}
|
|
366
|
-
/** The closed options mixpanel() accepts; see `assertKnownOptions`. */
|
|
367
|
-
const MIXPANEL_OPTIONS = variants("via", {
|
|
368
|
-
mcp: optionsOf()({
|
|
369
|
-
...PROVIDER_COMMON,
|
|
370
|
-
...keys("region", "via"),
|
|
371
|
-
auth: REMOTE_MCP_AUTH,
|
|
372
|
-
}).shape,
|
|
373
|
-
api: optionsOf()({
|
|
374
|
-
...PROVIDER_COMMON,
|
|
375
|
-
...keys("region", "via", "defaultProjectId"),
|
|
376
|
-
auth: variants("type", { credential: optionsOf()(keys("type")).shape }),
|
|
377
|
-
}).shape,
|
|
378
|
-
}, "mcp");
|
|
379
|
-
/** Mixpanel hosted MCP by default, or service-account REST with via: "api". */
|
|
380
|
-
export const mixpanel = defineProvider({
|
|
381
|
-
name: "mixpanel",
|
|
382
|
-
title: "Mixpanel",
|
|
383
|
-
kind: "dual",
|
|
384
|
-
readme: "Mixpanel",
|
|
385
|
-
bundle: {
|
|
386
|
-
baselineGzip: 205500,
|
|
387
|
-
maxGzip: 265500,
|
|
388
|
-
note: "./providers/mixpanel (#823) adds the REST connector, guarded transport, shared operation index and value-safety engine alongside the unchanged hosted MCP client. The nine-operation reviewed subset was shrunk to depth 3 without descriptions before remeasuring: operations.ts is 1355 B gzip. The provider remeasures at about 205500 B gzip, compared with the 131378 B MCP-only baseline; the cap follows baseline + 60000 B. No new runtime dependencies.",
|
|
389
|
-
},
|
|
390
|
-
skill,
|
|
391
|
-
options: MIXPANEL_OPTIONS,
|
|
392
|
-
classify: MIXPANEL_CLASSIFICATION,
|
|
393
|
-
create: (id, options, provider) => {
|
|
394
|
-
const region = options.region ?? "us";
|
|
395
|
-
if (!Object.hasOwn(MIXPANEL_MCP_ENDPOINTS, region)) {
|
|
396
|
-
throw new Error('region must be "us", "eu", or "in".');
|
|
397
|
-
}
|
|
398
|
-
return options.via === "api" ? mixpanelApi(id, options, provider) : mixpanelConnector(id, options, provider);
|
|
399
|
-
},
|
|
400
|
-
});
|
|
401
|
-
function mixpanelConnector(id, options, provider) {
|
|
402
|
-
const purpose = options.purpose.trim();
|
|
403
|
-
const region = options.region ?? "us";
|
|
404
|
-
if (!(region in MIXPANEL_MCP_ENDPOINTS)) {
|
|
405
|
-
throw new Error(`mixpanel("${id}") region must be "us", "eu", or "in".`);
|
|
406
|
-
}
|
|
407
|
-
const connector = remoteMcp(id, {
|
|
408
|
-
url: MIXPANEL_MCP_ENDPOINTS[region],
|
|
409
|
-
...provider.connectorOptions,
|
|
410
|
-
// The region rides the title because browse-time discovery renders the
|
|
411
|
-
// title and the guide summary and nothing else, and residency is the fact
|
|
412
|
-
// an agent must not get wrong between two Mixpanel connections.
|
|
413
|
-
title: options.title ?? `Mixpanel (${region})`,
|
|
414
|
-
description: `Mixpanel product analytics (${REGION_COPY[region]} residency) — ${purpose}`,
|
|
415
|
-
// Mixpanel's beta service-account scheme is deliberately not ordinary HTTP
|
|
416
|
-
// Basic: the endpoint wants `Bearer Basic <base64(user:secret)>`. The
|
|
417
|
-
// operator therefore pastes the pair, not an encoded blob, and Connecta
|
|
418
|
-
// does the framing — the same shaping the maintainer drift check applies.
|
|
419
|
-
auth: withCredentialDefaults(options.auth ?? { type: "oauth" }, {
|
|
420
|
-
credential: {
|
|
421
|
-
label: "Service account",
|
|
422
|
-
description: "A Mixpanel service account as `username:secret`. Connecta encodes and frames it the way the hosted endpoint requires; it is stored encrypted and never displayed.",
|
|
423
|
-
placeholder: "username:secret",
|
|
424
|
-
},
|
|
425
|
-
scheme: "Bearer Basic",
|
|
426
|
-
}),
|
|
427
|
-
requireHttps: true,
|
|
428
|
-
classify: provider.classify,
|
|
429
|
-
usageGuide: {
|
|
430
|
-
content: usageGuide(purpose, region, options.instructions),
|
|
431
|
-
// Explicit rather than derived: the derived summary would truncate the
|
|
432
|
-
// residency note mid-sentence at 120 characters
|
|
433
|
-
// ([#342](https://github.com/zackbart/connecta/issues/342)).
|
|
434
|
-
summary: `${REGION_COPY[region]} residency. Project scoping, id resolution, query-schema-first analysis, plan-gated catalog.`,
|
|
435
|
-
// Not `required`. Mixpanel's own schemas describe each call; the guide
|
|
436
|
-
// carries the project-then-context sequence, which is worth reading
|
|
437
|
-
// before an analysis rather than before every call.
|
|
438
|
-
},
|
|
439
|
-
});
|
|
440
|
-
return connector;
|
|
441
|
-
}
|
|
442
|
-
function mixpanelApi(id, options, provider) {
|
|
443
|
-
if (options.auth?.type !== "credential")
|
|
444
|
-
throw new Error('via: "api" requires auth: { type: "credential" }.');
|
|
445
|
-
if (options.defaultProjectId !== undefined &&
|
|
446
|
-
(!Number.isSafeInteger(options.defaultProjectId) || options.defaultProjectId < 1)) {
|
|
447
|
-
throw new Error("defaultProjectId must be a positive safe integer.");
|
|
448
|
-
}
|
|
449
|
-
const region = options.region ?? "us";
|
|
450
|
-
const rest = mixpanelRest(region, options.defaultProjectId);
|
|
451
|
-
const instructions = options.instructions?.trim();
|
|
452
|
-
return apiConnector(id, {
|
|
453
|
-
...provider.connectorOptions,
|
|
454
|
-
title: options.title ?? `Mixpanel API (${region})`,
|
|
455
|
-
description: `Mixpanel service-account REST APIs (${region} residency): ${options.purpose}`,
|
|
456
|
-
credential: {
|
|
457
|
-
label: "Mixpanel service account",
|
|
458
|
-
description: "username:secret from Mixpanel organization settings. Import requires Owner or Admin on the target project.",
|
|
459
|
-
placeholder: "username:secret",
|
|
460
|
-
},
|
|
461
|
-
testCredential: rest.testCredential,
|
|
462
|
-
callAdmission: options.callAdmission === undefined ? MIXPANEL_API_ADMISSION : options.callAdmission,
|
|
463
|
-
usageGuide: {
|
|
464
|
-
content: `# Mixpanel API usage\n\nService-account REST, ${region} residency. Account purpose: ${options.purpose}\n\nDefault project: ${options.defaultProjectId ?? "none; supply project_id"}.${skill.fragments.api}${instructions ? `\n## ${skill.instructionsHeading}\n\n${instructions}\n` : ""}`,
|
|
465
|
-
summary: `${REGION_COPY[region]} residency, service-account REST. Raw export, user activity, profiles, reports and event import.`,
|
|
466
|
-
required: true,
|
|
467
|
-
},
|
|
468
|
-
tools: rest.tools,
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
/** @deprecated Read `mixpanel.definition.classify` instead. Kept for existing imports. */
|
|
472
|
-
export const MIXPANEL_VETTED_CATALOG = reviewedCatalog(mixpanel.definition.classify, 'defineProvider("mixpanel")');
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export const openapi = {
|
|
2
|
-
source: "https://docs.mixpanel.com/openapi/query.openapi.yaml",
|
|
3
|
-
revision: "reviewed-2026-10-14",
|
|
4
|
-
digest: "sha256:d9bbbbfa67f0a31f900b325932462b9cd541d287e55357d28e201df69a35e677",
|
|
5
|
-
version: "1.0.0",
|
|
6
|
-
servers: ["query", "export", "app", "ingestion"],
|
|
7
|
-
tags: ["Export", "Account", "Engage", "Funnels", "Insights", "Retention", "Activity Feed", "Events"],
|
|
8
|
-
ops: [
|
|
9
|
-
["GET", "/api/2.0/export", "raw-event-export", "Download Data", 0, 1],
|
|
10
|
-
["GET", "/api/app/me", "service-account-me", "Service-account identity and reachable projects", 1, 2],
|
|
11
|
-
["POST", "/api/query/engage", "engage-query", "Query Profiles", 2],
|
|
12
|
-
["GET", "/api/query/funnels", "funnels-query", "Query Saved Report", 3],
|
|
13
|
-
["GET", "/api/query/funnels/list", "funnels-list-saved", "List Saved Funnels", 3],
|
|
14
|
-
["GET", "/api/query/insights", "insights-query", "Query Saved Report", 4],
|
|
15
|
-
["GET", "/api/query/retention", "retention-query", "Query Retention Report", 5],
|
|
16
|
-
["GET", "/api/query/stream/query", "activity-stream-query", "Profile Event Activity", 6],
|
|
17
|
-
["POST", "/import", "import-events", "Import Events", 7, 3],
|
|
18
|
-
],
|
|
19
|
-
details: '{"d":[],"o":[[[["project_id","query",0,{"t":"integer"}],["from_date","query",1,{"t":"string"}],["to_date","query",1,{"t":"string"}],["limit","query",0,{"t":"integer"}],["event","query",0,{"t":"string"}],["where","query",0,{"t":"string"}],["time_in_ms","query",0,{"t":"boolean"}]],0],0,[[["project_id","query",1,{"t":"integer"}],["workspace_id","query",0,{"t":"integer"}]],["application/x-www-form-urlencoded",{"p":{"distinct_id":{"t":"string"},"distinct_ids":{"t":"string"},"data_group_id":{"t":"string"},"where":{"t":"string"},"output_properties":{"t":"array","i":{"t":"string"}},"session_id":{"t":"string"},"page":{"t":"integer"},"behaviors":{"t":"integer"},"as_of_timestamp":{"t":"integer"},"filter_by_cohort":{"t":"string"},"include_all_users":{"t":"boolean"}}}]],[[["project_id","query",1,{"t":"integer"}],["workspace_id","query",0,{"t":"integer"}],["funnel_id","query",1,{"t":"integer"}],["from_date","query",1,{"t":"string"}],["to_date","query",1,{"t":"string"}],["length","query",0,{"t":"integer"}],["length_unit","query",0,{"t":"string","e":["day","hour","minute","second"]}],["interval","query",0,{"t":"integer"}],["unit","query",0,{"t":"string","e":["day","week","month"]}],["on","query",0,{"t":"string"}],["where","query",0,{"t":"string"}],["limit","query",0,{"t":"integer"}]],0],[[["project_id","query",1,{"t":"integer"}],["workspace_id","query",0,{"t":"integer"}]],0],[[["project_id","query",1,{"t":"integer"}],["workspace_id","query",0,{"t":"integer"}],["bookmark_id","query",1,{"t":"integer"}]],0],[[["project_id","query",1,{"t":"integer"}],["workspace_id","query",0,{"t":"integer"}],["from_date","query",1,{"t":"string"}],["to_date","query",1,{"t":"string"}],["retention_type","query",0,{"t":"string","e":["birth","compounded"]}],["born_event","query",0,{"t":"string"}],["event","query",0,{"t":"string"}],["born_where","query",0,{"t":"string"}],["where","query",0,{"t":"string"}],["interval","query",0,{"t":"integer"}],["interval_count","query",0,{"t":"integer"}],["unit","query",0,{"t":"string","e":["day","week","month"]}],["unbounded_retention","query",0,{"t":"boolean"}],["on","query",0,{"t":"string"}],["limit","query",0,{"t":"integer"}]],0],[[["project_id","query",1,{"t":"integer"}],["workspace_id","query",0,{"t":"integer"}],["distinct_ids","query",1,{"t":"string"}],["from_date","query",1,{"t":"string"}],["to_date","query",1,{"t":"string"}]],0],[[["strict","query",1,{"t":"string","e":["0","1"]}],["project_id","query",1,{"t":"string"}]],["application/json",{"t":"array","i":{"t":"object","p":{"event":{"t":"string"},"properties":{"t":"object","p":{"time":{"t":"integer"},"distinct_id":{"t":"string"},"$insert_id":{"t":"string"}},"r":["time","$insert_id","distinct_id"],"m":{}}},"r":["event","properties"]}},1]]]}',
|
|
20
|
-
};
|