@velaro/mcp-server 0.6.83 → 0.6.85
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/package.json +1 -1
- package/server.js +106 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velaro/mcp-server",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.85",
|
|
4
4
|
"description": "Velaro MCP server — connect Claude and other AI agents directly to your Velaro account: KB, workflows, bots, conversations, contacts, routing, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/server.js
CHANGED
|
@@ -2290,6 +2290,21 @@ For multiSelect dynamic options: the variable named in dynamicOptionsVariable mu
|
|
|
2290
2290
|
},
|
|
2291
2291
|
|
|
2292
2292
|
// ── Campaign Deliverability Intelligence ─────────────────────────────────
|
|
2293
|
+
{
|
|
2294
|
+
name: 'sender_domain_health',
|
|
2295
|
+
description: 'Health of your email sending domains: registration expiry date, DNS records present/missing, email-provider verification, open notices with what to do, and recent history.',
|
|
2296
|
+
inputSchema: { type: 'object', properties: {} },
|
|
2297
|
+
},
|
|
2298
|
+
{
|
|
2299
|
+
name: 'sender_domain_health_settings',
|
|
2300
|
+
description: 'View or change sender-domain health warning days and the grace days after expiry before sending pauses (per-site override; reset=true returns to the account default).',
|
|
2301
|
+
inputSchema: { type: 'object', properties: { thresholds: { type: 'string', description: 'Comma-separated days, e.g. 60,30,14,7,3,1' }, graceDays: { type: 'number' }, reset: { type: 'boolean' } } },
|
|
2302
|
+
},
|
|
2303
|
+
{
|
|
2304
|
+
name: 'sender_domain_health_dismiss',
|
|
2305
|
+
description: 'Dismiss a sender-domain health notice by event id (do not remind me). It clears on its own once resolved.',
|
|
2306
|
+
inputSchema: { type: 'object', properties: { eventId: { type: 'number' } }, required: ['eventId'] },
|
|
2307
|
+
},
|
|
2293
2308
|
{
|
|
2294
2309
|
name: 'campaign_sender_auth',
|
|
2295
2310
|
description: 'Check SPF, DKIM, DMARC, BIMI, and MX DNS records for a sending domain. Returns pass/warn/fail per record with details and an overall auth score 0-100.',
|
|
@@ -3592,6 +3607,51 @@ For multiSelect dynamic options: the variable named in dynamicOptionsVariable mu
|
|
|
3592
3607
|
required: [],
|
|
3593
3608
|
},
|
|
3594
3609
|
},
|
|
3610
|
+
{
|
|
3611
|
+
name: 'status_incident_list',
|
|
3612
|
+
description: 'Velaro staff only (SuperAdmin). Lists public status page incidents, including component overrides (IncidentType "Override").',
|
|
3613
|
+
inputSchema: { type: 'object', properties: { filter: { type: 'string', enum: ['active', 'resolved', 'all'], description: 'Default active.' } }, required: [] },
|
|
3614
|
+
},
|
|
3615
|
+
{
|
|
3616
|
+
name: 'status_incident_upsert',
|
|
3617
|
+
description: 'Velaro staff only (SuperAdmin). Creates a public status incident, or updates one when id is given (update replaces all fields, so pass every field to keep). AffectedServices is a comma-separated list of component names (Messaging, Voice & Calls, AI Assistant, Database, API, Integrations, Email Campaigns, Velaro Sign, Velaro Forms, Agent Console, Core API, Chat Engagement) plus optional uptime tokens: "counts-uptime" forces the incident to count against uptime, "no-uptime-impact" forces it not to. Default: only a core chat outage counts.',
|
|
3618
|
+
inputSchema: {
|
|
3619
|
+
type: 'object',
|
|
3620
|
+
properties: {
|
|
3621
|
+
id: { type: 'number', description: 'Existing incident id to update; omit to create.' },
|
|
3622
|
+
title: { type: 'string' }, description: { type: 'string' },
|
|
3623
|
+
status: { type: 'string', description: 'Investigating, Identified, Monitoring, Resolved' },
|
|
3624
|
+
incidentType: { type: 'string', description: 'Incident or Maintenance' },
|
|
3625
|
+
severity: { type: 'string', description: 'Minor or Major' },
|
|
3626
|
+
affectedServices: { type: 'string', description: 'CSV of component names plus optional counts-uptime / no-uptime-impact.' },
|
|
3627
|
+
affectedRegions: { type: 'string' },
|
|
3628
|
+
endTime: { type: 'string', description: 'ISO timestamp' },
|
|
3629
|
+
excludeFromUptime: { type: 'boolean' },
|
|
3630
|
+
isVisibleToCustomers: { type: 'boolean' },
|
|
3631
|
+
},
|
|
3632
|
+
required: [],
|
|
3633
|
+
},
|
|
3634
|
+
},
|
|
3635
|
+
{
|
|
3636
|
+
name: 'status_incident_delete',
|
|
3637
|
+
description: 'Velaro staff only (SuperAdmin). Deletes a status incident, or clears a component override created by status_override_set.',
|
|
3638
|
+
inputSchema: { type: 'object', properties: { id: { type: 'number' } }, required: ['id'] },
|
|
3639
|
+
},
|
|
3640
|
+
{
|
|
3641
|
+
name: 'status_override_set',
|
|
3642
|
+
description: 'Velaro staff only (SuperAdmin). Forces a public status page component to a status until expiresAt. Components: Messaging, Voice & Calls, AI Assistant, Database, API, Integrations, Email Campaigns, Velaro Sign, Velaro Forms, Agent Console, Core API, Chat Engagement. countsAgainstUptime: true adds the counts-uptime token, false adds no-uptime-impact, omit for default (only a core chat outage counts). Clear with status_incident_delete.',
|
|
3643
|
+
inputSchema: {
|
|
3644
|
+
type: 'object',
|
|
3645
|
+
properties: {
|
|
3646
|
+
component: { type: 'string' },
|
|
3647
|
+
status: { type: 'string', enum: ['operational', 'degraded', 'outage', 'maintenance'] },
|
|
3648
|
+
note: { type: 'string' },
|
|
3649
|
+
expiresAt: { type: 'string', description: 'ISO timestamp the override auto-clears.' },
|
|
3650
|
+
countsAgainstUptime: { type: 'boolean' },
|
|
3651
|
+
},
|
|
3652
|
+
required: ['component', 'status'],
|
|
3653
|
+
},
|
|
3654
|
+
},
|
|
3595
3655
|
{
|
|
3596
3656
|
name: 'signalr_diagnostics',
|
|
3597
3657
|
description: 'Check health, connection counts, hub stats, and recent errors for Velaro\'s Azure SignalR Service instances. Covers both the infra-prod instance (velaro-eastus-prd-signalr, Premium P1) and the legacy prod instance (velaro-prod-us). Use this to diagnose "hub down", connection storms, capacity issues, or capacity saturation alerts.',
|
|
@@ -7522,6 +7582,28 @@ async function handleTool(name, args) {
|
|
|
7522
7582
|
}
|
|
7523
7583
|
|
|
7524
7584
|
// ── Campaign Deliverability Intelligence ─────────────────────────────
|
|
7585
|
+
case 'sender_domain_health': {
|
|
7586
|
+
const r = await api('GET', '/SenderDomains/Health');
|
|
7587
|
+
const lines = (r.domains || []).map(d => `${d.domainName} [${d.healthStatus}] status=${d.status} expires=${d.registrationExpiresOn ? d.registrationExpiresOn.slice(0, 10) + ' (' + d.daysToExpiry + 'd)' : 'unknown'}${d.healthDetail ? '\n ' + d.healthDetail : ''}`);
|
|
7588
|
+
for (const n of (r.notices || [])) lines.push(`ACTION NEEDED ${n.domainName}: ${n.message} | ${n.remedy}`);
|
|
7589
|
+
lines.push(`Warnings at ${r.settings.thresholds.join('/')} days; sending pauses ${r.settings.graceDays}d after expiry.`);
|
|
7590
|
+
return lines.join('\n');
|
|
7591
|
+
}
|
|
7592
|
+
|
|
7593
|
+
case 'sender_domain_health_settings': {
|
|
7594
|
+
if (args.reset || args.thresholds || args.graceDays !== undefined) {
|
|
7595
|
+
const r = await api('PUT', '/SenderDomains/Health/Settings', { thresholds: args.thresholds, graceDays: args.graceDays, reset: args.reset });
|
|
7596
|
+
return JSON.stringify(r);
|
|
7597
|
+
}
|
|
7598
|
+
const h = await api('GET', '/SenderDomains/Health');
|
|
7599
|
+
return JSON.stringify(h.settings);
|
|
7600
|
+
}
|
|
7601
|
+
|
|
7602
|
+
case 'sender_domain_health_dismiss': {
|
|
7603
|
+
if (!args.eventId) return 'Error: eventId required';
|
|
7604
|
+
return JSON.stringify(await api('POST', `/SenderDomains/Health/Events/${args.eventId}/Dismiss`, {}));
|
|
7605
|
+
}
|
|
7606
|
+
|
|
7525
7607
|
case 'campaign_sender_auth': {
|
|
7526
7608
|
const domain = args.domain;
|
|
7527
7609
|
if (!domain) return 'Error: domain required';
|
|
@@ -8543,6 +8625,30 @@ async function handleTool(name, args) {
|
|
|
8543
8625
|
return JSON.stringify(data, null, 2);
|
|
8544
8626
|
}
|
|
8545
8627
|
|
|
8628
|
+
case 'status_incident_list': {
|
|
8629
|
+
const rows = await messagingRequest('GET', `/superadmin/status-incidents?filter=${encodeURIComponent(args.filter || 'active')}`);
|
|
8630
|
+
return JSON.stringify(rows, null, 2);
|
|
8631
|
+
}
|
|
8632
|
+
|
|
8633
|
+
case 'status_incident_upsert': {
|
|
8634
|
+
const body = {
|
|
8635
|
+
title: args.title, description: args.description, status: args.status, incidentType: args.incidentType, severity: args.severity,
|
|
8636
|
+
affectedServices: args.affectedServices, affectedRegions: args.affectedRegions, endTime: args.endTime,
|
|
8637
|
+
excludeFromUptime: args.excludeFromUptime ?? false, isVisibleToCustomers: args.isVisibleToCustomers ?? true,
|
|
8638
|
+
};
|
|
8639
|
+
if (args.id) return JSON.stringify(await messagingRequest('PUT', `/superadmin/status-incidents/${Number(args.id)}`, body), null, 2);
|
|
8640
|
+
if (!args.title) throw new Error('title is required when creating an incident.');
|
|
8641
|
+
return JSON.stringify(await messagingRequest('POST', '/superadmin/status-incidents', body), null, 2);
|
|
8642
|
+
}
|
|
8643
|
+
|
|
8644
|
+
case 'status_incident_delete':
|
|
8645
|
+
return JSON.stringify(await messagingRequest('DELETE', `/superadmin/status-incidents/${Number(args.id)}`), null, 2);
|
|
8646
|
+
|
|
8647
|
+
case 'status_override_set':
|
|
8648
|
+
return JSON.stringify(await messagingRequest('POST', '/superadmin/status-overrides', {
|
|
8649
|
+
component: args.component, status: args.status, note: args.note || '', expiresAt: args.expiresAt ?? null, countsAgainstUptime: args.countsAgainstUptime ?? null,
|
|
8650
|
+
}), null, 2);
|
|
8651
|
+
|
|
8546
8652
|
case 'signalr_diagnostics': {
|
|
8547
8653
|
// Parse a SignalR connection string into { endpoint, accessKey }
|
|
8548
8654
|
function parseSignalRConn(conn) {
|