Meta¶
Static answers with no tenant data. They are public, need no capability and no dataset, so even the most restrictive policy keeps them.
list_capabilities¶
Category meta · sensitivity public · capabilities none · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no · timeout: layer default (300 s)
What this caller may use: the visible tools grouped by category (each with name as exposed, prefix included, title, read_only, open_world, sensitivity, capabilities and summary, the first sentence of its description up to 160 characters), tool_count, the number of resources and resource_templates, the prompts names, recommended workflows and the conventions. Everything is filtered through the policy for the calling principal.
Arguments: none.
Called with the arguments below, list_capabilities returned this structuredContent.
{
"server": "cloudg",
"version": "0.6.0",
"categories": {
"compliance": [
{
"name": "compliance_gaps",
"title": "Compliance gaps",
"read_only": true,
"open_world": false,
"sensitivity": "confidential",
"capabilities": [
"read_state"
],
"summary": "Assets that fail compliance, worst first: per asset the frameworks\nand controls it fails, open findings, max severity an..."
},
{
"name": "compliance_summary",
"title": "Compliance summary",
"read_only": true,
"open_world": false,
"sensitivity": "internal",
"capabilities": [
"read_state"
],
"summary": "Compliance posture per framework: controls evaluated / failing /\npassing, pass rate, open findings by severity and affec..."
},
"... 2 more"
],
"export": [
{
"name": "export_report",
"title": "Export report",
"read_only": false,
"open_world": false,
"sensitivity": "confidential",
"capabilities": [
"read_state",
"write_fs"
],
"summary": "Write the dataset as a cloudg report file set into the output\ndirectory and return the file paths."
},
{
"name": "export_terraform",
"title": "Export Terraform",
"read_only": false,
"open_world": false,
"sensitivity": "confidential",
"capabilities": [
"read_state",
"write_fs"
],
"summary": "Write a Terraform (.tf.json) recreation of the assets (provider,\nvariables, main and an import_commands.sh) into the out..."
},
"... 1 more"
],
"...": "8 more categories"
},
"tool_count": 74,
"resources": 13,
"resource_templates": 11,
"prompts": [
"security_posture_review",
"executive_summary",
"... 7 more"
],
"workflows": {
"orient": [
"workspace_status",
"dataset_summary",
"... 2 more"
],
"triage risk": [
"top_risks",
"get_asset",
"... 2 more"
],
"attack surface": [
"internet_exposure",
"attack_paths",
"... 2 more"
],
"change impact": [
"dependents",
"dependency_tree",
"... 2 more"
],
"compliance": [
"compliance_summary",
"list_controls",
"... 2 more"
],
"drift": [
"snapshot_dataset",
"map_inventory / load_dataset",
"... 1 more"
],
"semantic": [
"ontology_stats",
"relation_groups",
"... 2 more"
]
},
"conventions": {
"dataset": "empty = active dataset",
"ref": "asset id, ARN, unique name or unique ARN tail",
"pagination": "pass next_cursor back as cursor; cursors expire when the dataset changes"
}
}
describe_schema¶
Category meta · sensitivity public · capabilities none · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no · timeout: layer default (300 s)
cloudg's vocabulary. asset_types maps a family heading (taken from the comments in the AssetType enum source) to its type values; edge_types maps each edge type to how it reads; severities; relation_groups maps each relation group to its relation types (with section: "relation_groups" only the group names); compliance_statuses; providers. Use these exact values in filters.
| Argument | Type | Default | Constraints | Description |
|---|---|---|---|---|
section |
string | "all" |
one of all, asset_types, edge_types, severities, relation_types, relation_groups, compliance_statuses, providers |
Which part of the vocabulary to return. |
Called with the arguments below, describe_schema returned this structuredContent.
{
"edge_types": {
"SECURITY_GROUP_RULE": "allows traffic",
"NACL_RULE": "allows traffic",
"ROUTE": "routes through / forwards to",
"IAM_TRUST": "may assume",
"IAM_POLICY_ATTACHMENT": "has policy",
"CONTAINS": "contains",
"PEERING": "peers with",
"LOAD_BALANCER_TARGET": "sends traffic to",
"INTERNET_EXPOSED": "exposes",
"ATTACHED_TO": "is attached to",
"REFERENCES": "uses / points at",
"INVOKES": "triggers / calls",
"USES_IMAGE": "runs the image of",
"ASSUMES_ROLE": "runs as",
"GRANTS_ACCESS": "is granted access to",
"LOGS_TO": "sends logs to",
"PROTECTS": "protects",
"MONITORS": "monitors",
"MANAGES": "manages",
"GOVERNS": "governs"
}
}
Called with the arguments below, describe_schema returned this structuredContent.
{
"relation_groups": [
"NETWORK",
"CONTAINMENT",
"IAM",
"DATA_FLOW",
"SECURITY",
"COMPUTE",
"GOVERNANCE"
]
}
With section: "all" the sample run returned 22 asset families, 20 edge types, 5 severities, 7 relation groups, 4 compliance statuses (PASS, FAIL, NOT_APPLICABLE, MANUAL) and 3 providers (AWS, AZURE, GCP).
explain_asset_type¶
Category meta · sensitivity public · capabilities none · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no · timeout: layer default (300 s)
How cloudg models one asset type: family, note (the enum comment, when there is one), ontology_class, terraform_type, sensitive_data_store (the reachability analyser's list), crown_jewel_weight (0 when not a crown jewel), internet_exposure_expected, and in_active_dataset (count) when a dataset is loaded.
| Argument | Type | Default | Constraints | Description |
|---|---|---|---|---|
asset_type |
string | required | min length 1 | An AssetType value, e.g. LAMBDA_FUNCTION. |
Called with the arguments below, explain_asset_type returned this structuredContent.
{
"asset_type": "RDS_INSTANCE",
"family": "Database",
"note": null,
"ontology_class": "cm:RelationalDatabase",
"terraform_type": "aws_db_instance",
"sensitive_data_store": true,
"crown_jewel_weight": 10,
"internet_exposure_expected": false,
"in_active_dataset": 1
}
{
"tool": "explain_asset_type",
"arguments": {
"asset_type": "LAMBDA"
},
"isError": true,
"text": "Unknown asset type. Did you mean LAMBDA_FUNCTION, ALARM? Valid values: EC2, VIRTUAL_MACHINE, GCE_INSTANCE, LAMBDA_FUNCTION, CLOUD_FUNCTION, ECS_CLUSTE...",
"_meta": {
"cloudg/error_code": -32602,
"cloudg/error_data": {
"value": "LAMBDA",
"valid": [
"EC2",
"VIRTUAL_MACHINE",
"GCE_INSTANCE",
"... 153 more"
],
"close_matches": [
"LAMBDA_FUNCTION",
"ALARM"
]
}
}
}
explain_edge_type¶
Category meta · sensitivity public · capabilities none · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no · timeout: layer default (300 s)
How to read one edge type: reads_as ("source verb target"), typical endpoints, note from the enum source, dependency_direction (forward, reverse or none, see Graph) and ontology_relations, the relation types inferred directly from the edge type, or a string saying the relation depends on ports, CIDRs and endpoint types.
| Argument | Type | Default | Constraints | Description |
|---|---|---|---|---|
edge_type |
string | required | min length 1 | An EdgeType value, e.g. ASSUMES_ROLE. |
Called with the arguments below, explain_edge_type returned this structuredContent.
{
"edge_type": "CONTAINS",
"reads_as": "source contains target",
"typical": "VPC -> subnet, subnet -> instance, account -> resource",
"note": "VPC contains Subnet",
"dependency_direction": "reverse",
"ontology_relations": "inferred from both endpoint types (VPC_CONTAINS_SUBNET, SUBNET_CONTAINS_INSTANCE, CLUSTER_CONTAINS_SERVICE, ORG_CONTAINS_ACCOUNT), else the generic CONTAINS"
}
Called with the arguments below, explain_edge_type returned this structuredContent.
{
"edge_type": "ASSUMES_ROLE",
"reads_as": "source runs as target",
"typical": "function, task, node group, instance profile -> role / service account",
"note": "compute or service account -> IAM role it runs as",
"dependency_direction": "forward",
"ontology_relations": [
"RUNS_ON"
]
}
{
"tool": "explain_edge_type",
"arguments": {
"edge_type": "LIKES"
},
"isError": true,
"text": "Unknown edge type. Did you mean INVOKES? Valid values: SECURITY_GROUP_RULE, NACL_RULE, ROUTE, IAM_TRUST, IAM_POLICY_ATTACHMENT, CONTAINS, PEERING, LOA...",
"_meta": {
"cloudg/error_code": -32602,
"cloudg/error_data": {
"value": "LIKES",
"valid": [
"SECURITY_GROUP_RULE",
"NACL_RULE",
"ROUTE",
"... 17 more"
],
"close_matches": [
"INVOKES"
]
}
}
}