Loading...
Loading...
Use this skill when reading video-analytics metrics, incidents, alerts, and sensor data via the VA-MCP server (port 9901). Not for live VLM or incident-range narrative reports.
npx skill4agent add nvidia/skills vss-query-analytics$HOST_IPvss-deploy-profilereferences/$NGC_CLI_API_KEY$NVIDIA_API_KEYcurljqreferences/scripts/run_scriptevals/*.jsoncurlnv-base validate <this-skill-dir> --agent-eval/docs/healthvss-deploy-profilevss-deploy-*NGC_CLI_API_KEYdocker login nvcr.iodocker compose downALWAYS run the commands below yourself and relay results to the user. Do NOT guess or describe — actually execute and report back.
Scope guard — read-only analytics only. This skill's intentionally broad trigger list (incidents, alerts, sensor data, metrics, occupancy, speeds, …) is deliberate, but the agent MUST only invoke this skill when the user's question can be answered by reading Elasticsearch via VA-MCP. Do NOT use this skill for ad-hoc VLM Q&A (), for narrative incident reports (vss-ask-video), for archive search (vss-generate-video-report), or for deploy / teardown actions (vss-search-archive). When in doubt, ask the user for a one-line clarification rather than letting the broad description over-trigger.vss-deploy-profile
verificationreal-timecurl -sf --max-time 5 "http://${HOST_IP}:9901/mcp" >/dev/null 2>&1 || \
curl -sf --max-time 5 "http://${HOST_IP}:9901/" >/dev/null"The VSSprofile isn't running onalerts(VA-MCP unreachable). Which mode should I deploy —$HOST_IP(CV) orverification(VLM)?"real-time
/vss-deploy-profile-p alerts -m <mode>/vss-deploy-profileVSS_AUTO_DEPLOY=truevss-ask-video# Step 1: initialize — get session ID from response HEADER
SESSION_ID=$(curl -si -X POST http://${HOST_IP:-localhost}:9901/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"cli","version":"1.0"}},"id":0}' \
| grep -i "mcp-session-id" | awk '{print $2}' | tr -d '\r')
# Step 2: call the tool using the session ID in the header
curl -s -X POST http://${HOST_IP:-localhost}:9901/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"max_count":10}},"id":1}' \
| grep '^data:' | sed 's/^data: //' | jq -r '.result.content[0].text'The session ID comes from the response header, not the body. Skipping Step 1 always results inmcp-session-id.Bad Request: Missing session ID
-d| Parameter | Type | Description |
|---|---|---|
| string | Sensor ID or place name (optional) |
| string | |
| string | ISO 8601: |
| string | ISO 8601 |
| int | Max results (default: 10) |
| list | Extra fields: |
| string | |
# Recent incidents (all sensors)
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"max_count":10}},"id":1}'
# For a specific sensor
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"source":"<sensor-id>","source_type":"sensor","max_count":20}},"id":1}'
# Confirmed (VLM-verified) only
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"vlm_verdict":"confirmed","max_count":10}},"id":1}'-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incident","arguments":{"id":"<incident-id>","includes":["objectIds","info"]}},"id":1}'-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_sensor_ids","arguments":{}},"id":1}'-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_places","arguments":{}},"id":1}'-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_fov_histogram","arguments":{"source":"<sensor-id>","source_type":"sensor","start_time":"<ISO>","end_time":"<ISO>","object_type":"Person","bucket_count":10}},"id":1}'analysis_typemax_min_incidentsaverage_speedavg_num_peopleavg_num_vehicles-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__analyze","arguments":{"source":"<sensor-id>","source_type":"sensor","start_time":"<ISO>","end_time":"<ISO>","analysis_type":"avg_num_people"}},"id":1}'-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"vst_sensor_list","arguments":{}},"id":1}'http://${HOST_IP}:9901/mcptools/callcurl -sf --max-time 5 "http://${HOST_IP:-localhost}:9901/mcp" >/dev/nullconnection refusedalertstimeoutva-mcp-serverdocker compose restart va-mcp-server404/mcpGET /mcp-session-idva-mcp-servertools/callBad Request: Missing session IDinitializeSESSION_ID5xx4xxvideo_analytics__*