MCP Tool Guide

Learn how to authenticate, discover, and call the tools CoreStack’s MCP server exposes across FinOps, Graphion, Assessment, and Workload domains.

Feature Overview

The CoreStack MCP Server is a Platform-level integration that exposes CoreStack’s FinOps, Graphion, Assessment, and Workload capabilities as a set of callable tools, following the Model Context Protocol (MCP). It is most relevant when you are connecting an AI agent, automation script, or MCP-compatible client to CoreStack and need programmatic access to cost data, security posture, compliance assessments, or workload inventory across AWS, Azure, GCP, and OCI accounts, instead of using the CoreStack web console.

This capability is most valuable to platform integrators, automation engineers, and AI-agent developers who need to read or act on CoreStack data outside the browser. It is not a replacement for the CoreStack web console — UI-only configuration tasks (for example, custom dashboard layout or SSO setup) still require the console, and every tool call still runs inside your existing CoreStack permissions rather than granting new access.

📘

Note: Every tool call runs inside an authenticated CoreStack session and inherits the caller’s assigned role permissions — the MCP server does not grant any access beyond what the calling user or service account already has in CoreStack.

How It Works

When an MCP client calls authenticate, CoreStack establishes a session scoped to the caller’s last-used master account and tenant, and every subsequent tool call reuses that session’s implicit auth context automatically. From there, the client selects the tools it needs: read-only tools such as get_cloud_accounts or list_assessment_runs return data immediately, while the four tools marked Destructive create or modify CoreStack data and should be called only after the inputs are confirmed. Once a tool call completes, its response comes back in a consistent {Summary, Output}-style envelope (the exact keys vary by tool) that the client parses and acts on programmatically. Because tool numbering and domain grouping mirror the underlying tool registry, the same session moves between FinOps, Graphion, Assessment, and Workload tools without re-authenticating — session state, not tool domain, is what changes between calls.

Prerequisites

Before you begin, ensure the following:

  • Role: Your CoreStack user or service account has a role assigned that grants access to the module(s) you intend to call.
  • Permissions: For any tool marked Destructive (send_agent_query, file_bug, submit_assessment_answer, create_workload), your role must also include Create/Update access for the relevant module, since these calls modify CoreStack data.
  • Prior setup: Your CoreStack tenant already has the cloud accounts, portfolios, or assessment definitions you plan to query onboarded — the MCP tools read and act on existing CoreStack data; they don’t onboard new accounts.
  • Access: You have valid CoreStack API credentials (access key, secret key, and API URL) and an MCP-compatible client capable of connecting to the CoreStack MCP server endpoint.

Connecting to and Calling CoreStack MCP Tools

Configure your MCP client with your CoreStack API credentials before making any tool calls; the client passes these as an implicit session context on every request. Follow the steps below to establish a session and make your first tool calls.

Step 1: Authenticate the session

Call authenticate with no parameters. CoreStack establishes a session and auto-selects your last-used master account and tenant, returning master_account_id, tenant_id, and the list of available_master_account_ids you can switch between.

Step 2: Select a tenant or master account, if needed

If the auto-selected tenant or master account from Step 1 isn’t the one you need, call set_active_tenant or set_master_account with the tenant_id or master_account_id you want. Skip this step if the defaults from authenticate are already correct.

Step 3: Identify the tool you need

Check the Domain Summary in Appendix A to find the tool that covers your task — FinOps for cost and billing questions, Graphion for application security posture, Assessment for Well-Architected reviews, or Workload for resource inventory.

Step 4: Call the tool with its required parameters

Call the selected tool, supplying every parameter marked Required in its Reference entry. For example, call get_cloud_accounts with tenant_ids to list the cloud accounts available for cost queries.

Step 5: Confirm inputs before calling a Destructive tool

Before calling a tool marked Destructive, double-check the inputs are correct — these calls create or modify CoreStack data and can’t be undone simply by calling the tool again with different parameters.

👍

Tip: Start with read-only tools (for example, get_cloud_accounts or list_assessment_definitions) to confirm your session and permissions are correct before calling any Destructive tool.

Additional Tasks

Analyzing Cloud Costs (FinOps)

Build a filter with build_filter_query, then pass it to get_cost_aggregation_trend or get_anomalies to investigate spend over time or unexpected cost spikes. Pair this with get_savings_summary to see potential and realized savings in the same session

Reviewing Application Security Posture (Graphion)

Call portfolio_list_and_retrieval to find the portfolio you’re investigating, then dashboard_top_actionable_issues to get a risk-prioritized list of vulnerabilities and misconfigurations. Use vulnerability_get_details_batch to pull full CVE detail for any issues you need to triage further.

Running a Well-Architected Framework Assessment

Call list_assessment_definitions to find the assessment you want, list_assessment_runs to see its run history, and get_pillar_scores to see the resulting pillar-by-pillar scores. Use submit_assessment_answer (Destructive) to record answers against best practices as you work through the assessment.

Querying Workload Resources

Call list_workload_definitions to see the workloads configured for your tenant, then query_workload_resources to pull the resource inventory for a specific workload tier. Use get_resource_batch to retrieve full configuration detail for any resource IDs returned.

Complete MCP Tool Reference

This document provides standardized MCP-format documentation for the tools exposed by the CoreStack unified MCP server. It catalogs every tool across the platform — FinOps, Graphion, Assessment (Well-Architected Framework), Workload, and Common/Auth domains.

The reference covers 100 tools across 5 domains: Common/Auth (10), FinOps (24), Graphion (45), Assessment (15), and Workload (6). Tool numbering matches the order of the underlying tool registry for cross-reference.

Every tool takes an MCP session/auth context as an implicit first argument supplied automatically by the MCP client/server transport; it is omitted from the parameter tables below. In each table, a parameter is "Required" when it has no default value. Unless otherwise noted, all tools validate the caller’s CoreStack session before calling the backend API and are read-only; tools that create or modify data are marked Destructive.

FinOps

FinOps — Billing & Cost Aggregation

1. get_cost_aggregation

Retrieve snapshot cost aggregation totals grouped by dimensions for a time period (POST /v2/billing/aggregation) — a single aggregated snapshot, not a time series.

Parameters

ParameterTypeDescriptionRequired
filtersdictQueryOperator filter tree, built via build_filter_queryYes
time_range_presetstr | NonePreset time windowNo
start_datestr | NoneISO-8601 UTC start; overrides presetNo
end_datestr | NoneISO-8601 UTC end; overrides presetNo
group_bylist[str | dict] | NoneDimension selectorsNo
billing_sourcestrCost metric key (default "raw_cost")No
billing_modebool | NoneAuto-derived from preset if omittedNo
time_zonestr | NoneIANA timezoneNo
platformstr | NoneOnly valid value is "kubernetes"No
limitint0 = unlimited (default 0)No
skip_service_account_groupingbool | NoneAuto-derived if omittedNo
include_resource_childrenboolDefault FalseNo
auto_intersect_dimension_datesboolClip dates to dimension's range (default True)No

Returns: dict[str, Any] — {Summary: {total_records}, Output: <aggregated cost data>}.

2. get_billing_metrics

Return the billing metrics (cost types) available for the given cloud accounts, with frontend-friendly display names (including virtual Margin metrics).

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str] | NoneScope lookup to specific accountsNo
cloud_providerCloudProviderFocus | NoneOne of AWS/Azure/GCP/OCI, to scope display labelsNo

Returns: dict[str, Any] — {Summary: {total_records}, Output: [{backend_key, display_name, provider_labels?, dependent_sources?, is_margin?}, ...]}.

3. get_cost_aggregation_trend

Low-level passthrough tool for parameterized billing queries against the cost aggregation layer — an escape hatch for any cost/usage question not covered by higher-level tools. Returns a time series (not a single snapshot).

