@sendinel/mcp-server 1.0.112 → 1.0.114

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/build/db.js CHANGED
@@ -97,6 +97,9 @@ export function projectClientForWriteback() {
97
97
  const ctx = _requestStore.getStore();
98
98
  return ctx?.client ?? _processClient ?? null;
99
99
  }
100
+ // Email sender settings are central operational data: campaign setup, enqueue-sends
101
+ // and v1/send all read central email.sites. A connector may only be a contact
102
+ // source, even on a managed project; update_site must use that same central row.
100
103
  const BYOD_TOOL_NAMES = new Set([
101
104
  'create_blog_post',
102
105
  'list_blog_posts',
@@ -107,7 +110,6 @@ const BYOD_TOOL_NAMES = new Set([
107
110
  'list_blog_destinations',
108
111
  'get_brand_voice',
109
112
  'update_brand_voice',
110
- 'update_site',
111
113
  'list_connector_tables',
112
114
  'get_dmarc_status',
113
115
  ]);
@@ -1,2 +1,2 @@
1
- /** Approval infrastructure stays central, including when update_site uses a BYOD client. */
1
+ /** Tester approval infrastructure stays central even when a connector client is bound. */
2
2
  export declare function approvalStore(): any;
@@ -1,5 +1,5 @@
1
1
  import { adminDb, db, requestContext } from '../db.js';
2
- /** Approval infrastructure stays central, including when update_site uses a BYOD client. */
2
+ /** Tester approval infrastructure stays central even when a connector client is bound. */
3
3
  export function approvalStore() {
4
4
  if (!requestContext()?.scopes?.includes('tester'))
5
5
  return db();
@@ -557,13 +557,13 @@ export function registerCampaignTools(server) {
557
557
  idempotentHint: true,
558
558
  openWorldHint: true,
559
559
  },
560
- description: 'Run the campaign portfolio review and optionally raise agent proposals for start/end/modify recommendations.',
560
+ description: 'Run the campaign portfolio review. Defaults to a dry run (no writes); pass dry_run=false to raise agent proposals for start/end/modify recommendations and emit recommendation signals.',
561
561
  inputSchema: {
562
- dry_run: z.boolean().optional().default(false),
562
+ dry_run: z.boolean().optional().default(true).describe('Preview only by default: computes findings and writes nothing. Pass false to raise agent proposals and emit recommendation signals.'),
563
563
  dormant_draft_days: z.number().int().min(1).max(365).optional(),
564
564
  abandoned_days: z.number().int().min(1).max(365).optional(),
565
565
  },
566
- }, async ({ dry_run = false, dormant_draft_days, abandoned_days }) => {
566
+ }, async ({ dry_run = true, dormant_draft_days, abandoned_days }) => {
567
567
  const result = await callSendinelV1('/api/v1/campaigns/review', {
568
568
  body: {
569
569
  dry_run,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendinel/mcp-server",
3
- "version": "1.0.112",
3
+ "version": "1.0.114",
4
4
  "description": "AI-controlled email operations control plane for campaigns, contacts, segments, analytics, and multi-provider sending via MCP.",
5
5
  "mcpName": "ai.sendinel/mcp-server",
6
6
  "type": "module",