MCP Tools Reference
Complete reference for all 74 Cloud Guardian MCP tools. Auto-generated from the MCP server source code.
Regenerate with: npx tsx scripts/generate-mcp-docs.ts
Auth
cg_login
Sign in to Cloud Guardian via Google OAuth. Opens browser for authentication.
cg_whoami
Show current authenticated user info: email, UID, and org memberships.
Organizations
cg_list_organizations
List all organizations the current user belongs to, with member counts.
cg_create_organization
Create a new organization. Caller becomes the owner.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Organization name |
cg_delete_organization
Delete an organization and all its data (projects, members, invitations). Requires owner or admin role.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | yes | Organization ID to delete |
cg_get_organization
Get organization details by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | yes | Organization ID |
Members
cg_list_members
List org members with roles and pending invitations.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_invite_member
Invite a user to the organization by email with a specified role.
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | yes | Email address to invite | |
| role | string | no | Role: viewer (default), member, admin, owner |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_update_member_role
Change a member's role in the organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
| membership_id | string | yes | Membership ID (from cg_list_members) |
| role | string | yes | New role: viewer, member, admin, owner |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_remove_member
Remove a member from the organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
| membership_id | string | yes | Membership ID to remove |
| org_id | string | no | Organization ID (uses default org if not specified) |
Projects & Connectors
cg_get_project_status
Get project status summary for the current org. Optionally filter by GCP project ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| gcp_project_id | string | no | Optional GCP project ID filter |
cg_list_connectors
List all connectors (GCP service account connections) with their status.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_test_connector
Test a connector's connectivity and return verified permissions.
| Parameter | Type | Required | Description |
|---|---|---|---|
| connector_id | string | yes | Connector ID to test |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_onboard_gcp_project
Fully automate GCP project onboarding: create service account, grant roles, generate key, create connector, test connectivity, and link to org. Requires gcloud CLI.
| Parameter | Type | Required | Description |
|---|---|---|---|
| gcp_project_id | string | yes | GCP project ID to onboard |
| org_id | string | yes | Organization ID to link the project to |
| display_name | string | no | Display name for the project (defaults to project ID) |
| gcloud_account | string | no | gcloud account to use (for --account flag). Omit to use default. |
| remediation_scopes | string | no | Comma-separated remediation scopes to enable. Options: cloud_run:optimize, cloud_run:cleanup, secret_manager:cleanup, artifact_registry:cleanup, billing:alerts |
| auto_remediation_scopes | string | no | Comma-separated scopes that auto-execute after each scan cycle. Must be a subset of remediation_scopes. |
cg_create_connector
Create a new GCP connector with service account credentials.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Display name for the connector |
| project_id | string | yes | GCP project ID |
| region | string | no | GCP region |
| credentials_blob | string | no | Raw service account key JSON |
| remediation_scopes | string | no | Comma-separated scopes. Options: cloud_run:optimize, cloud_run:cleanup, secret_manager:cleanup, artifact_registry:cleanup |
| auto_remediation_scopes | string | no | Comma-separated auto-execute scopes (subset of remediation_scopes) |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_delete_connector
Delete a connector and its stored credentials.
| Parameter | Type | Required | Description |
|---|---|---|---|
| connector_id | string | yes | Connector ID to delete |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_clone_credentials
Clone encrypted credentials from one connector to another without decrypting.
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_connector_id | string | yes | Source connector ID |
| target_connector_id | string | yes | Target connector ID |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_list_org_projects
List all org projects with their IDs, GCP project mappings, GitHub repos, and auto-remediation scopes.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_update_org_project
Update an org project's settings: display name, auto-remediation scopes, GitHub repo, or connector.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Org project ID (use cg_list_org_projects to find it) |
| auto_remediation_scopes | string | no | Comma-separated scopes to enable. Options: cloud_run:optimize, cloud_run:cleanup, secret_manager:cleanup, artifact_registry:cleanup |
| display_name | string | no | New display name |
| github_repo | string | no | GitHub repo in owner/repo format |
| connector_id | string | no | Connector ID to associate |
| org_id | string | no | Organization ID (uses default org if not specified) |
Infrastructure
cg_get_infrastructure_status
Full infrastructure scan: Cloud Run services, Secrets Manager, Artifact Registry, costs, and violations.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_list_guardian_rules
List all enforcement rules configured for the organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_create_guardian_rule
Create a CEL enforcement rule for automated policy checks.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Rule name |
| match_expression | string | yes | CEL expression to evaluate |
| description | string | no | Rule description |
| resource_type | string | no | Resource type: cloud_run, artifact_registry, secret_manager |
| action_type | string | no | Action to take on match: alert, remediate |
| severity | string | no | Rule severity: critical, high, medium, low |
| schedule | string | no | Cron schedule for rule evaluation |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_update_guardian_rule
Update a guardian rule's expression, severity, or settings.
| Parameter | Type | Required | Description |
|---|---|---|---|
| rule_id | string | yes | Guardian rule ID to update |
| name | string | no | New rule name |
| description | string | no | New description |
| match_expression | string | no | New CEL expression |
| action_type | string | no | New action type |
| severity | string | no | New severity |
| enabled | string | no | Set to 'true' or 'false' |
| schedule | string | no | New cron schedule |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_delete_guardian_rule
Delete a guardian enforcement rule.
| Parameter | Type | Required | Description |
|---|---|---|---|
| rule_id | string | yes | Guardian rule ID to delete |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_validate_rule_expression
Validate a CEL rule expression without creating a rule. Checks syntax and returns parsed representation.
| Parameter | Type | Required | Description |
|---|---|---|---|
| expression | string | yes | CEL expression to validate |
| resource_type | string | no | Resource type context for validation |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_get_cost_trend
Get cost trend data for monitored projects.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| project | string | no | Optional GCP project ID to filter by |
| days | number | no | Number of days of history (default 30) |
cg_get_resource_cost_history
Get per-resource cost and utilization history over time. Shows CPU, memory, requests, and instance metrics alongside cost.
| Parameter | Type | Required | Description |
|---|---|---|---|
| resource_name | string | yes | Name of the resource (e.g., Cloud Run service name) |
| project | string | no | Optional GCP project ID filter |
| snapshot_type | string | no | Filter by type: cloud_run, secret_manager, artifact_registry |
| org_id | string | no | Organization ID (uses default org if not specified) |
| days | number | no | Number of days of history (default 30) |
cg_get_cost_breakdown
Get a ranked breakdown of all resources by cost, with change percentages and utilization metrics. Great for finding the most expensive or over-provisioned resources.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| project | string | no | Optional GCP project ID filter |
| snapshot_type | string | no | Filter by type: cloud_run, secret_manager, artifact_registry |
| sort_by | string | no | Sort by: cost (default), cost_change |
| days | number | no | Comparison window in days (default 30) |
| top_n | number | no | Number of top resources to return (default 20, max 100) |
cg_list_service_metrics
Get per-service utilization metrics over time: CPU, memory, request count, RPS, active/idle instances, and cost. Use for traffic pattern analysis and identifying idle or over-utilized services.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| service_name | string | no | Filter to a specific Cloud Run service name |
| project | string | no | Filter to a specific GCP project |
| days | number | no | Lookback window in days (default 7) |
cg_get_service_metrics_summary
Get the latest utilization snapshot for all Cloud Run services: CPU, memory, requests, instance counts, and costs. Best for a quick overview of service health.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_get_savings_summary
Get verified savings summary: estimated vs actual savings from completed remediations.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| project | string | no | Optional GCP project ID filter |
| days | number | no | Lookback window in days (default 90) |
Checks
cg_list_checks
List all available checks with their thresholds, categories, and override status.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| resource_type | string | no | Filter by resource type: cloud_run, artifact_registry, secret_manager |
| category | string | no | Filter by category: cost_optimization, cleanup, security |
cg_update_check_override
Customize a check's threshold, severity, or enabled status for your org.
| Parameter | Type | Required | Description |
|---|---|---|---|
| check_id | string | yes | Check ID to override (from cg_list_checks) |
| enabled | string | no | Set to 'true' or 'false' |
| severity | string | no | Custom severity: critical, high, medium, low |
| org_id | string | no | Organization ID (uses default org if not specified) |
| threshold | number | no | Custom threshold value |
cg_delete_check_override
Reset a check to its default threshold and settings.
| Parameter | Type | Required | Description |
|---|---|---|---|
| check_id | string | yes | Check ID to reset |
| org_id | string | no | Organization ID (uses default org if not specified) |
Operations
cg_trigger_scan
Trigger an immediate infrastructure scan across all connected projects. Refreshes cached data used by GetInfrastructureStatus.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_update_connector
Update a connector's settings: name, region, remediation scopes, or auto-remediation scopes.
| Parameter | Type | Required | Description |
|---|---|---|---|
| connector_id | string | yes | Connector ID to update |
| name | string | no | New display name |
| region | string | no | GCP region |
| remediation_scopes | string | no | Comma-separated scopes. Options: cloud_run:optimize, cloud_run:cleanup, secret_manager:cleanup, artifact_registry:cleanup |
| auto_remediation_scopes | string | no | Comma-separated scopes that auto-execute after each scan. Must be subset of remediation_scopes. |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_get_operational_health
Get platform operational health: last scan cycle, connector health, alert/remediation stats, and cost summary.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_list_scan_logs
List scan cycle history with per-project drill-down results.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| limit | number | no | Number of scan cycles to return (default 10) |
cg_auto_discover_projects
Discover unlinked GCP projects accessible by a connector's service account.
| Parameter | Type | Required | Description |
|---|---|---|---|
| connector_id | string | yes | Connector whose credentials to use for discovery |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_system_diagnostics
Get system diagnostics: connectivity status for Firestore, KMS, email, GitHub, Firebase Auth, Vertex AI, and scanner health.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_send_test_email
Send a test email to the currently logged-in user to verify email delivery.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_send_test_daily_report
Send a test daily cost report email to the currently logged-in user. Shows the full daily cost summary with trends, top resources, alerts, and savings.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
Remediation
cg_plan_remediation
Scan infrastructure for violations and create pending remediation actions based on enabled scopes. Shows estimated savings.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| gcp_project_id | string | no | Optional GCP project ID to filter by |
| resource_name | string | no | Optional resource name to filter to a single resource |
cg_execute_remediation
Execute a specific pending remediation action. Use dry_run=true to validate without executing.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_id | string | yes | Remediation action ID to execute |
| dry_run | string | no | Set to 'true' to validate without executing |
| force_direct | string | no | Set to 'true' to bypass github_pr mode and execute directly via GCP APIs |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_batch_execute_remediation
Execute multiple pending remediation actions in one call. Returns per-action results.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_ids | string | yes | Comma-separated action IDs to execute |
| dry_run | string | no | Set to 'true' to validate without executing |
| force_direct | string | no | Set to 'true' to bypass github_pr mode and execute directly via GCP APIs |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_delete_remediation_action
Delete a pending remediation action. Only pending actions can be deleted.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_id | string | yes | Remediation action ID to delete |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_list_remediation_actions
List remediation actions with their status. Filter by project or status.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| gcp_project_id | string | no | Optional GCP project ID to filter by |
| status | string | no | Filter by status: pending, executing, completed, failed |
Alerts
cg_list_cost_alerts
List cost alerts with spend spikes, idle resources, and recommendations.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| status | string | no | Filter: active, acknowledged, resolved |
| severity | string | no | Filter: critical, high, medium, low |
cg_acknowledge_cost_alert
Acknowledge a cost alert to mark it as reviewed.
| Parameter | Type | Required | Description |
|---|---|---|---|
| alert_id | string | yes | Cost alert ID to acknowledge |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_get_cost_alert_counts
Get quick counts of active and acknowledged cost alerts.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
API Keys
cg_create_api_key
Create a programmatic API key. Returns the raw key (shown only once).
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Name for the API key |
| role | string | no | Role: viewer, member, admin (default: viewer). Capped at your role level. |
| org_id | string | no | Organization ID (uses default org if not specified) |
| expires_in_days | number | no | Days until expiry (0 = no expiry) |
cg_list_api_keys
List all API keys for the current user.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_revoke_api_key
Revoke (delete) an API key.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key_id | string | yes | API key ID to revoke |
| org_id | string | no | Organization ID (uses default org if not specified) |
Webhooks
cg_list_webhook_endpoints
List webhook endpoints for an organization. Shows URL, event subscriptions, status, and failure count.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_create_webhook_endpoint
Create a webhook endpoint. Returns a signing secret (HMAC-SHA256) for verifying payloads. Save it immediately — it cannot be retrieved later.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | yes | Webhook URL to POST events to |
| description | string | no | Human-readable description |
| event_types | string | no | Comma-separated event types: scan.completed, alert.created, remediation.completed, etc. Empty = all events |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_update_webhook_endpoint
Update a webhook endpoint's URL, description, event types, or enabled status.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Webhook endpoint ID |
| url | string | no | New webhook URL |
| description | string | no | New description |
| event_types | string | no | Comma-separated event types to subscribe to |
| enabled | string | no | true or false |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_delete_webhook_endpoint
Delete a webhook endpoint and all its delivery history.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Webhook endpoint ID |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_list_webhook_deliveries
List recent delivery attempts for a webhook endpoint. Shows status, HTTP code, duration, and errors.
| Parameter | Type | Required | Description |
|---|---|---|---|
| endpoint_id | string | yes | Webhook endpoint ID |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_test_webhook_endpoint
Send a test event to a webhook endpoint to verify connectivity.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Webhook endpoint ID |
| org_id | string | no | Organization ID (uses default org if not specified) |
Teams
cg_list_teams
List all teams in an organization with their allocation rules.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_create_team
Create a new team for cost allocation. Add allocation rules to match resources.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Team name |
| description | string | no | Team description |
| color | string | no | Hex color for display (e.g. #3b82f6) |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_update_team
Update a team's name, description, color, or allocation rules.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Team ID |
| name | string | no | New team name |
| description | string | no | New description |
| color | string | no | New hex color |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_delete_team
Delete a team. Cost allocations will become unallocated.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Team ID |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_get_team_cost_report
Get cost attribution report showing how costs are distributed across teams.
| Parameter | Type | Required | Description |
|---|---|---|---|
| team_id | string | no | Filter to a specific team (optional) |
| org_id | string | no | Organization ID (uses default org if not specified) |
| days | number | no | Lookback period in days (default 30) |
cg_export_team_cost_csv
Export team cost allocation as CSV for finance teams.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| days | number | no | Lookback period in days (default 30) |
Billing
cg_setup_billing_budget
Create a GCP billing budget with automated Pub/Sub alerts forwarded to Cloud Guardian.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | yes | Organization ID |
| gcp_project_id | string | yes | GCP project ID to monitor |
| billing_account_id | string | yes | GCP billing account ID (e.g. XXXXXX-XXXXXX-XXXXXX or billingAccounts/XXXXXX-XXXXXX-XXXXXX) |
| currency_code | string | no | Budget currency — MUST match billing account currency (e.g. USD, AUD). Run 'gcloud billing accounts describe BILLING_ACCOUNT_ID' to check. |
| display_name | string | no | Budget display name (default: 'Cloud Guardian - <project>') |
| thresholds | string | no | Comma-separated threshold percents as decimals (default: 0.5,0.8,1.0) |
| amount_cents | number | no | Monthly budget in cents (default 10000 = $100) |
cg_list_billing_budgets
List all GCP billing budgets managed by Cloud Guardian for an organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_delete_billing_budget
Delete a billing budget. Removes the GCP budget, Pub/Sub topic, and push subscription.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Billing budget ID |
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_list_billing_webhook_events
List recent billing webhook events received from GCP Pub/Sub. Shows processed, unmatched, and error events for debugging the billing alert pipeline.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| limit | number | no | Max events to return (default 20) |
cg_send_test_billing_webhook
Send a mock GCP Pub/Sub billing alert to the webhook endpoint for testing. Simulates a budget threshold exceeded notification.
| Parameter | Type | Required | Description |
|---|---|---|---|
| budget_id | string | no | Budget ID to simulate (default: test-budget-001) |
| budget_name | string | no | Budget display name (default: Cloud Guardian Test Budget) |
| threshold | number | no | Threshold exceeded as decimal (default: 0.5 = 50%) |
| cost_amount | number | no | Current cost in dollars (default: 50.0) |
| budget_amount | number | no | Budget amount in dollars (default: 100.0) |
cg_setup_billing_export
Set up BigQuery billing export for actual GCP cost tracking. Creates/verifies BQ dataset, detects export table, grants IAM, and runs test query — fully managed one-click setup.
| Parameter | Type | Required | Description |
|---|---|---|---|
| connector_id | string | yes | Connector ID with GCP credentials (SA needs BigQuery Data Viewer on the dataset) |
| bq_project_id | string | yes | GCP project ID where the BQ billing export dataset lives |
| billing_account_id | string | yes | GCP billing account ID (e.g. 01ABCD-234567-89EFGH) |
| org_id | string | no | Organization ID (uses default org if not specified) |
| dataset_id | string | no | BQ dataset ID (default: cloud_billing_export) |
cg_bq_export_status
Check the status of BigQuery billing export configuration for an organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
cg_query_actual_costs
Query actual GCP costs from BigQuery billing export data. Returns cached cost data by service and project. Use 'date' for single-day detail or 'days' for multi-day trend.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID (uses default org if not specified) |
| date | string | no | Specific date to query (YYYY-MM-DD format) |
| days | string | no | Number of days to query (default: 7, max: 90) |
Demo
cg_seed_demo_data
Populate an organization with realistic fake GCP projects, resource snapshots, cost history, teams, alerts, and remediation actions for demo/testing.
| Parameter | Type | Required | Description |
|---|---|---|---|
| org_id | string | no | Organization ID to seed (uses default org if not specified) |
| project_count | number | no | Number of fake projects (1-4, default 3) |
| cost_history_days | number | no | Days of cost history to generate (default 30) |