Parameters

ParameterTypeDescriptionRequired
filtersdictQueryOperator filter tree, via build_filter_queryYes
time_range_presetstr | NonePreset time windowNo
start_datestr | NoneISO-8601 UTCNo
end_datestr | NoneISO-8601 UTCNo
time_zonestr | NoneIANA timezoneNo
platformstr | NoneOnly "kubernetes" validNo
skip_service_account_groupingbool | NoneAuto-derived if omittedNo
billing_sourcestrCost metric key (default "raw_cost")No
group_bylist[str | dict] | NoneDimension selectorsNo
limitint0 = unlimited (default 0)No
billing_modebool | NoneAuto-derived from preset if omittedNo
include_resource_childrenboolDefault FalseNo
granularityintSeconds; 86400 = daily (default 2592000, ≥1)No
compute_forecastboolOnly supported for 14 specific presets (default False)No

Returns: dict[str, Any] — {Summary: {total_records}, output: [<trend points>]}.

4. get_billing_usage_trend

Retrieves billing usage trends over time — resource consumption (GB, hours, API calls), not cost.

Parameters

ParameterTypeDescriptionRequired
start_dateIsoDatetimeStrISO-8601 UTCYes
end_dateIsoDatetimeStrISO-8601 UTCYes
service_account_idslist[str] | NoneScope to specific accountsNo
group_bylist[dict] | NoneDimension selectorsNo
filtersdict | NoneQueryOperator filter treeNo
granularityintSeconds (default 2592000, ≥1)No
time_zonestr | NoneIANA timezoneNo
limitint0 = unlimited (default 0)No

Returns: dict[str, Any] — {summary: {total_records}, output: [<usage trend points with identity/timestamps/values>]}.

5. get_billing_rate_trend

Retrieves billing rate trends over time — per-unit cost ($/GB, $/hour), computed as cost ÷ usage. Zero usage yields None rates.

Parameters

ParameterTypeDescriptionRequired
start_dateIsoDatetimeStrISO-8601 UTCYes
end_dateIsoDatetimeStrISO-8601 UTCYes
service_account_idslist[str] | NoneScope to specific accountsNo
group_bylist[dict] | NoneDimension selectorsNo
filtersdict | NoneQueryOperator filter treeNo
granularityintAccepted but not forwarded (rate endpoint sets it server-side)No
time_zonestr | NoneIANA timezoneNo
limitint0 = unlimited (default 0)No

Returns: dict[str, Any] — {summary: {total_records, undefined_rate_count}, output: [<rate trend points>]}.

6. build_filter_query

Build a QueryOperator filter tree from up to 34 structured filter dimensions, composed via AND/OR/NOT. Must always be called first in FinOps billing workflows; rejects an empty .

Parameters

ParameterTypeDescriptionRequired
op"AND"|"OR"|"NOT"Boolean combination operator (default "AND")No
sub_filterslist[dict] | NonePre-built QueryOperator dicts (2-level nesting)No
service_account_idslist[str] | NoneScope to specific cloud accountsNo
account_statuseslist[Literal] | Noneactive, inactive, not_onboarded, retiredNo
providerslist[str] | Nonee.g. aws, azure, gcp, oci, snowflake, ...No
has_tagsbool | NoneFilter accounts by tag presenceNo
tag_keyslist[str] | NoneResource-level tag key presenceNo
tagslist[dict] | NoneResource-level {key, values, kind?}No
account_tag_keyslist[str] | NoneAccount-level tag key presenceNo
account_tag_key_valueslist[dict] | None{key, values}No
tenant_tag_key_valueslist[dict] | None{key, values}No
regionslist[str] | NoneCloud regionsNo
availability_zoneslist[str] | NoneAvailability zonesNo
service_categorieslist[str] | NoneService categoriesNo
service_typeslist[str] | NoneService typesNo
charge_typeslist[str] | NoneCharge typesNo
billing_entitieslist[str] | NoneBilling entitiesNo
pricing_categorieslist[str] | NonePricing categoriesNo
pricing_purchase_optionslist[str] | NonePricing purchase optionsNo
product_familieslist[str] | NoneProduct familiesNo
product_service_codeslist[str] | NoneProduct service codesNo
product_skuslist[str] | NoneProduct SKUsNo
product_categorieslist[str] | NoneProduct categoriesNo
publisherslist[str] | NonePublishersNo
meter_sub_categorieslist[str] | NoneMeter sub-categoriesNo
resource_categorieslist[str] | NoneResource categoriesNo
resource_groupslist[str] | NoneResource groupsNo
resource_operationslist[str] | NoneResource operationsNo
field_presencelist[dict] | None{field, has_field}No
k8s_extraslist[dict] | None{key, values}No
tenant_idslist[str] | NoneTenant IDsNo
tenant_tag_keyslist[str] | NoneTenant tag key presenceNo
compartment_nameslist[str] | NoneOCI compartment namesNo
dimensionslist[dict] | None{dimension_id, attribute, values}No
currencieslist[str] | NoneISO 4217; default ["USD"]; [] disables currency scopingNo

Returns: dict — a QueryOperator dict with a __type field. Raises ValueError for malformed sub-filters/tags/field_presence/dimensions, or empty input with no other filter set.

FinOps — Accounts

7. get_cloud_accounts

Discover cloud accounts (service accounts) for one or more tenants — the primary account-discovery tool. Call before any cost/billing tool that needs service_account_ids.

Parameters

ParameterTypeDescriptionRequired
tenant_idslist[str] | NoneOmit for all tenantsNo
active_onlyboolDefault TrueNo
currencystr | NoneISO 4217, default "USD"; None = all currenciesNo
include_tagsboolDefault FalseNo
include_hierarchyboolDefault False — nests tenants/providers/accountsNo
include_fieldslist[Literal] | NoneExtra fields to merge in via batch call: is_active_in_cloud, custom_tags, onboarding_typeNo

Returns: dict[str, Any] — {aws_ids, azure_ids, gcp_ids, oci_ids, other_ids, total, tenants? (if include_hierarchy)}.

FinOps — Budgets

8. get_budgets

Lists all budgets with aggregated summary and health indicators. Filters by status, provider, scope, frequency; calculates health percentages and over-budget items.

Parameters

ParameterTypeDescriptionRequired
view"list"|"summary" | NoneDefault "list"No
time_range_presetstr | NonePreset time windowNo
start_datestr | NoneISO-8601 UTCNo
end_datestr | NoneISO-8601 UTCNo
cloud_account_idslist[str] | NoneScope to specific accountsNo
dimension_idlist[str] | NoneDimension sysId(s)No
billing_sourcestr | NoneCost metric keyNo
currencystr | NoneDefault "USD"No
statuslist[BudgetStatus] | Nonepending, in_progress, completed, expired, draftNo
active_onlybool | NoneShortcut for status=['completed']No
providerlist[BudgetProvider] | NoneAWS, Azure, GCP, OCINo
budget_scopeBudgetScope | Nonetenant, cloud, custom, dimensions (applied client-side)No
frequencyBudgetFrequency | NoneMonthly, Quarterly, Annual, Weekly, DailyNo
budget_engineBudgetEngine | NoneCloud_Native, SystemNo
searchstr | NoneFree-text searchNo

Returns: dict[str, Any] — {summary: {total_budgets, total_budget_amount, total_actual_spend, exceeded_count, forecast_exceeded_count, health_pct, by_scope, by_frequency, by_status, top_exceeded, total_records}, output: {budgets: [...]}}. Returns an empty list/summary (not an error) when no budgets match.

9. get_budget_detail

Retrieves detailed configuration and metrics for a single budget by ID (merges view, alerts, and history into one response). Auxiliary calls (alerts/history) fail open.

