From 81d7c74e5e6e0b4523ca37d56d84460bf8a7b614 Mon Sep 17 00:00:00 2001 From: Greg Methvin Date: Tue, 17 Mar 2026 16:42:57 -0700 Subject: [PATCH] create_blast_campaign should not schedule --- TOOLS.md | 2 +- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- src/tool-filter.ts | 2 -- src/tools/campaigns.ts | 2 +- tests/unit/send-tools-registry.test.ts | 1 - tests/unit/tool-filter-sends.test.ts | 2 -- 7 files changed, 8 insertions(+), 13 deletions(-) diff --git a/TOOLS.md b/TOOLS.md index 41c8379..a0e7343 100644 --- a/TOOLS.md +++ b/TOOLS.md @@ -11,7 +11,7 @@ - **activate_triggered_campaign** ✏️✉️: Activate a triggered campaign (requires API triggered campaign activation enabled) - **archive_campaigns** ✏️: Archive one or more campaigns. Scheduled/recurring campaigns will be cancelled, running campaigns will be aborted. - **cancel_campaign** ✏️: Cancel a scheduled or recurring campaign -- **create_blast_campaign** ✏️✉️: Create a new blast campaign from an existing template. By default, the campaign is created without being scheduled. Set scheduleSend to true to immediately schedule it for delivery at the given sendAt time. +- **create_blast_campaign** ✏️: Create a new blast campaign from an existing template. The campaign is created without being scheduled. Use schedule_campaign to schedule it for delivery. - **create_triggered_campaign** ✏️: Create a new triggered campaign from an existing template. The campaign is created in Ready state and must be activated before it can send. - **deactivate_triggered_campaign** ✏️: Deactivate a triggered campaign (requires API triggered campaign deactivation enabled) - **get_campaign**: Get detailed information about a specific campaign diff --git a/package.json b/package.json index 6910bf8..1562422 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ }, "dependencies": { "@alcyone-labs/zod-to-json-schema": "4.0.10", - "@iterable/api": "0.8.1", + "@iterable/api": "0.8.2", "@modelcontextprotocol/sdk": "1.18.1", "@primno/dpapi": "2.0.1", "@types/json-schema": "7.0.15", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e7310e7..aab115b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: 4.0.10 version: 4.0.10(zod@4.1.11) '@iterable/api': - specifier: 0.8.1 - version: 0.8.1(typescript@5.9.3) + specifier: 0.8.2 + version: 0.8.2(typescript@5.9.3) '@modelcontextprotocol/sdk': specifier: 1.18.1 version: 1.18.1 @@ -654,8 +654,8 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@iterable/api@0.8.1': - resolution: {integrity: sha512-dPvd7RVnTC7uLqY1m0/0Mepo79Dv4/0sfGqT+X/qVGEMcpgWTnkO0iMT0c7DMyggzRsWHCA3OVT05rpnKbnueg==} + '@iterable/api@0.8.2': + resolution: {integrity: sha512-0pkTBglhhUBkjvQ0z2BchHyBdVRQiJawlF7DxMWNcRUqwdbbbAkytpNPMCU22LTKj/b+BY4OLbjeDkUyxypgCw==} engines: {node: '>=18.0.0'} '@jest/console@30.2.0': @@ -3260,7 +3260,7 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@iterable/api@0.8.1(typescript@5.9.3)': + '@iterable/api@0.8.2(typescript@5.9.3)': dependencies: '@t3-oss/env-core': 0.13.8(typescript@5.9.3)(zod@4.1.11) axios: 1.13.2 diff --git a/src/tool-filter.ts b/src/tool-filter.ts index 1549450..ea82964 100644 --- a/src/tool-filter.ts +++ b/src/tool-filter.ts @@ -124,8 +124,6 @@ export const SEND_TOOLS: Set = new Set([ "send_campaign", "trigger_campaign", "schedule_campaign", - // Creating a blast campaign schedules a send - "create_blast_campaign", // Triggered campaigns can cause sends upon activation; block unless explicitly allowed "activate_triggered_campaign", // Journey triggers enqueue users which may send diff --git a/src/tools/campaigns.ts b/src/tools/campaigns.ts index 9647054..e670384 100644 --- a/src/tools/campaigns.ts +++ b/src/tools/campaigns.ts @@ -48,7 +48,7 @@ export function createCampaignTools(client: IterableClient): Tool[] { createTool({ name: "create_blast_campaign", description: - "Create a new blast campaign from an existing template. By default, the campaign is created without being scheduled. Set scheduleSend to true to immediately schedule it for delivery at the given sendAt time.", + "Create a new blast campaign from an existing template. The campaign is created without being scheduled. Use schedule_campaign to schedule it for delivery.", schema: CreateBlastCampaignParamsSchema, execute: (params) => client.createBlastCampaign(params), }), diff --git a/tests/unit/send-tools-registry.test.ts b/tests/unit/send-tools-registry.test.ts index bd99f75..dbf28e4 100644 --- a/tests/unit/send-tools-registry.test.ts +++ b/tests/unit/send-tools-registry.test.ts @@ -28,7 +28,6 @@ describe("SEND_TOOLS registry", () => { "send_campaign", "trigger_campaign", "schedule_campaign", - "create_blast_campaign", "activate_triggered_campaign", "trigger_journey", "track_event", diff --git a/tests/unit/tool-filter-sends.test.ts b/tests/unit/tool-filter-sends.test.ts index eff86fc..492a923 100644 --- a/tests/unit/tool-filter-sends.test.ts +++ b/tests/unit/tool-filter-sends.test.ts @@ -16,7 +16,6 @@ describe("filterTools with allowSends", () => { mkTool("send_campaign"), mkTool("trigger_campaign"), mkTool("schedule_campaign"), - mkTool("create_blast_campaign"), mkTool("track_event"), mkTool("track_bulk_events"), mkTool("trigger_journey"), @@ -47,7 +46,6 @@ describe("filterTools with allowSends", () => { expect(names.has("send_campaign")).toBe(false); expect(names.has("trigger_campaign")).toBe(false); expect(names.has("schedule_campaign")).toBe(false); - expect(names.has("create_blast_campaign")).toBe(false); expect(names.has("track_event")).toBe(false); expect(names.has("track_bulk_events")).toBe(false); expect(names.has("trigger_journey")).toBe(false);