@zackbart/connecta 0.28.1 → 0.30.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.
Files changed (332) hide show
  1. package/CHANGELOG.md +855 -5
  2. package/README.md +125 -116
  3. package/bin/connecta.mjs +121 -139
  4. package/bin/meta-tool-names.d.mts +2 -0
  5. package/bin/meta-tool-names.mjs +9 -0
  6. package/bin/version.mjs +3 -0
  7. package/dist/access-tokens.js +53 -63
  8. package/dist/activity-request.js +8 -0
  9. package/dist/activity.d.ts +76 -42
  10. package/dist/activity.js +110 -42
  11. package/dist/argument-redaction.js +230 -0
  12. package/dist/auth/clerk-sdk/client.d.ts +65 -0
  13. package/dist/auth/clerk-sdk/client.js +5 -0
  14. package/dist/auth/clerk-sdk/generated.js +1845 -0
  15. package/dist/auth/clerk-transport.js +19 -0
  16. package/dist/auth/clerk.d.ts +17 -7
  17. package/dist/auth/clerk.js +189 -107
  18. package/dist/auth/cloudflare-access.js +25 -26
  19. package/dist/auth/downstream-client-metadata.d.ts +29 -0
  20. package/dist/auth/downstream-client-metadata.js +133 -0
  21. package/dist/auth/downstream-oauth.js +1584 -1580
  22. package/dist/auth/downstream-revocation.js +106 -0
  23. package/dist/auth/oauth-token-response.js +231 -0
  24. package/dist/auth/oauth-v2-migration.js +116 -0
  25. package/dist/auth/static-oauth.js +93 -71
  26. package/dist/auth-elicitation.js +288 -0
  27. package/dist/authorization-handoff.js +111 -0
  28. package/dist/branding.d.ts +8 -16
  29. package/dist/branding.js +26 -59
  30. package/dist/byte-read-response.js +39 -0
  31. package/dist/call-admission.js +12 -16
  32. package/dist/catalog-cache.js +739 -0
  33. package/dist/catalog-drift.d.ts +50 -15
  34. package/dist/catalog-drift.js +365 -128
  35. package/dist/catalog-fingerprint.js +2 -4
  36. package/dist/catalog-freshness.js +13 -0
  37. package/dist/catalog-limits.js +2 -2
  38. package/dist/catalog-service.js +409 -225
  39. package/dist/catalog.js +43 -84
  40. package/dist/concurrency.js +3 -4
  41. package/dist/config-defaults.d.ts +39 -0
  42. package/dist/config-defaults.js +46 -0
  43. package/dist/config-schema.d.ts +181 -0
  44. package/dist/config-schema.js +435 -0
  45. package/dist/config-value-sources.js +102 -0
  46. package/dist/config.d.ts +633 -0
  47. package/dist/config.js +508 -0
  48. package/dist/connector-access.d.ts +1 -0
  49. package/dist/connector-access.js +13 -15
  50. package/dist/connector-caller.d.ts +8 -0
  51. package/dist/connector-caller.js +15 -6
  52. package/dist/connector-scope.js +1 -1
  53. package/dist/connectors/api-connector.d.ts +59 -7
  54. package/dist/connectors/api-connector.js +106 -19
  55. package/dist/connectors/api.js +4 -1
  56. package/dist/connectors/guarded-fetch.d.ts +144 -0
  57. package/dist/connectors/guarded-fetch.js +87 -38
  58. package/dist/connectors/negotiation-cache.js +46 -0
  59. package/dist/connectors/option-shapes.js +27 -0
  60. package/dist/connectors/remote-mcp.d.ts +30 -4
  61. package/dist/connectors/remote-mcp.js +1774 -320
  62. package/dist/connectors/resource-uri.js +335 -0
  63. package/dist/credential-contract.d.ts +10 -0
  64. package/dist/credential-rules.js +1 -3
  65. package/dist/credential-url.js +108 -0
  66. package/dist/credentials.d.ts +6 -1
  67. package/dist/credentials.js +27 -18
  68. package/dist/d1.d.ts +130 -0
  69. package/dist/d1.js +290 -0
  70. package/dist/describe-config.d.ts +165 -0
  71. package/dist/describe-config.js +315 -0
  72. package/dist/described.js +106 -0
  73. package/dist/downstream-input-context.js +128 -0
  74. package/dist/downstream-input.js +325 -0
  75. package/dist/errors.d.ts +132 -31
  76. package/dist/errors.js +175 -87
  77. package/dist/execute.js +798 -318
  78. package/dist/executor-admission.d.ts +1 -0
  79. package/dist/executor-admission.js +11 -15
  80. package/dist/executor-contract.d.ts +20 -0
  81. package/dist/executor-contract.js +48 -0
  82. package/dist/executor-result.js +30 -13
  83. package/dist/executors/quickjs-child.js +15 -9
  84. package/dist/executors/quickjs-protocol.js +5 -6
  85. package/dist/executors/quickjs-runtime.js +152 -59
  86. package/dist/executors/quickjs.js +49 -39
  87. package/dist/favicon.js +1 -2
  88. package/dist/fix-prompt.js +1 -3
  89. package/dist/guest-runtime.js +238 -0
  90. package/dist/guest-types.d.ts +218 -0
  91. package/dist/guest-types.js +1 -0
  92. package/dist/html-security.js +24 -0
  93. package/dist/identity.js +1 -3
  94. package/dist/inbound-credential.js +52 -0
  95. package/dist/index.d.ts +24 -256
  96. package/dist/index.js +65 -478
  97. package/dist/invocation-auth.js +69 -0
  98. package/dist/invocation.js +262 -79
  99. package/dist/json-schema.d.ts +1 -1
  100. package/dist/mcp-client-context.js +35 -0
  101. package/dist/mcp-result.js +11 -7
  102. package/dist/meta-output.js +61 -0
  103. package/dist/meta-tool-names.d.ts +2 -0
  104. package/dist/meta-tool-names.js +3 -0
  105. package/dist/meta-tools.js +419 -272
  106. package/dist/module-contracts.d.ts +8 -23
  107. package/dist/node.d.ts +0 -2
  108. package/dist/node.js +2 -2
  109. package/dist/oauth-callback-outcome.js +1 -3
  110. package/dist/oauth-handoff.js +194 -0
  111. package/dist/oauth-sealing.js +20 -0
  112. package/dist/operator-record.d.ts +137 -0
  113. package/dist/operator-record.js +420 -0
  114. package/dist/operator-ui/assets.js +31 -0
  115. package/dist/operator-ui/contract.d.ts +72 -0
  116. package/dist/operator-ui/contract.js +1 -0
  117. package/dist/operator-ui/fix-prompts.d.ts +18 -0
  118. package/dist/operator-ui/generated.js +5 -4
  119. package/dist/operator-ui/model.d.ts +12 -87
  120. package/dist/operator-ui/model.js +2 -9
  121. package/dist/operator-ui/setup-commands.js +1 -3
  122. package/dist/operator-ui/view.d.ts +323 -0
  123. package/dist/operator-ui/view.js +62 -189
  124. package/dist/page-styles.js +2 -3
  125. package/dist/program-result.js +5 -0
  126. package/dist/program-source.js +14 -2
  127. package/dist/{exempt-writes.js → program-writes.js} +60 -19
  128. package/dist/provider.d.ts +142 -0
  129. package/dist/provider.js +187 -0
  130. package/dist/providers/_shared/google/result-size.js +57 -0
  131. package/dist/providers/_shared/google/service-account.d.ts +58 -0
  132. package/dist/providers/_shared/google/service-account.js +500 -0
  133. package/dist/providers/_shared/google/workspace.d.ts +276 -0
  134. package/dist/providers/_shared/google/workspace.js +518 -0
  135. package/dist/providers/_shared/request-token.js +83 -0
  136. package/dist/providers/{basecamp.d.ts → basecamp/index.d.ts} +6 -28
  137. package/dist/providers/basecamp/index.js +997 -0
  138. package/dist/providers/basecamp/skill.generated.js +9 -0
  139. package/dist/providers/{breeze.d.ts → breeze/index.d.ts} +2 -2
  140. package/dist/providers/{breeze.js → breeze/index.js} +184 -140
  141. package/dist/providers/breeze/skill.generated.js +9 -0
  142. package/dist/providers/{ccb.d.ts → ccb/index.d.ts} +2 -2
  143. package/dist/providers/{ccb.js → ccb/index.js} +271 -116
  144. package/dist/providers/ccb/skill.generated.js +9 -0
  145. package/dist/providers/{cloudflare.d.ts → cloudflare/index.d.ts} +8 -7
  146. package/dist/providers/{cloudflare.js → cloudflare/index.js} +171 -738
  147. package/dist/providers/cloudflare/skill.generated.js +10 -0
  148. package/dist/providers/docs/index.d.ts +54 -0
  149. package/dist/providers/docs/index.js +1237 -0
  150. package/dist/providers/docs/skill.generated.js +9 -0
  151. package/dist/providers/drive/index.d.ts +53 -0
  152. package/dist/providers/drive/index.js +1523 -0
  153. package/dist/providers/drive/skill.generated.js +9 -0
  154. package/dist/providers/forms/index.d.ts +54 -0
  155. package/dist/providers/forms/index.js +1217 -0
  156. package/dist/providers/forms/skill.generated.js +11 -0
  157. package/dist/providers/github/auth.d.ts +32 -0
  158. package/dist/providers/github/auth.js +361 -0
  159. package/dist/providers/github/hosted.js +218 -0
  160. package/dist/providers/github/index.d.ts +13 -0
  161. package/dist/providers/github/index.js +140 -0
  162. package/dist/providers/github/key.js +100 -0
  163. package/dist/providers/github/rest.js +321 -0
  164. package/dist/providers/github/scope.d.ts +29 -0
  165. package/dist/providers/github/scope.js +124 -0
  166. package/dist/providers/github/skill.generated.js +8 -0
  167. package/dist/providers/gmail/index.d.ts +51 -0
  168. package/dist/providers/gmail/index.js +1436 -0
  169. package/dist/providers/gmail/skill.generated.js +9 -0
  170. package/dist/providers/infisical/index.d.ts +7 -0
  171. package/dist/providers/infisical/index.js +713 -0
  172. package/dist/providers/infisical/skill.generated.js +8 -0
  173. package/dist/providers/{linear.d.ts → linear/index.d.ts} +11 -14
  174. package/dist/providers/linear/index.js +352 -0
  175. package/dist/providers/linear/skill.generated.js +8 -0
  176. package/dist/providers/{mixpanel.d.ts → mixpanel/index.d.ts} +5 -10
  177. package/dist/providers/mixpanel/index.js +416 -0
  178. package/dist/providers/mixpanel/skill.generated.js +9 -0
  179. package/dist/providers/{notion.d.ts → notion/index.d.ts} +8 -8
  180. package/dist/providers/{notion.js → notion/index.js} +226 -239
  181. package/dist/providers/notion/skill.generated.js +10 -0
  182. package/dist/providers/{overflow.d.ts → overflow/index.d.ts} +2 -2
  183. package/dist/providers/{overflow.js → overflow/index.js} +74 -111
  184. package/dist/providers/overflow/skill.generated.js +8 -0
  185. package/dist/providers/{planning-center.d.ts → planning-center/index.d.ts} +2 -2
  186. package/dist/providers/{planning-center.js → planning-center/index.js} +264 -104
  187. package/dist/providers/planning-center/skill.generated.js +10 -0
  188. package/dist/providers/{revenuecat.d.ts → revenuecat/index.d.ts} +5 -10
  189. package/dist/providers/revenuecat/index.js +557 -0
  190. package/dist/providers/revenuecat/skill.generated.js +11 -0
  191. package/dist/providers/sheets/index.d.ts +54 -0
  192. package/dist/providers/sheets/index.js +1237 -0
  193. package/dist/providers/sheets/skill.generated.js +10 -0
  194. package/dist/providers/slides/index.d.ts +53 -0
  195. package/dist/providers/slides/index.js +2645 -0
  196. package/dist/providers/slides/skill.generated.js +9 -0
  197. package/dist/providers/{stripe.d.ts → stripe/index.d.ts} +5 -12
  198. package/dist/providers/stripe/index.js +266 -0
  199. package/dist/providers/stripe/skill.generated.js +11 -0
  200. package/dist/providers/{tithely.d.ts → tithely/index.d.ts} +2 -2
  201. package/dist/providers/{tithely.js → tithely/index.js} +60 -91
  202. package/dist/providers/tithely/skill.generated.js +8 -0
  203. package/dist/providers/{vercel.d.ts → vercel/index.d.ts} +8 -8
  204. package/dist/providers/vercel/index.js +1038 -0
  205. package/dist/providers/vercel/mcp-ownership.js +212 -0
  206. package/dist/providers/vercel/skill.generated.js +11 -0
  207. package/dist/registry.d.ts +110 -171
  208. package/dist/registry.js +588 -927
  209. package/dist/request-state.js +21 -0
  210. package/dist/resource-read.js +103 -0
  211. package/dist/result-shapes.js +17 -49
  212. package/dist/retired-toolkits.js +1 -1
  213. package/dist/routes/access-tokens.js +3 -6
  214. package/dist/routes/activity-context.js +21 -0
  215. package/dist/routes/activity-disclosure.js +40 -0
  216. package/dist/routes/activity.js +59 -21
  217. package/dist/routes/actor-labels.js +3 -50
  218. package/dist/routes/connect.js +221 -0
  219. package/dist/routes/credentials.js +15 -27
  220. package/dist/routes/mcp.js +365 -130
  221. package/dist/routes/oauth-client-metadata.js +15 -0
  222. package/dist/routes/oauth-management.js +45 -107
  223. package/dist/routes/oauth.js +110 -57
  224. package/dist/routes/operator.js +3 -3
  225. package/dist/routes/shared.d.ts +25 -64
  226. package/dist/routes/shared.js +160 -80
  227. package/dist/routes/skills.js +30 -0
  228. package/dist/routes/ui-config.js +225 -0
  229. package/dist/routes/ui-data.js +40 -35
  230. package/dist/routes/ui.js +66 -56
  231. package/dist/runtime/admission.js +4 -2
  232. package/dist/runtime/call-admission.js +3 -1
  233. package/dist/runtime/connector-scope.js +1 -4
  234. package/dist/runtime/run.js +10 -39
  235. package/dist/runtime/services.js +12 -117
  236. package/dist/runtime/shared-read.js +1 -3
  237. package/dist/runtime/storage.js +8 -1
  238. package/dist/sent-secrets.d.ts +93 -0
  239. package/dist/sent-secrets.js +1013 -0
  240. package/dist/server.js +28 -71
  241. package/dist/skills.js +416 -174
  242. package/dist/sqlite.d.ts +48 -0
  243. package/dist/sqlite.js +181 -0
  244. package/dist/storage/keys.js +443 -0
  245. package/dist/storage/memory.js +16 -4
  246. package/dist/storage/sql.d.ts +66 -0
  247. package/dist/storage/sql.js +543 -0
  248. package/dist/timeout.js +4 -2
  249. package/dist/tool-name.js +17 -0
  250. package/dist/tool-safety.d.ts +9 -35
  251. package/dist/tool-safety.js +20 -40
  252. package/dist/types.d.ts +336 -56
  253. package/dist/types.js +0 -1
  254. package/dist/ui.d.ts +7 -19
  255. package/dist/ui.js +76 -90
  256. package/dist/url-safety.js +3 -6
  257. package/dist/usage-guide.js +146 -0
  258. package/dist/validate.d.ts +7 -0
  259. package/dist/validate.js +309 -47
  260. package/dist/version.d.ts +1 -7
  261. package/dist/version.js +3 -7
  262. package/dist/worker.d.ts +11 -0
  263. package/dist/worker.js +435 -0
  264. package/documentation/README.md +63 -0
  265. package/documentation/architecture.md +696 -231
  266. package/documentation/auth.md +1069 -546
  267. package/documentation/code-mode.md +662 -356
  268. package/documentation/deploying.md +146 -0
  269. package/documentation/integrating.md +159 -0
  270. package/documentation/meta-tools.md +570 -216
  271. package/documentation/operating.md +135 -0
  272. package/documentation/operator-tests.md +97 -0
  273. package/documentation/operator-ui.md +132 -0
  274. package/documentation/provider-migration-0.29.md +65 -0
  275. package/examples/worker/AGENTS.md +34 -12
  276. package/examples/worker/README.md +293 -255
  277. package/examples/worker/kv-to-d1.wrangler.jsonc +26 -0
  278. package/examples/worker/scripts/copy-kv-to-d1.mjs +162 -0
  279. package/examples/worker/src/connecta.config.ts +151 -0
  280. package/examples/worker/src/index.ts +14 -197
  281. package/examples/worker/wrangler.jsonc +15 -35
  282. package/package.json +126 -54
  283. package/templates/node/.dockerignore +1 -2
  284. package/templates/node/.env.example +20 -21
  285. package/templates/node/AGENTS.md +21 -17
  286. package/templates/node/Dockerfile +3 -5
  287. package/templates/node/README.md +140 -58
  288. package/templates/node/docker-compose.yml +11 -12
  289. package/templates/node/package.json +4 -2
  290. package/templates/node/src/connecta.config.ts +119 -0
  291. package/templates/node/src/index.ts +9 -154
  292. package/templates/node/src/provision-token.ts +17 -0
  293. package/AGENTS.md +0 -170
  294. package/dist/artifacts/connector.d.ts +0 -58
  295. package/dist/artifacts/connector.js +0 -730
  296. package/dist/artifacts/document.js +0 -86
  297. package/dist/artifacts/guide.js +0 -140
  298. package/dist/artifacts/html-scan.js +0 -329
  299. package/dist/artifacts/json.js +0 -78
  300. package/dist/artifacts/kv-store.d.ts +0 -20
  301. package/dist/artifacts/kv-store.js +0 -140
  302. package/dist/artifacts/markdown.js +0 -478
  303. package/dist/artifacts/module.d.ts +0 -37
  304. package/dist/artifacts/module.js +0 -66
  305. package/dist/artifacts/operations.d.ts +0 -197
  306. package/dist/artifacts/operations.js +0 -1002
  307. package/dist/artifacts/refresh.d.ts +0 -55
  308. package/dist/artifacts/refresh.js +0 -236
  309. package/dist/artifacts/routes.js +0 -206
  310. package/dist/artifacts/types.d.ts +0 -214
  311. package/dist/artifacts/types.js +0 -22
  312. package/dist/artifacts/validate.d.ts +0 -62
  313. package/dist/artifacts/validate.js +0 -651
  314. package/dist/artifacts.d.ts +0 -6
  315. package/dist/artifacts.js +0 -9
  316. package/dist/auth/bearer.d.ts +0 -11
  317. package/dist/auth/bearer.js +0 -50
  318. package/dist/providers/basecamp.js +0 -445
  319. package/dist/providers/linear.js +0 -217
  320. package/dist/providers/mixpanel.js +0 -247
  321. package/dist/providers/revenuecat.js +0 -317
  322. package/dist/providers/stripe.js +0 -253
  323. package/dist/providers/vercel.js +0 -1253
  324. package/dist/storage/file.d.ts +0 -15
  325. package/dist/storage/file.js +0 -455
  326. package/ethos.md +0 -93
  327. package/examples/worker/src/cloudflare-kv.ts +0 -43
  328. package/examples/worker/src/d1-activity-row.ts +0 -155
  329. package/examples/worker/src/d1-activity.ts +0 -147
  330. package/examples/worker/src/d1-storage.ts +0 -138
  331. package/examples/worker/src/r2-artifact-blobs.ts +0 -29
  332. package/templates/node/src/file-activity.ts +0 -182