Parameters

ParameterTypeDescriptionRequired
budget_idstr24-char hex MongoDB ObjectIdYes
budget_uristr | NoneNeeded to fetch threshold alert historyNo
include_historyboolDefault FalseNo

Returns: dict[str, Any] — {summary: {total_records}, output: {budget_name, budget_id, frequency, status, currency, scope, amount, thresholds, alerts, period, history|None}}.

FinOps — Reserved Instances & Savings

10. get_ri_recommendations

Get Reserved Instance (RI) purchase recommendations to reduce costs.

Parameters

ParameterTypeDescriptionRequired
project_idlist[str]Tenant/project IDsYes
serviceslist[str] | NoneCloud providersNo
termint1 or 3 years (default 1)No
payment_optionstrNo_Upfront, Partial_Upfront, All_Upfront (default No_Upfront)No
currencystrDefault "USD"No
pageintDefault 1No
limitintDefault 50No
compute_forecastboolDefault FalseNo

Returns: dict[str, Any] — {Summary: {total_records}, Output: <RI recommendation data>}.

11. get_ri_reservation_coverage

Get reservation coverage for a specific RI — the percentage of eligible usage covered.

Parameters

ParameterTypeDescriptionRequired
cloud_account_idstr24-char hexYes
reservation_idstrUUIDYes
date_filterstrmtd, last_month, last_3_months, last_6_months, ytd, last_year (default mtd)No

Returns: dict[str, Any] — {cloud_account_id, reservation_id, date_filter, Output: <coverage data>}.

12. get_ri_reservation_utilization

Get utilization metrics for a specific RI — how much of the purchased capacity is actually used.

Parameters

ParameterTypeDescriptionRequired
cloud_account_idstr24-char hexYes
reservation_idstrUUIDYes
date_filterstrSame options as coverage (default mtd)No

Returns: dict[str, Any] — same shape as get_ri_reservation_coverage.

13. get_ri_reservations

List Reserved Instance reservations to discover reservation IDs and basic details.

Parameters

ParameterTypeDescriptionRequired
date_filterstre.g. current_month, mtd, last_month, ...Yes
currencystrDefault "USD"No
servicestr | NoneCloud provider filterNo

Returns: dict[str, Any] — {Summary: {total_records}, Output: [<reservations>]}.

14. get_cost_optimization_by_types

Fetch cost optimization data from the executive-dashboard cost-optimization-by-types endpoint.

Parameters

ParameterTypeDescriptionRequired
currencystrDefault "USD"No
deduplicationboolDefault FalseNo
filterdict | NoneAdditional API filterNo

Returns: dict[str, Any] — {"data": [<recommendations with cost_savings, optimization_type, cloud_account, cloud_provider, region?, resource_name, resource_type, resource_id, resource_category, optimization_name>]}.

15. get_right_sizing_recommendations

Fetch detailed right-sizing recommendations for a specific cloud account — current vs. recommended SKU per resource.

Parameters

ParameterTypeDescriptionRequired
cloud_account_idstr24-char hexYes
currencystrDefault "USD"No
pageint≥0 (default 0)No
limitint1–100 (default 10)No
searchstr | NoneFree-text searchNo
filtersdict | NoneKeys: impact_level, optimization_type, resource_type, potential_cost_avoidance_from, potential_cost_avoidance_toNo

Returns: dict[str, Any] — {"data": {total_count, recommendation_data: [{resource_id, resource_name, current_sku, recommended_sku, optimization_type, potential_est_cost_saving, region, cloud_provider, resource_type}]}}.

16. get_recommendation_resources

Retrieve resource-level details for usage optimization recommendations — drill-down of a recommendation's underlying resources with current vs. recommended config.

Parameters

ParameterTypeDescriptionRequired
cloud_account_idstr24-char hexYes
request_typeRecommendationRequestType | Noneidle, orphaned, right_size, config (default idle)No
providerRecommendationProviderAWS, Azure, GCP, OCI (default AWS)No
currencystrDefault "USD"No
resource_statusstr | Noneopen, closed, rejected (default open)No
pageint≥1 (default 1)No
limitint1–100 (default 10)No

Returns: dict[str, Any] — {Summary: {total_records}, Output: {request_type, cloud_account_id, total_resources, total_pages, page_savings, resources_on_page, resources: [{resource_id, resource_name, resource_type, current_sku, recommended_sku, estimated_cost_saving, region, impact_level, optimization_type, status, summary_text}]}}.

17. get_savings_summary

Get a combined savings overview: RI recommendation savings + cost saved to date.

Parameters

ParameterTypeDescriptionRequired
providerlist[SavingsProvider] | NoneAWS, Azure, GCP, OCI; omit = allNo
termSavingsTerm | None"1" or "3" years (default "1")No
payment_optionSavingsPaymentOption | NoneNo_Upfront, Partial_Upfront, All_Upfront (default No_Upfront)No
currencyCurrency | NoneDefault USDNo

Returns: dict[str, Any] — {summary: {total_records: 1}, output: {recommendations_count, potential_savings, total_reservations, cost_saved_till_date, cost_saved_current_month, potential_recommended, by_cloud, currency}}.

18. get_savings_plans_details

List purchased savings plans with details, excluding utilization time-series.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str] | NoneScope to specific accountsNo
batch_sizeint0–500 (default 50)No
batch_offsetint≥0 (default 0)No

Returns: dict[str, Any] — {Summary: {total_records}, output: {plans: [<plan metadata: plan_id, plan_name, plan_type, plan_scope, service_account_id, start_date, end_date, term, payment_option, commitment_amount, upfront_cost, currency, instance_family, provisioning_state, utilization_percentage>], total, page, page_size}}.

19. get_savings_plans_utilization

Fetch paginated utilization time-series for a single purchased savings plan.

Parameters

ParameterTypeDescriptionRequired
plan_idstrFrom get_savings_plans_detailsYes
service_account_idslist[str] | NoneScope to specific accountsNo
start_datestr | NoneISO-8601No
end_datestr | NoneISO-8601No
batch_sizeint0–500 (default 50)No
batch_offsetint≥0 (default 0)No

Returns: dict[str, Any] — {Summary: {total_records}, output: {plan_id, plan_name, plan_type, service_account_id, utilization_percentage, metrics: [{usage_date, avg/max/min_utilization_percentage}], total, page, page_size}}.

20. get_savings_plans_coverage

Compute portfolio-wide savings plans coverage summary: active vs. inactive counts, commitment totals, average utilization, breakdowns, and plans expiring soon.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str] | NoneScope to specific accountsNo

Returns: dict[str, Any] — {Summary: {total_records: 1}, output: {total_plans, active_plans, inactive_plans, total_commitment_per_hour, total_upfront_cost, average_utilization_percentage, by_plan_type, by_payment_option, by_term, by_service_account, expiring_in_30_days, expiring_in_90_days}}.

FinOps — Anomalies & Dimensions

21. get_anomalies

Detect and summarize billing cost anomalies (mirrors the UI Anomaly Summary/Details page). Scopes to active accounts and category-level, above-threshold anomalies with positive cost impact.

Parameters

ParameterTypeDescriptionRequired
time_range_presetstr | NonePreset time windowNo
start_datestr | NoneISO-8601 UTCNo
end_datestr | NoneISO-8601 UTC, exclusiveNo
service_account_idslist[str] | NoneScope to specific accountsNo
currencystr | NoneISO 4217; omit = all currenciesNo
anomaly_statusAnomalyStatus | Noneactive, rejectedNo
filtersdict | NoneQueryOperator tree (limited operator set)No

Returns: dict[str, Any] — {Summary: {total_records: 1}, Output: {period, anomaly_status, total_anomalies, total_cost_increase, by_type, by_product, by_resource, by_account, top_anomalies, trend}}.

