@sendinel/mcp-server 1.0.61 → 1.0.63

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/audit.js CHANGED
@@ -37,6 +37,12 @@ export async function logAudit(opts) {
37
37
  details: {
38
38
  ...(opts.details ?? {}),
39
39
  ...(context?.workspaceId ? { workspace_id: context.workspaceId } : {}),
40
+ // #4004: same actor + agent identity the dashboard records in api_usage. Only fields known for
41
+ // this request are written; nothing is defaulted.
42
+ ...(context?.authKind ? { auth_kind: context.authKind } : {}),
43
+ ...(context?.oauthClientId ? { oauth_client_id: context.oauthClientId } : {}),
44
+ ...(context?.oauthTokenId ? { oauth_token_id: context.oauthTokenId } : {}),
45
+ ...(context?.keyId ? { key_id: context.keyId } : {}),
40
46
  },
41
47
  channel: opts.channel ?? context?.channel ?? 'mcp',
42
48
  })
package/build/db.d.ts CHANGED
@@ -38,6 +38,9 @@ export declare function runWithClient<T>(client: any, fn: () => Promise<T>, requ
38
38
  actorType?: string;
39
39
  actorId?: string | null;
40
40
  oauthTokenId?: string | null;
41
+ authKind?: string | null;
42
+ oauthClientId?: string | null;
43
+ keyId?: string | null;
41
44
  workspaceId?: string | null;
42
45
  v1Caller?: V1Caller;
43
46
  }): Promise<T>;
@@ -54,6 +57,9 @@ export declare function requestContext(): {
54
57
  actorType?: string;
55
58
  actorId?: string | null;
56
59
  oauthTokenId?: string | null;
60
+ authKind?: string | null;
61
+ oauthClientId?: string | null;
62
+ keyId?: string | null;
57
63
  workspaceId?: string | null;
58
64
  v1Caller?: V1Caller;
59
65
  } | undefined;
package/build/db.js CHANGED
@@ -69,6 +69,9 @@ export function requestContext() {
69
69
  actorType: ctx.actorType,
70
70
  actorId: ctx.actorId,
71
71
  oauthTokenId: ctx.oauthTokenId,
72
+ authKind: ctx.authKind,
73
+ oauthClientId: ctx.oauthClientId,
74
+ keyId: ctx.keyId,
72
75
  workspaceId: ctx.workspaceId,
73
76
  v1Caller: ctx.v1Caller,
74
77
  }
package/build/index.js CHANGED
@@ -113,6 +113,7 @@ async function runHttp() {
113
113
  channelVerified: true,
114
114
  actorType: info.authMethod === 'scoped_jwt' ? 'synchronex_scoped_jwt' : 'mcp',
115
115
  actorId: info.actsAsUserId ?? null,
116
+ authKind: info.authMethod === 'scoped_jwt' ? 'scoped_jwt' : 'api_key',
116
117
  workspaceId: info.workspaceId ?? null,
117
118
  });
118
119
  });
@@ -1391,7 +1391,7 @@ Requirements: urgency without desperation, acknowledge the gap, one clear CTA, v
1391
1391
  .from('email_log')
1392
1392
  .select('id, to_email, from_email, subject, status, category, sent_at, delivered_at, opened_at, clicked_at, bounced_at, bounce_type, complained_at, error_message, site_id, campaign_id, created_at')
1393
1393
  .eq('project_id', getProjectId())
1394
- .order('sent_at', { ascending: false })
1394
+ .order('sent_at', { ascending: false, nullsFirst: false })
1395
1395
  .order('id', { ascending: false })
1396
1396
  .range(start, start + pageSize);
1397
1397
  if (site_id)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendinel/mcp-server",
3
- "version": "1.0.61",
3
+ "version": "1.0.63",
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",