@velaro/mcp-server 0.6.71 → 0.6.72
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 +31 -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.72",
|
|
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
|
@@ -2787,6 +2787,20 @@ For multiSelect dynamic options: the variable named in dynamicOptionsVariable mu
|
|
|
2787
2787
|
},
|
|
2788
2788
|
},
|
|
2789
2789
|
},
|
|
2790
|
+
{
|
|
2791
|
+
name: 'report_backfill',
|
|
2792
|
+
description: 'Backfill report data for the caller site. Preview by default (reports "would fill N", writes nothing); apply=true writes. Idempotent. type "csat" fills missing survey ratings (SurveySubmission.Rating) from existing data; it does NOT touch ticket CSAT. Site managers only; scoped to the caller site.',
|
|
2793
|
+
inputSchema: {
|
|
2794
|
+
type: 'object',
|
|
2795
|
+
properties: {
|
|
2796
|
+
type: { type: 'string', description: 'Backfill type, e.g. csat.' },
|
|
2797
|
+
from: { type: 'string', description: 'yyyy-MM-dd start.' },
|
|
2798
|
+
to: { type: 'string', description: 'yyyy-MM-dd end.' },
|
|
2799
|
+
apply: { type: 'boolean', description: 'true = write. Default false (preview only).' },
|
|
2800
|
+
},
|
|
2801
|
+
required: ['type', 'from', 'to'],
|
|
2802
|
+
},
|
|
2803
|
+
},
|
|
2790
2804
|
// -- Staff: schedule adherence by site + role (SupportTools-style: explicit siteId, never auth-derived) --
|
|
2791
2805
|
// Backend: velaro-messaging ReportsController.ScheduleAdherenceDiagnosticsAsync, gated by
|
|
2792
2806
|
// IsSuperAdminAsync(allowSupport: true) -> 403 for non-staff. role=agent REQUIRES agentId (fails closed).
|
|
@@ -4305,6 +4319,12 @@ For multiSelect dynamic options: the variable named in dynamicOptionsVariable mu
|
|
|
4305
4319
|
},
|
|
4306
4320
|
},
|
|
4307
4321
|
|
|
4322
|
+
{
|
|
4323
|
+
name: 'focus_get_triage_economy_report',
|
|
4324
|
+
description: 'Triage Economy report for this site: conversations triaged, rules vs Haiku counts, rules hit rate, Haiku calls avoided, estimated USD saved, latency, correction rates (rules vs Haiku quality), effective mode and its source (force|site|default). Skill selection is unaffected by economy mode. siteId comes from the session, never an argument.',
|
|
4325
|
+
inputSchema: { type: 'object', properties: { days: { type: 'number', description: 'Lookback window in days (default 30).' } } },
|
|
4326
|
+
},
|
|
4327
|
+
|
|
4308
4328
|
// Feature Discovery -- non-nag "features on other plans this account doesn't have yet" nudge
|
|
4309
4329
|
// siteId is never accepted as a tool argument -- FeatureDiscoveryController derives it
|
|
4310
4330
|
// server-side from the caller's auth context (MCP key / JWT site scope), same pattern as the
|
|
@@ -7855,6 +7875,12 @@ async function handleTool(name, args) {
|
|
|
7855
7875
|
return lines.join('\n');
|
|
7856
7876
|
}
|
|
7857
7877
|
|
|
7878
|
+
case 'report_backfill': {
|
|
7879
|
+
const qs = new URLSearchParams({ from: String(args.from), to: String(args.to), apply: String(args.apply === true) });
|
|
7880
|
+
const r = await messagingPost(`/Reports/backfill/${encodeURIComponent(args.type)}?${qs}`);
|
|
7881
|
+
return (args.apply === true ? 'Backfill APPLIED\n' : 'Backfill PREVIEW (nothing written; pass apply=true to write)\n') + JSON.stringify(r, null, 2);
|
|
7882
|
+
}
|
|
7883
|
+
|
|
7858
7884
|
case 'support_schedule_adherence': {
|
|
7859
7885
|
if (args.role === 'agent' && !args.agentId) throw new Error('agentId is required when role=agent');
|
|
7860
7886
|
const qs = new URLSearchParams({ detail: 'true' });
|
|
@@ -9313,6 +9339,11 @@ async function handleTool(name, args) {
|
|
|
9313
9339
|
return await messagingGet('/Focus/DraftPregeneration/Report');
|
|
9314
9340
|
|
|
9315
9341
|
// -- Focus Inbox AI triage rules (#582 Phase B) --
|
|
9342
|
+
case 'focus_get_triage_economy_report': {
|
|
9343
|
+
const d = args.days !== undefined ? Number(args.days) : 30;
|
|
9344
|
+
if (!Number.isFinite(d) || d < 1) throw new Error('days must be a positive number.');
|
|
9345
|
+
return await messagingGet('/Focus/Triage/EconomyReport?days=' + Math.floor(d));
|
|
9346
|
+
}
|
|
9316
9347
|
case 'focus_get_triage_rules':
|
|
9317
9348
|
return await messagingGet('/Focus/triage-rules');
|
|
9318
9349
|
case 'focus_update_triage_rules': {
|