22. get_anomaly_resources

Drill down to resource-level anomaly details.

Parameters

ParameterTypeDescriptionRequired
time_range_presetstr | NonePreset time windowNo
start_datestr | NoneISO-8601 UTCNo
end_datestr | NoneISO-8601 UTCNo
service_account_idslist[str] | NoneScope to specific accountsNo
currencystr | NoneISO 4217No
filtersdict | NoneAdds product_families, resource_id supportNo
top_nint1–100 (default 10)No

Returns: dict[str, Any] — {Summary: {total_records: 1}, Output: {period, total_resources_with_anomalies, top_resources: [{resource_id, product, resource, account_id, date, type, impact, actual, expected, upper_bound, lower_bound}], by_product_category}}.

23. get_anomaly_dimension_grouping

Retrieve grouping-rule-wise cost anomalies for cost dimensions (the UI "Group" view).

Parameters

ParameterTypeDescriptionRequired
currencystrDefault "USD"No
time_range_presetstr | NonePreset time windowNo
start_datestr | NoneISO-8601 UTCNo
end_datestr | NoneISO-8601 UTCNo
anomaly_statusAnomalyStatus | Noneactive, rejectedNo
dimension_idslist[str] | NoneOmit = all dimensionsNo
filtersdict | NoneAdds DimensionQueryOperator supportNo

Returns: dict[str, Any] — {Summary: {total_records: 1}, Output: {period, currency, anomaly_status, total_anomalies, total_cost_increase, by_dimension, by_grouping_rule, by_product, by_resource, top_anomalies, trend}}.

24. get_dimensions

Retrieve cost dimensions used for grouping and filtering FinOps data.

Parameters

ParameterTypeDescriptionRequired
batch_sizeint1–100 (default 10)No

Returns: dict[str, Any] — {total_dimensions, dimensions_returned, by_type: {type: [{id, name, owner, active}]}, dimensions: [{id, name, type, owner, active, anomaly_detection, description, attributes, group_by_key_examples}]}.

Graphion

Graphion — Portfolio / Application / Project

1. portfolio_list_and_retrieval

List and retrieve portfolios for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
searchstr | NoneSearch portfolios by nameNo
namelist[str] | NoneFilter by exact portfolio namesNo
tagslist[dict[str,str]] | None[{"key":..,"value":..}]No
filter_sbom_nameslist[str] | NoneFilter by SBOM namesNo
filter_application_idslist[str] | NoneFilter by application IDsNo
filter_application_nameslist[str] | NoneFilter by application namesNo
sbom_filterstr | Nonee.g. with_sbomNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalint0 = all (default 0)No
sort_columnstrDefault "updated_at"No
sort_ascendingboolDefault FalseNo

Returns: dict[str, Any] — list of portfolio details under Output (or message/results if none found).

2. portfolio_get_details

Retrieve detailed information for a specific portfolio.

Parameters

ParameterTypeDescriptionRequired
portfolio_idstr24-char hexYes

Returns: dict[str, Any] — complete portfolio details under Output.

3. application_list_and_retrieval

List and retrieve applications for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
searchstr | NoneSearch by nameNo
namelist[str] | NoneExact application namesNo
ownerlist[str] | NoneOwner names/emailsNo
tagslist[dict[str,str]] | NoneTag filterNo
filter_portfolio_idslist[str] | NonePortfolio IDsNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalint0 = all (default 0)No
sort_columnstrDefault "updated_at"No
sort_ascendingboolDefault FalseNo

Returns: dict[str, Any] — list of application details under Output.

4. application_get_details

Retrieve detailed information for a specific application.

Parameters

ParameterTypeDescriptionRequired
application_idstr24-char hexYes

Returns: dict[str, Any] — complete application details under Output.

5. project_list_and_retrieval

List and retrieve projects for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
searchstr | NoneSearch by nameNo
namelist[str] | NoneExact project namesNo
ownerlist[str] | NoneOwner names/emailsNo
tagslist[dict[str,str]] | NoneTag filterNo
filter_portfolio_idslist[str] | NonePortfolio IDsNo
filter_portfolio_nameslist[str] | NonePortfolio namesNo
filter_Graphion_project_idslist[str] | NoneProject IDsNo
filter_Graphion_project_nameslist[str] | NoneProject namesNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalint0 = all (default 0)No
sort_columnstrDefault "updated_at"No
sort_ascendingboolDefault FalseNo

Returns: dict[str, Any] — list of project details under Output.

6. project_get_details

Retrieve detailed information for a specific project.

Parameters

ParameterTypeDescriptionRequired
project_idstr24-char hexYes

Returns: dict[str, Any] — complete project details under Output.

Graphion — SBOM

7. sbom_definition_get_batch

Batch retrieve detailed information for multiple SBOM definitions by their IDs.

Parameters

ParameterTypeDescriptionRequired
definition_idslist[str]Max 1000, each a 24-char hexYes

Returns: dict[str, Any] — list of SBOM definition details under Output.

8. sbom_definition_list_and_retrieval

List and retrieve SBOM definitions for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
searchstr | NoneSearch by name/description/tagsNo
tagslist[dict[str,str]] | NoneTag filterNo
filters_query_operatordict | NoneAdvanced QueryOperator; takes precedence over the convenience filters belowNo
filter_portfolio_idslist[str] | NonePortfolio IDsNo
filter_application_idslist[str] | NoneApplication IDsNo
filter_Graphion_project_idslist[str] | NoneProject IDsNo
filter_inventory_idslist[str] | NoneMapped resource inventory IDs (24-char hex)No
filter_container_digestslist[str] | NoneMapped container image sha256 digests (64-char hex)No
filter_service_account_idslist[str] | NoneScopes resource-mapping filter to cloud accountsNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalint0 = all (default 0)No
sort_columnstrDefault "updated_at"No
sort_ascendingboolDefault FalseNo

Returns: dict[str, Any] — list of SBOM definition details under Output.

9. sbom_get_details

Retrieve detailed information for a specific SBOM definition.

Parameters

ParameterTypeDescriptionRequired
sbom_definition_idstr24-char hexYes

Returns: dict[str, Any] — complete SBOM definition details under Output.

10. sbom_version_get_details

Retrieve detailed information for a specific SBOM version.

Parameters

ParameterTypeDescriptionRequired
version_idstr24-char hexYes

Returns: dict[str, Any] — complete SBOM version details (components + vulnerabilities) under Output.

11. sbom_version_list_for_definition

List all versions for a specific SBOM definition.

Parameters

ParameterTypeDescriptionRequired
sbom_definition_idstr24-char hexYes

Returns: dict[str, Any] — list of all SBOM versions under Output.

Graphion — Container Findings

12. container_findings_list_and_retrieval

List and retrieve container security findings for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
filter_sbom_version_idslist[str] | NoneScope to specific SBOM versionsNo
filters_query_operatordict | NoneAdvanced QueryOperator (severity, category, execution phase, status); overrides simple filtersNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalint0 = all (default 0)No
sort_columnstrDefault "updated_at"No
sort_ascendingboolDefault FalseNo

Returns: dict[str, Any] — list of container findings under Output (Dockle/Hadolint finding objects).

13. container_findings_get_batch

Get detailed information for multiple container findings by their IDs.

Parameters

ParameterTypeDescriptionRequired
finding_idslist[str]24-char hex stringsYes

Returns: dict[str, Any] — detailed container finding info under Output.

Graphion — Dashboards & Vulnerabilities

14. dashboard_portfolio_hierarchy

Get portfolio hierarchy summary showing organizational structure.

Parameters

ParameterTypeDescriptionRequired
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — portfolio → application → SBOM hierarchy under Output.

