@sendinel/mcp-server 1.0.25 → 1.0.27

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.
@@ -41,7 +41,7 @@ async function getConnectorStatus() {
41
41
  .schema('email')
42
42
  .from('projects')
43
43
  .select('connector_type, connector_supabase_url, connector_db_host, connector_db_name, ' +
44
- 'connector_airtable_base_id, connector_schema_version, connector_health_status, ' +
44
+ 'connector_airtable_base_id, connector_schema_version, connector_view_definition_version, connector_health_status, ' +
45
45
  'connector_health_checked_at, connector_source_table, connector_mapping, ' +
46
46
  'connector_view_installed, connector_view_error, connector_view_installed_at, ' +
47
47
  'connector_webhook_secret_enc, connector_supabase_pat_enc, org:organizations(connector_supabase_pat_enc)')
@@ -60,6 +60,7 @@ async function getConnectorStatus() {
60
60
  dbName: row.connector_db_name ?? undefined,
61
61
  airtableBaseId: row.connector_airtable_base_id ?? undefined,
62
62
  schemaVersion: row.connector_schema_version ?? 0,
63
+ viewDefinitionVersion: row.connector_view_definition_version ?? 0,
63
64
  healthStatus: row.connector_health_status ?? null,
64
65
  healthCheckedAt: row.connector_health_checked_at ?? null,
65
66
  sourceTable: row.connector_source_table ?? undefined,
@@ -408,8 +408,10 @@ function primaryContactValue(value) {
408
408
  }
409
409
  return null;
410
410
  }
411
- const SUBSCRIBER_SELECT_WITH_COMPANY = 'id, email, first_name, last_name, company_id, company:companies(id, name, domain), global_unsubscribed, source, created_at, last_emailed_at, total_emails_sent, total_opens, total_clicks, engagement_score, lifecycle_stage';
412
- const SUBSCRIBER_SELECT_NO_COMPANY = 'id, email, first_name, last_name, company_id, global_unsubscribed, source, created_at, last_emailed_at, total_emails_sent, total_opens, total_clicks, engagement_score, lifecycle_stage';
411
+ // #3623: last_transactional_at / total_transactional_sent are service (transactional) mail, tracked apart
412
+ // from the marketing last_emailed_at / total_emails_sent. NULL means none recorded, not "never".
413
+ const SUBSCRIBER_SELECT_WITH_COMPANY = 'id, email, first_name, last_name, company_id, company:companies(id, name, domain), global_unsubscribed, source, created_at, last_emailed_at, total_emails_sent, last_transactional_at, total_transactional_sent, total_opens, total_clicks, engagement_score, lifecycle_stage';
414
+ const SUBSCRIBER_SELECT_NO_COMPANY = 'id, email, first_name, last_name, company_id, global_unsubscribed, source, created_at, last_emailed_at, total_emails_sent, last_transactional_at, total_transactional_sent, total_opens, total_clicks, engagement_score, lifecycle_stage';
413
415
  const SEGMENT_SUBSCRIBER_SELECT_WITH_COMPANY = 'id, email, first_name, last_name, company_id, company:companies(id, name, domain), engagement_score, lifecycle_stage, last_opened_at, last_clicked_at, total_opens, total_clicks';
414
416
  const SEGMENT_SUBSCRIBER_SELECT_NO_COMPANY = 'id, email, first_name, last_name, company_id, engagement_score, lifecycle_stage, last_opened_at, last_clicked_at, total_opens, total_clicks';
415
417
  const UPDATE_SUBSCRIBER_SELECT_WITH_COMPANY = 'id, email, first_name, last_name, company_id, company:companies(id, name, domain), custom_properties, tags, phone_e164, timezone';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendinel/mcp-server",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
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",