Tools Reference
Complete reference for every read-only tool in the DigiUsher MCP Server
The DigiUsher MCP Server has 45 read-only tools in 12 domains. Every tool needs an authentication, and most tools need an organization_id. To find your organizations, call list_organizations first.
Every tool calls the DigiUsher API for you, so the permissions of your DigiUsher account apply. A tool with a body parameter takes a JSON object. A separate Body fields table gives the fields of that object.
Dates are YYYY-MM-DD strings. Wherever a tool takes start_date and end_date, start_date must be on or before end_date.
Organizations & Users
list_organizations
Entry-point tool for organization-scoped workflows. Returns organizations the authenticated user can access. Call this first when organization_id is unknown.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| (none) | — | — | — | No parameters needed |
Example prompt: "What organizations do I have access to in DigiUsher?"
get_current_user
Returns the profile of the authenticated DigiUsher user. Use it to identify the caller, and to make sure that the account context is correct, before an operation on an organization.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| (none) | — | — | — | No parameters needed |
Example prompt: "Who am I in DigiUsher?"
Data Sources
list_data_sources
Lists cloud account and billing data sources for an organization. Useful for mapping data_source_id values in expense and recommendation results.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Example prompt: "What cloud accounts are connected to my organization?"
get_data_source
Get detailed information for a single data source by ID, including configuration and status. Use list_data_sources first to find the data_source_id.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
data_source_id | UUID | Yes | — | Data source ID |
Example prompt: "Show me the details and status of data source abc-123."
Expenses
DigiUsher recommends this workflow for the expense tools:
- Call
get_expense_dimension_catalogto find the available dimensions. - Call
query_expense_dimension_valuesto get the valid filter values of a dimension. - Call
query_expense_datato run the expense query. - Call
get_expense_dimension_lookupsto translate the IDs in the results into names.
get_expense_dimension_catalog
Lists available expense dimensions and their capabilities for filtering or grouping.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Example prompt: "What dimensions can I use to break down my cloud costs?"
query_expense_dimension_values
Returns the valid values of one expense dimension. It works for standard dimensions and for tags. In a query_expense_data filter, use only these values. Another value gives an error.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Query parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
dimension | object | Yes | — | Dimension specification. The field dimension_type gives its shape, as in the table that follows |
search | string | No | — | Search term to filter values (max 100 characters) |
limit | integer | No | 100 | Maximum number of values to return (1–1,000,000) |
The dimension object takes one of four shapes:
dimension_type | Other fields | Description |
|---|---|---|
standard | name | A standard dimension name, for example {"dimension_type": "standard", "name": "service_name"} |
tag | tag_type, key | Cloud tags. tag_type is keys to list the tag keys, and you then omit key. tag_type is values to list the values of one tag, and key is then necessary |
allocated_tag | tag_type, key | Allocated tags (JSON paths such as k8s.namespace). Same tag_type/key rules as tag |
derived | key | A derived allocation dimension identified by its slug, as defined in Cost Allocation |
Standard dimension names: service_name, service_category, service_subcategory, resource_type, resource_id, resource_group, region_id, network_from, network_to, data_source_id, provider, publisher, charge_category, pricing_category, license_model, sku_name, invoice_id, invoice_issuer, commitment_discount_type, commitment_discount_category, commitment_discount_id, commitment_discount_status, consumed_unit, pool_id, rule_id, allocated_resource_id, allocated_resource_name, allocated_method_id.
Example prompt: "What services are available in my expense data?"
query_expense_data
Query aggregated expense data with grouping, filtering, and sorting.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Query parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | Start of date range |
end_date | string (YYYY-MM-DD) | Yes | — | End of date range |
currency | string | No | organization currency | The API accepts the currency of your organization only. Omit this field. It rejects every other value |
granularity | string | No | day | Time bucket: hour, day, week, month, year, or total |
group_by | array | No | [] | Up to 3 dimensions. Each entry is a standard dimension name, for example "service_name", or a tag object from the table that follows |
filters | object | No | — | One object, with one key for each dimension, as in the table that follows |
metrics | array | No | ["effective_cost", "billed_cost"] | Metrics to return: billed_cost, effective_cost, list_cost, consumed_quantity |
order_by | array | No | [] | Up to 3 {"field": ..., "direction": ...} objects. field is date, billed_cost, effective_cost, list_cost, or consumed_quantity. direction is asc or desc, and the default is desc |
limit | integer | No | — | Maximum number of rows (1–100,000) |
group_by entries: a plain string from the list of standard dimension names, or one of these objects:
source | Other fields | Description |
|---|---|---|
tag | type, key | Cloud tags. type is keys to group by tag key, and you then omit key. type is values to group by the values of one tag, and key is then necessary. An example is {"source": "tag", "type": "values", "key": "Environment"} |
allocated_tag | type, key | Allocated tags (JSON paths). Same type/key rules |
derived | key | A derived allocation dimension slug, for example {"source": "derived", "key": "team"} |
filters object: one key per dimension you want to filter. Unknown keys are rejected.
| Key(s) | Value shape |
|---|---|
Any standard dimension name, for example service_name, region_id, data_source_id, pool_id, or provider | A list of the values to include, such as ["Amazon EC2"], or an object {"include": [...], "exclude": [...]} with at least one of the two keys |
tags, allocated_tags | List of {"key": "...", "include": [...], "exclude": [...]} or {"key": "...", "exists": true} objects. exists cannot be combined with include/exclude |
dimensions | List of {"key": "<slug>", "include": [...], "exclude": [...]} objects for derived allocation dimensions |
billed_cost, effective_cost, list_cost, consumed_quantity | List of {"value": <number>, "op": "gt" | "gte" | "lt" | "lte"} range conditions |
Ordering rules: a cost metric used in order_by must also appear in metrics, and date cannot be used when granularity is total.
Example prompt: "Show me our AWS spending for January 2026 broken down by service, sorted by effective cost descending, top 10."
get_expense_dimension_lookups
Returns lookup tables to translate IDs (data_source_id, pool_id, rule_id) into user-friendly names. Use after query_expense_data when results contain IDs.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
include_pools | boolean | No | — | Include pool name lookups |
include_data_sources | boolean | No | — | Include data source name lookups |
Example prompt: "Translate the data source IDs in my expense results to names."
Anomaly Detection
If you give no start_date and no end_date, the summary tools and the list tools use the last 90 days. A range that you give cannot be longer than 366 days.
get_anomaly_summary
Get aggregated anomaly counts by severity, anomaly type, and group. Use as a dashboard-style overview before drilling into individual anomalies.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
severity | array | No | — | Filter by severity: HIGH, MEDIUM, LOW |
anomaly_type | array | No | — | Filter by type: COST_SPIKE, PATTERN_DEVIATION, RESOURCE_INEFFICIENCY, UNEXPECTED_RESOURCE |
group_type | array | No | — | Filter by group: ORGANIZATION, DATA_SOURCE, SERVICE, REGION, POOL, PERSPECTIVE |
start_date | string (YYYY-MM-DD) | No | 90 days ago | Start of date range |
end_date | string (YYYY-MM-DD) | No | today | End of date range |
Example prompt: "Give me a summary of cost anomalies detected this month."
list_anomalies
List anomalies with filtering, sorting, and pagination. Use after get_anomaly_summary to inspect matching anomalies in detail.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | List parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
severity | array | No | — | Filter by severity: HIGH, MEDIUM, LOW (max 10) |
anomaly_type | array | No | — | Filter by type: COST_SPIKE, PATTERN_DEVIATION, RESOURCE_INEFFICIENCY, UNEXPECTED_RESOURCE (max 10) |
group_type | array | No | — | Filter by group: ORGANIZATION, DATA_SOURCE, SERVICE, REGION, POOL, PERSPECTIVE (max 10) |
group_key | array of strings | No | — | Filter by specific group keys (max 50) |
start_date | string (YYYY-MM-DD) | No | 90 days ago | Start of date range |
end_date | string (YYYY-MM-DD) | No | today | End of date range |
sort_by | string | No | date | Sort field: date, severity, cost_impact, anomaly_score |
sort_direction | string | No | desc | asc or desc |
limit | integer | No | 50 | Max results (1–500) |
offset | integer | No | 0 | Pagination offset |
Example prompt: "Show me all high-severity cost anomalies from the last 30 days, biggest cost impact first."
get_anomaly
Get a single anomaly by ID with computed impact metrics and metadata. Use after list_anomalies for deeper inspection.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
anomaly_id | UUID | Yes | — | Anomaly ID |
Example prompt: "Show me the full details of anomaly abc-123."
Recommendations
list_all_scenarios
List recommendation scenarios and their configurable thresholds. Use to discover scenario IDs and threshold metadata before working with overrides or filtering recommendations.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
cloud_provider | string | No | — | Filter by data source type. Accepts any DigiUsher data source type value, for example aws_cnr, azure_cnr, azure_tenant, gcp_cnr, gcp_tenant, oci_cnr, alibaba_cnr, kubernetes_cnr, databricks, nebius, snowflake, mongodb, focus_any |
Example prompt: "What types of cost optimization scenarios does DigiUsher check for on AWS?"
get_scenario_by_id
Get one recommendation scenario by ID, including threshold definitions and optimization detection metadata.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
scenario_id | string | Yes | — | Scenario ID |
Example prompt: "Show me the details of the rightsizing scenario."
list_threshold_overrides
List threshold overrides configured for the organization, optionally filtered by scenario. Use to audit customized scenario sensitivity.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
scenario_id | string | No | — | Filter by scenario ID |
Example prompt: "Are there any custom threshold overrides configured for our recommendations?"
get_threshold_override
Get a specific threshold override by ID. Use after list_threshold_overrides when details for one override are needed.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
override_id | UUID | Yes | — | Override ID |
Example prompt: "Show me override abc-123."
list_recommendations
List cost optimization recommendations with filtering, sorting, and pagination. Common filters include status, severity, scenario tags, cloud account, and resource attributes.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | List parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
status | array | No | ["open"] | Filter by status: open, applied, dismissed, snoozed, stale. (auto_resolved is deprecated; use stale) |
severity | array | No | — | Filter by severity: low, medium, high, critical |
scenario_id | array of strings | No | — | Filter by scenario |
scenario_tags | array | No | — | Filter by scenario tags: commitment, delete, resize, migrate, upgrade, quick_win, requires_planning, orphaned, idle, oversized, outdated, legacy, security, reliability |
data_source_id | array of UUIDs | No | — | Filter by data source |
assignee_id | array of UUIDs | No | — | Filter by assignee |
commitment_id | array of UUIDs | No | — | Filter to recommendations linked to specific commitments |
resource_id | array of strings | No | — | Filter by resource ID |
resource_type | array of strings | No | — | Filter by resource type |
region | array of strings | No | — | Filter by region |
service | array of strings | No | — | Filter by service |
resource_tags | array | No | — | List of {"key": "...", "include": [...], "exclude": [...]} or {"key": "...", "exists": true} objects. exists cannot be combined with include/exclude |
created_at_start_date | string (YYYY-MM-DD) | No | — | Recommendations created on or after this date (inclusive) |
created_at_end_date | string (YYYY-MM-DD) | No | — | Recommendations created on or before this date (inclusive) |
group_by | string | No | — | Group the embedded savings summary by: scenario_id, severity, data_source_id, region, service |
sort_by | string | No | annual_savings | Sort field: annual_savings, monthly_savings, severity, created_at, last_seen_at, status |
sort_direction | string | No | desc | asc or desc |
limit | integer | No | 50 | Max results (1–500) |
offset | integer | No | 0 | Pagination offset |
Example prompt: "Show me the top 5 open recommendations sorted by annual savings."
get_savings_summary
Get aggregated potential savings from recommendations, with optional filtering and grouping. Useful for executive summaries and trend breakdowns.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Summary parameters. The Body fields table gives them |
Body fields: the same filter fields as list_recommendations, without the pagination fields and the sorting fields. These fields are status (default ["open"]), severity, scenario_id, scenario_tags, data_source_id, assignee_id, commitment_id, resource_id, resource_type, region, service, resource_tags, created_at_start_date, created_at_end_date, and group_by.
Example prompt: "What's the total potential savings from all open recommendations, grouped by scenario?"
get_recommendation
Get one recommendation by ID, including the latest automation status and detailed payload.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
recommendation_id | UUID | Yes | — | Recommendation ID |
Example prompt: "Show me the full details of recommendation abc-123."
KPIs
list_kpi_definitions
List available KPI definitions, including units, categories, and favorable direction. Use before snapshot or time-series calls to select kpi_ids.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Available KPI IDs: effective_savings_rate, compute_commitment_coverage, commitment_discount_waste, allocation_accuracy_index, compute_cost_per_core, cost_per_gb_stored, legacy_resource_percentage, cost_optimization_index.
Example prompt: "What FinOps KPIs are available for my organization?"
get_kpi_snapshots
Get KPI values for a single date.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
date | string (YYYY-MM-DD) | No | — | Date for the snapshot. Omit to use the API default |
kpi_ids | array | No | — | Filter by KPI IDs (see list_kpi_definitions) |
Example prompt: "What are our current KPI values?"
get_kpi_time_series
Get KPI values across a date range. start_date must be on or before end_date.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
start_date | string (YYYY-MM-DD) | Yes | — | Start of date range |
end_date | string (YYYY-MM-DD) | Yes | — | End of date range |
kpi_ids | array | No | — | Filter by KPI IDs (see list_kpi_definitions) |
Example prompt: "How has our effective savings rate trended over the last 3 months?"
Unit Economics
Unit economics combine a cost expression with a North Star Metric (NSM) to compute cost per unit of business value. Dimension map groups translate raw billing dimension values into business categories that formulas can use.
list_dimension_map_groups
List dimension map groups in the organization. A dimension map group is a named set of mappings used to translate raw billing dimension values into business-meaningful categories.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Example prompt: "What dimension map groups are defined for unit economics?"
get_dimension_map_group
Get a single dimension map group by ID, including all of its source-to-target mapping entries.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
group_id | UUID | Yes | — | Dimension map group ID |
Example prompt: "Show me the mappings in dimension map group abc-123."
list_formulas
List unit-economics formulas in the organization. Use to discover formula IDs before fetching or calculating one.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Example prompt: "What unit economics formulas do we have?"
get_formula
Get a single unit-economics formula by ID, including its cost expression, NSM reference, default grouping, and metadata.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
formula_id | UUID | Yes | — | Formula ID |
Example prompt: "Show me how the cost-per-transaction formula is defined."
calculate_formula
Calculate cost, NSM, and cost-per-unit for a formula over a date range. Returns one entry per period with totals plus a per-group breakdown.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
formula_id | UUID | Yes | — | Formula ID (from list_formulas) |
body | object | Yes | — | Calculation parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | Inclusive start of the calculation window |
end_date | string (YYYY-MM-DD) | Yes | — | Inclusive end of the calculation window |
granularity | string | No | formula's base granularity | day, week, or month. Must be at least as coarse as both the formula's base granularity and the NSM key's granularity |
group_by | string | No | — | NSM dimension to break each group's cost down by, in proportion to that dimension's NSM share. Cannot be a dimension already linked by the formula |
filters | array | No | [] | List of {"dimension": "<key>", "values": [...]} objects. A filter changes the visible rows only. The share and the allocated cost still use the full NSM denominator, without the filter |
Example prompt: "What was our cost per transaction each month last quarter?"
Chargeback
get_chargeback_for_month
Get chargeback data for a specific month. Returns persisted runs when available, or on-the-fly computed results for missing periods.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
month | string (YYYY-MM-DD) | Yes | — | A date in the month, for example 2026-01-01 |
Example prompt: "Show me the chargeback data for January 2026."
get_cost_allocation_summary
Get the showback summaries or the chargeback summaries of one or more months. DigiUsher moves start_date to the start of its month. end_date is inclusive, and it can be any date.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Summary parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | Start date (snapped to the start of the month) |
end_date | string (YYYY-MM-DD) | Yes | — | End date (inclusive) |
view | string | Yes | — | showback (cost per pool before redistribution) or chargeback (cost per pool after all redistributions) |
granularity | string | No | month | month or day |
pool_id | UUID | No | — | Restrict to one pool |
filters | object | No | — | {"service_names": [...], "regions": [...], "data_source_ids": [...]}. Every key is optional. The result contains the matching costs only |
breakdown_dimensions | array | No | [] | Dimensions to break pool costs down by: service_name, data_source, region. Empty returns pool totals only |
Example prompt: "Show me the chargeback allocation across teams for Q1 2026, by month."
get_cost_allocation_dimensions
Get available filter dimension values (services, regions, data sources) for cost allocation queries. Use this to discover valid filter options before calling get_cost_allocation_summary.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
start_date | string (YYYY-MM-DD) | Yes | — | Start of date range |
end_date | string (YYYY-MM-DD) | Yes | — | End of date range |
view | string | Yes | — | showback or chargeback |
Example prompt: "What services and regions are available for chargeback filtering?"
Forecasting
group_type accepts ORGANIZATION or SHOWBACK_POOL.
get_forecast_summary
Get a forecast overview for the organization or a specific showback pool. Returns projected totals, trend direction, and confidence range. Omit group_type and group_key for the org-level forecast.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
group_type | string | No | ORGANIZATION | ORGANIZATION or SHOWBACK_POOL |
group_key | UUID | No | — | Pool ID when group_type is SHOWBACK_POOL |
Example prompt: "What's the cost forecast for my organization?"
get_forecast_series
Get daily forecast time-series data for charting: actuals, predicted values, and confidence bands. Use after get_forecast_summary to drill into the trend.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
group_type | string | No | ORGANIZATION | ORGANIZATION or SHOWBACK_POOL |
group_key | UUID | No | — | Pool ID when group_type is SHOWBACK_POOL |
Example prompt: "Show me the daily forecast trend with confidence bands for next month."
get_forecast_batch
Get the forecast summary of every entry of one group_type, in one call. With SHOWBACK_POOL, you get the forecast summary of every pool. ORGANIZATION does not work here. For the organization, use get_forecast_summary.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
group_type | string | Yes | — | SHOWBACK_POOL |
Example prompt: "Give me forecast summaries for all cost pools at once."
Resource Inventory
get_resource_types
List available resource types for resource inventory queries. Use before get_dimension_values to select a valid resource_type.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
search | string | No | — | Search filter |
limit | integer | No | 100 | Max results (1–10,000) |
Example prompt: "What resource types are in my cloud inventory?"
get_dimension_values
Get values for resource inventory dimensions for a specific resource type. This is for resource dimensions, not expense dimensions.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
resource_type | string | Yes | — | Resource type (from get_resource_types) |
name | string | Yes | — | Dimension name: region, service, resource_group, tag_keys, or tag_values |
key | string | No | — | Tag key (required when name is tag_values) |
search | string | No | — | Search filter |
limit | integer | No | 100 | Max results (1–10,000) |
Example prompt: "What regions do our EC2 instances run in?"
get_resource_time_series
Get the metric time series of one discovered cloud resource. Returns the daily metric values of the date range. The default range is the last 30 days.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
discovered_resource_id | UUID | Yes | — | Discovered resource ID |
start_date | string (YYYY-MM-DD) | No | 30 days ago | Start of date range |
end_date | string (YYYY-MM-DD) | No | today | End of date range |
Example prompt: "Show me the CPU utilization metrics for resource abc-123 over the last 30 days."
Governance
list_tagging_policies
List all tagging policies configured for the organization. Each policy defines required tags, allowed values, and the resources it applies to. Use to discover policy IDs before fetching details or violations.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Example prompt: "What tagging policies are enforced in our organization?"
get_tagging_policy
Get a single tagging policy by ID, including its rules, required tag keys, allowed values, and resource scope.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
policy_id | UUID | Yes | — | Tagging policy ID |
Example prompt: "Show me the rules of the cost-center tagging policy."
list_tagging_violations
List individual tagging-policy violations across the organization, optionally filtered to one or more policies and paginated.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
policy_ids | array of UUIDs | No | — | Restrict to these policies |
sort_direction | string | No | desc | desc (newest first) or asc (oldest first) |
offset | integer | No | 0 | Pagination offset |
limit | integer | No | 50 | Max results (1–500) |
Example prompt: "List the 20 most recent resources violating our tagging policies."
get_tagging_violations_summary
Get a roll-up summary of tagging violations across the organization, including counts by policy and severity. Use for governance dashboards before drilling into individual violations.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
Example prompt: "How many tagging violations do we have, by policy?"
AI Attribution
These tools report the spend of the AI coding agents. They need an AI telemetry data source, of the type ai_telemetry. If a tool returns a 404, call list_data_sources and look for such a source. The amounts use the currency of your organization, which is not always USD.
get_ai_spend_overview
Get header KPIs for AI coding-agent spend over one date window: total and estimated spend, spend by model family, blended rate per million tokens, cache hit ratio, run and active-user counts, and cost per active hour. Start here, then use query_ai_activity or list_ai_runs to break the window down.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
start_date | string (YYYY-MM-DD) | Yes | — | First day of the window (inclusive) |
end_date | string (YYYY-MM-DD) | Yes | — | Last day of the window (inclusive) |
data_source_id | UUID | No | — | Restrict the result to one AI telemetry data source. Omit the field to use all of them |
Example prompt: "How much did we spend on AI coding agents in August, and what was our cache hit ratio?"
query_ai_activity
Get a series of AI spend and tokens in buckets, with one breakdown dimension. The tool dimension works in another way. It fills tool_activity with the number of calls and the latency of each tool, and it returns an empty series and empty totals. A tool call has no spend of its own.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Query parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | First day of the window (inclusive) |
end_date | string (YYYY-MM-DD) | Yes | — | Last day of the window (inclusive) |
data_source_id | UUID | No | — | Restrict to one AI telemetry data source |
granularity | string | No | day | Bucket size: day, week, month, quarter |
dimension | string | No | model | Breakdown dimension: model, model_family, agent, team, department, cost_center, user, tool |
Example prompt: "Break down last month's AI agent spend by team, week by week."
list_ai_runs
List agent runs (sessions) in the window with their spend, token, and event aggregates. Filter to one user or model, or pass run_id to drill into a single run, which also fills detail with that run's per-model split.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Query parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | First day of the window (inclusive) |
end_date | string (YYYY-MM-DD) | Yes | — | Last day of the window (inclusive) |
data_source_id | UUID | No | — | Restrict to one AI telemetry data source |
user | string | No | — | Filter to one user (email or install ID) |
model | string | No | — | Keep runs that used this model ID |
run_id | string | No | — | The details of one run. The response then contains detail |
sort_by | string | No | cost | cost (reported spend) or last_activity |
limit | integer | No | 50 | Max results (1–200) |
offset | integer | No | 0 | Pagination offset (ignored when run_id is set) |
Example prompt: "Which agent sessions cost the most last week?"
get_ai_work_items_summary
Get the unit economics of the work items, which are the pull requests, that a person merged in the window. The result gives the cost for one merged work item, the cost for 100 added lines, and the part of the spend of the window that belongs to a work item. merged_items gives each item of the window the full spend of its runs, over the whole life of those runs. window_spend counts only the spend inside the window. You cannot calculate one of the two values from the other value.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
start_date | string (YYYY-MM-DD) | Yes | — | First day of the window (inclusive) |
end_date | string (YYYY-MM-DD) | Yes | — | Last day of the window (inclusive) |
data_source_id | UUID | No | — | Restrict to one AI telemetry data source |
Example prompt: "What did each merged pull request cost us in AI spend last month?"
list_ai_work_items
List the work items (pull requests) merged in the window with the AI spend attributed to each, the lines they added and deleted, and the quality of the join behind the attribution. Use list_ai_work_item_groups to roll these up by repository or author instead.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Query parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | First day of the window (inclusive) |
end_date | string (YYYY-MM-DD) | Yes | — | Last day of the window (inclusive) |
data_source_id | UUID | No | — | Restrict to one AI telemetry data source |
repo | string | No | — | Restrict to one repository. Use the full name, for example acme/widgets |
sort_by | string | No | completed_at | completed_at (merge date, newest first) or allocated_cost (attributed spend, highest first) |
limit | integer | No | 50 | Max results (1–200) |
offset | integer | No | 0 | Pagination offset |
Example prompt: "Show me the pull requests merged in the acme/widgets repo last month with the most AI spend attributed."
list_ai_work_item_groups
Roll the window's merged work items up by repository, author, or both, with cost per merged work item and cost per 100 added lines for each group. Rollups aggregate the whole window before they paginate, so group totals are complete.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization_id | UUID | Yes | — | Organization ID |
body | object | Yes | — | Query parameters. The Body fields table gives them |
Body fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_date | string (YYYY-MM-DD) | Yes | — | First day of the window (inclusive) |
end_date | string (YYYY-MM-DD) | Yes | — | Last day of the window (inclusive) |
data_source_id | UUID | No | — | Restrict to one AI telemetry data source |
repo | string | No | — | Restrict to one repository (full name) |
group_by | array | No | ["repo"] | One or two distinct dimensions, outermost first: repo, author |
limit | integer | No | 50 | Max results (1–200) |
offset | integer | No | 0 | Pagination offset |
Example prompt: "Compare AI cost per merged pull request across our repositories."
DigiUsher Documentation