15. dashboard_sbom_components_summary

Get SBOM components summary with details of all SBOMs and their associated components.

Parameters

ParameterTypeDescriptionRequired
vulnerable_components_onlyboolDefault FalseNo
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — SBOM components summary under Output.

16. dashboard_sbom_vulnerabilities_summary

Get SBOM vulnerabilities summary with details of all SBOM vulnerabilities.

Parameters

ParameterTypeDescriptionRequired
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — SBOM vulnerabilities summary under Output.

17. dashboard_top_actionable_issues

Get top 10 risk-prioritized actionable issues in the current context.

Parameters

ParameterTypeDescriptionRequired
categorieslist[str] | NoneSecurity categories; defaults to ["vulnerability"]No
days_rangestr | None0-30 days, 31-60 days, 61-90 days, 91-365 days, > 365 days, UnknownNo
all_versionboolConsider all versions vs. latest only (default False)No
group_by_applicationboolDefault FalseNo
sbom_version_idslist[str] | str | NoneRestrict to specific SBOM version(s)No
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — top 10 prioritized issues under Output.

18. dashboard_vulnerabilities_by_component

Get aggregated vulnerability counts grouped by component properties.

Parameters

ParameterTypeDescriptionRequired
aggregation_bystrOne of product, kev, severityYes
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — aggregated vulnerability counts under Output.

19. dashboard_vulnerability_trend_by_severity

Get vulnerability trend data grouped by severity over time.

Parameters

ParameterTypeDescriptionRequired
start_datestr | NoneISO format; defaults to 90 days agoNo
end_datestr | NoneISO format; defaults to todayNo
granularitystrday, week, month, quarter, year (default "month")No
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — vulnerability counts by severity over time under Output.

20. dashboard_sbom_build_difference_trend

Get trend of build differences showing new and resolved vulnerabilities/components.

Parameters

ParameterTypeDescriptionRequired
start_datestr | NoneDefaults to 90 days agoNo
end_datestr | NoneDefaults to todayNo
list_contextdict | NonePagination/sort contextNo

Returns: dict[str, Any] — build difference trends under Output.

21. sbom_version_compare_builds

Compare two SBOM builds to see differences in components and vulnerabilities.

Parameters

ParameterTypeDescriptionRequired
version_idstrPrimary SBOM version ID (24-char hex)Yes
compare_version_idstr | NoneIf omitted, compares against the predecessor versionNo

Returns: dict[str, Any] — component/vulnerability differences under Output.

22. sbom_components_get_batch

Batch retrieve detailed information for multiple SBOM components by their IDs.

Parameters

ParameterTypeDescriptionRequired
component_idslist[str]Max 1000, 24-char hex eachYes

Returns: dict[str, Any] — list of component details under Output.

23. sbom_version_get_batch

Batch retrieve detailed information for multiple SBOM versions by their IDs.

Parameters

ParameterTypeDescriptionRequired
version_idslist[str]Max 1000, 24-char hex eachYes

Returns: dict[str, Any] — list of SBOM version details under Output.

24. sbom_version_diff_get_batch

Batch retrieve diff information for multiple SBOM versions showing changes from predecessor versions.

Parameters

ParameterTypeDescriptionRequired
version_idslist[str]Max 1000, 24-char hex eachYes

Returns: dict[str, Any] — per-version diff data (components, vulnerabilities, container findings changes) under Output.

25. vulnerability_get_prevalence

Get organizational prevalence data for specific vulnerabilities.

Parameters

ParameterTypeDescriptionRequired
vulnerability_idslist[str]24-char hex stringsYes
tenant_idslist[str] | NoneDefaults to the current session tenantNo

Returns: dict[str, Any] — affected portfolios/applications/projects under Output.

26. vulnerability_get_details_batch

Get detailed information for multiple vulnerabilities by their IDs.

Parameters

ParameterTypeDescriptionRequired
vulnerability_idslist[str]Max 1000, 24-char hex eachYes

Returns: dict[str, Any] — CVE/severity/affected-component details under Output.

Graphion — Infrastructure & Resource Inventory

27. service_account_list_and_retrieval

List and retrieve cloud accounts (service accounts) for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
searchstr | NoneRegex match on account nameNo
statuseslist[str] | Nonee.g. ["active"], ["inactive"]No
batch_sizeintDefault 10No
batch_offsetintDefault 0No
sort_columnstrDefault "Name"No
sort_ascendingboolDefault TrueNo
include_fieldslist[str] | NoneExtra batch-detail fields; default ['name','native_details','status']; valid: name, is_active_in_cloud, native_details, status, currency, custom_tags, onboarding_typeNo
cloud_native_idstr | NoneNative cloud identifier (Azure sub GUID, AWS account ID, GCP project ID) to resolve — bypasses normal listing when setNo

Returns: dict[str, Any] — cloud account list under Output, plus total, batch_size, batch_offset.

28. service_account_get_details

Retrieve detailed information for a specific cloud account (service account).

Parameters

ParameterTypeDescriptionRequired
service_account_idstr24-char hexYes

Returns: dict[str, Any] — full cloud account configuration under Output.

29. service_account_list_resource_groups

List available Azure resource groups for a cloud account. Azure-only — raises if the account isn't Azure.

Parameters

ParameterTypeDescriptionRequired
service_account_idstr24-char hex, must be an Azure accountYes

Returns: dict[str, Any] — list of resource group names/IDs under Output.

30. resource_inventory_list

List cloud resources with rich filtering (e.g. "what resources are in this resource group").

Parameters

ParameterTypeDescriptionRequired
cloud_accountlist[dict] | None[{"id": service_account_id}, ...]No
resource_filterstr | NoneResource group / filter nameNo
categorystr | Nonee.g. Network, Storage, ComputeNo
componentstr | Nonee.g. EC2, VPCNo
resource_typestr | NoneMaps to the resource fieldNo
locationstr | NoneCloud region/zoneNo
searchstr | NoneSearch by nameNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No
sort_columnstrDefault "updated_at"No
sort_ascendingboolDefault FalseNo

Returns: dict[str, Any] — Output (resource docs), total, batch_size, batch_offset.

31. resource_inventory_count

Get total resource count with optional filters (e.g. "how many resources are in this resource group?").

Parameters

ParameterTypeDescriptionRequired
cloud_accountlist[dict] | None[{"id": service_account_id}, ...]No
resource_filterstr | NoneResource group / filter nameNo
categorystr | NoneResource categoryNo
locationstr | NoneCloud region/zoneNo

Returns: dict[str, Any] — Output containing total_resources (int) and filters_applied (dict).

32. resource_change_list

List cloud resources whose configuration changed within a date window — change history, not current inventory. Requires GraphDB + tenant feature flag REIN_2601_B_RESOURCE_CHANGES_TREND.

Parameters

ParameterTypeDescriptionRequired
tenant_idstr24-char hexYes
start_datestrISO-8601Yes
end_datestr | NoneDefaults to start_date (single-day window)No
change_statuseslist[str] | Nonenew, modified, deleted, discovered, unchangedNo
service_account_idslist[str] | None24-char hexNo
categorieslist[str] | Nonee.g. ["Compute","Network"]No
searchstr | NoneFree-text over name/id/typeNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No

Returns: dict[str, Any] — Output (changed-resource records), total, batch_size, batch_offset.

33. resource_activity_timeline

Get the paginated change-history timeline for a single resource. Requires GraphDB + tenant feature flag REIN_2602_A_RESOURCE_DETAIL_VIEW.

Parameters

