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 reportdiscover → run
Report on a specific device / VM / switch / DBdiscover → list_units → run
Report on a deeply nested entitydiscover → list_units (progressive) → run
Slice a report a particular waydiscover → pick the matching proc_name → run
Feed a chart or exportrun with response_format json
Report for another tenant (super users)run with explicit client_id

Last updated: August 24, 2026