tascan-mcp 3.4.0 → 3.5.0
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/tools.cjs +11 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tascan-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"mcpName": "io.github.snowbikemike/tascan-mcp",
|
|
5
5
|
"description": "TaScan MCP Server — Closed-loop autonomous operations protocol. 50 tools for projects, tasks, workers, QR codes, NFC tags, geofenced zones, AI condition assessment, worker passports, verification-gated gig payments, cross-entity search, duplicate-worker detection, AI issue analysis, and autonomous remediation dispatch. 14 patents filed (435+ claims). Task. Scan. Done.",
|
|
6
6
|
"type": "module",
|
package/tools.cjs
CHANGED
|
@@ -935,6 +935,11 @@ const TOOLS = [
|
|
|
935
935
|
project_id: { type: 'string', description: 'Project this zone belongs to' },
|
|
936
936
|
task_list_id: { type: 'string', description: 'Task list the Site Gate routes workers to when they are inside this zone' },
|
|
937
937
|
enforce_on_list: { type: 'boolean', description: 'Zone-lock the task list — it cannot be started from outside the radius' },
|
|
938
|
+
notify_on_enter: { type: 'boolean', description: 'Email the manager when a worker enters this zone (danger areas)' },
|
|
939
|
+
notify_on_exit: { type: 'boolean', description: 'Email the manager when a worker leaves this zone (accountability — sign in then disappear)' },
|
|
940
|
+
auto_clock_in: { type: 'boolean', description: 'Entering the zone writes a shift_start clock-in event' },
|
|
941
|
+
auto_clock_out: { type: 'boolean', description: 'Leaving the zone writes a shift_end clock-out event' },
|
|
942
|
+
notify_email: { type: 'string', description: 'Alert recipient override — defaults to all org admins' },
|
|
938
943
|
description: { type: 'string', description: 'Shown to workers on the Site Gate page' }
|
|
939
944
|
},
|
|
940
945
|
required: ['name', 'lat', 'lng']
|
|
@@ -943,7 +948,7 @@ const TOOLS = [
|
|
|
943
948
|
handler: async (args, api) => {
|
|
944
949
|
const result = await api('POST', '/zones', args);
|
|
945
950
|
const z = result.data;
|
|
946
|
-
let text = `Zone created: ${z.name}\n\nID: ${z.id}\nCenter: ${z.lat}, ${z.lng}\nRadius: ${z.radius_m}m\nRoutes to list: ${z.task_list_id || '(none — set task_list_id to enable Site Gate routing)'}\nZone-locked: ${z.enforce_on_list ? 'YES — list cannot start outside the zone' : 'no'}`;
|
|
951
|
+
let text = `Zone created: ${z.name}\n\nID: ${z.id}\nCenter: ${z.lat}, ${z.lng}\nRadius: ${z.radius_m}m\nRoutes to list: ${z.task_list_id || '(none — set task_list_id to enable Site Gate routing)'}\nZone-locked: ${z.enforce_on_list ? 'YES — list cannot start outside the zone' : 'no'}\nAlerts: enter=${z.notify_on_enter ? 'ON' : 'off'} exit=${z.notify_on_exit ? 'ON' : 'off'} · Auto-clock: in=${z.auto_clock_in ? 'ON' : 'off'} out=${z.auto_clock_out ? 'ON' : 'off'}`;
|
|
947
952
|
if (z.project_id) text += `\n\nSite Gate URL (print this QR at the site entrance):\nhttps://app.tascan.io/geo.html?project=${z.project_id}`;
|
|
948
953
|
return text;
|
|
949
954
|
}
|
|
@@ -963,7 +968,7 @@ const TOOLS = [
|
|
|
963
968
|
const zones = result.data || [];
|
|
964
969
|
if (!zones.length) return 'No zones configured. Use tascan_create_zone to add one.';
|
|
965
970
|
return zones.map(z =>
|
|
966
|
-
`${z.name} (${z.id})\n Center: ${z.lat}, ${z.lng} · Radius: ${z.radius_m}m · ${z.is_active ? 'active' : 'INACTIVE'}\n Routes to: ${z.task_list_id || '—'} · Zone-locked: ${z.enforce_on_list ? 'yes' : 'no'}`
|
|
971
|
+
`${z.name} (${z.id})\n Center: ${z.lat}, ${z.lng} · Radius: ${z.radius_m}m · ${z.is_active ? 'active' : 'INACTIVE'}\n Routes to: ${z.task_list_id || '—'} · Zone-locked: ${z.enforce_on_list ? 'yes' : 'no'}\n Alerts: enter=${z.notify_on_enter ? 'ON' : 'off'} exit=${z.notify_on_exit ? 'ON' : 'off'} · Auto-clock: in=${z.auto_clock_in ? 'ON' : 'off'} out=${z.auto_clock_out ? 'ON' : 'off'}`
|
|
967
972
|
).join('\n\n');
|
|
968
973
|
}
|
|
969
974
|
},
|
|
@@ -976,7 +981,10 @@ const TOOLS = [
|
|
|
976
981
|
zone_id: { type: 'string', description: 'Zone ID' },
|
|
977
982
|
name: { type: 'string' }, lat: { type: 'number' }, lng: { type: 'number' },
|
|
978
983
|
radius_m: { type: 'number' }, task_list_id: { type: 'string' },
|
|
979
|
-
enforce_on_list: { type: 'boolean' }, is_active: { type: 'boolean' }
|
|
984
|
+
enforce_on_list: { type: 'boolean' }, is_active: { type: 'boolean' },
|
|
985
|
+
notify_on_enter: { type: 'boolean' }, notify_on_exit: { type: 'boolean' },
|
|
986
|
+
auto_clock_in: { type: 'boolean' }, auto_clock_out: { type: 'boolean' },
|
|
987
|
+
notify_email: { type: 'string' }
|
|
980
988
|
},
|
|
981
989
|
required: ['zone_id']
|
|
982
990
|
},
|