ParameterTypeDescriptionRequired
tenant_idstr24-char hexYes
resource_idstrProvider-native resource identifierYes
resource_categorystre.g. Compute, NetworkYes
resource_typestre.g. InstancesYes
resourcestre.g. EC2, VPCYes
start_datestr | NoneDefaults to now − 90 daysNo
end_datestr | NoneDefaults to nowNo
change_type_filterlist[str] | Nonee.g. ["modified","deleted"]No
batch_sizeintDefault 25No
batch_offsetintDefault 0No

Returns: dict[str, Any] — Output (timeline events with history_id, changed_at, change_type), total, batch_size, batch_offset.

34. resource_activity_event_details

Get attribute-level details for 1 or 2 history events on a single resource (used to diff two events).

Parameters

ParameterTypeDescriptionRequired
tenant_idstr24-char hexYes
resource_idstrProvider-native resource identifierYes
resource_categorystre.g. Compute, NetworkYes
resource_typestre.g. InstancesYes
resourcestre.g. EC2, VPCYes
event_idslist[str]1 or 2 history_id values from resource_activity_timelineYes

Returns: dict[str, Any] — Output.events: list of {history_id, changed_at, change_type, changed_attributes}.

35. get_kubernetes_pod_resources

Query Kubernetes pod resources (EKS, AKS, GKE) from the resource inventory. Container image digests can be used to look up SBOM definitions via Graphion.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str]Cloud account IDs (24-char hex)Yes
cluster_namestr | NonePartial matchNo
pod_namestr | NonePartial matchNo
namespacestr | NoneKubernetes namespaceNo
batch_sizeintDefault 10No
batch_offsetintDefault 0No

Returns: dict[str, Any] — list of pod resources with container image details (inventory_id, resource_name, service_account_id, container status/image IDs); returned directly, not wrapped in Output.

36. resource_dependency_get

Given a resource (e.g., a VPC), return all dependent/related resources by traversing the inventory's metadata graph.

Parameters

ParameterTypeDescriptionRequired
resource_inventory_idstr24-char hexYes

Returns: dict[str, Any] — Output map of related resource types → details (IDs, names, types).

37. resource_list_by_schema

List resources of a specific type under a cloud account using the schema path category/component/resource (e.g. Network/VPC/VPC, Compute/EC2/Instances, Storage/S3/Buckets).

Parameters

ParameterTypeDescriptionRequired
service_account_idstr24-char hexYes
categorystre.g. Network, Compute, StorageYes
componentstre.g. VPC, EC2, S3Yes
resourcestre.g. VPC, Subnets, Instances, BucketsYes
resource_filterstr | NoneAdditional scope filter (region/resource group)No

Returns: dict[str, Any] — Output list of matching resources.

38. cloud_accounts_list

List all cloud accounts (service accounts) available in the current tenant.

Parameters

ParameterTypeDescriptionRequired
service_namestr | NoneFilter by provider, e.g. AWS, Azure, GCPNo

Returns: dict[str, Any] — Output list of cloud account IDs and names.

39. dashboard_infrastructure_summary

High-level summary combining org hierarchy with infrastructure — given a portfolio or application, returns associated projects, cloud accounts, and resource counts.

Parameters

ParameterTypeDescriptionRequired
portfolio_idstr | None24-char hex (at least one of portfolio_id/application_id recommended)No
application_idstr | None24-char hexNo

Returns: dict[str, Any] — Output nested hierarchy: portfolio → applications → projects → cloud accounts → resource counts, plus total_portfolios, total_projects.

Graphion — Governance & Policy

40. policy_list_and_retrieval

Retrieve policy descriptions and metadata for given policy URIs.

Parameters

ParameterTypeDescriptionRequired
policy_urislist[str]e.g. "CS.AWS.Audit.EC2.EncryptionAtRest"Yes

Returns: dict[str, Any] — Output: list of policy dicts (policy_id, name, uri, severity, classification, sub_classification, engine_type, scope, resource_type, resource_category, services, equivalent_policies), plus total.

41. policy_job_list_and_retrieval

Retrieve policy job execution details for specific policy job IDs.

Parameters

ParameterTypeDescriptionRequired
policy_job_idslist[str]24-char hexYes

Returns: dict[str, Any] — Output: list of policy job details (execution result, violations, resource evaluations), plus total.

42. resource_violation_summary

Get a summary of infrastructure misconfiguration violations (guardrail policy violations), grouped by severity.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str] | NoneFilter to specific cloud accounts; default = all accounts in tenantNo

Returns: dict[str, Any] — Output misconfiguration violation summary.

43. resource_vulnerability_summary

Get a summary of infrastructure vulnerabilities — counts and severity distribution.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str] | NoneFilter to specific cloud accountsNo

Returns: dict[str, Any] — Output vulnerability summary with severity breakdown.

44. resource_threat_summary

Get a summary of infrastructure security threats — real-time alerts, anomalous activity, posture findings.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str] | NoneFilter to specific cloud accountsNo

Returns: dict[str, Any] — Output threat summary.

45. infra_threat_list_and_details

List infrastructure threats for a cloud account and retrieve full details (list step chained internally to a batch-detail call).

Parameters

ParameterTypeDescriptionRequired
service_account_idstr24-char hex cloud account IDYes
searchstr | NoneFree-text search across resource name/id/type, alert ID, findings type, descriptionNo
batch_sizeintDefault 20No
batch_offsetintDefault 0No

Returns: dict[str, Any] — Output list of threat details (severity, resource info, description, recommendation, remediation), plus total, batch_size, batch_offset.

Assessment (Well-Architected Framework)

Assessment — Well-Architected Framework

46. list_assessment_runs

Fetch and list details of assessment runs for specified assessment definitions.

Parameters

ParameterTypeDescriptionRequired
assessment_definition_idslist[str]Assessment definition sysIdsYes

Returns: dict[str, Any] — {output: [<assessment run details>]}; may include Retrieved ids/Invalid ids if some inputs failed validation.

47. list_assessment_run_history

Fetch the details of history_ids of specified assessment runs by their IDs.

Parameters

ParameterTypeDescriptionRequired
assessment_run_idslist[dict][{"sysId": str, "lastUpdate"?: str, "table"?: str}]Yes

Returns: dict[str, Any] — {Summary: {<rollup counts per run/history>}, Output: [<assessment run history objects>]}; may include Retrieved ids/Invalid ids.

48. get_policy_violations

Get a list of RecordIdentity objects for resources that have violated the given policy job.

Parameters

ParameterTypeDescriptionRequired
assessment_run_history_idstrID of the assessment run historyYes
policy_job_idstrID of the policy jobYes

Returns: dict[str, Any] — {Output: [{"sysId": str, "lastUpdate": str, "table": str}]}.

49. list_assessment_questions

Get all the details of questions for the selected assessment runs history ids.

Parameters

ParameterTypeDescriptionRequired
assessment_run_history_idslist[dict][{"sysId": str, "lastUpdate"?: str, "table"?: str}]Yes

Returns: dict[str, Any] — {Summary: {<per-run-id rollup>}, Output: [<question history objects>]}.

50. get_pillar_scores

Calculate the Well-Architected Framework scores for each pillar in a given assessment run.

Parameters

ParameterTypeDescriptionRequired
assessment_run_idstrSystem ID of the assessment runYes

Returns: dict[str, Any] — dict keyed by framework_id → pillar_id → score (0–100). 0–33 = critical, 33–67 = moderate, 68–100 = excellent. Returned directly, not wrapped in Output.

51. submit_assessment_answer — Destructive

Answer a question or best practice — allows adding attachments, comments, and setting state.

⚠️

Warning: This tool creates or modifies data in CoreStack. Confirm the inputs before calling it.

Parameters

