Workflows & Recipes
The repeatable patterns that combine the five tools: discover, resolve, and run.
The five tools combine into a small number of repeatable patterns. In practice you rarely think about them — you ask a question and the assistant follows the right pattern — but understanding them helps you phrase requests well and know what to expect.
The golden path: discover then run
Almost every request follows two steps: find the report with visualone_discover_reports, then run it with visualone_get_reports.
// 1. Discover
{ "tool": "visualone_discover_reports",
"arguments": { "query": "enterprise storage summary" } }
// 2. Run the proc_name returned above
{ "tool": "visualone_get_reports",
"arguments": { "action": "run_get", "proc_name": "enterprise_summary_proc" } }
client_id and period_id are auto-resolved. Done.
Drilldown path: discover, list, run
When the report targets a specific entity, insert a lookup step to resolve the exact name.
// 1. Discover the drilldown report
{ "tool": "visualone_discover_reports",
"arguments": { "query": "device capacity plan" } }
// proc_name: device_capacity_plan_proc, requires navigation param device_name
// 2. Resolve the exact device name
{ "tool": "visualone_list_units",
"arguments": { "unit_type": "devices", "search": "dallas" } }
// device_name: ARRAY-DAL-01
// 3. Run with the resolved name
{ "tool": "visualone_get_reports",
"arguments": { "action": "run_get",
"proc_name": "device_capacity_plan_proc",
"device_name": "ARRAY-DAL-01" } }
Deep drilldown: progressive resolution
For nested entities (vCenter → cluster → ESX host → VM), resolve names step by step, filtering each lookup by the level above it.
// 1. vCenter
{ "unit_type": "vcenters", "search": "prod" }
// 2. Cluster within that vCenter
{ "unit_type": "clusters", "vcenter_name": "prod-vcenter.corp" }
// 3. ESX host within that cluster
{ "unit_type": "esx_hosts",
"vcenter_name": "prod-vcenter.corp", "cluster_name": "PROD-CL01" }
// 4. Run the drilldown report with all resolved names
{ "tool": "visualone_get_reports",
"arguments": { "action": "run_get",
"proc_name": "virtual_datastore_history_for_esx_host_proc",
"vcenter_name": "prod-vcenter.corp",
"cluster_name": "PROD-CL01",
"esx_host_name": "esx-07.prod.corp" } }
Choosing a grouping
Some reports expose several stored procedures — one per way of slicing the data. Pick the proc_name that matches the grouping you want.
// "Storage by Group" returns multiple procs:
// enterprise_storage_by_data_center_proc
// enterprise_storage_by_device_type_proc
// enterprise_storage_by_tier_proc <- choose this one
// enterprise_storage_by_application_proc
// enterprise_storage_by_classification_proc
{ "tool": "visualone_get_reports",
"arguments": { "action": "run_get", "proc_name": "enterprise_storage_by_tier_proc" } }
Getting data for charts or export
Request JSON when the result will be computed on, charted, or exported rather than just read.
{ "tool": "visualone_get_reports",
"arguments": { "action": "run_get",
"proc_name": "enterprise_trend_v2_proc",
"response_format": "json" } }
Super-user: query another client
If your session role is super_user, pass client_id to run a report on behalf of a different tenant. Standard users can omit it (and cannot override it).
{ "tool": "visualone_get_reports",
"arguments": { "action": "run_get",
"proc_name": "enterprise_summary_proc",
"client_id": "5678" } }
Quick reference
| You want to… | Pattern |
|---|---|
| Run an enterprise / summary report | discover → run |
| Report on a specific device / VM / switch / DB | discover → list_units → run |
| Report on a deeply nested entity | discover → list_units (progressive) → run |
| Slice a report a particular way | discover → pick the matching proc_name → run |
| Feed a chart or export | run with response_format json |
| Report for another tenant (super users) | run with explicit client_id |