@@ -0,0 +1,416 @@
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 } from "../../config-schema.js";
5
+ import { PROVIDER_COMMON, REMOTE_MCP_AUTH } from "../../connectors/option-shapes.js";
6
+ import { defineProvider } from "../../provider.js";
7
+ export const MIXPANEL_MCP_ENDPOINTS = {
8
+ us: "https://mcp.mixpanel.com/mcp",
9
+ eu: "https://mcp-eu.mixpanel.com/mcp",
10
+ in: "https://mcp-in.mixpanel.com/mcp",
11
+ };
12
+ /**
13
+ * Reviewed in #705's provider audit against https://docs.mixpanel.com/docs/mcp.
14
+ * Retains the release-reviewed inventory, including names absent from today's
15
+ * public reference. Live annotations were not reverified without credentials.
16
+ * Schema digests retain the 2026-08-30 live US review (#395, #512).
17
+ */
18
+ const MIXPANEL_CLASSIFICATION = {
19
+ tools: {
20
+ "Run-Query": {
21
+ "verdict": "read",
22
+ "reason": "Runs an observational analytics query; saved reports and dashboard edits use separate write tools.",
23
+ "schemaDigest": "sha256:0eb7d52343f6137275a02c2d7bb02dafdbfd25bd6f9067395eb689492d835466",
24
+ },
25
+ "Get-Query-Schema": {
26
+ "verdict": "read",
27
+ "reason": "Retrieves Mixpanel query schema information without changing vendor state.",
28
+ "schemaDigest": "sha256:8fea929d2ad4f8fed6c47116ff0eaa6f964b3ddd4685e482b68a8dac0231af73",
29
+ },
30
+ "Get-Report": {
31
+ "verdict": "read",
32
+ "reason": "Retrieves Mixpanel report information without changing vendor state.",
33
+ "schemaDigest": "sha256:a99ba2af1ab57c1d5a606dbd7701968aa430ab23f5969f356a4c41f345dba041",
34
+ },
35
+ "Display-Query": {
36
+ "verdict": "read",
37
+ "reason": "Displays existing query results without editing a dashboard or saved report.",
38
+ "schemaDigest": "sha256:d0776167b8a20898c1ff580ca9517da8dea6b827c64e10b9fa01ae1a3c2db95f",
39
+ },
40
+ "List-Dashboards": {
41
+ "verdict": "read",
42
+ "reason": "Retrieves Mixpanel dashboards information without changing vendor state.",
43
+ "schemaDigest": "sha256:994c1c9fc87a4f1f00a677b856a44bad028252d283bd8e647ae157683fc89ea2",
44
+ },
45
+ "Get-Dashboard": {
46
+ "verdict": "read",
47
+ "reason": "Retrieves Mixpanel dashboard information without changing vendor state.",
48
+ "schemaDigest": "sha256:56659fa3277723b75e24f3b4ca142ac9cd62120fb97e6c9252c221d00cdf8509",
49
+ },
50
+ "Get-Business-Context": {
51
+ "verdict": "read",
52
+ "reason": "Reads existing business context for a project or organization; updates use a separate tool.",
53
+ "schemaDigest": "sha256:309f5ba864c90132061096b4f0ebc1e78544a6486bac3a45bd661d16bcab2b6c",
54
+ },
55
+ "Get-Projects": {
56
+ "verdict": "read",
57
+ "reason": "Retrieves Mixpanel projects information without changing vendor state.",
58
+ "schemaDigest": "sha256:d23d07a777441f04b128f08a2c30a6e8a1573d203f8a1ad7788bc1fd57a9cbbf",
59
+ },
60
+ "List-Organizations": {
61
+ "verdict": "read",
62
+ "reason": "Retrieves Mixpanel organizations information without changing vendor state.",
63
+ "schemaDigest": "sha256:e4c23f123dde073e00038d92ebd53f45157c83a4d3a2ff686ab1b66c859f4a11",
64
+ },
65
+ "Get-Events": {
66
+ "verdict": "read",
67
+ "reason": "Retrieves Mixpanel events information without changing vendor state.",
68
+ "schemaDigest": "sha256:d206fe30ab47d64bf6090bffdb4d119a80cfc2a35963bbe7fd52d56060090ded",
69
+ },
70
+ "List-Properties": {
71
+ "verdict": "read",
72
+ "reason": "Retrieves Mixpanel properties information without changing vendor state.",
73
+ "schemaDigest": "sha256:52b38861df076119dfefe0128cf9819868336bf60e090f63c80da734877a69fe",
74
+ },
75
+ "Get-Property-Values": {
76
+ "verdict": "read",
77
+ "reason": "Retrieves Mixpanel property values information without changing vendor state.",
78
+ "schemaDigest": "sha256:0cd487c9b92a187b21f456de3c785bb631aa30cba702785c9ff158608883a6bb",
79
+ },
80
+ "Search-Entities": {
81
+ "verdict": "read",
82
+ "reason": "Retrieves Mixpanel entities information without changing vendor state.",
83
+ "schemaDigest": "sha256:86cfa1d3bf7f17a70ad07264d7b1d16c83480e40996e8d847911fe8bde13e35e",
84
+ },
85
+ "Get-Issues": {
86
+ "verdict": "read",
87
+ "reason": "Retrieves Mixpanel issues information without changing vendor state.",
88
+ "schemaDigest": "sha256:cf172ef18f37504a758c825c7bd4bc23fd98c3421655754dccd8e5ee2d700a10",
89
+ },
90
+ "Get-Lexicon-URL": {
91
+ "verdict": "read",
92
+ "reason": "Retrieves Mixpanel lexicon url information without changing vendor state.",
93
+ "schemaDigest": "sha256:c6456d5c4a38ba069a2caa6cdac651be9d86d47bc6efb3316a893c7336d0e2bc",
94
+ },
95
+ "Find-Duplicate-Groups": {
96
+ "verdict": "read",
97
+ "reason": "Retrieves Mixpanel find duplicate groups information without changing vendor state.",
98
+ "schemaDigest": "sha256:8f944cef9a147eab3c51bfcf1b873cef1409e5a6c21565d34e7ed20d23dcebb7",
99
+ },
100
+ "Get-Custom-Property": {
101
+ "verdict": "read",
102
+ "reason": "Retrieves Mixpanel custom property information without changing vendor state.",
103
+ "schemaDigest": "sha256:d1cbce906cee66d422846c8ef1a745bbeac2c058ecad6b1ee8dcdd2120fa86be",
104
+ },
105
+ "Get-Cohort": {
106
+ "verdict": "read",
107
+ "reason": "Retrieves Mixpanel cohort information without changing vendor state.",
108
+ "schemaDigest": "sha256:e18c500459edd9c2b6a614a3f6c97b668786be9abf72929a0a50086bdadb1dae",
109
+ },
110
+ "List-Cohorts": {
111
+ "verdict": "read",
112
+ "reason": "Retrieves Mixpanel cohorts information without changing vendor state.",
113
+ "schemaDigest": "sha256:fd04778d60a027cfd777b40f36fbb037ba070661e149b2fce35a14865cada2db",
114
+ },
115
+ "Describe-Cohort-Schema": {
116
+ "verdict": "read",
117
+ "reason": "Retrieves Mixpanel describe cohort schema information without changing vendor state.",
118
+ "schemaDigest": "sha256:775dbb8bb71ad3fa39ba35ca3a2683dfd88120f7af84a968531609c5a12de537",
119
+ },
120
+ "Get-Lookup-Table": {
121
+ "verdict": "read",
122
+ "reason": "Retrieves Mixpanel lookup table information without changing vendor state.",
123
+ "schemaDigest": "sha256:061602b283461f083bbd74348c264f802cb21c4fe6d961241c7090895a8334ac",
124
+ },
125
+ "Get-Metric": {
126
+ "verdict": "read",
127
+ "reason": "Retrieves Mixpanel metric information without changing vendor state.",
128
+ "schemaDigest": "sha256:eef10dd9ca25a63a63775565cbc4f2261b289dec526aa33df0f318eefbc96c46",
129
+ },
130
+ "List-Metrics": {
131
+ "verdict": "read",
132
+ "reason": "Retrieves Mixpanel metrics information without changing vendor state.",
133
+ "schemaDigest": "sha256:341710bebabb82112e80eb521d9d5cdb3bca024699b3aa795874d3549a315042",
134
+ },
135
+ "Get-User-Replays-Data": {
136
+ "verdict": "read",
137
+ "reason": "Retrieves Mixpanel user replays data information without changing vendor state.",
138
+ "schemaDigest": "sha256:5df287735478a67489075b0c7c9d8c07097abe67408d06743c7fb9be43c6e024",
139
+ },
140
+ "List-Experiments": {
141
+ "verdict": "read",
142
+ "reason": "Retrieves Mixpanel experiments information without changing vendor state.",
143
+ "schemaDigest": "sha256:26a3f3e0b4e52135d74335dd769103303071fc48c15b1df40efd2dfa5a353848",
144
+ },
145
+ "Get-Experiment": {
146
+ "verdict": "read",
147
+ "reason": "Retrieves Mixpanel experiment information without changing vendor state.",
148
+ "schemaDigest": "sha256:ab685aa985aa2ec36d9cbeb1b3c1ef298b020e552e8fdce12e75abbeb4706f2b",
149
+ },
150
+ "Get-Experiment-Setup-Guidance": {
151
+ "verdict": "read",
152
+ "reason": "Retrieves Mixpanel experiment setup guidance information without changing vendor state.",
153
+ "schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
154
+ },
155
+ "Get-Experiment-Results-Interpretation-Guidance": {
156
+ "verdict": "read",
157
+ "reason": "Retrieves Mixpanel experiment results interpretation guidance information without changing vendor state.",
158
+ "schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
159
+ },
160
+ "Explain-Experiment-Health-Check": {
161
+ "verdict": "read",
162
+ "reason": "Retrieves Mixpanel explain experiment health check information without changing vendor state.",
163
+ "schemaDigest": "sha256:a50b1263247012dc78521bf6c1dd18584a7b08d46221a444b1ca49c81d3286e5",
164
+ },
165
+ "Run-Experiment-Pre-Launch-Checks": {
166
+ "verdict": "read",
167
+ "reason": "Retrieves Mixpanel run experiment pre launch checks information without changing vendor state.",
168
+ "schemaDigest": "sha256:f6b5d85f75450b76fda9c7ef441f190fd45fcaeaff4cc3c30a6d1bee76e4c706",
169
+ },
170
+ "Search-Prior-Experiments": {
171
+ "verdict": "read",
172
+ "reason": "Retrieves Mixpanel prior experiments information without changing vendor state.",
173
+ "schemaDigest": "sha256:847d1dcefaf6dc5e7ea967476f464a4d678a06b5e7d437dfb11ad4af2e56620f",
174
+ },
175
+ "List-Feature-Flags": {
176
+ "verdict": "read",
177
+ "reason": "Retrieves Mixpanel feature flags information without changing vendor state.",
178
+ "schemaDigest": "sha256:75fc1ff14f3d3faedb8e00c6563d151de397d584429764fd0c332f6a84f6993c",
179
+ },
180
+ "Get-Feature-Flag": {
181
+ "verdict": "read",
182
+ "reason": "Retrieves Mixpanel feature flag information without changing vendor state.",
183
+ "schemaDigest": "sha256:129de58b379ffba272bdbcee2b5759262e586dd415edc2067a69e9844d4d0877",
184
+ },
185
+ "Get-Feature-Flag-Setup-Guidance": {
186
+ "verdict": "read",
187
+ "reason": "Retrieves Mixpanel feature flag setup guidance information without changing vendor state.",
188
+ "schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
189
+ },
190
+ "Get-Feature-Flag-Lifecycle-Guidance": {
191
+ "verdict": "read",
192
+ "reason": "Retrieves Mixpanel feature flag lifecycle guidance information without changing vendor state.",
193
+ "schemaDigest": "sha256:e517d9759f66f4a7ad15b0b67ffaabfb605e80949afcf41d007dfafd8f3e9574",
194
+ },
195
+ "Create-Dashboard": {
196
+ "verdict": "write",
197
+ "reason": "Create Dashboard creates or appends Mixpanel state; it has side effects.",
198
+ "schemaDigest": "sha256:bd3b6e5134d27dafb04ccdf04d19e54dd23e6e2dc16989e418006e484268037b",
199
+ },
200
+ "Update-Dashboard": {
201
+ "verdict": "destructive",
202
+ "reason": "Update Dashboard changes existing Mixpanel state or removes it.",
203
+ "schemaDigest": "sha256:2cc179ba75eda476ba7488f01503d947f023a4460aa98c4806ef0ab10c3b3ce8",
204
+ },
205
+ "Duplicate-Dashboard": {
206
+ "verdict": "write",
207
+ "reason": "Duplicate Dashboard creates or appends Mixpanel state; it has side effects.",
208
+ "schemaDigest": "sha256:9738db7495d29034df966423df3c9d4b16ac3a8254c8473bf1e85a467fe9cf4e",
209
+ },
210
+ "Delete-Dashboard": {
211
+ "verdict": "destructive",
212
+ "reason": "Delete Dashboard changes existing Mixpanel state or removes it.",
213
+ "schemaDigest": "sha256:3a04594218b491743240e6970f677ed8ed132237d933efe30e97bdc41eb1ab6f",
214
+ },
215
+ "Edit-Event": {
216
+ "verdict": "destructive",
217
+ "reason": "Edit Event changes existing Mixpanel state or removes it.",
218
+ "schemaDigest": "sha256:28c47da0b56f57da0f11eb11435441a39ecd5175600f854442744c66a379ef93",
219
+ },
220
+ "Edit-Property": {
221
+ "verdict": "destructive",
222
+ "reason": "Edit Property changes existing Mixpanel state or removes it.",
223
+ "schemaDigest": "sha256:11975587d2a566edc468db7cb24df70167d12068f30c1fe52c84f543cf4e2399",
224
+ },
225
+ "Bulk-Edit-Events": {
226
+ "verdict": "destructive",
227
+ "reason": "Bulk Edit Events changes existing Mixpanel state or removes it.",
228
+ "schemaDigest": "sha256:94512138df153de95436371f5a313e32b97faffebda3be6c0c69d09d1ff2b340",
229
+ },
230
+ "Bulk-Edit-Properties": {
231
+ "verdict": "destructive",
232
+ "reason": "Bulk Edit Properties changes existing Mixpanel state or removes it.",
233
+ "schemaDigest": "sha256:93481eb896ded45b623c678612e2156439efbaad5b4d660da1f2b087e7409ee3",
234
+ },
235
+ "Create-Tag": {
236
+ "verdict": "write",
237
+ "reason": "Create Tag creates or appends Mixpanel state; it has side effects.",
238
+ "schemaDigest": "sha256:f99b6faad422aa6142d20d0aa4bdec1074e96a8ec45e35573e86d84b01df1d3b",
239
+ },
240
+ "Rename-Tag": {
241
+ "verdict": "destructive",
242
+ "reason": "Rename Tag changes existing Mixpanel state or removes it.",
243
+ "schemaDigest": "sha256:a7e20e79ecd6ca7edca104fa1030e059ffae8962bf084d4a384c012ac9bbf087",
244
+ },
245
+ "Delete-Tag": {
246
+ "verdict": "destructive",
247
+ "reason": "Delete Tag changes existing Mixpanel state or removes it.",
248
+ "schemaDigest": "sha256:5f6cc58ada5d2796f124e15883fe05061d03f9129414f4c8e10a0ec463f17807",
249
+ },
250
+ "Dismiss-Issues": {
251
+ "verdict": "destructive",
252
+ "reason": "Dismiss Issues changes existing Mixpanel state or removes it.",
253
+ "schemaDigest": "sha256:9c1f4901eca53f58d16feee126868d23c6ed1f5fad72344f86ea9965385b8644",
254
+ },
255
+ "Update-Business-Context": {
256
+ "verdict": "destructive",
257
+ "reason": "Update Business Context changes existing Mixpanel state or removes it.",
258
+ "schemaDigest": "sha256:0d21290053b6d532386c3c83d60cd78013a7109492c02ba2e7822716f2cde027",
259
+ },
260
+ "Dismiss-Duplicate-Group": {
261
+ "verdict": "destructive",
262
+ "reason": "Dismiss Duplicate Group changes existing Mixpanel state or removes it.",
263
+ "schemaDigest": "sha256:4e39c6f9bb83ed54020097f6cf34507a5288de2c1ce333456c84682bb5986bc4",
264
+ },
265
+ "Merge-Group": {
266
+ "verdict": "destructive",
267
+ "reason": "Merge Group changes existing Mixpanel state or removes it.",
268
+ "schemaDigest": "sha256:a3b215a5be70305c2f02439513bee76ae3947da14e2a9e5b6ff0afb9ad3d4dcd",
269
+ },
270
+ "Create-Custom-Property": {
271
+ "verdict": "write",
272
+ "reason": "Create Custom Property creates or appends Mixpanel state; it has side effects.",
273
+ "schemaDigest": "sha256:d22818b812f3fd0e785a5bbbee26cf099eaa911d5b6f383f94cf458a2ed26294",
274
+ },
275
+ "Update-Custom-Property": {
276
+ "verdict": "destructive",
277
+ "reason": "Update Custom Property changes existing Mixpanel state or removes it.",
278
+ "schemaDigest": "sha256:781aaaab41c1ab5958062dc393d02b1df2ef2a09a28d3c4f21ae3177f4f53c86",
279
+ },
280
+ "Create-Cohort": {
281
+ "verdict": "write",
282
+ "reason": "Create Cohort creates or appends Mixpanel state; it has side effects.",
283
+ "schemaDigest": "sha256:ea687f4bc607f8bfb5b1949e060239d6f7d629d3ec80fb0b72eae6cc6156ed03",
284
+ },
285
+ "Update-Cohort": {
286
+ "verdict": "destructive",
287
+ "reason": "Update Cohort changes existing Mixpanel state or removes it.",
288
+ "schemaDigest": "sha256:ebe0d5afcc00e23eef55f079cd1816c851c2c647dff9565b7045f1f1615663f2",
289
+ },
290
+ "Delete-Cohort": {
291
+ "verdict": "destructive",
292
+ "reason": "Delete Cohort changes existing Mixpanel state or removes it.",
293
+ "schemaDigest": "sha256:e18c500459edd9c2b6a614a3f6c97b668786be9abf72929a0a50086bdadb1dae",
294
+ },
295
+ "Create-Lookup-Table": {
296
+ "verdict": "write",
297
+ "reason": "Create Lookup Table creates or appends Mixpanel state; it has side effects.",
298
+ "schemaDigest": "sha256:c2fefa33a4f19fc65f394fecdc7126cab0ae874f7c97018cf003d8462a049e4c",
299
+ },
300
+ "Update-Lookup-Table": {
301
+ "verdict": "destructive",
302
+ "reason": "Update Lookup Table changes existing Mixpanel state or removes it.",
303
+ "schemaDigest": "sha256:ef28f1ec9c9484a7a53b5e2b6659e70f79a8e71e55bda17025aa4ab3c23b6a63",
304
+ },
305
+ "Create-Metric": {
306
+ "verdict": "write",
307
+ "reason": "Create Metric creates or appends Mixpanel state; it has side effects.",
308
+ "schemaDigest": "sha256:315766d0c197d87bb44aedd16732f6e69fbfc93661d1fcfc177cadc1751f26ce",
309
+ },
310
+ "Update-Metric": {
311
+ "verdict": "destructive",
312
+ "reason": "Update Metric changes existing Mixpanel state or removes it.",
313
+ "schemaDigest": "sha256:739bb6abdab19282afd4a6644a96183daabe9098a5322c44a77b840608a5ee9d",
314
+ },
315
+ "Create-Experiment": {
316
+ "verdict": "write",
317
+ "reason": "Create Experiment creates or appends Mixpanel state; it has side effects.",
318
+ "schemaDigest": "sha256:1cfc2edeb2ac2d329a531d2095671a0653ab5b94b9e233b34268ff29a48c5ac5",
319
+ },
320
+ "Update-Experiment": {
321
+ "verdict": "destructive",
322
+ "reason": "Update Experiment changes existing Mixpanel state or removes it.",
323
+ "schemaDigest": "sha256:3ea3902555c146f45127fc563b36ffb7ff04b7594765dac9ae98cc09dc432808",
324
+ },
325
+ "Create-Feature-Flag": {
326
+ "verdict": "write",
327
+ "reason": "Create Feature Flag creates or appends Mixpanel state; it has side effects.",
328
+ "schemaDigest": "sha256:3460d11d726727349cac62db5c19915ab589b7f1d8387042f0a3783356b252c4",
329
+ },
330
+ "Update-Feature-Flag": {
331
+ "verdict": "destructive",
332
+ "reason": "Update Feature Flag changes existing Mixpanel state or removes it.",
333
+ "schemaDigest": "sha256:9b34b19164168938d08a75d268c9becf8d189c85a1789a45061ae304041faf7c",
334
+ },
335
+ "Fill-Event-Metadata": {
336
+ "verdict": "destructive",
337
+ "reason": "Applies generated names and descriptions to existing Lexicon events.",
338
+ "schemaDigest": "sha256:53accc988f216bdd5d7a259d731f6df82549e4e6146b191f1815a0d1a72a1abe",
339
+ },
340
+ },
341
+ };
342
+ const REGION_COPY = {
343
+ us: "US",
344
+ eu: "EU",
345
+ in: "India",
346
+ };
347
+ function usageGuide(purpose, region, instructions) {
348
+ const accountInstructions = instructions?.trim();
349
+ // Leads the guide because discovery summarizes a connector by its first
350
+ // content line. A project lives in exactly one residency, so a question
351
+ // pointed at the wrong region does not return fewer rows — it returns
352
+ // nothing, and reads as the project having no data.
353
+ const regionNote = `${REGION_COPY[region]}-residency connection: bound to Mixpanel's ${region}${skill.fragments.guide_0}`;
354
+ return `# Mixpanel usage
355
+
356
+ ${regionNote}
357
+
358
+ Account purpose: ${purpose}${skill.fragments.guide_1}${accountInstructions ? `\n## ${skill.instructionsHeading}\n\n${accountInstructions}\n` : ""}`;
359
+ }
360
+ /** The closed options mixpanel() accepts; see `assertKnownOptions`. */
361
+ const MIXPANEL_OPTIONS = optionsOf()({ ...PROVIDER_COMMON, ...keys("region"), auth: REMOTE_MCP_AUTH });
362
+ /** A maintained Mixpanel hosted-MCP connection. */
363
+ export const mixpanel = defineProvider({
364
+ name: "mixpanel",
365
+ title: "Mixpanel",
366
+ kind: "mcp",
367
+ readme: "Mixpanel",
368
+ bundle: { "baselineGzip": 131378, "maxGzip": 191378 },
369
+ skill,
370
+ options: MIXPANEL_OPTIONS,
371
+ classify: MIXPANEL_CLASSIFICATION,
372
+ create: mixpanelConnector,
373
+ });
374
+ function mixpanelConnector(id, options, provider) {
375
+ const purpose = options.purpose.trim();
376
+ const region = options.region ?? "us";
377
+ if (!(region in MIXPANEL_MCP_ENDPOINTS)) {
378
+ throw new Error(`mixpanel("${id}") region must be "us", "eu", or "in".`);
379
+ }
380
+ const connector = remoteMcp(id, {
381
+ url: MIXPANEL_MCP_ENDPOINTS[region],
382
+ ...provider.connectorOptions,
383
+ // The region rides the title because browse-time discovery renders the
384
+ // title and the guide summary and nothing else, and residency is the fact
385
+ // an agent must not get wrong between two Mixpanel connections.
386
+ title: options.title ?? `Mixpanel (${region})`,
387
+ description: `Mixpanel product analytics (${REGION_COPY[region]} residency) — ${purpose}`,
388
+ // Mixpanel's beta service-account scheme is deliberately not ordinary HTTP
389
+ // Basic: the endpoint wants `Bearer Basic <base64(user:secret)>`. The
390
+ // operator therefore pastes the pair, not an encoded blob, and Connecta
391
+ // does the framing — the same shaping the maintainer drift check applies.
392
+ auth: withCredentialDefaults(options.auth ?? { type: "oauth" }, {
393
+ credential: {
394
+ label: "Service account",
395
+ 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.",
396
+ placeholder: "username:secret",
397
+ },
398
+ scheme: "Bearer Basic",
399
+ }),
400
+ requireHttps: true,
401
+ classify: provider.classify,
402
+ usageGuide: {
403
+ content: usageGuide(purpose, region, options.instructions),
404
+ // Explicit rather than derived: the derived summary would truncate the
405
+ // residency note mid-sentence at 120 characters
406
+ // ([#342](https://github.com/zackbart/connecta/issues/342)).
407
+ summary: `${REGION_COPY[region]} residency. Project scoping, id resolution, query-schema-first analysis, plan-gated catalog.`,
408
+ // Not `required`. Mixpanel's own schemas describe each call; the guide
409
+ // carries the project-then-context sequence, which is worth reading
410
+ // before an analysis rather than before every call.
411
+ },
412
+ });
413
+ return connector;
414
+ }
415
+ /** @deprecated Read `mixpanel.definition.classify` instead. Kept for existing imports. */
416
+ export const MIXPANEL_VETTED_CATALOG = reviewedCatalog(mixpanel.definition.classify, 'defineProvider("mixpanel")');
@@ -0,0 +1,9 @@
1
+ // Generated by scripts/generate-providers.mjs; do not edit.
2
+ export const skill = {
3
+ "content": " endpoint. A project created in another residency is not reachable from here at all, so an empty result may mean wrong connector rather than no data.\n\n- Start with `List-Organizations`, then supply the returned organization id where the live `Get-Projects` schema requires it. Resolve the project and workspace, then read `Get-Business-Context` before interpreting events or metrics.\n- Resolve ids before acting; never guess one. `Get-Projects` yields the project id every other call is scoped by, and `List-Dashboards`, `List-Cohorts`, `List-Metrics`, `List-Experiments`, and `List-Feature-Flags` yield the ids their `Get-`, `Update-`, and `Delete-` counterparts expect.\n- Discover names with `Get-Events`, `List-Properties`, and `Get-Property-Values`; do not guess event or property spelling.\n- `Get-Business-Context` requires either `project_id` or `organization_id`. Its schema marks both optional, but the hosted tool rejects a call with neither.\n- `Get-Property-Values` requires `properties` or the deprecated `property` alias. Event property values also require `event`; prefer `properties` and never send both property forms with conflicting values.\n- `List-Properties` accepts `names` or `query`, never both. Use exact `names` for known properties and `query` for substring discovery.\n- One analysis is one `execute_code` program: fetch `Get-Query-Schema` once, run every `Run-Query` of the analysis in that program, and return the reduced table. The schema is tens of kilobytes and the same for every report type, so re-fetching it per query buys nothing. Never return raw `Run-Query` output.\n- Insights, funnels, and retention answer aggregate questions. A per-user ordered event timeline, or a sequence question such as \"event A with no later event B\", is not answerable with `Run-Query` in a reasonable number of calls, and this hosted catalog has no per-`distinct_id` event timeline — `Get-User-Replays-Data` covers one user's replays with their events only where session replay is enabled and present. If the deployment exposes a Mixpanel export or activity-feed connector, use that; if it does not, tell the user the question is out of reach here rather than approximating it with hourly buckets and hundreds of empty rows.\n- `false` on a boolean property may be an absent property: Mixpanel renders a missing value as `false` in boolean breakdowns, and server-imported events often lack client-side properties entirely. Confirm the property is present with `List-Properties` or `Get-Property-Values` before treating `false` as a signal, and say when a conclusion rests on that ambiguity.\n- Breakdown responses nest `$overall` and per-segment series objects. Flatten to one row per complete breakdown combination inside `execute_code` before returning, and drop `$overall` unless the question asks for the total.\n- Use `Get-Report` when the request names an existing saved report. Use `Run-Query` for a new question.\n- Dashboard row and cell ids are opaque. Read the full layout before editing and preserve grouping and order. Report cells need a project-local `query_id`; duplicate within the same project when possible. Cross-project reconstruction needs new queries in the target project.\n- Query ids can expire. Build the dashboard promptly and rerun a query if its id is rejected as expired; no fixed TTL is guaranteed.\n- This account's tool list is not a fixed set. Mixpanel gates parts of its MCP catalog by plan and beta enrollment — experiments, feature flags, session replay, and issue triage are the usual absentees — so search this connector for what it actually exposes rather than assuming a documented tool is here.\n- Mixpanel meters MCP traffic per user per hour, shared with everything else that credential does. Reuse discovery results within a run and avoid speculative fan-out.\n- An `auth_required` failure means this connector's Mixpanel authorization is missing or expired: run `authorize_connector` for this connector id, then retry the same call unchanged. A rejected argument or a plan restriction comes back in Mixpanel's own words instead — read it rather than re-authorizing.\n- Treat every create, update, edit, merge, dismiss, duplicate, or delete operation as a write. For guest calls, classification, and routing, fetch `skills({ name: \"usage\" })`.\n",
4
+ "instructionsHeading": "Account instructions",
5
+ "fragments": {
6
+ "guide_0": " endpoint. A project created in another residency is not reachable from here at all, so an empty result may mean wrong connector rather than no data.",
7
+ "guide_1": "\n\n- Start with `List-Organizations`, then supply the returned organization id where the live `Get-Projects` schema requires it. Resolve the project and workspace, then read `Get-Business-Context` before interpreting events or metrics.\n- Resolve ids before acting; never guess one. `Get-Projects` yields the project id every other call is scoped by, and `List-Dashboards`, `List-Cohorts`, `List-Metrics`, `List-Experiments`, and `List-Feature-Flags` yield the ids their `Get-`, `Update-`, and `Delete-` counterparts expect.\n- Discover names with `Get-Events`, `List-Properties`, and `Get-Property-Values`; do not guess event or property spelling.\n- `Get-Business-Context` requires either `project_id` or `organization_id`. Its schema marks both optional, but the hosted tool rejects a call with neither.\n- `Get-Property-Values` requires `properties` or the deprecated `property` alias. Event property values also require `event`; prefer `properties` and never send both property forms with conflicting values.\n- `List-Properties` accepts `names` or `query`, never both. Use exact `names` for known properties and `query` for substring discovery.\n- One analysis is one `execute_code` program: fetch `Get-Query-Schema` once, run every `Run-Query` of the analysis in that program, and return the reduced table. The schema is tens of kilobytes and the same for every report type, so re-fetching it per query buys nothing. Never return raw `Run-Query` output.\n- Insights, funnels, and retention answer aggregate questions. A per-user ordered event timeline, or a sequence question such as \"event A with no later event B\", is not answerable with `Run-Query` in a reasonable number of calls, and this hosted catalog has no per-`distinct_id` event timeline — `Get-User-Replays-Data` covers one user's replays with their events only where session replay is enabled and present. If the deployment exposes a Mixpanel export or activity-feed connector, use that; if it does not, tell the user the question is out of reach here rather than approximating it with hourly buckets and hundreds of empty rows.\n- `false` on a boolean property may be an absent property: Mixpanel renders a missing value as `false` in boolean breakdowns, and server-imported events often lack client-side properties entirely. Confirm the property is present with `List-Properties` or `Get-Property-Values` before treating `false` as a signal, and say when a conclusion rests on that ambiguity.\n- Breakdown responses nest `$overall` and per-segment series objects. Flatten to one row per complete breakdown combination inside `execute_code` before returning, and drop `$overall` unless the question asks for the total.\n- Use `Get-Report` when the request names an existing saved report. Use `Run-Query` for a new question.\n- Dashboard row and cell ids are opaque. Read the full layout before editing and preserve grouping and order. Report cells need a project-local `query_id`; duplicate within the same project when possible. Cross-project reconstruction needs new queries in the target project.\n- Query ids can expire. Build the dashboard promptly and rerun a query if its id is rejected as expired; no fixed TTL is guaranteed.\n- This account's tool list is not a fixed set. Mixpanel gates parts of its MCP catalog by plan and beta enrollment — experiments, feature flags, session replay, and issue triage are the usual absentees — so search this connector for what it actually exposes rather than assuming a documented tool is here.\n- Mixpanel meters MCP traffic per user per hour, shared with everything else that credential does. Reuse discovery results within a run and avoid speculative fan-out.\n- An `auth_required` failure means this connector's Mixpanel authorization is missing or expired: run `authorize_connector` for this connector id, then retry the same call unchanged. A rejected argument or a plan restriction comes back in Mixpanel's own words instead — read it rather than re-authorizing.\n- Treat every create, update, edit, merge, dismiss, duplicate, or delete operation as a write. For guest calls, classification, and routing, fetch `skills({ name: \"usage\" })`.\n"
8
+ }
9
+ };
@@ -1,4 +1,4 @@
1
- import type { Connector, ConnectorCallAdmissionPolicy } from "../types.js";
1
+ import type { ConnectorCallAdmissionPolicy } from "../../types.js";
2
2
  /** Notion's REST origin. Every tool below speaks to exactly this host. */