ParameterTypeDescriptionRequired
assessment_run_idstrID of the assessment runYes
framework_idstrID of the frameworkYes
pillar_idstrID of the pillarYes
question_idstrID of the questionYes
best_practice_idstrID of the best practiceYes
created_bystrUser who created the answerYes
ownerstrOwner of the answerYes
assigned_tolist[str] | NoneUsers assigned to the answerNo
attachment_idslist[str] | NoneAttachment IDsNo
comment_idstr | NoneID of the commentNo
commentstr | NoneComment textNo
recommendationstr | NoneRecommendation textNo
sync_failure_reasonstr | NoneReason for sync failureNo
statusstrDefault "Open"No
created_onstr | NoneISO timestamp; defaults to current UTC timeNo

Returns: dict[str, Any] — API response with assessment run details and the list of answers per best_practice_id.

52. get_question_risk

Get the question-level risks of a specific assessment run.

Parameters

ParameterTypeDescriptionRequired
assessment_run_idstrID of the assessment runYes

Returns: dict[str, Any] — {Output: {<risk summary by framework → pillar, with high/medium/low/no-risk counts and question_ids>}}.

53. list_assessment_definitions

Fetch one page of assessment definitions for the selected tenant (default page size 10). Results are paginated — the tool always tells the user how many were returned and offers to fetch the next page.

Parameters

ParameterTypeDescriptionRequired
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalintDefault 0No
sort_columnstrDefault "UpdatedOn"No
sort_ascendingboolDefault FalseNo
query_typestrDefault "AssessmentQueryAssessmentName"No
query_namestrDefault ""No

Returns: str — paginated assessment definitions formatted as readable text; first line is a pagination note that must be relayed verbatim to the user.

54. list_frameworks

Retrieve the frameworks and details for the selected tenant.

Parameters

No parameters (besides the implicit session/auth context).

Returns: dict[str, Any] — {Summary: {<frameworks grouped by valid cloud service type, with id/name/description/version/valid_service_types/questions-by-pillar>}, Output: [<full framework objects>]}.

55. get_framework_questions

Retrieve questions for given question IDs.

Parameters

ParameterTypeDescriptionRequired
question_idslist[dict][{"sysId": str, "lastUpdate"?: str, "table"?: str}] from framework pillarsYes

Returns: dict[str, Any] — {Output: [<question objects with details, best_practice_ids, timestamps>]}; may include Retrieved ids/Invalid ids.

56. get_best_practices

Fetch best practices for given system IDs.

Parameters

ParameterTypeDescriptionRequired
best_practice_idslist[dict][{"sysId": str, "lastUpdate"?: str, "table"?: str}] from questionsYes

Returns: dict[str, Any] — {Summary: {<organized by framework → pillar → question, with num_practices, num_policies, manual/automated, risk levels, unique_policies>}, Output: [<full best practice objects, excluding "None of the above">]}; may include Retrieved ids/Invalid ids.

57. list_policy_descriptions

Retrieve policy descriptions for given policy URIs.

Parameters

