@apex-inc/mcp-server 0.33.0 → 0.34.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 (66) hide show
  1. package/README.md +19 -18
  2. package/dist/api-client.d.ts +5 -0
  3. package/dist/api-client.d.ts.map +1 -1
  4. package/dist/api-client.js +40 -24
  5. package/dist/api-client.js.map +1 -1
  6. package/dist/index.js +7 -4
  7. package/dist/index.js.map +1 -1
  8. package/dist/prompts.d.ts.map +1 -1
  9. package/dist/prompts.js +5 -7
  10. package/dist/prompts.js.map +1 -1
  11. package/dist/setup-catchup-tools.d.ts.map +1 -1
  12. package/dist/setup-catchup-tools.js +15 -3
  13. package/dist/setup-catchup-tools.js.map +1 -1
  14. package/dist/smoke-tools.d.ts +56 -0
  15. package/dist/smoke-tools.d.ts.map +1 -0
  16. package/dist/smoke-tools.js +261 -0
  17. package/dist/smoke-tools.js.map +1 -0
  18. package/dist/tool-catalog.d.ts +10 -0
  19. package/dist/tool-catalog.d.ts.map +1 -0
  20. package/dist/tool-catalog.js +36 -0
  21. package/dist/tool-catalog.js.map +1 -0
  22. package/dist/tool-groups.d.ts +5 -0
  23. package/dist/tool-groups.d.ts.map +1 -0
  24. package/dist/tool-groups.js +206 -0
  25. package/dist/tool-groups.js.map +1 -0
  26. package/dist/tool-shared.d.ts +300 -0
  27. package/dist/tool-shared.d.ts.map +1 -0
  28. package/dist/tool-shared.js +319 -0
  29. package/dist/tool-shared.js.map +1 -0
  30. package/dist/tools/accounts.d.ts +124 -0
  31. package/dist/tools/accounts.d.ts.map +1 -0
  32. package/dist/tools/accounts.js +99 -0
  33. package/dist/tools/accounts.js.map +1 -0
  34. package/dist/tools/adoption.d.ts +499 -0
  35. package/dist/tools/adoption.d.ts.map +1 -0
  36. package/dist/tools/adoption.js +447 -0
  37. package/dist/tools/adoption.js.map +1 -0
  38. package/dist/tools/context.d.ts +216 -0
  39. package/dist/tools/context.d.ts.map +1 -0
  40. package/dist/tools/context.js +328 -0
  41. package/dist/tools/context.js.map +1 -0
  42. package/dist/tools/experiments.d.ts +1066 -0
  43. package/dist/tools/experiments.d.ts.map +1 -0
  44. package/dist/tools/experiments.js +2090 -0
  45. package/dist/tools/experiments.js.map +1 -0
  46. package/dist/tools/letters.d.ts +1107 -0
  47. package/dist/tools/letters.d.ts.map +1 -0
  48. package/dist/tools/letters.js +1324 -0
  49. package/dist/tools/letters.js.map +1 -0
  50. package/dist/tools/measurement.d.ts +886 -0
  51. package/dist/tools/measurement.d.ts.map +1 -0
  52. package/dist/tools/measurement.js +1353 -0
  53. package/dist/tools/measurement.js.map +1 -0
  54. package/dist/tools/partners.d.ts +364 -0
  55. package/dist/tools/partners.d.ts.map +1 -0
  56. package/dist/tools/partners.js +199 -0
  57. package/dist/tools/partners.js.map +1 -0
  58. package/dist/tools.d.ts +3161 -2826
  59. package/dist/tools.d.ts.map +1 -1
  60. package/dist/tools.js +26 -6112
  61. package/dist/tools.js.map +1 -1
  62. package/package.json +3 -2
  63. package/skills/apex-communications/SKILL.md +5 -5
  64. package/skills/apex-experimentation/SKILL.md +8 -11
  65. package/skills/apex-growth-intelligence/SKILL.md +1 -1
  66. package/skills/apex-integration-cookbook/SKILL.md +1 -1
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Classify and optionally call MCP tools.
3
+ *
4
+ * Live calls are for a scratch merchant workspace only. Apex Staging and
5
+ * Apex Internal are refused unless the operator passes --allow-dogfood.
6
+ * Writes are never part of the default live pass.
7
+ */
8
+ export const DOGFOOD_WORKSPACES = new Set([
9
+ "apex-staging",
10
+ "apex-internal",
11
+ "apex",
12
+ ]);
13
+ const WRITE_PREFIXES = [
14
+ "create_",
15
+ "update_",
16
+ "delete_",
17
+ "set_",
18
+ "add_",
19
+ "remove_",
20
+ "send_",
21
+ "publish_",
22
+ "trigger_",
23
+ "invite_",
24
+ "approve_",
25
+ "reject_",
26
+ "revoke_",
27
+ "promote_",
28
+ "activate_",
29
+ "pause_",
30
+ "archive_",
31
+ "graduate_",
32
+ "compose_",
33
+ "attach_",
34
+ "recapture_",
35
+ "reorder_",
36
+ "upload_",
37
+ "map_",
38
+ "define_",
39
+ "identify_",
40
+ "track_",
41
+ "log_",
42
+ "record_",
43
+ "fork_",
44
+ "link_",
45
+ "unlink_",
46
+ "gate_",
47
+ "open_",
48
+ "claim_",
49
+ "apply_",
50
+ "reset_",
51
+ "vouch_",
52
+ "wire_",
53
+ "propose_",
54
+ "switch_",
55
+ "start_",
56
+ "generate_",
57
+ "edit_",
58
+ ];
59
+ const WRITE_EXACT = new Set([
60
+ "apex_test_event",
61
+ "send_server_event",
62
+ ]);
63
+ export function isDogfoodWorkspace(workspaceKey) {
64
+ if (!workspaceKey)
65
+ return false;
66
+ return DOGFOOD_WORKSPACES.has(workspaceKey);
67
+ }
68
+ export function classifyToolName(name) {
69
+ if (WRITE_EXACT.has(name))
70
+ return "write";
71
+ if (WRITE_PREFIXES.some((p) => name.startsWith(p)))
72
+ return "write";
73
+ return "read";
74
+ }
75
+ export function canCallWithEmptyArgs(schema) {
76
+ return schema.safeParse({}).success;
77
+ }
78
+ export function assertSafeLiveWorkspace(workspaceKey, allowDogfood) {
79
+ if (!workspaceKey) {
80
+ throw new Error("No workspace. Set APEX_WORKSPACE_KEY to a sandbox workspace, not Apex Staging.");
81
+ }
82
+ if (isDogfoodWorkspace(workspaceKey) && !allowDogfood) {
83
+ throw new Error(`Refusing to smoke ${workspaceKey}. Use a sandbox workspace, or pass --allow-dogfood.`);
84
+ }
85
+ }
86
+ export function planReadSmoke(tools) {
87
+ return Object.entries(tools)
88
+ .filter(([name, def]) => {
89
+ return classifyToolName(name) === "read" && canCallWithEmptyArgs(def.schema);
90
+ })
91
+ .map(([name, def]) => ({ name, def }));
92
+ }
93
+ export const WRITE_SMOKE_V1 = ["create_conversion", "create_segment"];
94
+ export const CATCHUP_READ_SMOKE = [
95
+ "get_conversion_source_of_truth",
96
+ "list_ad_measurement",
97
+ "list_apex_links",
98
+ ];
99
+ function idFromToolText(text) {
100
+ try {
101
+ const jsonStart = text.indexOf("{");
102
+ if (jsonStart < 0)
103
+ return undefined;
104
+ const parsed = JSON.parse(text.slice(jsonStart));
105
+ return typeof parsed.id === "string" ? parsed.id : undefined;
106
+ }
107
+ catch {
108
+ return undefined;
109
+ }
110
+ }
111
+ export async function runWriteSmoke(tools, opts) {
112
+ if (!opts.live) {
113
+ return WRITE_SMOKE_V1.map((name) => ({
114
+ name,
115
+ kind: "write",
116
+ emptyArgs: false,
117
+ status: "skipped",
118
+ detail: "write smoke needs --writes and a sandbox workspace",
119
+ }));
120
+ }
121
+ if (!opts.workspaceKey || isDogfoodWorkspace(opts.workspaceKey)) {
122
+ throw new Error("Refusing writes on Apex Staging or Internal. Use a sandbox workspace key (sbx-…).");
123
+ }
124
+ const created = [];
125
+ const rows = [];
126
+ const stamp = Date.now();
127
+ try {
128
+ const conversion = await tools.create_conversion.handler({
129
+ name: `smoke-conversion-${stamp}`,
130
+ type: "custom_event",
131
+ eventName: "user_signed_up",
132
+ });
133
+ const conversionText = conversion.content?.[0]?.text ?? "";
134
+ const conversionId = idFromToolText(conversionText);
135
+ if (conversion.isError || !conversionId) {
136
+ rows.push({
137
+ name: "create_conversion",
138
+ kind: "write",
139
+ emptyArgs: false,
140
+ status: "error",
141
+ detail: conversionText.slice(0, 280) || "no id returned",
142
+ });
143
+ }
144
+ else {
145
+ created.push({ kind: "conversion", id: conversionId });
146
+ rows.push({
147
+ name: "create_conversion",
148
+ kind: "write",
149
+ emptyArgs: false,
150
+ status: "ok",
151
+ });
152
+ }
153
+ const segment = await tools.create_segment.handler({
154
+ name: `smoke-segment-${stamp}`,
155
+ description: "MCP write smoke",
156
+ conditions: {
157
+ match: "all",
158
+ groups: [
159
+ {
160
+ match: "all",
161
+ conditions: [{ verb: "has", event: "user_signed_up", window_days: 30 }],
162
+ },
163
+ ],
164
+ },
165
+ });
166
+ const segmentText = segment.content?.[0]?.text ?? "";
167
+ const segmentId = idFromToolText(segmentText);
168
+ if (segment.isError || !segmentId) {
169
+ rows.push({
170
+ name: "create_segment",
171
+ kind: "write",
172
+ emptyArgs: false,
173
+ status: "error",
174
+ detail: segmentText.slice(0, 280) || "no id returned",
175
+ });
176
+ }
177
+ else {
178
+ created.push({ kind: "segment", id: segmentId });
179
+ rows.push({
180
+ name: "create_segment",
181
+ kind: "write",
182
+ emptyArgs: false,
183
+ status: "ok",
184
+ });
185
+ }
186
+ }
187
+ finally {
188
+ for (const row of created.reverse()) {
189
+ try {
190
+ await opts.cleanup(row.kind, row.id);
191
+ }
192
+ catch {
193
+ rows.push({
194
+ name: `cleanup_${row.kind}`,
195
+ kind: "write",
196
+ emptyArgs: false,
197
+ status: "error",
198
+ detail: `failed to remove ${row.id}`,
199
+ });
200
+ }
201
+ }
202
+ }
203
+ return rows;
204
+ }
205
+ export async function runReadSmoke(tools, opts) {
206
+ const rows = [];
207
+ if (opts.live) {
208
+ assertSafeLiveWorkspace(opts.workspaceKey, opts.allowDogfood);
209
+ }
210
+ for (const [name, def] of Object.entries(tools)) {
211
+ const kind = classifyToolName(name);
212
+ const emptyArgs = canCallWithEmptyArgs(def.schema);
213
+ if (!opts.live) {
214
+ rows.push({
215
+ name,
216
+ kind,
217
+ emptyArgs,
218
+ status: kind === "read" && emptyArgs ? "ok" : "skipped",
219
+ detail: kind === "read" && emptyArgs
220
+ ? "eligible for live read smoke"
221
+ : kind === "write"
222
+ ? "write — not called"
223
+ : "needs arguments — not called",
224
+ });
225
+ continue;
226
+ }
227
+ if (kind !== "read" || !emptyArgs) {
228
+ rows.push({
229
+ name,
230
+ kind,
231
+ emptyArgs,
232
+ status: "skipped",
233
+ detail: kind === "write" ? "write — not called" : "needs arguments",
234
+ });
235
+ continue;
236
+ }
237
+ try {
238
+ const result = await def.handler({});
239
+ const text = result.content?.[0]?.text ?? "";
240
+ const failed = result.isError === true || /^Error:/i.test(text);
241
+ rows.push({
242
+ name,
243
+ kind,
244
+ emptyArgs,
245
+ status: failed ? "error" : "ok",
246
+ detail: failed ? text.slice(0, 280) : undefined,
247
+ });
248
+ }
249
+ catch (err) {
250
+ rows.push({
251
+ name,
252
+ kind,
253
+ emptyArgs,
254
+ status: "error",
255
+ detail: err instanceof Error ? err.message.slice(0, 280) : String(err),
256
+ });
257
+ }
258
+ }
259
+ return rows;
260
+ }
261
+ //# sourceMappingURL=smoke-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke-tools.js","sourceRoot":"","sources":["../src/smoke-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const HIDDEN_TOOL_ALIASES: readonly ["list_projects", "switch_project", "get_event_taxonomy"];
2
+ export declare const ALIAS_TO_CANONICAL: Record<string, string>;
3
+ export declare function isDestructiveTool(name: string): boolean;
4
+ export declare function annotationsForTool(name: string): {
5
+ readOnlyHint: boolean;
6
+ destructiveHint: boolean;
7
+ };
8
+ export declare function advertisedToolNames(names: string[]): string[];
9
+ export declare function resolveToolCallName(name: string): string;
10
+ //# sourceMappingURL=tool-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-catalog.d.ts","sourceRoot":"","sources":["../src/tool-catalog.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,oEAItB,CAAC;AAEX,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIrD,CAAC;AAQF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAChD,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAMA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG7D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,36 @@
1
+ import { classifyToolName } from "./smoke-tools.js";
2
+ export const HIDDEN_TOOL_ALIASES = [
3
+ "list_projects",
4
+ "switch_project",
5
+ "get_event_taxonomy",
6
+ ];
7
+ export const ALIAS_TO_CANONICAL = {
8
+ list_projects: "list_workspaces",
9
+ switch_project: "switch_workspace",
10
+ get_event_taxonomy: "get_event_spec",
11
+ };
12
+ const DESTRUCTIVE_PREFIXES = ["publish_", "revoke_", "delete_"];
13
+ const DESTRUCTIVE_EXACT = new Set([
14
+ "approve_payouts",
15
+ "reject_payouts",
16
+ ]);
17
+ export function isDestructiveTool(name) {
18
+ if (DESTRUCTIVE_EXACT.has(name))
19
+ return true;
20
+ return DESTRUCTIVE_PREFIXES.some((prefix) => name.startsWith(prefix));
21
+ }
22
+ export function annotationsForTool(name) {
23
+ const readOnly = classifyToolName(name) === "read";
24
+ return {
25
+ readOnlyHint: readOnly,
26
+ destructiveHint: !readOnly && isDestructiveTool(name),
27
+ };
28
+ }
29
+ export function advertisedToolNames(names) {
30
+ const hidden = new Set(HIDDEN_TOOL_ALIASES);
31
+ return names.filter((name) => !hidden.has(name));
32
+ }
33
+ export function resolveToolCallName(name) {
34
+ return ALIAS_TO_CANONICAL[name] ?? name;
35
+ }
36
+ //# sourceMappingURL=tool-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-catalog.js","sourceRoot":"","sources":["../src/tool-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,eAAe;IACf,gBAAgB;IAChB,oBAAoB;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,aAAa,EAAE,iBAAiB;IAChC,cAAc,EAAE,kBAAkB;IAClC,kBAAkB,EAAE,gBAAgB;CACrC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAChE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,iBAAiB;IACjB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAI7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;IACnD,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,eAAe,EAAE,CAAC,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAe;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,mBAAmB,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const TOOL_GROUPS: readonly ["Experiments", "Letters", "Adoption", "Partners", "Measurement", "Accounts", "Context"];
2
+ export type ToolGroup = (typeof TOOL_GROUPS)[number];
3
+ export declare function toolGroup(name: string): ToolGroup | undefined;
4
+ export declare function countToolsByGroup(names: string[]): Record<ToolGroup, number>;
5
+ //# sourceMappingURL=tool-groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-groups.d.ts","sourceRoot":"","sources":["../src/tool-groups.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,mGAQd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAiMrD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAU5E"}
@@ -0,0 +1,206 @@
1
+ export const TOOL_GROUPS = [
2
+ "Experiments",
3
+ "Letters",
4
+ "Adoption",
5
+ "Partners",
6
+ "Measurement",
7
+ "Accounts",
8
+ "Context",
9
+ ];
10
+ const GROUP_BY_NAME = {
11
+ plan_experiment: "Experiments",
12
+ start_reasoning: "Experiments",
13
+ create_belief: "Experiments",
14
+ create_experiment: "Experiments",
15
+ attach_experiment_asset: "Experiments",
16
+ recapture_experiment_screenshots: "Experiments",
17
+ verify_experiment_wiring: "Experiments",
18
+ activate_experiment: "Experiments",
19
+ pause_experiment: "Experiments",
20
+ track_deployment: "Experiments",
21
+ check_deployment: "Experiments",
22
+ archive_experiment: "Experiments",
23
+ list_experiments: "Experiments",
24
+ get_results: "Experiments",
25
+ list_beliefs: "Experiments",
26
+ update_experiment: "Experiments",
27
+ fork_experiment: "Experiments",
28
+ check_experiment_conflicts: "Experiments",
29
+ check_live_tests: "Experiments",
30
+ set_experiment_mutex: "Experiments",
31
+ suggest_experiment: "Experiments",
32
+ promote_winner: "Experiments",
33
+ get_experiment_results: "Experiments",
34
+ promote_experiment_winner: "Experiments",
35
+ graduate_experiment: "Experiments",
36
+ record_outcome: "Experiments",
37
+ predict_impact: "Experiments",
38
+ evaluate_feature: "Experiments",
39
+ link_experiment: "Experiments",
40
+ unlink_experiment: "Experiments",
41
+ gate_experiment_on_merge: "Experiments",
42
+ open_graduation_pr: "Experiments",
43
+ open_revert_pr: "Experiments",
44
+ get_automation_controls: "Experiments",
45
+ update_automation_controls: "Experiments",
46
+ list_engineering_links: "Experiments",
47
+ recommend_communications: "Letters",
48
+ generate_communications: "Letters",
49
+ list_communications: "Letters",
50
+ list_communication_themes: "Letters",
51
+ create_communication_theme: "Letters",
52
+ update_communication_theme: "Letters",
53
+ apply_communication_theme: "Letters",
54
+ edit_communication: "Letters",
55
+ publish_communication: "Letters",
56
+ preview_communication: "Letters",
57
+ add_communication_variant: "Letters",
58
+ send_test_communication: "Letters",
59
+ trigger_communication: "Letters",
60
+ create_comm_experiment: "Letters",
61
+ create_communication: "Letters",
62
+ create_journey: "Letters",
63
+ create_journey_from_template: "Letters",
64
+ list_trigger_contracts: "Letters",
65
+ set_journey_trigger: "Letters",
66
+ add_journey_step: "Letters",
67
+ set_journey_send: "Letters",
68
+ add_journey_branch: "Letters",
69
+ publish_journey: "Letters",
70
+ list_journeys: "Letters",
71
+ get_journey: "Letters",
72
+ list_journey_exits: "Letters",
73
+ add_journey_exit: "Letters",
74
+ remove_journey_exit: "Letters",
75
+ get_contact_cart: "Letters",
76
+ audit_journey_exits: "Letters",
77
+ wire_audience_seed: "Letters",
78
+ wire_audience: "Letters",
79
+ audit_audience_readiness: "Letters",
80
+ list_segments: "Letters",
81
+ get_segment: "Letters",
82
+ create_segment: "Letters",
83
+ list_adoption_milestones: "Adoption",
84
+ get_adoption_milestone: "Adoption",
85
+ create_adoption_milestone: "Adoption",
86
+ update_adoption_milestone: "Adoption",
87
+ delete_adoption_milestone: "Adoption",
88
+ compose_adoption_milestone: "Adoption",
89
+ attach_adoption_milestone_still: "Adoption",
90
+ recapture_adoption_milestone_stills: "Adoption",
91
+ list_adoption_milestone_stills: "Adoption",
92
+ reorder_adoption_milestones: "Adoption",
93
+ get_adoption_metrics: "Adoption",
94
+ get_adoption_account_progress: "Adoption",
95
+ get_adoption_user_progress: "Adoption",
96
+ list_adoption_features: "Adoption",
97
+ create_adoption_feature: "Adoption",
98
+ list_partner_programs: "Partners",
99
+ create_partner_program: "Partners",
100
+ update_partner_program: "Partners",
101
+ list_partner_program_members: "Partners",
102
+ apply_program_default_to_members: "Partners",
103
+ update_membership_rate: "Partners",
104
+ reset_membership_rate: "Partners",
105
+ invite_partner: "Partners",
106
+ list_pending_payouts: "Partners",
107
+ approve_payouts: "Partners",
108
+ reject_payouts: "Partners",
109
+ get_effective_fees: "Partners",
110
+ vouch_for_partner: "Partners",
111
+ list_events: "Measurement",
112
+ list_metrics: "Measurement",
113
+ get_growth_reality: "Measurement",
114
+ get_channel_economics: "Measurement",
115
+ get_saas_recurring_revenue: "Measurement",
116
+ get_saas_expansion: "Measurement",
117
+ get_ecommerce_product_sales: "Measurement",
118
+ list_product_costs: "Measurement",
119
+ set_product_cost: "Measurement",
120
+ upload_product_catalog: "Measurement",
121
+ get_ecommerce_returns: "Measurement",
122
+ get_marketplace_metrics: "Measurement",
123
+ track_event: "Measurement",
124
+ send_server_event: "Measurement",
125
+ identify_user: "Measurement",
126
+ get_schema: "Measurement",
127
+ map_attribute: "Measurement",
128
+ define_event: "Measurement",
129
+ log_prediction: "Measurement",
130
+ list_data_sources: "Measurement",
131
+ create_data_source: "Measurement",
132
+ get_data_source_health: "Measurement",
133
+ get_analytics_sources: "Measurement",
134
+ get_analytics_hostnames: "Measurement",
135
+ get_event_spec: "Measurement",
136
+ get_event_taxonomy: "Measurement",
137
+ get_wiring_status: "Measurement",
138
+ propose_wiring_plan: "Measurement",
139
+ apex_test_event: "Measurement",
140
+ apex_recent_events: "Measurement",
141
+ apex_health: "Measurement",
142
+ apex_spec_validate: "Measurement",
143
+ list_conversions: "Measurement",
144
+ create_conversion: "Measurement",
145
+ set_primary_conversion: "Measurement",
146
+ create_target: "Measurement",
147
+ list_ad_measurement: "Measurement",
148
+ set_ad_measurement_events: "Measurement",
149
+ list_apex_links: "Measurement",
150
+ create_apex_link: "Measurement",
151
+ get_conversion_source_of_truth: "Measurement",
152
+ set_conversion_source_of_truth: "Measurement",
153
+ list_accounts: "Accounts",
154
+ get_account: "Accounts",
155
+ get_account_people: "Accounts",
156
+ list_sub_accounts: "Accounts",
157
+ get_contact_groups: "Accounts",
158
+ update_account_pipeline: "Accounts",
159
+ list_workspaces: "Context",
160
+ list_projects: "Context",
161
+ switch_workspace: "Context",
162
+ switch_project: "Context",
163
+ list_orgs: "Context",
164
+ switch_org: "Context",
165
+ get_setup_state: "Context",
166
+ list_workspace_environments: "Context",
167
+ set_workspace_environments: "Context",
168
+ check_workspace_readiness: "Context",
169
+ start_apex_login: "Context",
170
+ start_integration_install: "Context",
171
+ create_api_key: "Context",
172
+ list_api_keys: "Context",
173
+ revoke_api_key: "Context",
174
+ update_organization: "Context",
175
+ update_workspace: "Context",
176
+ set_consent_posture: "Context",
177
+ set_app_surface_paths: "Context",
178
+ get_scoring_model: "Context",
179
+ set_scoring_weights: "Context",
180
+ invite_teammate: "Context",
181
+ set_engagement_analytics: "Context",
182
+ set_app_platforms: "Context",
183
+ set_attribution_model: "Context",
184
+ start_sender_domain: "Context",
185
+ get_sender_domain: "Context",
186
+ set_push_credentials: "Context",
187
+ set_protect_auto_pause: "Context",
188
+ claim_links_subdomain: "Context",
189
+ list_webhook_destinations: "Context",
190
+ add_webhook_destination: "Context",
191
+ get_messaging_guardrails: "Context",
192
+ set_messaging_guardrails: "Context",
193
+ };
194
+ export function toolGroup(name) {
195
+ return GROUP_BY_NAME[name];
196
+ }
197
+ export function countToolsByGroup(names) {
198
+ const counts = Object.fromEntries(TOOL_GROUPS.map((g) => [g, 0]));
199
+ for (const name of names) {
200
+ const group = toolGroup(name);
201
+ if (group)
202
+ counts[group] += 1;
203
+ }
204
+ return counts;
205
+ }
206
+ //# sourceMappingURL=tool-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-groups.js","sourceRoot":"","sources":["../src/tool-groups.ts"],"names":[],"mappings":"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"}