3
3
  export declare const NOTION_API_BASE_URL = "https://api.notion.com";
4
4
  /** Notion's official hosted MCP endpoint. */
@@ -26,8 +26,8 @@ interface NotionCommonOptions {
26
26
  }
27
27
  /** Connecta's maintained hand-written Notion REST interface. */
28
28
  export interface NotionApiOptions extends NotionCommonOptions {
29
- /** Omit for backward compatibility; the hand-written API interface is default. */
30
- surface?: "api";
29
+ /** Select integration-owned REST operations explicitly; hosted user MCP is the default. */
30
+ surface: "api";
31
31
  /** Operator-facing label for the integration token. */
32
32
  credentialLabel?: string;
33
33
  /**
@@ -38,17 +38,17 @@ export interface NotionApiOptions extends NotionCommonOptions {
38
38
  }
39
39
  /** Notion's official hosted MCP interface, authenticated through OAuth. */
40
40
  export interface NotionMcpOptions extends NotionCommonOptions {
41
- surface: "mcp";
41
+ surface?: "mcp";
42
42
  /** Optional per-runtime downstream call-admission policy. */
43
43
  callAdmission?: ConnectorCallAdmissionPolicy;
44
44
  }
45
- /** Backward-compatible API options; existing consumers may extend this interface. */
45
+ /** Explicit integration-owned REST options; use NotionConnectionOptions for either identity. */
46
46
  export interface NotionOptions extends NotionApiOptions {
47
47
  }
48
48
  /** Select one Notion interface when deployment configuration constructs it. */
49
49
  export type NotionConnectionOptions = NotionOptions | NotionMcpOptions;
50
- /** Release-reviewed Notion MCP inventory and safety verdicts. */
51
- export declare const NOTION_MCP_VETTED_CATALOG: import("../catalog-drift.js").VettedCatalog;
52
50
  /** A maintained Notion connection using the selected provider interface. */
53
- export declare function notion(id: string, options: NotionConnectionOptions): Connector;
51
+ export declare const notion: import("../../provider.js").ProviderFactory<NotionConnectionOptions>;
52
+ /** @deprecated Read `notion.definition.classify` instead. Kept for existing imports. */
53
+ export declare const NOTION_MCP_VETTED_CATALOG: import("../../catalog-drift.js").VettedCatalog;
54
54
  export {};