ParameterTypeDescriptionRequired
policy_urislist[str]Policy URIs. URIs with disallowed schemes (http://, file://) or targets (localhost, 169.254., metadata.google.internal) are rejectedYes

Returns: dict[str, Any] — {Summary: {<grouped by severity, engine_type, scope, classification, sub_classification, resource_category, resource_type>}, Output: {policies: [...], count, success: True}}. Raises ValueError/RuntimeError.

58. get_related_policies

Retrieve and summarize all policies associated with a given framework (framework → questions → best practices → policies → policy descriptions).

Parameters

ParameterTypeDescriptionRequired
framework_idstrID of the frameworkYes
fieldstrClassification field to group/filter by: severity, resource_type, resource_category, engine_type, scope, classification, sub_classification (default "")No
specific_relationstrSpecific classification value within field (e.g. EC2, EBS); can be given without/with an incorrect field — the tool infers the correct field (default "")No

Returns: dict[str, Any] — shape depends on inputs: full grouped Summary (no args); {field: field_summary} (field only); {field: {specific_relation: {"Summary":..., "description":...}}} (both given/inferred); or a {"message":..., "Summary":...} warning if invalid.

59. get_policy_jobs

Retrieve policy job execution details for given policy job IDs.

Parameters

ParameterTypeDescriptionRequired
policy_job_idslist[str]Policy job IDsYes

Returns: dict[str, Any] — {"job_details": [...], "count": int, "success": True} (list API response) or the API's dict directly (with success: True added if missing). Raises ValueError/RuntimeError.

60. get_policy_job

Retrieve detailed execution information for a single policy job.

Parameters

ParameterTypeDescriptionRequired
tenant_idstrTenant IDYes
policy_job_idstrPolicy job IDYes

Returns: dict[str, Any] — detailed policy job execution info (with success: True added if missing). Raises ValueError/RuntimeError.

Workload

Workload

61. query_workload_resources

Execute a query against the ServiceResourceInventory collection given a WorkloadTierConfiguration (POST /v1/workload-query/execute then POST /v1/workload-query/resource/batch).

Parameters

ParameterTypeDescriptionRequired
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalintDefault 0No
sort_columnstrCloudAccountName, Cloud, ResourceID, ResourceCategory, ResourceType, Resource, ResourceRegion (default "CloudAccountName")No
sort_ascendingboolDefault TrueNo
filtersdict | NoneMaps to WorkloadTierConfiguration: name, description, owner, cloud_account_id, resource_filter (maps to ServiceResourceFilter)No

Returns: dict[str, Any] — {Output: [<WorkloadResource objects with service_resource_id, service_account_id, category, resource_type, resource, resource_filter, operation_id, location, resource_name, tags, status, created_at, updated_at>]}; adds "Invalid filters" if unknown keys were supplied.

62. list_workload_definitions

Get a list of workload definitions for the selected tenant.

Parameters

ParameterTypeDescriptionRequired
batch_sizeintDefault 10No
batch_offsetintDefault 0No
totalintDefault 0No
sort_columnstrDefault "Name"No
sort_ascendingboolDefault TrueNo
filter_querydict | NoneAdditional filtersNo

Returns: dict[str, Any] — {Output: [<workload definition objects — name, description, timestamps, head/release version ids>]}.

63. create_workload — Destructive

Create a workload definition for the selected tenant (creates the definition, sets its state, creates a workload version, promotes it to a release version).

⚠️

Warning: This tool creates or modifies data in CoreStack. Confirm the inputs before calling it.

Parameters

ParameterTypeDescriptionRequired
namestrName of the workload definitionYes
descriptionstrDescriptionYes
workload_typestrType of the workload definitionYes
attachmentslist[str] | NoneAttachment IDsNo
ownerstr | NoneDefaults to the current user's ID if omitted/invalidNo
is_activeboolDefault TrueNo
tierslist[Tier] | NoneTiers composing the workload: each Tier = {name, description?, owner?, cloud_account_id: list[str], resource_filter: list[dict]}No
tagslist[Tag] | None[{"key": str, "value": str}]No

Returns: dict[str, Any] — {sysId, createdOn, updatedOn, version, definition: {sysId, lastUpdate}, details: {tiers, tags}}; may include predecessor referencing a prior workload definition.

64. get_workload_version

Get details on a specific Workload Definition Version by id.

Parameters

ParameterTypeDescriptionRequired
version_idstrMust match the Workload Definition Version UUID patternYes

Returns: dict[str, Any] — Workload Definition Version details, including ID, name, description, and associated workload definition metadata.

65. get_resource_batch

Batch-fetch full resource inventory details for one or more resource IDs — the canonical batch resource fetch (supersedes the former GET-by-id tool).

Parameters

ParameterTypeDescriptionRequired
resource_idslist[str]Resource IDs to retrieveYes

Returns: dict[str, Any] — results keyed by resource ID, each with full details (configurations, tags, metadata, summary_details whose schema varies by resource type). Returns if the API result is falsy. Raises ValueError/RuntimeError.

66. list_resource_filters

Retrieve resource filter data for given service account IDs.

Parameters

ParameterTypeDescriptionRequired
service_account_idslist[str]Service account IDs to get resource filters forYes

Returns: list[dict[str, Any]] | None — resource filter data (categories, types, resource names), used to populate resource filter dropdowns / build create_workload's resource_filter. Returns None on an error or unexpected response type.

Common & Auth

Auth & Session

67. authenticate

Establish an authenticated CoreStack session. MUST be called before any other tool. Auto-selects the master account and tenant based on the user's last-used values.

Parameters

No parameters (besides the implicit session/auth context).

Returns: dict[str, Any] — {status: "fully_connected", message, master_account_id, master_account_name, tenant_id, tenant_name, available_master_account_ids: {id → name}}.

68. set_active_tenant

Switch the active tenant for all subsequent API calls. Requires authenticate to have run first.

Parameters

ParameterTypeDescriptionRequired
tenant_idstrTenant ID, taken from available_tenant_ids (from authenticate/check_connection)Yes

Returns: dict[str, Any] — {status: "tenant_reselected", tenant_name}.

69. set_master_account

Switch the active master account for all subsequent API calls. Only MCP-enabled master accounts are accepted.

Parameters

ParameterTypeDescriptionRequired
master_account_idstrID from available_master_account_idsYes

Returns: dict[str, Any] — {status: "account_selected", master_account_id, master_account_name, available_master_account_ids, available_tenant_ids}.

70. check_connection

Return the current CoreStack session state without raising errors. Safe to call at any time, including before authenticate.

Parameters

No parameters (besides the implicit session/auth context).

Returns: dict[str, Any] — {status: "connected"|"not_connected", message?, master_account_id, master_account_name, tenant_id, tenant_name, available_master_account_ids, available_tenant_ids}.

Agent & Chat

71. list_agent_types

Get agent types available to the given tenant.

Parameters

No parameters (besides the implicit session/auth context).

Returns: dict[str, Any] — agent types available to the tenant, under key agent_types.

72. list_chats

Get chat details based on the provided filtering criteria.

Parameters

ParameterTypeDescriptionRequired
filter_agent_idstrAgent ID to filter chats byYes
batch_sizeintPage size (default 10)No
batch_offsetintPagination offset (default 0)No
totalintTotal to retrieve; 0 = all (default 0)No
sort_columnstrColumn to sort by (default "Name")No
sort_ascendingboolSort ascending (default True)No
filter_namestr | NoneChat name filterNo

Returns: dict[str, Any] — chat details batch matching the filter criteria.

73. list_conversations

Fetch the details of conversations for the specified chat based on the given filters.

Parameters

ParameterTypeDescriptionRequired
filter_chat_idstrChat ID to filter byYes
batch_sizeintPage size (default 10)No
batch_offsetintPagination offset (default 0)No
totalintTotal to retrieve; 0 = all (default 0)No
sort_columnstrColumn to sort by (default "CreatedAt")No
sort_ascendingboolSort ascending (default True)No

Returns: dict[str, Any] — retrieved conversations and their metadata.

74. send_agent_query — Destructive

Send a query to a CoreStack agent and return its response. Automatically creates a new chat for each request.

⚠️

Warning: This tool creates or modifies data in CoreStack. Confirm the inputs before calling it.

Parameters

ParameterTypeDescriptionRequired
agent_idstrAgent sys_id, from list_agent_typesYes
querystrThe user's query textYes

Returns: dict[str, Any] — {output: <agent response data>}.

75. list_system_prompts

Retrieve the details of saved prompts matching the filtering criteria.

Parameters

ParameterTypeDescriptionRequired
filters_agent_idslist[str]Agent IDs to filter prompts byYes
filters_prompt_typestrPrompt type filter (default "default")No
filters_promptstr | NonePrompt name filterNo
tagslist[Tag] | NoneTag filter, [{"key":..,"value":..}]No
batch_sizeintPage size (default 10)No
batch_offsetintPagination offset (default 0)No
totalintTotal to retrieve; 0 = all (default 0)No
sort_columnstrColumn to sort by (default "CreatedAt")No
sort_ascendingboolSort ascending (default True)No

Returns: dict[str, Any] — retrieved prompts + metadata; if some filters_agent_ids were invalid, shape is {output, retrieved_agent_ids, invalid_agent_ids}.

Bug Reporting (10)

76. file_bug — Destructive

File a Bug Report so the CoreStack team (or an AI fixer) can resolve it. Auto-attaches environment, request ID, tenant, master account, and user. Requires explicit user confirmation before filing.

⚠️

Warning: This tool creates or modifies data in CoreStack. Confirm the inputs before calling it.

Parameters

ParameterTypeDescriptionRequired
user_confirmedboolMust be True; only set after explicit user confirmationYes
titlestrShort bug titleYes
summarystrOne-paragraph description, including affected product areaYes
repro_stepsstr | NoneNumbered repro stepsNo
expected_behaviorstr | NoneWhat should happenNo
actual_behaviorstr | NoneWhat actually happenedNo
conversation_transcriptstr | NoneRelevant chat turns/errorsNo
error_detailsstr | NoneStack traces / error messages / failing tool namesNo

Returns: dict[str, Any] — {work_item_id, title, request_id, status: "created"}.

Frequently Asked Questions

Q: Do I need to call authenticate before every tool call?

No. Call authenticate once per session — every subsequent tool call reuses that session’s implicit auth context automatically. Re-authenticate only if the session expires or you need to switch master accounts.

Q: What happens if I don’t call set_active_tenant?

Tool calls run against the tenant that authenticate auto-selected based on your last-used values. If that isn’t the tenant you need, call set_active_tenant before making further calls — otherwise you may query the wrong tenant’s data.

Q: How do I know which tools will modify data instead of just reading it?

Check for the Destructive marker next to the tool name in Appendix A. Only four tools are marked Destructive — send_agent_query, file_bug, submit_assessment_answer, and create_workload. Every other tool is read-only.

Q: Can I use one session across FinOps, Graphion, Assessment, and Workload tools?

Yes. Tool domain doesn’t affect the session — once authenticated, you can call tools from any domain in the same session, as long as your role has access to that module.

Q: What does it mean when a parameter’s Required column says No but no default is listed?

Optional parameters without a stated default typically fall back to unset on the CoreStack backend, which usually means “don’t filter on this dimension.” Check the specific tool’s Description column in Appendix A — most optional parameters state their default explicitly.

Troubleshooting

Tool calls return a "not_connected" status

Cause: The session was never established, or it expired.

Solution:

  1. Call authenticate again.

  2. Confirm the response status is fully_connected.

  3. Retry the original tool call.

If the issue persists, contact CoreStack support with your request_id (visible in most tool error responses), the tool name, and the timestamp of the failed call.

A tool call succeeds but returns data for the wrong tenant

Cause: The session’s active tenant was auto-selected from your last-used values, and doesn’t match the tenant you intended to query.

Solution:

  1. Call check_connection to see the current tenant_id.

  2. Call set_active_tenant with the correct tenant_id from available_tenant_ids.

  3. Re-run the original tool call.

If the issue persists, contact CoreStack support with the tenant_id you expected, the tenant_id returned, and the tool name.

A Destructive tool call fails with a permissions error

Cause: Your assigned role doesn’t include Create/Update access for the module the tool belongs to.

Solution:

  1. Confirm which role is assigned to your account under Settings > Roles.

  2. Ask a Tenant Admin or Account Admin to grant the Create/Update access right for the relevant module.

  3. Retry the tool call once the role change takes effect.

If the issue persists, contact CoreStack support with the tool name, your role name, and the exact error message returned.


Did this page help you?