nable
Prices what your coding agents are about to do, before they do it.
Connector by getnable · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/getnable-finops-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: cloud-management, monitoring-observability
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 161 read · 37 write · 5 delete · 2 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 205
Read from the source code; the running server may list different tools.
Read 161 · Look things up without changing anything.
activate_proaudit_aws_wasteaudit_azure_reservation_scopeaudit_cloudwatch_logs_ia_opportunitiesaudit_cloudwatch_metric_cardinalityaudit_cloudwatch_orphaned_alarmsaudit_duplicate_spendaudit_ebs_snapshot_replicationaudit_efs_cross_az_mountsaudit_gcp_nat_feesaudit_gcp_wasteaudit_gcs_request_overhead
Show 149 more tools
audit_nlb_cross_zone_costsaudit_public_ipv4_addressesaudit_rds_manual_snapshotsaudit_s3_intelligent_tieringaudit_s3_transfer_accelerationaudit_spot_diversificationaudit_terraform_tagsaudit_textract_environment_wastebenchmark_costscheck_action_policycheck_ai_budgetcheck_budget_statuscheck_connector_healthcheck_notification_configcleanup_idle_resourcescompare_kubernetes_clusterscompare_providersconnect_azureconnect_opencostestimate_change_costestimate_helm_diff_costestimate_terraform_costexplain_cost_changeexplain_recent_cost_driversexport_board_summaryfetch_invoice_emailsforecast_azure_costsforecast_costsforecast_llm_costsget_account_anomaliesget_agent_teamget_ai_budget_statusget_ai_cost_attributionget_ai_engineering_reportget_ai_kpisget_ai_spend_monitorget_anomaliesget_azure_advisor_recommendationsget_azure_budgetsget_azure_cost_by_dimensionget_azure_reservation_utilizationget_azure_vm_rightsizingget_bedrock_costsget_business_metricsget_cluster_efficiencyget_commitment_analysisget_commitment_coverage_by_tagget_cost_historyget_cost_summaryget_cost_summary_all_accountsget_cost_trendsget_costs_by_serviceget_costs_by_teamget_credit_statusget_data_transfer_costsget_databricks_cluster_efficiencyget_databricks_costsget_databricks_dbu_breakdownget_databricks_job_costsget_documentdb_costsget_ecr_cleanup_recommendationsget_ecs_rightsizing_recommendationsget_effective_rate_profileget_efficiency_scorecardget_focus_costsget_gcp_recommendationsget_gpu_infra_costsget_helm_release_costsget_idle_load_balancersget_idle_rds_instancesget_instance_deep_analysisget_kendra_costsget_kubernetes_cost_trendsget_kubernetes_costsget_kubernetes_namespace_breakdownget_label_costsget_langfuse_model_costsget_langfuse_trace_volumeget_learned_cost_contextget_llm_commitment_analysisget_llm_cost_by_modelget_llm_costsget_marketplace_costsget_nable_roiget_org_cost_summaryget_org_coverageget_org_modelget_ou_cost_breakdownget_pinned_viewget_rds_rightsizing_recommendationsget_recommendation_learningget_recommendation_qualityget_resource_cost_breakdown_awsget_resource_cost_breakdown_azureget_ri_waste_detailget_rightsizing_recommendationsget_s3_incomplete_multipart_uploadsget_saas_spend_summaryget_savings_ledgerget_savings_plan_showbackget_savings_summaryget_service_costget_storage_infoget_tableau_connection_infoget_tag_cost_breakdown_curget_team_scorecardsget_textract_costsget_top_cost_driversget_top_spending_accountsget_total_spend_all_sourcesget_traffic_cost_breakdownget_unit_economicsget_viewget_workload_costsidentify_nonprod_scheduling_opportunitieslist_accountslist_active_serviceslist_alert_policieslist_api_keyslist_aws_accountslist_budgetslist_connected_providerslist_idle_resourceslist_installed_packslist_kubernetes_contextslist_org_accountslist_org_questionslist_pinned_viewslist_profileslist_report_subscriptionslist_savings_recommendationslist_vault_credentialslist_viewsnable_setup_statusoptimize_ai_spendrecommend_bedrock_model_routingrecommend_database_savings_plansrecommend_lambda_snapstartrecommend_spot_adoptionscan_cloudwatch_wastescan_graviton_migration_opportunitiesscan_lambda_concurrency_wastescan_s3_bucket_key_opportunitiesscan_waste_patternssuggest_cost_policiestake_snapshot_nowverify_savingswhat_can_nable_dowhoami
Write 37 · Create, change, send or run things.
acknowledge_anomalycancel_report_subscriptionconnect_awsconnect_gcpcreate_anomaly_ticketscreate_api_keycreate_kubernetes_waste_ticketscreate_rightsizing_ticketscreate_scorecard_ticketscreate_ticketdismiss_recommendationexport_cost_report
Show 25 more tools
export_cost_report_csvgenerate_account_dashboardgenerate_terraform_tag_fixesmark_recommendation_acted_onopen_rightsizing_propen_terraform_tag_prpin_viewpropose_org_factpublish_cost_report_to_notionpush_to_n8npush_weekly_insightreport_objectionsrun_attribution_nowrun_full_cost_auditsend_digest_nowsend_onboarding_emailsend_report_nowsend_weekly_digest_nowset_ai_budgetset_alert_policyset_budgetset_business_metricsstart_dashboard_serversubscribe_to_reportsync_budgets_from_yaml
Delete 5 · Delete, drop, revoke or wipe things.
delete_alert_policydelete_budgetforget_cost_contextrevoke_api_keyunpin_view
Not yet classified 2 · We could not tell from the name and description.
remember_cost_contextslice_costs
Network hosts it talks to 60
accounts.azuredatabricks.net· found in codeadaptivecards.io· found in codeadb-1234567890.1.azuredatabricks.net· found in codeapi.anthropic.com· found in codeapi.cloudflare.com· found in codeapi.cursor.com· found in codeapi.datadoghq.com· found in codeapi.github.com· found in codeapi.linear.app· found in codeapi.newrelic.com· found in codeapi.notion.com· found in codeapi.openai.com· found in codeapi.replicate.com· found in codeapi.slack.com· found in codeapi.stripe.com· found in codeapi.together.ai· found in codeapi.together.xyz· found in codeapi.twilio.com· found in codeapi.vercel.com· found in codeapp.datadoghq.com· found in codeastral.sh· found in codeaws.amazon.com· found in codebench.nable.dev· found in codecdn.jsdelivr.net· found in codeclaude.ai· found in codecloud.google.com· found in codecloud.langfuse.com· found in codecloud.mongodb.com· found in codecompany.okta.com· found in codeconsole.anthropic.com· found in code
Show 30 more hosts
console.aws.amazon.com· found in codeconsole.cloud.google.com· found in codeconsole.mistral.ai· found in codeconsole.twilio.com· found in codecursor.com· found in codedash.cloudflare.com· found in codedashboard.cohere.com· found in codedashboard.stripe.com· found in codedeveloper.hashicorp.com· found in codedocs.astral.sh· found in codedocs.databricks.com· found in codefonts.googleapis.com· found in codegetnable.com· found in codegithub.com· found in codegoogleapis.com· found in codelogin.microsoftonline.com· found in codemanagement.azure.com· found in codemodal.com· found in codenotion.so· found in codeone.newrelic.com· found in codeopenrouter.ai· found in codeplatform.openai.com· found in codeportal.azure.com· found in codepricing.us-east-1.amazonaws.com· found in codepypistats.org· found in coderaw.githubusercontent.com· found in codereplicate.com· found in codeslack.com· found in codeus.i.posthog.com· found in codevercel.com· found in code
Files it touches
~/.claude/settings.json~/.kube/config/dev/fd/dev/null/dev/stderr/dev/stdout/dev/tty/etc/claude-code/managed-settings.json/etc/gitconfig/etc/machine-id/home/Users/var/lib/dbus/machine-id- Your home directory (~)
~/.databrickscfg~/.finops/bench_salt~/.modal.toml- Any path the agent passes to its tools
Tools (205)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
acknowledge_anomalyMark an anomaly as acknowledged (dismissed). It will no longer appear in active anomalies. Args: anomaly_id: The ID from get_anomalies(). Examples: - "Dismiss anomaly 42, it was a planned migration" - "Acknowledge that spike, it was expected"
activate_proShow how to activate your nable Pro or Team license on this machine. Deliberately takes no arguments. A licence key pasted into this conversation reaches the model provider as a tool-call argument before nable ever sees it, and stays in that provider's history. validate_key checks the signature, the plan and the expiry with no machine binding, so anyone who can read that transcript holds a working, transferable entitlement until it expires. connect_azure refuses an Azure secret for exactly this reason, and a licence key is no different. The key is taken in your OWN terminal instead, where it…
audit_aws_wasteDeep AWS waste audit: scans EC2, EBS, RDS, Lambda, NAT Gateways, CloudWatch Logs, S3, and CloudTrail for waste. Returns findings sorted by monthly savings. Args: regions: AWS regions to scan. Defaults to all opted-in regions. checks: Subset to run: ebs, snapshots, eips, nat, rds, cloudtrail, cloudwatch, s3, lambda, ec2. Defaults to all. account_id: AWS account ID (auto-discovered from STS if not provided). Examples: - "Run a full AWS waste audit" - "Find all idle NAT gateways and unattached EBS volumes" - "Audit CloudWatch log groups for missing retention …
audit_azure_reservation_scopeFind Azure reservations locked to one subscription while a sibling subscription pays full price for the same capacity. A reservation scoped to a single subscription only discounts resources in that subscription; matching workloads anywhere else in the billing account pay on-demand rates while the reservation's hours go unused. The fix is a free portal setting (scope -> Shared): no exchange, no refund, no new commercial transaction. A finding requires ALL THREE, so deliberate single-scoping (capacity priority, chargeback) is never flagged on its own: 1. the reservation is scoped to a single…
audit_cloudwatch_logs_ia_opportunitiesFinds CloudWatch Log groups to migrate to Infrequent Access class. IA cuts ingestion cost 50% ($0.50 to $0.25/GB, us-east-1 list). Candidates: groups older than 30 days with >1 GB/month still on STANDARD. Note: IA does not support metric filters or subscription filters. Args: regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Find CloudWatch log groups to migrate to Infrequent Access" - "How much can we save on CloudWatch log ingestion?"
audit_cloudwatch_metric_cardinalityAudits CloudWatch custom metric cardinality. Custom metrics bill per metric-month at $0.30 for the first 10,000, then $0.10, $0.05 and $0.02 (us-east-1 list), with 10 free. High-cardinality dimensions like pod_id or request_id can cause thousands of metrics per microservice. Args: regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Which namespaces have too many custom metrics?" - "Find CloudWatch metrics costing us money"
audit_cloudwatch_orphaned_alarmsFinds CloudWatch alarms on deleted resources. Standard alarms cost $0.10/month, composite $0.50/month. Terminated instances and deleted queues leave alarms stuck in INSUFFICIENT_DATA indefinitely. Args: regions: AWS regions to scan. Defaults to all opted-in regions. max_results: Max orphaned alarms to return (default 50). Examples: - "Find orphaned CloudWatch alarms" - "How much are we wasting on CloudWatch alarms?"
audit_duplicate_spendFind places where you're paying for the same capability through two different services or providers at once, the kind of waste a plain cost breakdown never surfaces because every line item looks legitimate on its own. Covers three patterns: multiple LLM inference paths active at the same time (e.g. AWS Bedrock Claude AND a direct Anthropic API key), multiple managed search/retrieval services (Kendra + OpenSearch), and two data platforms at once (Databricks + Snowflake). This is a "worth a look" flag, not a claim that anything is wasted: running two providers on purpose (failover, per-team rou…
audit_ebs_snapshot_replicationAudits cross-region EBS snapshot replication for waste. Replicated snapshots cost $0.05/GB-month in each region. Finds orphaned copies (source volume deleted), excessive copies (more than 3 regions), and old copies where a newer copy exists. Args: regions: AWS regions to scan. Defaults to all opted-in regions. max_results: Max findings to return (default 50). Examples: - "Find orphaned cross-region EBS snapshots" - "How much are we spending on cross-region snapshot storage?"
audit_efs_cross_az_mountsFinds EC2 instances mounting EFS from a different AZ. Cross-AZ mounts cost $0.02/GB in hidden transfer charges. Fix by adding a mount target per AZ. Args: regions: AWS regions to scan. Defaults to all common regions. Examples: - "Find EFS mounts crossing availability zones" - "Which EFS file systems are generating cross-AZ transfer costs?"
audit_gcp_nat_feesFind Cloud NAT gateways whose data-processing fees dwarf their uptime charge. NAT bills per gigabyte processed on top of the hourly gateway charge, and the per-GB side is invisible in every service-level cost view. The classic driver is Google-API-bound traffic that Private Google Access would carry free. Findings are investigations with the measured fee attached: the avoidable share needs VPC flow logs, which nable does not read, so no precise savings figure is invented. Requires the BigQuery billing export (GCP_BQ_BILLING_TABLE). Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30…
audit_gcp_wasteDeep GCP waste audit: scans Compute Engine across all zones/regions for unattached persistent disks, reserved-but-idle static IPs, old snapshots, and idle VMs (CPU joined from Cloud Monitoring). Returns findings sorted by estimated monthly savings. Args: projects: GCP project IDs to scan. Defaults to GCP_PROJECT_IDS or the default project on your credentials. checks: Subset to run: disks, ips, snapshots, idle_vms. Defaults to all. idle_days: Lookback window for the idle-VM CPU check (default 14). snapshot_age_days: Flag snapshots older than this many days (defaul…
audit_gcs_request_overheadFind projects paying more for GCS operations than the stored data justifies. Class A/B request charges ride on top of storage cost, and when they reach a meaningful share of it the access pattern is filesystem-shaped: many small objects, list-heavy walks, gcsfuse on a hot path. Findings are investigations sized by the excess over a healthy operations share; normal usage is never counted as recoverable. Requires the BigQuery billing export (GCP_BQ_BILLING_TABLE). Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. Examples: - …
audit_nlb_cross_zone_costsFinds NLBs with cross-zone load balancing enabled. Cross-zone LB charges $0.01/GB for cross-AZ traffic. Safe to disable when AZs have equal capacity. Args: regions: AWS regions to scan. Defaults to all common regions. Examples: - "Find NLBs generating cross-zone load balancing charges" - "How much are we spending on NLB cross-zone traffic?"
audit_public_ipv4_addressesAudits public IPv4 addresses across AWS. Since Feb 2024, AWS charges $3.65/month per IP including stopped instances. Finds unattached Elastic IPs and IPs on stopped instances with release recommendations. Args: regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Find unattached Elastic IPs we can release" - "How much are we spending on public IPv4?" - "Show Elastic IPs on stopped instances"
Show 190 more tools
audit_rds_manual_snapshotsAudits RDS manual snapshots for waste. Manual snapshots never auto-expire and cost $0.095/GB-month. Finds orphaned snapshots (source DB deleted) and old snapshots past the retention threshold. Args: regions: AWS regions to scan. Defaults to all opted-in regions. age_threshold_days: Flag snapshots older than this. Default: 30 days. Examples: - "Find orphaned RDS snapshots from deleted databases" - "How much are we paying for old RDS manual snapshots?"
audit_s3_intelligent_tieringFinds S3 buckets using Intelligent-Tiering where the monitoring fee exceeds savings. IT costs $0.0025/1,000 monitored objects. Objects under 128 KB are not monitored and pay no fee; monitored objects up to about 250 KB pay more in fees than moving to Infrequent Access saves. Args: regions: Unused (S3 is global). Present for API consistency. max_results: Max buckets to return in findings (default 50). Examples: - "Find S3 buckets where Intelligent-Tiering costs more than it saves" - "Are we wasting money on S3 IT for small files?"
audit_s3_transfer_accelerationFinds S3 buckets with Transfer Acceleration enabled that won't benefit. TA adds $0.04-0.08/GB and is often forgotten. Flags buckets as waste if volume is under 1 GB/month, bucket is in us-east-1, or it is behind CloudFront. Returns a CLI disable command for each flagged bucket. Examples: - "Find S3 TA enabled buckets that don't need it" - "How much are we wasting on S3 Transfer Acceleration?"
audit_spot_diversificationAudits ASGs using spot for instance type diversification. ASGs with fewer than 3 types are HIGH_RISK. Best practice: 5+ types with capacity-optimized allocation to avoid correlated interruptions. Args: regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Are our ASGs diversified enough for spot?" - "Which ASGs are at risk from spot interruptions?"
audit_terraform_tagsScan Terraform state for resources missing required tags. Runs `terraform show -json` in tf_dir (or reads state_path directly). Required tags configured via FINOPS_REQUIRED_TAGS env var (comma-separated, default: team,environment,service). Args: tf_dir: Path to the Terraform working directory (must be initialized). state_path: Optional path to a .tfstate file. Skips terraform CLI if provided. Examples: - "Audit tags in our infra repo" - "Which resources are missing the team tag?"
audit_textract_environment_wasteAnalyzes Textract spend by environment to find non-production API calls. Textract charges per page, QA and staging environments often call it unnecessarily. Identifies which Lambda functions or services are calling Textract in non-prod and estimates the monthly waste. Use this when: - Textract is a top cost driver - User asks about AI/ML service costs - User asks why their Textract bill is high - User wants to reduce document processing costs Args: days: Number of days to analyze (default 30). Examples: - "Is non-prod Textract usage wasting money?"
benchmark_costsCompare this account's spend profile against anonymised peer group medians. Shows where you're above or below the median for companies in your industry vertical across metrics like: EC2%, RDS%, savings plan coverage, idle resource %, LLM spend %, data transfer %, and rightsizing opportunity %. Args: account_id: AWS account ID to analyse. Auto-discovered from the connected AWS account when omitted. vertical: industry peer group, saas, ecommerce, fintech, media, ai_ml, default days: lookback period for metric calculation Returns per-metric comparisons with …
cancel_report_subscriptionCancel (deactivate) a scheduled report subscription. Args: subscription_id: ID of the subscription to cancel Examples: - "Cancel report #2" - "Stop the weekly platform report" - "Disable subscription 3"
check_action_policyAdvisory policy gate: should a proposed remediation action proceed? Changes nothing. It is not marked read-only only because tf_dir runs `terraform plan` there, which executes that directory's provider plugins. The request-path guardrail, advisory. Describe a remediation action you are considering (action_type), optionally with the change to cost (a Terraform plan, a helm diff, or a known monthly delta), and nable returns a machine verdict against your human-authored policy: - allow: reversible, allowlisted, and within budget. A human can apply it. - escalate: a one-way door (delete, t…
check_ai_budgetAdvisory gate: before a big task, is the agent about to blow its AI budget? Call this before an expensive run. Returns a verdict (ok / warn / over), the reason, a recommendation, and `headroom`: dollars left under this session's cap, and dollars or tokens left under the monthly budget. Advice only, it never blocks; relay the verdict and let the human decide. Pass estimated_next_tokens to test whether the next task would tip a token budget over. session_id defaults to the calling session.
check_budget_statusCheck current spend against budgets. Shows how much has been spent, what's remaining, and whether any budgets are in warning or exceeded status. Args: budget_name: Filter to a specific budget name (optional, shows all if empty) Examples: - "Check all budgets" - "How are we doing against budget?" - "Is the platform team over budget?" - "Show budget status for AWS"
check_connector_healthActively test every configured connector with a real API call. Reports health status, last successful data time, and fix instructions for failures. Examples: - "Are all my connectors healthy?" - "Which connectors are broken or stale?" - "Why am I not getting data from Datadog?"
check_notification_configCheck which notification channels (Slack, Teams) are configured and active, returning each channel's status and what is missing when one is not set up. Use it to verify where anomaly alerts and digests will be delivered before relying on them. Examples: - "Is Slack configured for alerts?" - "Where are cost alerts being sent?" - "Why did no alert reach Teams?"
cleanup_idle_resourcesPropose cleanup for idle AWS resources. nable never deletes anything: this returns the resources, the dollars, and the exact command for each, and the operator runs them. There is no mode in which this tool executes. Examples: - "What can I safely delete to save money?" - "Show me idle Elastic IPs in us-east-1 and how to release them" - "Which stopped instances have been idle for two weeks?" Args: resource_ids: Explicit resource ids to include. Omit to include everything found. resource_types: Idle resource types to include, e.g. ["ebs", "eip"]. regions: AWS regions to…
compare_kubernetes_clustersCompare costs and efficiency across all configured Kubernetes clusters. Useful for multi-cluster setups (prod vs staging, region vs region). Set K8S_CONTEXTS=prod-cluster,staging-cluster to configure. Examples: - "Compare our Kubernetes clusters" - "Which cluster is most efficient?" - "Show me spend across all clusters"
compare_providersSide-by-side cost comparison across all configured providers. Args: category: "cloud" or "saas". None = all. start_date: ISO date. Defaults to 30 days ago. end_date: ISO date. Defaults to today. Examples: - "Which cloud are we spending the most on?" - "Compare our SaaS tool spending" - "How does AWS compare to Azure and GCP?"
connect_awsConnect an AWS account from inside your MCP client, no terminal needed. Propose-then-confirm and local-only. It reads AWS credentials that already exist on this machine (named profiles, environment, the default chain), verifies each against STS, and connects the one you choose. It never creates, modifies, or deletes anything in your AWS account, and credentials stay on this machine. Call it with no arguments first to see which accounts are available (nothing is stored). Then call it again with account_id set to the one to connect. Examples: - "Connect my AWS account" - "Use the cred…
connect_azureGuide connecting Azure while keeping the service-principal secret off the model. Azure has no local credentials nable can safely auto-detect, so connecting needs a client secret. Unlike connect_aws and connect_gcp (which read credentials already on the machine, so nothing sensitive passes through this conversation), an Azure secret would have to be pasted into the chat to reach a tool argument, which routes it through the model provider. nable does not do that. This tool returns the Cloud Shell script and has you finish the connect in your OWN terminal with `finops setup azure`, which encrypt…
connect_gcpConnect a Google Cloud billing account from inside your MCP client, no terminal. Propose-then-confirm and local-only. It reads Google Cloud credentials that already exist on this machine (GOOGLE_APPLICATION_CREDENTIALS or gcloud Application Default Credentials), lists the open billing accounts they can see, and connects the one you choose. It never changes anything in GCP, and credentials stay on this machine. Call it with no arguments to see the billing accounts available (nothing is stored). Then call it again with billing_account_id set to connect one. Examples: - "Connect my Google …
connect_opencostHow to connect nable to OpenCost for real-rate Kubernetes cost, and whether it is already connected. Without OpenCost, nable's Kubernetes costs are a zero-setup list-price estimate that does not price GPU, network, or storage. OpenCost (the CNCF project) prices per namespace at your cluster's real rates. nable only READS the OpenCost API; it never deploys or changes anything in your cluster. The steps below are for you to run. Examples: - "How do I get accurate Kubernetes costs?" - "Connect nable to OpenCost" - "Why are my Kubernetes numbers an estimate?"
create_anomaly_ticketsCreate tickets in Jira, Linear, or GitHub Issues for all active high/medium anomalies that don't already have a ticket. Uses the first configured ticketing provider. Args: limit: Max number of anomalies to process (default 20) Examples: - "Create Jira tickets for all cost anomalies" - "File GitHub issues for the anomalies" - "Open Linear tasks for cost spikes"
create_api_keyCreate a new API key for a team member. Requires admin role in shared mode. Roles: viewer , read-only cost queries, optionally scoped to one team/provider analyst , viewer + attribution writes, budget management, snapshot triggers admin , full access, can manage keys and connectors The raw key is written to a file on this machine, readable only by you. It is never returned through this conversation: a tool result is serialised to the model provider and kept in its history, and this key is a bearer credential for your cost data. The response gives you the path to read it from. Examp…
create_kubernetes_waste_ticketsCreate tickets for Kubernetes waste findings: idle nodes, over-provisioned workloads, and orphaned Helm releases. Args: min_monthly_waste: Only ticket findings above this threshold (default $50/mo) Examples: - "Create tickets for all Kubernetes waste" - "File Jira issues for idle K8s nodes" - "Open issues for orphaned Helm releases"
create_rightsizing_ticketsCreate tickets for rightsizing recommendations, over-provisioned EC2, RDS, and other resources that could be downsized to save money. Args: min_monthly_savings: Only ticket recommendations above this threshold (default $100/mo) provider: Cloud provider to pull recommendations from (default: aws) Examples: - "Create Jira tickets for all rightsizing opportunities" - "File issues for EC2 instances we should downsize" - "Open Linear tasks for $500+ monthly rightsizing savings"
create_scorecard_ticketsCreate tickets for scorecard dimensions scoring below a threshold. Helps teams track and remediate FinOps efficiency gaps. Args: score_threshold: Create tickets for dimensions below this score (default 50) team: Scope to a specific team tag (optional) Examples: - "Create tickets for all failing scorecard dimensions" - "File issues for the platform team's low scores" - "Open Jira tasks for scorecard dimensions below 40"
create_ticketCreate a ticket in the configured ticketing system (Jira, Linear, or GitHub Issues) with a custom title and body. Use this for any finding, recommendation, or action item that doesn't fit a specific category. Args: title: Ticket title / issue summary body: Full ticket description with context and action items priority: "low", "medium", "high", or "critical" (default: medium) labels: Optional list of labels/tags to apply (default: ["finops"]) Examples: - "Create a Jira ticket to disable Textract in non-prod environments" - "File a GitHub issue to switch LambdaClassifi…
delete_alert_policyRemove a custom alert policy. The service will revert to the default threshold. Args: policy_id: The ID from list_alert_policies() Examples: - "Delete alert policy 3" - "Remove the mute on DataTransfer"
delete_budgetDelete (deactivate) a budget by ID so it stops alerting and gating agent actions. Args: budget_id: Budget ID from list_budgets Examples: - "Delete budget #3" - "Remove the platform team budget"
dismiss_recommendationDismiss a recommendation you've decided not to act on (won't fix, accepted risk, etc.). Dismissed recommendations won't appear in open potential savings. Always pass the user's reason when they give one. It is how nable learns which recommendation types fit this environment. A business reason ("reserved for peak", "SLA-sensitive", "another team owns it") is recorded but kept OUT of the act-rate, so a valid "keep it" never trains a good recommendation type down. A quality reason ("the estimate is wrong") does count against that type. Pass the user's own words; nable categorizes them. Args: …
estimate_change_costCost preflight for a proposed change: what it costs and whether it fits budget. Agent-native. Call this BEFORE applying an infrastructure change to get a machine verdict (ok / warn / over_budget / no_budget) plus the monthly and annual cost delta and the budget headroom. It estimates and checks, it never applies anything. Changes nothing. It is not marked read-only only because tf_dir runs `terraform plan` there, which executes that directory's provider plugins. Describe the change one of these ways: - terraform_plan_json / terraform_plan_file / tf_dir : a Terraform plan - helm_diff : ou…
estimate_helm_diff_costEstimate the monthly cost impact of a helm diff or values.yaml change. Handles replicaCount, CPU/memory requests, instanceType, and nodeCount changes. Paste the output of `helm diff upgrade` or a values.yaml git diff. Examples: - "How much will this helm diff cost?" - "What's the cost impact of scaling from 3 to 10 replicas?" - "Estimate cost of upgrading this node pool instance type" Args: diff_text: Output of `helm diff upgrade ...` to price. release_name: Helm release the diff belongs to. current_replicas: Current replica count, for delta math. current_cpu_requ…
estimate_terraform_costEstimate the monthly AWS cost change from a Terraform plan BEFORE applying it. Changes nothing. It is not marked read-only only because tf_dir runs `terraform plan` there, which executes that directory's provider plugins. Provide one of: - plan_json: raw JSON string from `terraform show -json plan.tfplan` - plan_file: path to a saved plan JSON file - tf_dir: directory to run `terraform plan` in automatically Returns a cost delta breakdown per resource with adds, changes, and removes. Prices: AWS on-demand us-east-1. Supports EC2, RDS, Aurora, ElastiCache, EKS, NAT Gateways, ALB/NLB,…
explain_cost_changeExplain what recent cost changes actually mean for the business. Compares this period to the previous period across all providers, then connects the change to your business metrics to answer: is this spend increase growth-driven and healthy, or is it pure cost inflation? Requires business metrics set with set_business_metrics(). Args: compare_days: Length of each comparison window in days (default 30). Uses this period vs the same-length period immediately before. Examples: - "Explain our cost changes this month" - "Is our infrastructure spend healthy given ou…
explain_recent_cost_driversExplain what drove cost changes across all connected providers in the last N days. Compares this period to the same-length period before it, finds the top drivers of increase and decrease, and summarizes the net change. Works on the free tier without requiring business metrics. Use when: - "Why did my bill go up?" - "What changed in our costs this month?" - "Show me the top cost drivers vs last month" - "Which services had the biggest cost changes?" - "What's driving our AWS spend increase?" Args: days: Comparison window length in days (default 30) top_n: Number…
export_board_summaryGenerate the cost section of a board / investor update as markdown. Pulls your unit economics (cost per customer, AI spend as a share of revenue and per customer, hosting as % of revenue), runway, and the latest cost-change narrative into a concise, board-ready markdown block you can paste into an update. The markdown is built on your machine from your own data. No nable backend holds or sees it (it does read your cloud and AI billing APIs to total the spend). Requires business metrics set with set_business_metrics(). Examples: - "Generate our board update cost section" - "Export a …
export_cost_reportExport a cost report as HTML (printable to PDF) and/or CSV. Saved to ~/.finops/exports/. No Claude Desktop required to open. Args: title: Report title. Defaults to "Cloud Cost Report <period>". sections: Sections to include: cost_summary, services, anomalies, rightsizing, savings, budgets. Default: all. formats: ["html", "csv"]. Default: both. start_date: ISO date. Defaults to 30 days ago. end_date: ISO date. Defaults to today. open_file: Open HTML in browser after export (default True). Examples: - "Export a cost report for this month" - "Give m…
export_cost_report_csvRuns the full cost audit and exports results to a CSV file. Offer this automatically after run_full_cost_audit completes, or when the user says "export that", "save to CSV", "download these results", "export to spreadsheet", or similar. output_path: optional full path for the CSV file. Defaults to ~/Downloads/nable-report-YYYY-MM-DD.csv Returns the path where the file was saved and a summary. Args: output_path: Full path for the CSV. Defaults to ~/Downloads/nable-report-<date>.csv. regions: AWS regions to scan. Defaults to all enabled regions. top_n: How many top results to retu…
fetch_invoice_emailsFetch unread invoice emails from the configured IMAP mailbox, extract amounts, and store them as cost entries. Solves the billing API gap for vendors like PagerDuty, New Relic, and GitHub Enterprise. Examples: - "Parse our billing inbox for new invoices" - "How much did PagerDuty charge us this month? (after forwarding invoice)" - "Fetch and store any new vendor invoices"
forecast_azure_costsForecast Azure spend using Azure Cost Management's own forecast model. Calls Microsoft's forecast endpoint, which blends actual billed days with a forecast for the rest of the window. Defaults to projecting the current month to month-end. More accurate for Azure than a generic statistical forecast. Args: subscription_id: A single Azure subscription. None = all configured subs. end_date: ISO date to forecast to (YYYY-MM-DD). Defaults to end of month. Examples: - "What will our Azure bill be at the end of the month?" - "Forecast Azure spend to month-end" - "Projected Azure…
forecast_costsForecast future cloud spend using Holt-Winters time-series modelling. Automatically tunes forecast parameters (alpha/beta/gamma) to your account's historical spend patterns and returns a daily point forecast with 80% prediction intervals. Args: account_id: AWS account ID (auto-discovered from STS if not provided) service: specific service to forecast (e.g. "EC2", "RDS"), omit for total horizon_days: number of days to forecast, 1 to 365 (default 30) history_days: days of history to fit the model, 14 to 365 (default 90) Returns forecast including method used, MAPE accur…
forecast_llm_costsForecast AI/LLM token spend and, if you give a balance, the date your credits or commitment run out. Uses nable's per-account forecaster (Holt-Winters with linear and naive fallbacks by history length) on your daily token-cost series. Headline outputs: projected next-30-day spend, implied month-over-month growth, and the runway-to-exhaustion date. That exhaustion date is what finance wants and what no provider dashboard gives. Args: horizon_days: How far forward to project (default 90). balance_usd: Remaining credit/commitment balance to burn down (optional). Examples: - "Foreca…
forget_cost_contextRemove a learned exception so nable resumes flagging matching findings. Args: annotation_id: The id from get_learned_cost_context(). Examples: - "Forget that context rule 4, we decommissioned that DR box"
generate_account_dashboardGenerate a cost dashboard for the account and open it in your browser. Shows total spend this month vs last month, projected spend, top cost drivers by service, open optimization opportunities, realized savings, and budget status. Outputs a self-contained HTML file. Args: account_id: AWS account ID to scope the dashboard. Auto-detected from your configured credentials when omitted. open_browser: Open the HTML file in the default browser (default True). push_to_notion: Also push a summary to your configured Notion page (requires NOTION…
generate_terraform_tag_fixesGenerate HCL patches for all open tag violations in tf_dir. Shows a unified diff per .tf file, does NOT write to disk. Run audit_terraform_tags first to populate violations. Args: tf_dir: Same directory passed to audit_terraform_tags. Examples: - "Show me the tag fixes needed" - "What HCL changes are required to fix our tagging?"
get_account_anomaliesDetect accounts with unusual spend changes versus their prior period. Returns accounts that significantly spiked or dropped in cost. Requires a Pro plan (org_reports). Args: days_back: Look-back period to compare (default 30 vs prior 30) Examples: - "Which accounts had unusual spend changes?" - "Are any accounts spiking this month?" - "Show me account-level anomalies"
get_agent_teamThe nable agent team: Budget Guard, Savings Analyst, and the Ledger, with each agent's status on this install and the one step that finishes its setup. Budget Guard gates agent actions (cost + budget + policy + your approval history). Savings Analyst judges genuine savings on your real rates and drafts the fix as a PR. The Ledger records decisions, verifies savings landed, and teaches the other two. All propose-only. Call this when the user asks about nable's agents, "set up the agent team", "is the budget guard on?", "why isn't nable learning?", or after activating a license, so they see wh…
get_ai_budget_statusWhere your AI coding agent stands against its budget, right now. Reads your agent's real token usage locally (Claude Code session logs) and reports this rolling window, month-to-date, your budget, burn rate, cost per 1M tokens, and a verdict (ok / warn / over). Nothing leaves your machine. It does NOT claim a percentage of a Claude/Cursor plan's hidden rate limit (no API exposes that); it reports your real usage against the budget you set with set_ai_budget. Token counts are exact; any dollar figure is a list-price estimate at each model's own rate, never presented as your bill. cost_by_model…
get_ai_cost_attributionAI/LLM spend split by who or what it was for: per project, workspace, API key, team, user, tag or session. Answers "what does each team / feature / customer / agent spend on AI" where get_llm_costs only splits by model. Sources, each labelled in the answer: OpenAI projects and API keys (billed costs) and users (estimated); Anthropic workspaces (billed) and API keys and users (estimated); LiteLLM teams, virtual keys, users and request tags; Langfuse trace tags, users and sessions. Customer, feature and agent map to tags, since no provider has those fields. A provider that has no such field say…
get_ai_engineering_reportWhat your AI coding tools actually shipped, by model, and what it cost. Attributes each unit of work to the AI model or agent that wrote it (Claude Code names the exact model in its commit trailer, so Claude work resolves to the model; Copilot, Codex, Cursor, and Devin resolve to the tool), sizes each high/medium/low by diff, and joins LLM spend by model. The line it produces: "Opus 4.8 was 49% of AI spend and shipped 10 PRs: 3 high, 5 medium, 2 low, $X per PR." unit picks the unit of work: "pr" (merged pull requests), "commit" (commits on the default branch, for teams that push straight to …
get_ai_kpisFull AI cost health dashboard with actionable KPIs. Runs all AI cost health metrics in one call: - Prompt cache hit rate and estimated savings (Anthropic) - Context window utilisation per model (are you paying for 200K context but using 2K?) - Model sprawl score (Herfindahl index of model concentration) - Peak usage day-of-week and weekend vs weekday patterns - Prompt efficiency (output/input token ratio, flags verbose or wrong-model usage) - Error spend estimate (tokens wasted on failed requests) - AI vs infrastructure spend ratio (benchmark: healthy SaaS = 5–15%) Each finding…
get_ai_spend_monitorOn-demand view of what nable's daily AI-spend monitor watches: a spike or drop on your token-spend series, plus commitment contracts that need attention (capacity under-utilized, enterprise minimum shortfall, commitment expiring). The scheduler runs this daily and alerts via Slack; this returns the same view on demand. Args: days: Lookback window in days (default 30). Examples: - "Did our token spend spike?" - "Is any AI commitment being wasted right now?"
get_anomaliesReturn active (unacknowledged) cost anomalies detected from historical baselines. Args: provider: Filter to a specific provider. None = all. severity: "high", "medium", or "low". None = all severities. limit: Max anomalies to return (default 20). account: Named AWS account from accounts.yaml to filter results. root_cause: For up to 3 AWS spikes, also find the usage types and resources behind each one and the change that started it (from CloudTrail: who, when, via console/cli/terraform, and the guard's verdict), labelled "confirmed (resource id match…
get_azure_advisor_recommendationsAzure Advisor cost recommendations, with Microsoft-computed annual savings. Advisor is Azure's native optimization engine: VM rightsizing, idle resource cleanup, and reservation / savings-plan purchase recommendations, each with a savings figure Microsoft already calculated. This is the Azure parallel of AWS Compute Optimizer. Args: subscription_id: A single Azure subscription. None = all configured subs. limit: Max recommendations to return, highest savings first (default 100). Examples: - "What does Azure Advisor recommend to cut our costs?" - "Show Azure cost recommendati…
get_azure_budgetsRead the budgets you already set in Azure and report consumption against each. Pulls native Azure Consumption Budgets (the ones configured in the Azure Portal), with amount, current spend, percent consumed, and a warning/exceeded status. Use this to see budget health without leaving Claude. Args: subscription_id: A single Azure subscription. None = all configured subs. Examples: - "Are we over any Azure budgets?" - "Show our Azure budget status" - "Which Azure budgets are close to their limit?"
get_azure_cost_by_dimensionBreak Azure spend down by any dimension: service, resource group, location, or meter. Args: dimension: One of service, resource_group, location, meter, meter_subcategory. start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. subscription_id: A single Azure subscription. None = all configured subs. limit: Max values to return, highest cost first (default 50). Examples: - "Break down Azure costs by resource group" - "Azure spend by location this month" - "Which Azure meters cost the most?"
get_azure_reservation_utilizationFetch Azure reservation utilization summaries from the Capacity API. Shows monthly utilization rates, used vs reserved hours, and wasted capacity for all reservations visible to the configured service principal. Pro plan feature. Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. Examples: - "How well are we utilizing our Azure reservations?" - "Which Azure reservations are underutilized?" - "Show wasted Azure reserved capacity this quarter"
get_azure_vm_rightsizingFind idle and oversized Azure VMs from Azure Monitor CPU, with real dollar cost. Idle VMs (very low average CPU and a low peak) are deallocate/delete candidates. Underutilized VMs (low average but some real peak) are downsize candidates. Bursty VMs (high peak) are left alone. Per-VM monthly cost is joined from Cost Management so the savings are real, not a guess. This is the Azure parallel of nable's idle-EC2 and rightsizing engines. Args: subscription_id: A single Azure subscription. None = all configured subs. lookback_days: CPU history window for the analysis (default 14). lim…
get_bedrock_costsBreak down Amazon Bedrock costs by model and token type. Shows spend per model (Claude, Titan, Llama, etc.), input vs output token split, cost per 1k tokens, and trend vs the prior period. Args: days: Number of days to analyze (default 30). account: Reserved for future multi-account support. Examples: - "What is Bedrock costing us?" - "Bedrock spend by model this month"
get_business_metricsReturn stored business metrics and trend over time. Args: history_days: How many days of history to return (default 90). Examples: - "Show our business metrics" - "What business metrics do we have on file?" - "Show MRR and MAU history for the last 6 months"
get_cluster_efficiencyKubernetes cluster efficiency score (0-100) with letter grade, per-namespace breakdown, and prioritised recommendations ranked by dollar impact. Scores across 4 dimensions: - CPU efficiency (30 pts), actual usage vs requests (needs metrics-server) - Memory efficiency (30 pts), actual usage vs requests (needs metrics-server) - Idle node penalty (20 pts), penalised for nodes under 10% utilisation - Waste ratio (20 pts), penalised for % of cost that's unrecoverable Works without metrics-server, uses request fill-ratio against node capacity. Examples: - "What's our Kubernet…
get_commitment_analysisAnalyze Reserved Instance and Savings Plan coverage, utilization, and waste. Coverage %, utilization, and waste figures are free. Purchase recommendations with $ amounts require a Pro plan (commitment_recommendations). Examples: - "How well are we using our Reserved Instances?" - "Should we buy more Savings Plans?" - "How much are we wasting on unused RIs?" - "What's our RI/SP coverage?"
get_commitment_coverage_by_tagEstimate RI/SP commitment coverage for a specific tag slice, even when tagging is incomplete. At 70% tag coverage we measure the tagged resources directly via Cost Explorer, then solve algebraically for the untagged 30% using account totals, producing a full-domain estimate with confidence rating. Args: tag_key: Tag key to filter on (e.g. "domain", "team", "service") tag_value: Tag value (e.g. "payments", "platform", "checkout-api") tag_coverage_pct: How complete the tagging is for this domain (0–100). If unknown, leave at 100 and interpret r…
get_cost_historyReturn historical daily cost data for a specific provider + service. Used for trend analysis and understanding anomaly context. Args: provider: e.g. "aws" service: e.g. "Amazon EC2" account_id: The account/subscription ID days: Look-back window in days (default 30) Examples: - "Show me 30 days of history for AWS EC2" - "What did Datadog cost each day this month?"
get_cost_summaryGet total spend summarized by service, account, and region. Args: provider: Provider name (e.g. "aws", "datadog"). None = all. category: "cloud" or "saas". None = all. start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. granularity: "DAILY" or "MONTHLY". account: Named AWS account from accounts.yaml. Uses default when omitted. Examples: - "How much did we spend last month?" - "Give me an AWS cost summary for January" - "What did the production account spend this month?"
get_cost_summary_all_accountsFan out cost queries across ALL configured AWS accounts and return a combined view sorted by total spend. Shows each account's total and top services. Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. granularity: "DAILY" or "MONTHLY". Examples: - "Show costs across all my AWS accounts" - "What is each client account spending this month?" - "Compare spend across production and staging accounts"
get_cost_trendsSpend over the last N days: one total per provider and per service for the whole window, not a day-by-day or month-by-month series. For a series use slice_costs with dimensions=["date"] and granularity "DAILY" or "MONTHLY". Args: provider: Specific provider. None = all. category: "cloud" or "saas". None = all. days: Look-back window in days ending today (default 30). granularity: "DAILY" or "MONTHLY", how providers that support it are queried. The totals are the same either way. Examples: - "How much did we spend on AWS in the last 90 days?" - "What did our Sa…
get_costs_by_serviceCost breakdown by service, optionally filtered to a keyword. Args: service_filter: Case-insensitive substring (e.g. "compute", "storage"). provider: Specific provider. None = all. category: "cloud" or "saas". None = all. start_date: ISO date. Defaults to 30 days ago. end_date: ISO date. Defaults to today. account: Named AWS account from accounts.yaml. Examples: - "How much did compute cost us?" - "Show me all Datadog product costs" - "What did the staging account spend on EC2?"
get_costs_by_teamReturn cloud costs broken down by engineering team, using tag attribution rules. Requires: - Tag rules configured in ~/.finops/tag_rules.yaml (run 'uvx nable' → tags) - Cloud providers that support tag-based cost grouping (AWS, Azure, GCP) Args: start_date: ISO date. Defaults to 30 days ago. end_date: ISO date. Defaults to today. provider: Filter to a specific provider. Examples: - "How much is the data team spending?" - "Show me cloud costs by team this month" - "Which team has the highest AWS bill?"
get_credit_statusTrack AWS promotional-credit (Activate) burn-down and detect the moment billing flips from credits to cash, the cliff where an early startup first feels cost pain. AWS sends no native alert for this. Reads Cost Explorer's RECORD_TYPE (Charge type) to separate gross usage, credits applied, and net cash per month. No CUR/Athena setup needed. AWS has no API for the remaining Activate balance, so runway is inferred from the observed monthly credit-consumption trend, not a stated balance. Args: months: Months of history to analyze (default 6). Examples: - "Are my AWS credits about to run…
get_data_transfer_costsIdentify significant data transfer cost line items from AWS Cost Explorer. Surfaces internet egress, cross-AZ transfer, inter-region transfer, and NAT Gateway data charges. Each finding includes a specific cost-reduction recommendation (VPC endpoints, CloudFront, regional consolidation). Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. threshold_usd: Only return usage types costing more than this (default $50). Examples: - "What are our data transfer costs?" - "How much are we paying for inter-region traffic?" -…
get_databricks_cluster_efficiencyAudit all Databricks clusters for efficiency issues and cost waste. Checks every cluster for: - Missing auto-termination (clusters that run forever) - Idle clusters (running but no recent activity) - Fixed-size clusters that should use autoscaling - All-purpose clusters doing batch work (cheaper as job clusters) - Clusters with no cost-attribution tags Returns a prioritized list of issues and estimated wasted spend. Examples: - "Which Databricks clusters are inefficient?"
get_databricks_costsReturn Databricks workspace cost breakdown for the given date range. Reports total estimated spend, cost by service type (All-Purpose Compute, Jobs, SQL Warehouses, Delta Live Tables) and per-cluster cost. Reads system.billing.usage when DATABRICKS_WAREHOUSE_ID names a SQL warehouse (metered DBUs at list price). Otherwise the account-level usage download when DATABRICKS_ACCOUNT_ID is set, otherwise an estimate from cluster uptime and job run history. The response says which, in `source` and `is_estimate`. Args: start_date: ISO date string (YYYY-MM-DD). Defaults to 30 days ago. end_d…
get_databricks_dbu_breakdownShow DBU (Databricks Unit) consumption by cluster, job, and cluster type. Identifies the top DBU consumers in the workspace, helping you understand which clusters and jobs are driving spend. Surfaces all-purpose clusters that should be converted to job clusters for cheaper execution. Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date (YYYY-MM-DD). Defaults to today. Examples: - "Break down our Databricks DBU usage by SKU"
get_databricks_job_costsShow cost and DBU breakdown by Databricks job run. Returns the most expensive job runs in the period, with duration, DBU consumed, and estimated cost per run. Useful for finding jobs that can be optimised (right-sized clusters, fewer retries, etc.) Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date (YYYY-MM-DD). Defaults to today. top_n: Number of top job runs to return (default 20). Examples: - "What do our Databricks jobs cost?" - "Top 10 most expensive Databricks jobs"
get_documentdb_costsAnalyze Amazon DocumentDB costs by cluster, with rightsizing recommendations. Pulls Cost Explorer spend, breaks down compute vs storage, and checks CloudWatch CPU utilization to flag clusters that can be downsized. Args: days: Number of days to analyze (default 30). account: Reserved for future multi-account support. Examples: - "DocumentDB costs for the last 30 days"
get_ecr_cleanup_recommendationsFind ECR repositories with old untagged container images consuming storage. ECR charges $0.10/GB-month for images beyond the free 500MB per repo. Untagged images from old CI builds accumulate quickly. The fix is an ECR lifecycle policy that auto-expires untagged images. Args: older_than_days: Flag untagged images older than this many days (default 90). regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Which ECR repos have old images wasting storage?" - "Find container image cleanup opportunities" - "How much are old ECR images costing us?"
get_ecs_rightsizing_recommendationsFind ECS Fargate services with over-provisioned CPU allocations. Uses Container Insights CpuUtilized metric. Services using less than cpu_threshold% of their allocated vCPUs are candidates for downsizing. Fargate billing is per vCPU-hour, so reducing allocation directly cuts cost. Requires Container Insights to be enabled on the ECS cluster. Args: cpu_threshold: Flag services with average CPU below this % (default 20%). regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Which ECS Fargate services are over-provisioned?" - "Find oversized ECS tasks w…
get_effective_rate_profileAuto-detect the account's effective private rates by comparing actual billed amounts against public on-demand prices. Captures EDP discounts, MOSA/negotiated rates, and private pricing automatically from Cost Explorer or CUR, no manual input needed. Used internally by the commitment optimizer and PR cost estimator. Useful for understanding how large your negotiated discount actually is. Examples: - "What's our effective AWS discount?" - "Do we have private pricing on AWS?" - "How does our actual rate compare to on-demand list prices?"
get_efficiency_scorecardFinOps efficiency scorecard, a 0–100 score with letter grade across 5 dimensions: compute efficiency, waste reduction, commitment coverage, tag hygiene, and anomaly response. Tracked over time so you can see if you're improving. Scope options: - "overall" , everything combined (default) - team=platform , filter by team tag - environment=prod , filter by environment tag - provider=aws , single provider view Examples: - "What's our FinOps score?" - "Show me the efficiency scorecard for the platform team" - "How is our AWS efficiency rated?" - "What's our w…
get_focus_costsReturn unified cost data in FOCUS 1.2 format across all connected providers, clouds plus supported usage-based SaaS (e.g. Snowflake). FOCUS (FinOps Open Cost and Usage Specification) is an open standard for normalizing cost data into one vendor-neutral schema. nable extends it past the clouds to the usage-based long tail, so you can query total spend across AWS, Azure, GCP, and SaaS providers in a single shape. Args: start_date: ISO date string (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date string (YYYY-MM-DD). Defaults to today. provider: Optional filter, e.g. "aw…
get_gcp_recommendationsPull Google's native Recommender API cost recommendations for your GCP projects. This is the deeper, GCP-native counterpart to audit_gcp_waste. Instead of scanning resources ourselves with list-price estimates, it asks Google's own Recommender API, which runs ML on 8+ days of real usage and prices savings against your actual SKU rates (including committed-use discounts already in effect). It covers what the scanner can't: machine-type rightsizing, committed-use-discount purchases, Cloud SQL idle/overprovisioned, Cloud Run tuning, plus idle VMs/disks/IPs/images. Findings come back sorted by mo…
get_gpu_infra_costsReport spend status across serverless-GPU / inference-infra providers, Modal, Together, and Replicate. For the model-builder slice of AI startups this is the single largest variable cost, billed per GPU-second inside each vendor's own dashboard and invisible to any cloud bill. Honest note: these vendors gate per-range cost behind paid plans or omit it from their public API. nable confirms each credential and reports what's reachable; until a usable usage endpoint exists, track these bills via the invoice email parser. Args: days: Lookback window in days (default 30). Ignored if start_…
get_helm_release_costsCost breakdown by Helm release, shows what each release actually costs rather than raw deployment names. Detects orphaned releases wasting money. Works without the helm CLI, reads release state directly from cluster secrets. Examples: - "How much does our Prometheus stack cost?" - "Which Helm releases are most expensive?" - "Do we have any orphaned Helm releases?" - "Show me waste broken down by Helm chart" - "How much is our ingress controller costing us?" Args: context: Kubernetes context name from list_kubernetes_contexts(). Default context when omitted. namesp…
get_idle_load_balancersDetect ALBs, NLBs, and Classic ELBs with near-zero traffic over the past 14 days. Idle load balancers still incur hourly LCU base charges. ALB/NLB cost ~$5.84/mo minimum; Classic ELBs cost ~$18.25/mo minimum. Args: regions: AWS regions to scan. Defaults to all opted-in regions. request_threshold: Max requests in 14 days to flag as idle (default 100). Examples: - "Find idle load balancers we can delete" - "Which ALBs have no traffic?" - "Are there any unused load balancers costing us money?"
get_idle_rds_instancesFind RDS instances with near-zero database connections over the past 14 days. Zero-connection instances are likely decommissioned and can be stopped (free, preserves data) or deleted (saves full cost after final snapshot). Args: regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Which RDS databases have no active connections?" - "Find idle databases we can stop to save money" - "Are there any unused RDS instances running?"
get_instance_deep_analysisDeep CloudWatch analysis for a specific EC2 instance. Returns CPU, network, and disk utilization percentiles, a rightsizing recommendation, and the Compute Optimizer recommendation if available. Args: instance_id: EC2 instance ID (e.g. "i-0abc1234567890def") region: AWS region (default: us-east-1) lookback_days: Days of metrics to analyze (default: 14, max: 63) Examples: - "Is i-0abc1234 over-provisioned?" - "Show CPU trends for i-0abc1234 over the last 30 days"
get_kendra_costsAnalyze Amazon Kendra costs by index, with edition and usage flags. Lists all Kendra indexes, their edition (DEVELOPER vs ENTERPRISE), monthly cost, query volume, and cost per query. Flags indexes that are oversized for their query volume or appear unused. Args: account: Reserved for future multi-account support. Examples: - "What is Amazon Kendra costing us?"
get_kubernetes_cost_trendsKubernetes cost trend over time from stored daily snapshots. Shows whether cluster spend is growing, shrinking, or stable. Snapshots are stored automatically each time get_kubernetes_costs is called. The first snapshot date is the start of your trend history. Args: days: Lookback window in days (default 30) cluster: Filter to a specific cluster name namespace: Filter to a specific namespace granularity: "daily" or "weekly" Examples: - "Is our Kubernetes spend growing?" - "Show me the K8s cost trend for the last 30 days" - "How has the production name…
get_kubernetes_costsFull Kubernetes cost breakdown -- node costs attributed to namespaces, workloads, and labels. Detects wasted spend and rightsizing opportunities. Requires: pip install finops-mcp[kubernetes] Optional: metrics-server in-cluster for actual CPU/memory usage data. Examples: - "How much does our Kubernetes cluster cost?" - "Which namespace is spending the most?" - "Show me wasted Kubernetes spend" - "Which pods are over-provisioned?" - "What's our cluster CPU efficiency?" Args: context: Kubernetes context name from list_kubernetes_contexts(). Default context when omitted. …
get_kubernetes_namespace_breakdownDeep-dive cost breakdown for a single Kubernetes namespace. Shows every workload, pod count, CPU/memory efficiency, and waste. Examples: - "Break down costs in the production namespace" - "Which services in 'data-platform' are most expensive?" - "Show me waste in the staging namespace" Args: namespace: Limit to one Kubernetes namespace. All namespaces when omitted.
get_label_costsAggregate Kubernetes costs by any pod label across all namespaces. Great for chargeback: see spend by team, environment, app, or any label. Workloads without the label are grouped under '__untagged__'. If tagging coverage is low, the response includes a warning with the tagged %. Common label_key values: team, env, environment, app, component, tier, app.kubernetes.io/name, app.kubernetes.io/part-of Examples: - "Show me Kubernetes costs by team" - "Which team is spending the most on Kubernetes?" - "Break down K8s costs by environment" - "How much is the payments team spending…
get_langfuse_model_costsBreak down LLM spend and token usage by model from Langfuse observability data. Shows cost and token consumption for every model tracked in Langfuse, useful for understanding which models are driving spend and optimizing model selection. Requires: LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY in environment. Optional: LANGFUSE_HOST (defaults to https://cloud.langfuse.com) Args: days: lookback window in days (default 30, ignored if start/end provided) start_date: ISO date string YYYY-MM-DD end_date: ISO date string YYYY-MM-DD Returns cost per model, tokens per mode…
get_langfuse_trace_volumeDaily trace and observation counts from Langfuse, usage volume over time. Use this to identify request spikes, growth trends, or unexpected volume surges that may be driving LLM cost increases. Requires LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY. Args: days: lookback window in days (default 30) start_date: ISO date string YYYY-MM-DD end_date: ISO date string YYYY-MM-DD Examples: - "How many LLM traces did we run this month in Langfuse?" - "Show me daily AI request volume for the last 30 days" - "Was there a spike in Langfuse traces last week?"
get_learned_cost_contextShow the operating model nable has learned about this environment: every standing exception a human has taught it, newest first, with the reason. This is "what does nable know about how we run" in one place: the DR standbys, the SLA-critical boxes, the finding types you've told it to ignore. Each entry is what is being suppressed, at what scope, and why. Examples: - "What has nable learned about our environment?" - "Show the cost exceptions we've told nable about"
get_llm_commitment_analysisOptimize token spend against committed AI contracts: prepaid credits, Azure OpenAI PTUs, AWS Bedrock Provisioned Throughput, and enterprise rate cards. This is Reserved-Instance analysis for tokens. nable prices you against your ACTUAL negotiated terms, not list, which a provider dashboard cannot do. For each contract it reports coverage, utilization, your effective $/Mtok versus on-demand, break-even utilization, a right-size recommendation, and runway. With no contract configured it tells you whether your on-demand spend is high and stable enough to justify buying one. Configure contracts …
get_llm_cost_by_modelBreak down AI/LLM costs by individual model with efficiency metrics. Shows cost per model, estimated tokens consumed, cost per 1M tokens, and which models have cheaper alternatives for the same task class. Args: days: Lookback window in days (default 30). provider: Filter to a specific provider, "openai", "anthropic", "bedrock". Leave blank to see all providers. Examples: - "Which of our AI models costs the most?" - "Show me OpenAI model cost breakdown" - "How much are we spending on GPT-4o vs GPT-4o-mini?" - "What would we save switching from Claude Op…
get_llm_costsAggregate AI/LLM spend across all configured providers: OpenAI, Anthropic, AWS Bedrock, Vertex AI, OpenRouter and a LiteLLM proxy. Azure OpenAI is not read. A LiteLLM proxy's spend is listed under gateway_overlap, not added to total_usd, when a provider it forwards to is also read. Shows total spend, breakdown by provider, breakdown by model, daily trend, and model-switching recommendations to reduce costs. Args: days: Lookback window in days (default 30). Ignored if start_date set. start_date: ISO date string (YYYY-MM-DD). Optional. end_date: ISO date string (YYYY-MM-DD). Defaul…
get_marketplace_costsBreak down AWS Marketplace costs by product and vendor. Surfaces per-product spend, month-over-month trends, and flags products with more than $1,000 in spend for review. Args: days: Number of days to analyze (default 30). account: Reserved for future multi-account support. Examples: - "What AWS Marketplace subscriptions are we paying for?"
get_nable_roiShows the return on investment from using nable: savings found, acted on, and verified versus the cost of the tool itself. This report is unique to nable, no other FinOps tool can show this calculation because they cost more per month than many teams' actual savings. Use when: - "Is nable worth it?" - "How much has nable saved us?" - "Show me the ROI on using nable" - "What's the payback period on the Pro plan?" - "How do savings compare to the subscription cost?" Args: period_days: Lookback window for savings (default 90 days) Examples: - "What has nable saved u…
get_org_cost_summaryGet a cost rollup across all AWS Organization accounts: total spend, per-account breakdown sorted by spend, and top services per account. Requires a Pro plan (org_reports). Args: days_back: Look-back period in days (default 30) Examples: - "Show me org-wide cloud costs" - "Which account is spending the most?" - "Give me a breakdown of costs across all accounts" - "What's our total AWS spend across the whole org?"
get_org_coverageHow much of the latest month's spend has a confirmed owner, a proposed one, or none, by team, with the largest unowned accounts. Says "not read" when there is no cost history, rather than a percentage. Examples: - "How much of our spend has an owner?"
get_org_modelThe org model: who owns what (owners, teams, environments, tag keys and aliases, accounts, thresholds), each fact with its status (proposed, confirmed, rejected, expired), source and review key. Only confirmed facts are the org's word; proposed ones are guesses waiting for a person. Args: kind: Optional filter: owner | team | environment | tag_key | tag_alias | account | threshold. status: Optional filter: proposed | confirmed | rejected | expired. Examples: - "Who owns our AWS accounts?" - "What does nable know about our teams?"
get_ou_cost_breakdownBreak costs down by AWS Organizational Unit (OU). When OUs map to departments or teams, this gives you a clean chargeback report. Requires a Pro plan (org_reports). Args: days_back: Look-back period in days (default 30) Examples: - "Break down costs by business unit" - "Show OU-level cost breakdown" - "How much is each department spending in AWS?"
get_pinned_viewRe-run a pinned view by id and return fresh cost data plus its rendered card. Read-only: nothing is modified, the saved definition is executed against current data. Args: view_id: The pinned card's id, from list_pinned_views(). Examples: - "Refresh my S3 spend card" - "Re-run pinned view 2"
get_rds_rightsizing_recommendationsDetect over-provisioned RDS instances with low CPU utilization. Uses CloudWatch CPUUtilization over 14 days. Excludes Aurora Serverless and read replicas. Returns downsizing recommendations with estimated savings. Args: cpu_threshold: Flag instances with average CPU below this % (default 20%). regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Which RDS instances are over-provisioned?" - "Find oversized databases we can downsize" - "How much could we save by rightsizing RDS?"
get_recommendation_learningWhat nable has learned about how YOU use recommendations, and how it adapts. Per recommendation type (rightsizing, commitment, idle, spot, ...): your act-rate (how often you act on that type, vs blanket assumptions), how accurate the past savings estimates were, a COLD/WARMING/WARM confidence state, and the resulting verdict (boosted, suppressed-for-you, or neutral) with a plain-English reason. This is the adaptive moat: instead of blanket advice, recommendations are ranked and filtered to fit your environment and your track record. It is propose-only, it changes what you see and in what ord…
get_recommendation_qualityThe recommendation-quality flywheel: per recommendation type, how often recs get acted on and how close the predicted savings were to the measured realized savings. The verified-savings proof, and the signal for which recommendation types actually pay off. Use when: - "Which of our recommendations actually saved money?" - "How accurate are nable's savings estimates?" - "How much have we verifiably saved, and from what?" Examples: - "How accurate have nable's recommendations been?" - "Show recommendation quality stats"
get_resource_cost_breakdown_awsReturn per-resource AWS cost detail from the Cost and Usage Report (CUR) via Athena. Includes unblended cost, on-demand equivalent, and effective savings from Savings Plans or Reserved Instances. Requires CUR delivery to S3 and an Athena database. Pro plan feature. Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. service: AWS service code filter (e.g. "Amazon EC2"). None = all services. account_id: 12-digit AWS account ID filter. None = all accounts. min_cost_usd: Exclude resources below this cost threshold (default …
get_resource_cost_breakdown_azureReturn per-resource Azure cost detail via the Cost Management Query API. No storage account or export job required -- data is queried live. Supports multi-subscription environments. Pro plan feature. Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. subscription_id: Single Azure subscription ID. None = all configured subs. resource_group: Filter to a specific resource group. None = all groups. min_cost_usd: Exclude resources below this cost threshold (default $1). limit: Maximum resources to return ordered by cost…
get_ri_waste_detailIdentify wasted Reserved Instance spend from CUR RIFee line items. Shows which reservations have low utilization and how much money is being wasted on unused reserved capacity. Requires CUR via Athena. Pro plan feature. Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. min_waste_usd: Minimum wasted dollars to include a reservation (default $10). Examples: - "Which Reserved Instances are underutilized?" - "How much are we wasting on unused RIs?" - "Show RI waste for this quarter"
get_rightsizing_recommendationsAnalyze EC2 instances with low CPU utilization over the past 14 days and return rightsizing recommendations with projected monthly savings. Args: avg_cpu_threshold: Flag instances with average CPU below this % (default 20%) max_cpu_threshold: Flag instances whose peak CPU never exceeded this % (default 50%) Examples: - "Which EC2 instances are over-provisioned?" - "How much could we save by rightsizing?" - "Find underutilized instances we should downsize"
get_s3_incomplete_multipart_uploadsFind S3 buckets with incomplete multipart uploads older than the threshold. Incomplete uploads accumulate silently at STANDARD storage rates ($0.023/GB-month). The fix is a single S3 lifecycle rule per bucket. This tool shows which buckets need it and how much wasted storage they hold. Args: older_than_days: Flag uploads older than this many days (default 7). Examples: - "Which S3 buckets have incomplete multipart uploads?" - "Find wasted S3 storage from incomplete uploads" - "How much are we paying for failed S3 uploads?"
get_saas_spend_summaryDedicated summary of all SaaS tool spending (Datadog, Snowflake, GitHub, etc.). Useful for understanding your software vendor bill separate from cloud infrastructure. Examples: - "How much are we spending on SaaS tools?" - "What's our total software vendor spend?" - "Break down our SaaS costs by tool" Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date (YYYY-MM-DD). Defaults to today.
get_savings_ledgerShows a clean summary of savings found, acted on, and verified. Use when: - "Show me the savings ledger" - "What savings have we achieved?" - "How much money has nable saved us?" - "Show me what opportunities were acted on" Args: days: Lookback window in days (default 30). Filters by generated_at. account_id: Filter to a specific cloud account ID. None = all accounts. Examples: - "Show the savings ledger" - "What savings has nable found and what happened to them?"
get_savings_plan_showbackShow exactly how much each team saved from Savings Plans and Reserved Instances. This is the showback problem no other tool solves at line-item granularity. Instead of blending SP/RI discounts across the account, nable attributes the real dollar benefit back to the team or service that consumed the covered usage, using CUR fields that Cost Explorer doesn't expose. For each team (or tag value): • effective_cost , what they actually paid under SP/RI rates • on_demand_equiv , what they would have paid without commitments • savings_captured , real dollar benefit from Savings Plans…
get_savings_summaryShow the realized-savings dashboard: how much nable has recommended, how much has been acted on, and how much has been verified as actually saved. Tracks the full lifecycle of every recommendation: open → acted on → verified (change confirmed in AWS/Azure/GCP) open → dismissed (won't fix) Examples: - "How much have we saved from recommendations so far?" - "Show me our realized savings" - "Which recommendations have we actually acted on?" - "What's our total potential savings sitting open?"
get_service_costGet cost breakdown for any named cloud service on AWS, Azure, or GCP. Handles any service, common ones like EC2 and RDS, or less common ones like AppSync, Kendra, MSK, WorkSpaces, IoT Core, Pinpoint, Forecast, MemoryDB, Clean Rooms, Lake Formation, and 200+ others. Short names and abbreviations are resolved automatically: "ElastiCache" → "Amazon ElastiCache" "MSK" or "Kafka" → "Amazon Managed Streaming for Apache Kafka" "Step Functions" → "AWS Step Functions" If the service name is ambiguous, returns a list of close matches. Args: service_name: Name of the service (short name or …
get_storage_infoShow the current storage backend (SQLite local or Postgres shared). Helps teams understand whether they're in single-engineer or shared mode. Examples: - "What database is nable using?" - "Are we in shared mode?" - "Show storage configuration"
get_tableau_connection_infoReturns the Tableau Web Data Connector URL for connecting Tableau Desktop to nable. Use when: - "How do I connect Tableau?" - "Tableau integration" - "What's the Tableau URL?" - "Connect Tableau to nable" Args: port: Local TCP port to serve on. Examples: - "How do I connect Tableau?" - "Give me the Tableau connector URL"
get_tag_cost_breakdown_curBreak AWS costs down by a resource tag using CUR line-item data via Athena. Supports both unblended and amortized cost types. Resources missing the specified tag are grouped under "__untagged__". Pro plan feature. Args: tag_key: Tag key to group by (e.g. "team", "env", "project"). start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. cost_type: "unblended" (default) or "amortized" (applies effective SP/RI rates instead of list price). Examples: - "Show me AWS costs broken down by team tag" - "What is each en…
get_team_scorecardsEfficiency scorecard for every team, side by side. Teams are discovered from your cost attribution tags (team=X). Shows which teams are leading and which need help. Examples: - "Show me efficiency scores for all teams" - "Which team has the worst FinOps score?" - "Compare cloud efficiency across teams" - "Who is leading on waste reduction?"
get_textract_costsAnalyze AWS Textract costs by API type (sync vs async). Breaks down Textract spend by usage type and flags high-cost sync API usage where async alternatives would reduce cost by up to 96%. Args: days: Number of days to analyze (default 30). account: Reserved for future multi-account support. Examples: - "Textract spend this month" - "What are we paying for OCR?"
get_top_cost_driversReturn the top N most expensive services across all configured providers. Args: limit: Number of top services to return (default 10). provider: Specific provider. None = all. category: "cloud" or "saas". None = all. start_date: ISO date. Defaults to 30 days ago. end_date: ISO date. Defaults to today. account: Named AWS account from accounts.yaml. Examples: - "What are our biggest cost drivers this month?" - "Top 5 most expensive things in AWS" - "Top cost drivers in the staging account"
get_top_spending_accountsShow the highest-spending AWS accounts in the organization. Requires a Pro plan (org_reports). Args: limit: Number of top accounts to return (default 10) days_back: Look-back period in days (default 30) Examples: - "Which 5 accounts are spending the most?" - "Show top spending accounts this month" - "Which teams are the biggest AWS spenders?"
get_total_spend_all_sourcesGrand total across ALL connected sources, cloud infrastructure + SaaS tools combined. The true "total technology spend" number. Examples: - "What is our total tech spend this month?" - "How much are we spending on everything combined?" - "Give me our full cloud + software cost picture" Args: start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date (YYYY-MM-DD). Defaults to today.
get_traffic_cost_breakdownBreak down AWS network/data-transfer spend: how much, and where it goes. Splits your traffic cost into INTERNAL (cross-AZ, cross-region, NAT, VPC peering, private endpoints) vs EXTERNAL (internet egress, CDN), then a per-scope breakdown and a ranked solve playbook (VPC endpoints, topology-aware routing, CDN, peering). Pulls Cost Explorer grouped by usage type; the classifier keeps only the network line items. AWS today; GCP and Azure decomposition are on the roadmap. Args: days: Look-back window in days (default 30). Examples: - "How much are we spending on network traffic and where…
get_unit_economicsConnect your total cloud and SaaS spend to business metrics. Shows hosting cost as % of MRR/ARR, cost per customer, cost per MAU, cost per API call, and other ratios your finance team and investors care about. Requires business metrics to be set with set_business_metrics() first. Args: period_days: Cost window to use for the calculation (default 30 days). Examples: - "What are our unit economics?" - "What's our hosting cost as a percentage of MRR?" - "How much does it cost us per customer per month?" - "What's our cost per API call?" - "Show me our infrastructure un…
get_viewRun a pre-built cost view by name. These are standard reports your whole team can share. Args: view: View ID from list_views(). Required. tag_key: Tag key to group by (required for 'by_tag' view, e.g. 'team', 'env'). tag_value: Optional filter to a single tag value within by_tag. provider: Optional provider filter (aws, azure, gcp, datadog, etc.). days: Override the default lookback window for time-series views. Examples: - "Show me the month over month view" - "Run the by_tag view for the team tag" - "Get the anomalies view for AWS" - "What d…
get_workload_costsDetailed Kubernetes workload cost breakdown with efficiency grades. Supports filtering by namespace and workload kind, sorting by cost or waste. Args: namespace: Filter to a specific namespace (e.g. "production") kind: Filter by workload type: Deployment, StatefulSet, DaemonSet, Job sort_by: "cost" (default) | "waste" | "efficiency" (worst first) context: Kubeconfig context (default: current context) limit: Max workloads returned (default 50) Each workload includes: cost, waste, CPU/memory requests vs actual usage, efficiency grade (A-F), and pod labels for a…
identify_nonprod_scheduling_opportunitiesFinds non-production EC2 instances (dev/staging/test) running 24/7. Scheduling to business hours only saves 60-70% on compute costs. Args: regions: AWS regions to scan. Defaults to all opted-in regions. max_results: Max instances to return (default 50). Examples: - "Find non-prod instances we could schedule to save money" - "How much could we save by scheduling non-production environments?"
list_accountsList all cloud accounts, subscriptions, and SaaS org IDs that nable can see, grouped by provider: AWS account ids, Azure subscriptions, GCP billing accounts, and each SaaS provider's org. Use it to find the account id or name other tools accept as their account argument. Args: provider: Limit to one provider (e.g. "aws"). None = all providers. Examples: - "What accounts is nable connected to?" - "List my Azure subscriptions"
list_active_servicesList every cloud service that has spend in the period, across AWS, Azure, and GCP. Use this to discover what services are running before querying a specific one. Returns services sorted by cost so you can see the top drivers at a glance. Works for any service, EC2, RDS, ElastiCache, AppSync, Kendra, IoT Core, WorkSpaces, Pinpoint, or anything else in your account. Args: provider: "aws", "azure", "gcp", or blank for all connected providers. start_date: ISO date (YYYY-MM-DD). Defaults to 30 days ago. end_date: ISO date. Defaults to today. Examples: - "What services are we…
list_alert_policiesList all custom alert policies for anomaly detection. Shows which services are muted, which have custom thresholds, and why. Examples: - "What alert policies do I have?" - "Which services are muted from anomaly detection?" - "Show my alert thresholds"
list_api_keysList all active API keys (names, roles, scopes). Raw keys are never shown. Requires admin role in shared mode. Examples: - "Who has access to finops?" - "List all API keys" - "Show team member access levels"
list_aws_accountsList all AWS accounts configured in ~/.finops-mcp/accounts.yaml. Shows each account's name, account ID, region, and auth method. Use account names as the 'account' parameter in cost tools like get_cost_summary. Examples: - "What AWS accounts do I have configured?" - "List all my AWS accounts" - "Which account is the default?"
list_budgetsList all configured budgets with their limits and scopes. Examples: - "What budgets do we have?" - "Show me all spending limits" - "List configured budgets"
list_connected_providersList every cloud, SaaS, and LLM provider nable knows, each marked connected or not-configured, plus the active plan. The starting point for "what am I connected to" and for spotting which connector still needs credentials (each not-configured entry names the setup command to run). Examples: - "Which providers are connected?" - "Is GCP set up yet?" - "What plan am I on?"
list_idle_resourcesScan for idle/wasted AWS resources that are costing money but doing nothing. Finds: unattached EBS volumes, unused Elastic IPs, old snapshots with no AMI dependency, stopped EC2 instances (still paying for EBS), load balancers with no healthy targets. That is the full scope: this tool does not look at RDS, DocumentDB, Kendra, or Textract, so a small or zero total here is not a clean bill of health for the account, only for these five resource types. Use get_idle_rds_instances, get_documentdb_costs, audit_textract_environment_waste, or run_full_cost_audit for those. Results are sorted by mont…
list_installed_packsList the nable packs installed on this machine: each pack's version, tier, what it provides (policies, guard rules, price books, skills) and the capabilities it was approved with, and whether it is loaded. Read-only. Examples: - "Which nable packs are installed?" - "What is the runway pack allowed to do?"
list_kubernetes_contextsList all Kubernetes contexts available in the local kubeconfig, and show which one is currently active. Use this to discover what to pass as the 'context' argument to get_kubernetes_costs. Examples: - "What Kubernetes clusters do I have?" - "List my kubeconfig contexts" - "Which K8s context is currently active?"
list_org_accountsList all AWS Organization member accounts, discovering them via the AWS Organizations API. Syncs account metadata to local DB for future queries. Account listing is free. Detailed cost rollup across accounts requires a Pro plan. Requires: AWS credentials with organizations:ListAccounts permission (management account or delegated admin). Examples: - "List all accounts in the AWS org" - "Show me all AWS member accounts" - "How many AWS accounts do we have?"
list_org_questionsThe few questions that would map the most spend to an owner, most dollars first, each with a default answer and the command a person runs to answer it. Ask the user these; do not answer them yourself. Examples: - "What does nable need to know about our org?"
list_pinned_viewsList the cost cards pinned to the dashboard: every saved view with its id, title, template, metric and dimensions, so you can re-run one with get_pinned_view(id) or remove one with unpin_view(id). Examples: - "What views do I have pinned?" - "Show my saved cost cards"
list_profilesList all configured nable profiles (for multi-account or multi-client setups). Profiles allow engineers who manage multiple accounts to switch context cleanly. Each profile has its own database and credential namespace. Use when: - "What profiles do I have configured?" - "Show me my nable profiles" - "Which profile is active?" Examples: - "List my nable profiles" - "Which cost profiles are configured?"
list_report_subscriptionsList all active report subscriptions, their names, schedules, sections, and delivery channels. Examples: - "What reports are scheduled?" - "Show me all active report subscriptions" - "List my scheduled reports"
list_savings_recommendationsList tracked recommendations with their current status. Args: status: Filter by status: "open", "acted_on", "verified", "dismissed", "expired". None = all. source: Filter by source: "rightsizing", "idle", "kubernetes", "waste", "commitment". None = all. limit: Max results (default 30). Examples: - "Show all open recommendations" - "Which recommendations have we acted on?" - "List verified savings" - "Show dismissed recommendations"
list_vault_credentialsList the names of credentials stored in the encrypted vault (never the values). Examples: - "What credentials are stored in the vault?" - "Which providers have been configured via setup?"
list_viewsList all pre-built cost views available to your team. These are ready-to-run reports anyone on the team can call by name using get_view(). Useful to paste into a Claude Project system prompt so teammates know what is available. Examples: - "What views are available?" - "Show me the list of shared cost reports"
mark_recommendation_acted_onMark a savings recommendation as acted on (you've implemented the change). nable will then attempt to verify the change next time verify_savings() runs. Args: recommendation_id: The ID from list_savings_recommendations() or get_savings_summary(). Examples: - "I resized that EC2 instance, mark recommendation 42 as done" - "We shut down the idle RDS, mark it acted on" - "Mark recommendation 7 as complete"
nable_setup_statusAgent-driven onboarding: what is connected, what credentials are already on this machine, and the exact command to connect each remaining provider. Call this when the user asks to connect a provider, says setup is incomplete, or asks what they are missing. Detected ambient credentials (gcloud login, env keys, ~/.modal.toml) mean the connect is ONE terminal command with no secrets involved; run it for the user or hand them the command. Rules for the agent, and they are hard rules: - NEVER ask the user to paste an API key or secret into the chat. For paste-a-key providers, have them run …
open_rightsizing_prApply rightsizing recommendations to Terraform source, optionally opening a GitHub PR. nable reads your Terraform state (terraform.tfstate or `terraform show -json`) to automatically resolve AWS instance IDs to their Terraform resource addresses. No manual mapping needed as long as your tf_dir has state available. Resolution order: 1. Terraform state (automatic, reads instance IDs from state) 2. resource_overrides (manual fallback if state is unavailable) 3. recommended_config stored in DB Modes: dry_run=True Show diffs only. Nothing written to disk. patch_only=True Write .tf f…
open_terraform_tag_prApply tag fixes to .tf files and open a GitHub PR. Requires GITHUB_TOKEN env var and a git remote configured for github_repo. Args: tf_dir: Path to the Terraform working directory (must be a git repo). github_repo: GitHub repo in "owner/repo" format. branch: Branch name to create. Defaults to "fix/add-required-tags". base_branch: Target branch for the PR. Defaults to "main". pr_title: PR title. Examples: - "Open a PR to fix the tagging gaps" - "Create the tag fix PR against main"
optimize_ai_spendRanked, dollar-quantified plan to cut your AI/LLM bill, across OpenAI, Anthropic, AWS Bedrock, Azure OpenAI, and Vertex. This is the OpenRouter question answered as analysis, not a proxy: the cheapest way to get the same output. It decomposes spend into its real driver (model choice vs token size vs request volume) and returns the levers ranked by monthly dollars saved: - Model routing: move lower-complexity calls to a cheaper sibling model (priced from real input/output ratios, not a guessed percentage) - Prompt caching: raise your Anthropic cache hit rate so repeated input bill…
pin_viewPin a cost slice to the dashboard as a saved card. Takes the same slicing arguments as slice_costs (dimensions / filters / exclusions / metric / etc.), plus a title and a rolling lookback `days`. The pinned card re-runs its slice live on each dashboard load over the trailing `days`, so it always shows fresh numbers. scope: "instance" (shared on this nable) or "me". Read-only on the cloud: this only saves a view definition locally. Args: title: Card title shown on the dashboard. dimensions: Fields to group by (as in slice_costs). filters: Include-filters, {field: [values]}. excl…
propose_org_factPropose one fact about this org from evidence you found. Saved as proposed only; a person confirms it with the returned command. A rejected fact is not proposed again; a proposal never replaces a confirmed fact. value by fact: owner {team, channel?, people?} subject: account, repo_path, k8s_namespace, ... team {name, aliases?, channel?, people?} subject_kind team environment {env: prod|nonprod|dr|sandbox|shared|unknown} tag_key {canonical: team|environment|service|cost_center|owner, keys: [str]} subject org:org tag_alias {canonical_key, canonical_value} subject_kind tag…
publish_cost_report_to_notionRuns the full cost audit and publishes results to your team's Notion page. The Notion page can be shared with anyone on the team, they don't need nable installed. Use this to give leadership, finance, and engineering leads a shared cost view without a separate dashboard. Requires NOTION_API_KEY and NOTION_PAGE_ID environment variables. Set them with: finops setup notion Use when: - "Share the cost report with my team" - "Publish this to Notion" - "Update the team dashboard" - "Post the cost summary to Notion" Args: regions: AWS regions to scan. Defaults to all enabled re…
push_to_n8nRuns the cost audit and pushes results to your n8n workflow via webhook. n8n can then trigger any downstream action: create a Jira ticket, send a Slack message, update a spreadsheet, page on-call, or anything else in your automation stack. Setup: in n8n, add a Webhook node and copy the URL. Set N8N_WEBHOOK_URL in your environment. Run: finops setup n8n event_type options: audit_complete, anomaly_summary Use when: - "Send the cost report to n8n" - "Trigger my n8n workflow" - "Push cost findings to my automation" - "Wire this into n8n" Args: event_type: Which payload to s…
push_weekly_insightPush a rich weekly cost intelligence summary to Slack right now. Covers: week-over-week spend change, top cost movers, open savings pipeline, active anomalies, budget alerts, and a single recommended action. This is the proactive format, an analyst briefing, not a metric dump. Runs automatically every Monday morning when scheduled. Use this to trigger it on demand. Examples: - "Send a weekly cost summary to Slack" - "Push the weekly insight to the team channel" - "Send this week's cost intelligence to Slack now"
recommend_bedrock_model_routingAnalyzes Bedrock model usage to find invocations that could route to cheaper models without quality loss. Sonnet 4.x costs 3x what Haiku 4.5 does per token. Classification, extraction, and short-context tasks rarely need Sonnet. Identifies which Lambda functions are using Sonnet for tasks that Haiku handles equally well, and estimates monthly savings from routing. Use this when: - Bedrock is a top cost driver - User asks about LLM costs or AI spend - User asks how to reduce Bedrock costs - User wants to optimize model usage - "Why is my Bedrock bill so high?" - "Can I…
recommend_database_savings_plansRecommends AWS Database Savings Plans for RDS and Aurora spend. Database SPs (re:Invent 2025), separate from Compute SPs, take 20% off provisioned instance hours on the newer families (m7, m8, r7, r8 and similar) and come only as 1-year no-upfront. Sizes one to the uncovered spend on those families; older families are reported, not sized. Examples: - "Should we buy Database Savings Plans?" - "How much could we save on RDS with a Database SP?" - "What is our RDS/Aurora Savings Plan coverage?"
recommend_lambda_snapstartFinds Java Lambda functions that should use SnapStart. SnapStart eliminates cold starts for free, replacing expensive provisioned concurrency. Args: regions: AWS regions to scan. Defaults to all common regions. Examples: - "Which Java Lambda functions should use SnapStart?" - "Find Lambda functions wasting money on provisioned concurrency"
recommend_spot_adoptionFinds on-demand EC2 instances that could move to spot. Uses env tags, ASG membership, CPU variance, and a dated us-east-1 snapshot of Spot Instance Advisor savings and interruption bands; outside that snapshot the band is unknown and the saving is the median of the snapshot's figures, and each row says which. Returns RECOMMENDED, POSSIBLE, or NOT_RECOMMENDED per instance. Args: regions: AWS regions to scan. Defaults to all opted-in regions. Examples: - "Which EC2 instances should we move to spot?" - "How much can we save by switching to spot instances?"
remember_cost_contextTeach nable a standing fact about how THIS environment runs, so it stops flagging what you've already decided is fine and can generalize the rule. This is nable's memory. Answer once ("that idle box is our DR standby", "spot is never OK on prod"), and nable will not re-surface matching findings. Findings it silences are still shown under `suppressed_by_context` with your reason, never deleted, so nothing is hidden without a trail. scope, narrowest to broadest: - "resource" one exact resource id (match_value = the resource id) - "resource_type" every resource of a type (e.g. "nat_g…
report_objectionsReport every specific objection to the recommendation. Empty is valid.
revoke_api_keyRevoke an API key by ID. The key is soft-deleted, it stops working immediately. Requires admin role. Use list_api_keys to find the key ID first. Examples: - "Revoke Alice's key" - "Remove access for key ID 3" Args: key_id: The key id from list_api_keys().
run_attribution_nowFetch tagged cost data from AWS/Azure/GCP and store team attributions. Run this after setting up tag_rules.yaml to populate team cost data. Args: start_date: ISO date. Defaults to 30 days ago. end_date: ISO date. Defaults to today. Examples: - "Run tag attribution now" - "Update team cost data"
run_full_cost_auditRun a full cost optimization audit across all connected AWS resources. Use this when the user explicitly asks for a full audit, cost scan, or optimization sweep. For simple cost questions ("what did I spend last month?") prefer get_cost_summary or get_costs_by_service, they are faster and cheaper. Good triggers: "run a cost audit", "scan for savings", "find waste", "full optimization report", "what should I optimize?". Not needed for: point-in-time cost queries, single-service questions, forecasts. Covers: Graviton, public IPv4, Lambda concurrency, S3 Bucket Keys, non-prod scheduling, RDS sn…
scan_cloudwatch_wasteFinds CloudWatch Log Groups with no retention policy (infinite retention costs $0.03/GB-month). Returns groups, estimated monthly cost, recommended retention periods by log type, and CLI commands to fix top offenders. Args: regions: Regions to scan. Defaults to all opted-in regions. Examples: - "Which CloudWatch log groups have no retention policy?" - "Scan for infinite log retention across all regions"
scan_graviton_migration_opportunitiesFinds x86 EC2 instances with a same-size Graviton (arm64) equivalent. Returns ranked candidates with the monthly on-demand list-price gap per instance (5-19% for the mapped types, us-east-1 Linux rates). Args: regions: AWS regions to scan. Defaults to us-east-1. Examples: - "Which EC2 instances can we move to Graviton?" - "How much can we save by switching to arm64 instances?"
scan_lambda_concurrency_wasteScans Lambda functions with provisioned concurrency for waste. Provisioned concurrency costs money even when idle. Returns functions below 50% avg utilization with savings estimates. Args: regions: AWS regions to scan. Defaults to all common regions. Examples: - "Find Lambda functions with over-provisioned concurrency" - "How much are we wasting on idle Lambda concurrency?"
scan_s3_bucket_key_opportunitiesFinds S3 buckets using KMS encryption without Bucket Keys enabled. Bucket Keys reduce KMS API calls by up to 99%. Returns affected buckets with the CLI command to fix each one. Examples: - "Find S3 buckets missing bucket keys" - "How much are we wasting on KMS calls from S3?"
scan_waste_patternsScan for cloud cost waste patterns using nable's proprietary pattern library. Runs 13 waste fingerprints across compute, storage, database, network, AI, and governance categories. Each finding includes confidence score, monthly waste estimate, and specific remediation steps. Args: account_id: AWS account ID to scan. Auto-discovered from the connected AWS account when omitted. min_monthly_waste: only return findings above this monthly USD threshold categories: comma-separated filter e.g. "compute,storage" (omit for all) Returns structured find…
send_digest_nowSend a cost digest to Slack and/or Teams right now. This install sends digests only when asked; sending them on a schedule is nable Cloud. Examples: - "Send the daily cost digest to Slack" - "Push the current cost summary to Teams"
send_onboarding_emailSend an onboarding email to a specific address. Variants: welcome → "Here's how easy setup is", sent on email capture day7 → Nudge for users who haven't connected a provider yet trial_end → Trial expiring in N days, soft upgrade prompt Args: to_email: Recipient email address variant: "welcome", "day7", or "trial_end" days_left: For trial_end variant, days until trial expires Examples: - "Send the welcome email to john@example.com" - "Send a day 7 nudge to user@company.com" - "Send the trial ending email to someone@corp.com with 3 days left"
send_report_nowTrigger a report subscription immediately, regardless of its schedule. Args: subscription_id: ID of the subscription to run (from list_report_subscriptions) Examples: - "Send report #3 now" - "Run the platform team report immediately" - "Trigger report subscription 1"
send_weekly_digest_nowImmediately send the weekly email digest to the configured recipient. Includes spend summary, anomalies, and top rightsizing recommendations. Works without Claude, pure standalone email. Examples: - "Send the weekly cost digest now" - "Trigger the weekly email report"
set_ai_budgetSet the coding agent's monthly AI budget. Two lenses: - Flat subscription (Claude Pro/Max, Cursor): pass plan_cost = what you pay per month (any number). The verdict is about usage, not a dollar overage: a flat fee is what you actually pay, so the agent tracks how much subsidized compute it is pulling and, if you add monthly_tokens, warns before you run low. - Metered API / enterprise: pass spend_cap = your monthly dollar cap. The agent gates on estimated spend against it, and reports cost per 1M tokens. monthly_tokens is an optional usage cap for either lens. Ask the human which len…
set_alert_policySet a custom alert policy for anomaly detection on a specific provider or service. Use this to: - Mute noisy services you don't care about (e.g. DataTransfer, Tax) - Raise the threshold for services that are naturally volatile - Set a minimum $ delta to ignore tiny fluctuations Supports glob patterns: "DataTransfer*", "*Transfer*", "EC2*" Args: provider: "aws", "azure", "gcp", or "*" for all providers service_pattern: Exact service name or glob pattern (e.g. "DataTransfer*", "*") muted: If True, all anomalies matching this rule are silenced min_pct_change: Only alert if chan…
set_budgetCreate or update a spending budget. Budgets fire Slack alerts when spend crosses alert_at_pct, and fail CI checks when it crosses block_at_pct. Args: name: Budget name (e.g. "Platform Team Monthly") limit_usd: Spending limit in USD scope_type: What to watch, "total", "provider", "account", "team", "service" scope_value: The specific value (e.g. "aws", "platform", or a service as Cost Explorer names it, "Amazon Elastic Compute Cloud - Compute"; a short name such as "ec2" is resolved to that name) Use "*" for total account budge…
set_business_metricsStore your business metrics so nable can connect cloud costs to business outcomes. Call this once a month (or whenever metrics change) and nable will track trends over time and answer "so what?" when your cloud spend changes. Args: arr_usd: Annual Recurring Revenue in USD (e.g. 1_200_000 for $1.2M ARR) mrr_usd: Monthly Recurring Revenue in USD. Use this OR arr_usd, not both. mau: Monthly Active Users dau: Daily Active Users paying_customers: Number of paying customers / accounts api_calls_monthly: Your product's A…
slice_costsSlice cloud cost any way you want. This is the flexible, moldable cost query: group and filter by ANY combination of dimensions, over any date range, instead of a fixed set of canned reports. Returns both the numbers and a `card` describing how to chart them (which the UI can render and pin to the dashboard). Dimensions (group by, up to 3): ServiceName, ServiceCategory, ProviderName, RegionId, RegionName, SubAccountId, SubAccountName, ResourceId, ResourceName, ResourceType, ChargeCategory, ChargeDescription, CommitmentDiscountId, CommitmentDiscountType, plus "date" (a time series, use granula…
start_dashboard_serverStarts a local web dashboard you can open in a browser. Binds to localhost by default. Pass expose=true to bind all interfaces so others on your network can reach it (plain HTTP, so only do this on a trusted network or behind a TLS proxy). Use when: - "Start the dashboard" - "Share the dashboard with my team" (use expose=true) - "Start the web server" - "My team wants to see costs without installing nable" Args: port: Local TCP port to serve on. host: Interface to bind (default 127.0.0.1, local only). expose: True binds beyond localhost. Only on a trusted network. …
subscribe_to_reportCreate a scheduled report subscription for Slack channels and/or email. Only a host running the scheduler (nable Cloud) sends it on the schedule. An open install runs nothing on a timer: the subscription is saved and sent when asked with send_report_now. The response's `delivery` field says which applies; never tell the user a report will arrive on its own when it says "on_request". Args: name: Report name (e.g. "Platform Team Weekly") sections: List of sections to include. Options: spend, anomalies, scorecard, k8s, commitments, rightsizing, budgets, teams frequency…
suggest_cost_policiesPropose standing cost rules nable has inferred from what your team keeps rejecting. When you dismiss the same CLASS of finding for the same business reason again and again (spot on prod, idle in the dr environment, a whole provider you don't optimize), nable notices and proposes one durable rule instead of nagging every time. Each proposal shows the evidence and the exact remember_cost_context() call that enacts it. Nothing is applied until you confirm one, so you stay in control. Examples: - "What cost rules has nable figured out about how we work?" - "Turn my repeated dismissals in…
sync_budgets_from_yamlImport budgets from a budget.yml file. Idempotent, running twice is safe. Use this to version-control your spending limits alongside your infrastructure code. budget.yml format: budgets: - name: Platform Team Monthly scope_type: team scope_value: platform period: monthly limit_usd: 15000 alert_at_pct: 80 block_at_pct: 100 Args: yaml_path: Path to the budget.yml file Examples: - "Load budgets from ./budget.yml" - "Sync budgets from /path/to/budget.yml" - "Import the budget configuration file"
take_snapshot_nowManually trigger a cost snapshot right now (fetches yesterday's costs from all providers). Normally this runs automatically at 01:00 UTC daily. Examples: - "Take a cost snapshot now" - "Update the cost history with today's data"
unpin_viewRemove a pinned cost card from the dashboard by id, so the dashboard stops tracking that saved view. The underlying saved view is not deleted, only unpinned; pin_view() puts it back. Args: view_id: The pinned card's id, from list_pinned_views(). Examples: - "Unpin the S3 spend card from my dashboard" - "Remove pinned view 3"
verify_savingsAuto-verify acted-on recommendations by checking if changes were actually implemented in AWS (EC2 instance type changes, etc.). Moves verified recommendations from 'acted_on' to 'verified' status and records the actual measured savings. Examples: - "Verify our savings, check if the rightsizing changes were made" - "Confirm which recommendations actually happened" - "Check if our EC2 downsizes are done"
what_can_nable_doShow everything nable can do, tailored to what you've connected. Call this when the user asks "what can you do?", "what features do you have?", "what should I try first?", "show me what's available", or "help". Always call it right after a user connects their first account, so they see what just became possible. Pass detailed=True to also list the underlying tool names. Args: detailed: True returns the full capability list instead of the summary. Examples: - "What can nable do?" - "List your capabilities"
whoamiShow the current identity and access level. Works in both permissive and shared auth mode. Examples: - "Who am I logged in as?" - "What's my role?" - "Do I have analyst access?"
Signals
- Stars
- 19
- Forks
- 1
- Open issues
- 0
- Contributors
- 2
- Weekly downloads
- 537
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Oct 17, 2026 (11 days ago)
- Last package publish
- Oct 17, 2026 (11 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.getnable/finops-mcp- Version
- 0.12.0
- Auth
- No auth
- Packages
- pypi finops-mcp
- License
- Apache-2.0
- Repository
- github.com/getnable/finopsmcp
- Website
- getnable.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
nable MCP server. Agent Mart. https://agentmart.dev/connectors/getnable-finops-mcp (last updated 2026-10-24)